Skip to main content
Redemption is not instant. You submit a request offering PAXGy for PAXG, and once it is fulfilled the PAXG is delivered to your wallet. Plan your UX around a pending state.
The endpoints are named withdraw because they are shared across Paxos Labs yield products. For PAXGy, a withdrawal is a redemption.
Redemption happens on Ethereum mainnet only (chainId: 1). PAXG does not exist on X Layer, so there is nothing to redeem into there. PAXGy held on X Layer must be transferred back to Ethereum before it can be redeemed.

Step 1: Quote the fee

Do this first. The fee is deducted from the PAXGy you offer, and you need it to size the approval in step 2.
feeAmount is authoritative for the amount you passed. The PAXGy redemption fee has two parts: a fixed rate charged on every redemption, plus a variable component that appears only when PAXG trades above its gold peg. That is why the rate is marked dynamic and why you should quote per request rather than caching a percentage.

Step 2: Approve the redemption queue

Approve the redemption queue, not the PAXGy token address, and approve offerAmount + feeAmount, not just offerAmount. The queue pulls the inclusive amount, so an exact-share approval reverts.
feeAmount comes back formatted ("0.0035"), not in base units, so convert it against the share token’s decimals before adding it to shareAmount:
Also bail out early when the fee is greater than or equal to shareAmount, because the post-fee math underflows on-chain and the request reverts. Compare in base units, using the converted value above.

Step 3: Prepare the redemption

Parameters

Response

Broadcast the transaction the same way as a mint.

Settlement estimate

estimatedWithdrawalLatency is how long this redemption is expected to take, as a duration string. It is banded by how the order compares to liquidity that is not already claimed by earlier pending orders: Two things to hold onto:
  • It is indicative, not a guarantee. The bands are computed from liquidity at the moment you call the endpoint. A large order submitted ahead of yours between preparing and broadcasting can move you into a slower band than the one you were quoted.
  • The field may be absent. It is omitted rather than guessed when the underlying data is briefly unavailable, and it is not returned for products that settle in the same transaction. Treat a missing value as “unknown” and fall back to your default messaging. Do not read it as “instant”.
Splitting one large redemption into several smaller ones does not reliably land them all in the faster band: each order consumes available liquidity for the ones behind it, so later slices band slower as the queue fills.

Step 4: Track the request

Each request carries a status: You can also filter on it directly:
Handle the refund states. A request that cannot be fulfilled returns your PAXGy rather than delivering PAXG, and a UI that only models pending → complete will show the user a request that never resolves.

Cancelling

While a request is still pending, prepare a cancellation with its order index:
Only the wallet that created the request can cancel it. This is enforced on-chain, so the prepared calldata will revert if sent from anywhere else.

Next

Minting

Deposit PAXG and receive PAXGy.

Cross-chain

Move PAXGy between Ethereum and X Layer.