Skip to main content
Close an authorization that you will not capture. The operator can call void at any time to return all remaining capturable funds. If the operator becomes inactive, the payer can call reclaim at or after authorizationExpiry.
This guide’s payment flow is based on the Commerce Payments Protocol.

Demo

The demo above sends real transactions on Base Vibenet, an ephemeral devnet, each time you press a step. It mints Vibenet’s existing USDV test token, not USDC, and authorizes its own payment before voiding it; your browser’s Vibenet demo account acts as both payer and operator. If Vibenet is unavailable, the demo runs as a labeled offline mock and sends nothing.

Void the Remaining Authorization

void returns the complete capturableAmount; there is no partial-void operation. Capture the final fulfilled amount first, then void the remainder.
TypeScript
Both void and reclaim set capturableAmount to zero while leaving any previously captured refundableAmount unchanged.
Verify PaymentVoided or PaymentReclaimed, and match its amount to the capturable balance immediately before the return.
After authorization expiry, the operator and payer can race to return the same remainder through void or reclaim. One succeeds and the other reverts with ZeroAuthorization; process either event idempotently as the terminal authorization return.

See Also

Authorize a Payment

Configure the authorization and recovery windows.

Refund a Payment

Return value that was already captured.