OuiPay
Transactions

Transaction Statuses

Every transaction status, its meaning, the webhook it fires, and what to do about it.

Status reference

StatusMeaningWebhook eventYour action
pendingRecorded, not yet submitted to a providerN/AWait for processing
processingIn flight with a provider or internal ledger legN/AWait for webhook
completedSettled: funds posted, immutable*.completedFulfill the order
failedStopped at a known stage with a failure.code*.failedRead failure.code, act
unknownProvider outcome ambiguous (timeout); being reconciledtransaction.updatedDo not retry. Wait.

unknown is terminal for your integration

A transaction in unknown must not be retried. The provider may have processed it. Reconciliation resolves it to completed or failed and fires the webhook.

Re-submitting an unknown outcome risks a double charge. Use Idempotency to make retries safe instead.

Failure codes by stage

When a transaction fails, the response and webhook include failure.code and failure.stage:

failure.stagefailure.code examplesMeaning
method_selectionMETHOD_NOT_SELECTABLEPayment method not enabled
pin_stepupPIN_REQUIREDCustomer PIN verification needed
complianceCOMPLIANCE_DENIEDScreening blocked the operation
limitsLIMIT_EXCEEDEDAbove the customer's tier limit
settlementINSUFFICIENT_FUNDSWallet cannot cover amount + fee
provider_callPROVIDER_ERRORUpstream provider failed

Mapping events to your state

Webhook eventYour action
payment.completedMark the order paid, deliver the service
payment.failedRead failure.code, surface the reason to the user
transfer.completedMark the payout done
transfer.failedRelease any reserved resource, notify the user
exchange.completedConfirm the currency conversion
wallet.fundedCredit the customer's balance in your system

On this page