Skip to main content
Yuno uses a two level model for every payment.
  • status is the top level value. Branch on this in your business logic.
  • sub_status is an optional refinement that adds detail. Useful for support, debugging, and granular UI states.
There are 14 top level statuses and a defined set of sub statuses per top level. The list below is the canonical taxonomy as enforced by payment-rx-orc and surfaced through POST /v1/payments.
AUTHORIZED is not a top level status. It is a sub status of PENDING. Auth only flows return status: PENDING, sub_status: AUTHORIZED until you call Capture. The same is true for PARTIALLY_CAPTURED, PARTIALLY_REFUNDED, and CAPTURED, which are sub statuses of SUCCEEDED, not separate top level values.

Top level statuses

Non terminal statuses can transition. Terminal statuses do not. Async methods typically surface PENDING first and settle to a terminal status through a webhook.

Sub statuses by top level status

Each top level status has a defined set of allowed sub statuses. Use them for UI detail and support workflows. The code is the canonical Yuno value you will see on the payment object and on webhook payloads.

CREATED

READY_TO_PAY

PENDING

VERIFIED

SUCCEEDED

DECLINED

REJECTED

EXPIRED

CANCELED

REFUNDED

IN_DISPUTE

CHARGEBACK

ERROR

FRAUD

Status state machine

The full transition diagram for every top level status. Click to open at full size.

Common flows by payment method

Card, auto capture, no 3DS challenge

The provider authorizes and captures in a single step. The synchronous response is final.

Card, auto capture, with 3DS challenge

The synchronous response carries the redirect or challenge payload. The final status arrives via webhook after the customer completes the challenge.

Card, authorize then capture

Auth holds funds. You either call Capture, Cancel, or let the issuer’s hold window expire.

Pix, Boleto, OXXO, PSE, SPEI, SEPA, ACH and other async methods

The synchronous response returns PENDING with the QR code, voucher reference, or redirect URL. The final status arrives via webhook when the customer completes the off platform action (or the window expires).

Refund

Partial refunds keep the payment in SUCCEEDED with a sub status. A refund that consumes the full captured amount transitions to REFUNDED.

Dispute

How statuses reach your server

  1. Synchronous response from POST /v1/payments carries the initial status. For sync methods this is final. For async methods it is PENDING.
  2. Webhook events carry every subsequent transition. Webhooks are the source of truth.
  3. Polling with GET /v1/payments/{payment_id} is a fallback for missed webhooks. Do not poll as a primary mechanism.
Never rely on client side status checks. Many transitions (3DS settlement, async APM confirmation, dispute updates, capture retries) happen entirely server side and only ever surface through webhooks.

Handling each status in your application

Payment flow

The conceptual lifecycle, capture modes, and integration patterns.

Payments

The operational page: create, capture, refund, and cancel with code.

Webhooks

How status transitions reach your server.

Error handling

The error envelope and retry strategy for ERROR, DECLINED, REJECTED.