Skip to main content
Outbound flows differ from inbound in one important way: they are two-step. 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 FAILED with errorCode: "INSUFFICIENT_FUNDS". Check the balance up front so you never submit an order that is doomed to fail.
Compare 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)

Response: 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: 200 OK with status: "PENDING". The PIX network is now processing. The wallet’s locked increases by the order amount.To cancel before submission:
Response: 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 all AWAITING_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 the AWAITING_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

For PIX_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 call approve, 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.