payment_id means the gateway accepted your payment. It does not mean the funds have arrived. This page shows how to follow a payment to the end and what to do if it fails.
Payment status
The usual paths:
finalizing is not final. If you act on it, for example to release goods, you accept the small risk that the payout is reversed. You can also open the payout transaction (transactions.fulfillment) in the destination chain’s block explorer and wait for the number of confirmations you are comfortable with. How long finalizing lasts, and what Atum waits for on each chain, is on Finality.
refunding and refund_available are not final either. A late delivery can still end the payment as completed. Refunds explains who returns your funds and how to submit a refund yourself.
Track a payment
POST /v1/payments keeps the connection open for up to 30 seconds and answers as soon as the payment is finalizing, completed or failed. If it is still pending, poll the status every few seconds until it is completed, failed or refunded. If it is refund_available, submit the refund yourself.
- HTTP
- SDK
- CLI
What the status response contains
Each entry in
transactions has the transaction hash, the chain, and the block once it is mined. A completed payment always has both transactions.deposit and transactions.fulfillment. Read every transaction from transactions.
Full shape: Get payment status.
When a payment fails
Readerror.code first, then decline_summary. Deadlines lists every deadline error and what to change. For example, a quote window that ends after the operators’ quotes would expire:
request_id and a shorter quote window.