allowAsync, the Route API can file that request for your user, on the same chain or after a bridge.
An async route works differently from a regular route. The transaction does not deliver tokenOut. The user receives a claim on the payout, such as an ERC-721 receipt, and tokenOut arrives later when the vault settles the request. The response describes this payout in an async object instead of amountOut.
Async redeems are available for Paxos Labs PAXGy → PAXG on Ethereum, including from PAXGy bridged to other chains, such as iPAXGy on Optimism. The
async object describes the claim, settlement and refund in a protocol-neutral way. Read those fields rather than hard-coding PAXGy behavior, so your integration keeps working as more vaults are added.How it works
- The user signs one transaction on the source chain.
- For a cross-chain route, the bridged tokens arrive on the destination chain, and Enso files the redeem request there in the same delivery transaction. For a same-chain route, the request is filed in the user’s transaction.
- The receipt goes to
receiver. - When the vault operator processes the request,
tokenOutis paid to whoever holds the receipt at that time. No further transaction is needed from the user.
Request
Async redeems are available onGET and POST /api/v1/shortcuts/route. They are not available on /quote or the Bundle API.
allowAsync does not force an async route. Enso compares async candidates against instant routes, such as a swap on a DEX, and returns the best one. Async candidates are ranked on async.estimatedAmountOut. The response contains an async object only when an async route wins, so always check for it.
Example: iPAXGy on Optimism to PAXG on Ethereum
SetENSO_API_KEY to your Enso API key and ADDRESS to the user’s wallet.
This request redeems 10 iPAXGy from Optimism into PAXG on Ethereum with 0.25% slippage.
chainId: 1, no destinationChainId and PAXGy as tokenIn files the request on Ethereum directly.
How it differs from a regular route
The async object
Slippage
The final payout of an async redeem cannot be checked in the transaction, because it is paid later at the vault’s rate at that time. Slippage instead protects the amount that goes into the request.- When steps before the redeem can change the amount, such as a bridge, a swap or a fee taken from the bridged tokens, the transaction checks that at least
async.amountIn × (1 − slippage)reaches the redeem. Below that, the request is not filed. A same-chain transaction reverts. On a cross-chain route, the bridged tokens are refunded toreceiveron the destination chain, as listed inmetadata.bridgeRefundAssets. - When the request amount is fixed, for example a same-chain redeem of the user’s input, nothing can slip and no check is added.
async.estimatedMinAmountOutis the payout estimate for that smallest allowed input. It is not enforced on-chain.- With
pricing: "atSettlement", the payout depends on the vault’s rate and fee when the operator processes the request. For PAXGy, the vault’s exchange rate changes over time, and the vault charges a 0.25% redeem fee.
Claims, cancellation and refunds
- Payout.
settlementsays howtokenOutis paid. Withpush, the protocol sends it without further action. Withclaim, someone allowed bysettlement.bymust sendsettlement.callonce the redeem is claimable. - Transferable claims. When
claim.transferableistrue, the claim can be moved to another account, and the payout goes to whoever holds it at settlement. - Cancellation.
cancelis present only when the user can cancel the request, withcancel.bysaying who may andcancel.contractandcancel.signaturegiving the call. When it is absent, the request cannot be cancelled by the user. Make this clear before the user signs. - Refunds.
refunddescribes howtokenIncan come back instead oftokenOut.refund.bylists who can trigger it, andrefund.settlementsays how it is paid. Apushrefund goes tobeneficiary, the account set at request, even if the claim was transferred. Whenrefundis absent, the request can never be unwound. - Failed cross-chain delivery. If the redeem cannot be filed on the destination chain, for example because the bridged amount fell below the slippage check, the bridged tokens go to
receiveron the destination chain. They are listed inmetadata.bridgeRefundAssetsand are nottokenInon the source chain.
beneficiary.
Errors
Integration checklist
- Send
allowAsync: trueonly on requests where your app can show an async result. - Check for
asyncin every response, because the best route may still be instant. - Show
async.estimatedAmountOutas an estimate, and useasync.priceImpactfor price impact checks. - Tell the user they receive a receipt now and
tokenOutlater, that the wait depends on the vault operator, and whether the request can be cancelled. - Submit soon after quoting, especially for cross-chain routes.
Updated 2026-10-13
