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

statusMeaningTerminal
CREATEDInitial state at the time of creating a payment.No
READY_TO_PAYAwaiting customer action (for example a hosted redirect or QR code scan).No
PENDINGMulti step processing, customer action, async settlement, or 3DS challenge in progress. The sub_status carries the specific reason.No
VERIFIEDZero amount card authorization succeeded (used for card verification flows).Yes
SUCCEEDEDPayment completed. The sub_status carries detail (APPROVED, CAPTURED, PARTIALLY_CAPTURED, PARTIALLY_REFUNDED, PARTIALLY_CHARGEBACKED, etc.).Yes
DECLINEDProvider or issuer declined the transaction.Yes
REJECTEDYuno rejected the request for validation or risk reasons (failed before reaching a provider).Yes
EXPIREDPayment or authorization window expired before completion. Common for unpaid Boleto, OXXO, Pix QR codes that timed out.Yes
CANCELEDCancellation succeeded. Single L spelling, matches the API.Yes
REFUNDEDCaptured funds were returned to the customer.Yes
IN_DISPUTEChargeback or inquiry received from the issuer. Awaiting evidence or response.No
CHARGEBACKPredispute deflected. Funds lost.Yes
ERRORSystem error such as timeout or upstream failure. The sub_status indicates the failure mode.No
FRAUDTransaction verified by the fraud provider during stand alone fraud verification.Yes
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

sub_statusMeaning
CREATEDThe payment record has been created but no further processing has started.

READY_TO_PAY

sub_statusMeaning
CREATEDThe payment is ready for customer action (redirect URL or QR code returned).

PENDING

sub_statusMeaning
AUTHORIZEDFunds reserved on a card. Auth only flow waiting for capture.
IN_PROCESSProvider is actively processing.
WAITING_ADDITIONAL_STEPCustomer must complete a follow up (3DS challenge, redirect, OTP). Inspect require_action_type and require_action.redirect_url.
PENDING_PROVIDER_CONFIRMATIONProvider acknowledged the request and is finalizing async settlement.
PENDING_FRAUD_REVIEWFraud screening is in progress.
PENDING_OTP_COMPLETIONAwaiting OTP from the cardholder.

VERIFIED

sub_statusMeaning
VERIFIEDZero amount verification succeeded.

SUCCEEDED

sub_statusMeaning
APPROVEDProvider approved the transaction (auto capture).
CAPTUREDAuthorized funds were captured.
PARTIALLY_APPROVEDProvider approved a partial amount of the requested authorization.
PARTIALLY_CAPTUREDA partial capture was settled against the authorization.
PARTIALLY_REFUNDEDAt least one partial refund was issued. The remainder of the captured amount is still held.
PARTIALLY_CHARGEBACKEDA partial chargeback was applied.
FRAUD_DECLINEDInitially succeeded then later flagged by the fraud screening pipeline.
REFUND_RETRY_IN_PROCESSA refund retry is in progress against this succeeded payment.
CAPTURE_RETRY_IN_PROCESSA capture retry is in progress.
CAPTURE_RETRY_PROCESS_FAILEDThe capture retry failed permanently.

DECLINED

sub_statusMeaning
DECLINEDProvider or issuer declined.
FRAUD_DECLINEDFraud screening declined the transaction before or after the provider call.

REJECTED

sub_statusMeaning
REJECTEDYuno rejected the request for validation, configuration, or risk reasons.

EXPIRED

sub_statusMeaning
EXPIREDThe payment window or authorization window expired.

CANCELED

sub_statusMeaning
CANCELEDThe cancellation completed.
PENDING_PROVIDER_CONFIRMATIONCancellation submitted, awaiting provider acknowledgement.

REFUNDED

sub_statusMeaning
REFUNDEDThe refund completed.
PENDING_PROVIDER_CONFIRMATIONRefund submitted, awaiting provider acknowledgement.

IN_DISPUTE

sub_statusMeaning
RECEIVEDChargeback or inquiry received, evidence not yet submitted.
PENDING_REVIEWProvider or scheme is reviewing submitted evidence.

CHARGEBACK

sub_statusMeaning
LOSTThe chargeback was lost. Funds are gone.

ERROR

sub_statusMeaning
ERRORUnspecified system or provider error.
TIMEOUTThe provider did not respond inside the timeout window.
PENDING_REVERSEA reverse operation is pending after a timeout.
REVERSED_BY_TIMEOUTThe transaction was reversed because of a timeout.

FRAUD

sub_statusMeaning
FRAUD_VERIFIEDThe fraud provider completed verification (used in stand alone fraud verification).

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

CREATED  ->  PENDING (IN_PROCESS)  ->  SUCCEEDED (APPROVED)
The provider authorizes and captures in a single step. The synchronous response is final.

Card, auto capture, with 3DS challenge

CREATED  ->  PENDING (WAITING_ADDITIONAL_STEP)  ->  SUCCEEDED (APPROVED)
                                                or  DECLINED
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

CREATED  ->  PENDING (AUTHORIZED)  ->  SUCCEEDED (CAPTURED)
                                   or  CANCELED
                                   or  EXPIRED
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

CREATED  ->  PENDING (PENDING_PROVIDER_CONFIRMATION)  ->  SUCCEEDED (APPROVED)
                                                      or  EXPIRED
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

SUCCEEDED  ->  REFUNDED                       (full refund)
SUCCEEDED  ->  SUCCEEDED (PARTIALLY_REFUNDED) (partial refund, more remaining)
Partial refunds keep the payment in SUCCEEDED with a sub status. A refund that consumes the full captured amount transitions to REFUNDED.

Dispute

SUCCEEDED  ->  IN_DISPUTE (RECEIVED)  ->  IN_DISPUTE (PENDING_REVIEW)  ->  SUCCEEDED          (won)
                                                                       or  CHARGEBACK (LOST)  (lost)

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

statusWhat to do
CREATED, READY_TO_PAYShow “preparing payment” UI. Surface the redirect or QR code if present.
PENDINGShow “processing” UI. For 3DS, redirect to require_action.redirect_url. For async APMs, render the QR code, voucher, or redirect. Set a timeout matched to the method.
VERIFIEDCard was successfully verified. Store the token if your flow vaults the instrument.
SUCCEEDEDConfirm the order. Fulfill. Store payment_id for refunds.
DECLINEDShow a generic decline message. Do not expose raw provider codes to customers. See Provider errors.
REJECTEDInspect the error response. Fix the request and retry. See Error codes.
EXPIREDNotify the customer the window closed. Offer to create a new payment.
CANCELEDConfirm the cancellation. Release reserved inventory.
REFUNDEDNotify the customer. Update your order record.
IN_DISPUTEPull the dispute, gather evidence, respond before the deadline.
CHARGEBACKFunds are gone. Update internal accounting.
ERRORInspect messages and x-trace-id. Retry transient errors with backoff. Open a support ticket for persistent ones.
FRAUDFraud verification completed. Treat per your risk policy.

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.