Make the call
amount as a decimal string. The 201 means the
redeem is validated and queued; everything after that happens in the
background.
The two legs
- Leg 1 (burn). The worker checks your decrypted cAROUSD balance, then
signs and broadcasts the burn; the cAROUSD leaves your confidential
balance and
txHashis set. In backed mode the burned amount is then publicly decrypted (that single value becomes public, a requirement of verifiable payout); in float mode the funds move to the operator confidentially. - Leg 2 (payout). Once the burn confirms (
SETTLING), the operator pays stablecoin 1:1 to your wallet. Its transaction hash lands insettlementTxHash, and the row becomesSETTLED.
QUEUED → PENDING → SETTLING → SETTLED. FAILED is terminal and
only reachable before anything moved on-chain: a failed pre-flight check while
QUEUED, or a reverted burn while PENDING, with the reason in error and
errorCode. Once the burn has confirmed, the row stays SETTLING until the
payout lands; it is never failed with your cAROUSD already burned.
Poll to completion
Settlement runs in the background worker; polling only observes it. Poll until a terminal status:Backed-mode settlement waits for the Zama KMS to publish the public decryption
of the burned amount, so
SETTLING normally lasts a little longer than a
plain confirmation; the worker re-checks every 30 seconds. A redeem that sits
in SETTLING for much longer usually means the decryption is delayed or the
operator is short of gas or liquidity; both are platform-side. See
Troubleshooting.Failure modes
Request problems fail thePOST; execution problems fail the transaction row
later (status: "FAILED" with error and errorCode), and a failed redeem
never burned anything.
There is no
redeem_settlement_failed any more: a payout that cannot be sent
yet keeps the row in SETTLING and is retried, never failed.
Once settled, grab the notarized receipt with
GET /transactions/{id}/nota; it reflects both legs.