Skip to main content

Status lifecycle

Use this table to interpret status values from GET /transaction/{id} or webhook payloads.

StatusWhen it happensYour actionWebhook event
AWAITING_PAYMENTThe transaction was accepted and is waiting for the on-chain deposit that includes the transaction_reference memo.Send the quoted crypto amount before the expiration_time.transaction.created
PROCESSING_PAYMENTAbroad detected the on-chain transfer and is preparing or sending the local payout.No action; continue polling or wait for the next webhook.transaction.updated
PAYMENT_COMPLETEDLocal payout succeeded.Mark the transfer as settled in your system.transaction.updated
PAYMENT_FAILEDPayout failed (e.g., invalid account, provider error).Show the error to the user, correct the account, then create a new transaction.transaction.updated
PAYMENT_EXPIREDThe quote expired before funds arrived.Create a fresh quote and transaction, then resend funds.transaction.updated (after expiry job)
WRONG_AMOUNTFunds arrived but were below the quoted amount; we attempt an on-chain refund.Inform the sender and create a new quote/transaction with the correct amount.transaction.created

These six values are the complete set; a transaction is always in exactly one of them.

If kycRequired is true on the acceptance response, no transaction was created and there is no status to track yet — the user must complete KYC first, after which you retry with a fresh quote.

Reading these on an onramp

The same statuses describe a PIX onramp, with the legs swapped:

StatusOn an onramp it means
AWAITING_PAYMENTThe BR Code has been issued and is waiting for your user's PIX.
PROCESSING_PAYMENTThe PIX settled and Abroad is delivering the crypto.
PAYMENT_COMPLETEDThe crypto reached the destination wallet; on_chain_tx_hash is the delivery.
PAYMENT_FAILEDThe delivery could not be made; the BRL is returned to the payer.
PAYMENT_EXPIREDThe BR Code expired before it was paid.

WRONG_AMOUNT does not occur on an onramp: the BR Code encodes an exact amount.