POST creates the order in AWAITING_APPROVAL; a subsequent PUT .../approve submits it to the PIX network. The pause between the two is where you implement dual-control, balance checks, or anti-fraud rules.
For other instrument types, see Instrument types. For the underlying state machine, see Payment lifecycle.
The flow
1
Generate an idempotencyKey for the operation
Tie it to the business intent — typically the payout id, prefixed unambiguously.Persist locally before the API call.
2
Pre-flight balance check
Insufficient funds do not reject the create call. The shortfall is detected asynchronously at submit time — after you approve — and the order finalizes as Compare
FAILED with errorCode: "INSUFFICIENT_FUNDS". Check the balance up front so you never submit an order that is doomed to fail.available.value to your intended amount. If insufficient, do not even attempt the create — surface the shortage to the operator.3
Create the order (AWAITING_APPROVAL)
201 Created with status: "AWAITING_APPROVAL". No money has moved yet — the wallet’s available is unchanged.4
Approve to submit (or cancel to drop)
To approve and submit:Response: Response:
200 OK with status: "PENDING". The PIX network is now processing. The wallet’s locked increases by the order amount.To cancel before submission:200 OK with status: "CANCELED". The order never reaches the PIX network. available and locked are unchanged.Both transitions require the order to be in AWAITING_APPROVAL — any other state returns PAYMENT_ORDER_NOT_AWAITING_APPROVAL (for approve) or PAYMENT_ORDER_INVALID_STATE (for cancel).5
Wait for settlement via webhook
On settlement, your registered cash-out endpoint (set up during onboarding) receives a webhook delivery with
status: "SUCCESS". The body is the full PaymentOrder document — no event envelope:locked decreases; amount decreases by the order amount.Verify the X-Webhook-Signature header before trusting the payload (see Verifying signatures), persist, then acknowledge with a 2xx and the literal response body success. Deduplicate deliveries by (id, etag) and guard ordering with ordVersion.On failure, the order finalizes FAILED and a webhook delivery with status: "FAILED" arrives; locked decreases and amount is unchanged — funds are released:Dual control — common patterns
AWAITING_APPROVAL is the design hook for human or automated approval gates. Two common patterns:
Pattern A — operator review
Operators see allAWAITING_APPROVAL orders in a dashboard, click “approve” or “cancel” individually. Use this when each payment carries enough variance that human judgment is valuable.
Pattern B — automated rule engine
A separate service discovers new orders — by polling theAWAITING_APPROVAL list above, or via an internal message from the creating service (order creation is an intermediate state and never generates a webhook) — applies business rules (limits, anti-fraud, beneficiary checks), and calls approve or cancel automatically. Use this for high-volume, low-variance flows like payroll.
The benefit of separating create from approve: the approver service can use a different credential with stricter RBAC than the creator service. The first service can create payouts at scale; only the second can submit them.
Recipient resolution
ForPIX_CASH_OUT_KEY, the recipient account is resolved by the provider after submission. You do not need to know the bank or account number — just the PIX key. The resolved creditorAccount appears in the order response after settlement.
If the key cannot be resolved (recipient does not exist, key is malformed), the order finalizes as FAILED with errorCode: "RECIPIENT_INVALID". The funds are never debited from your wallet.
Cancel after approve
Once you callapprove, the order moves to PENDING and you can no longer cancel it. The order will reach a final state (SUCCESS or FAILED) on the PIX network’s timeline — typically seconds.
If you must reverse an outbound payment after it settled, you need a separate refund flow (request via the PIX network), not a cancel.
Reconciliation
Per outbound order, your local record should accumulate:
Match
payout-2026-0309 (your local id) to ord_4Lq... (Bloobank id) to E60746948... (PIX network id) — three layers of identity that collectively define the reconciliation chain.
Common errors
See Error catalog for the full list.
Next
Pix cash-in
The inbound counterpart.
Instrument types
KEY, EMV, ACCOUNT — when to use each.
Webhooks overview
Receiving settled-order deliveries.