Skip to main content
On this page

Use payment.data.status as the source of truth for a payment. When the payment is wrapped in an order response, read order.payment.data.status. The order container does not change the meaning of the payment status.

Always evaluate the status together with confirmed amounts and operation history. An accepted API request or an HTTP 2xx response can mean that an asynchronous operation started; it does not always mean that money moved.

For fraud decisions, see Fraud workflow and statuses. For asynchronous provider updates, see DEUNA Webhooks.

Status families#

The labels below explain how merchants should handle the values; they are not additional API fields.

FamilyStatusesMerchant handling
Waiting for action or confirmationpending, pending_3ds, processing, authorizing, capturing, partial_capturing, voiding, refunding, partial_refunding, manual_reviewKeep the payment unresolved. Complete any required customer action and wait for, or retrieve, an authoritative result.
Confirmed and still operableprocessed, authorized, captured, partial_captured, partial_refundedRecord the confirmed financial result. A later eligible capture, refund, or void can still change the status.
Unsuccessful but recoverabledeniedDo not fulfill from this attempt. A retry or routing decision can move the same payment back into an active state, so do not model denied as terminal.
Cancellation awaiting financial resolutioncancelledInspect prior financial activity. A refund or void can still follow.
Terminalvoided, refunded, expiredThe core payment state machine has no outgoing transition from these values.

partial_captured and partial_refunded can be the last state required by the merchant's business process even though they are not terminal API statuses. Keep the real status and cumulative amounts; never replace a partial status locally with captured or refunded.

Choose the payment workflow#

Card payments and alternative payment methods do not move through the same customer actions or processing states. Start with the workflow that matches the payment method, then return here for the canonical status and transition references.

The diagrams on those pages show the normal merchant-facing path. Direct transitions, retries, reconciliation paths, and provider-specific branches remain authoritative in the validated transition reference.

Payment status reference#

Values are case-sensitive lowercase strings.

StatusMeaningWhat the merchant should do
pendingPayment created; customer action, routing, or provider confirmation may still be required.Follow next_action or method instructions and keep fulfillment blocked.
pending_3ds3DS authentication is incomplete.Complete the challenge, then evaluate the resulting payment status.
processingA purchase or APM payment is in progress.Retrieve the authoritative result after DEUNA processes the provider update; do not retry prematurely.
processedA single-step purchase completed.Record success and apply the fulfillment policy; refunds may follow.
authorizingThe authorization request is in progress.Do not treat funds as captured or reserved yet.
authorizedFunds were successfully reserved.Capture or void when eligible.
capturingA full capture is in progress.Track the operation and wait for confirmation.
partial_capturingA partial capture is in progress.Keep pending and confirmed captured amounts separate.
partial_capturedA partial amount was captured.Record the confirmed amount and remaining capture/refund eligibility.
capturedCapture completed.Record the collected amount; refunds may follow.
voidingRelease of an authorization is in progress.Wait for voided or a restored/failed result.
voidedThe authorization was released.Record terminal completion.
refundingA full or remaining-balance refund is in progress.Wait for confirmation; request acceptance is not proof of returned funds.
partial_refundingA partial refund is in progress.Track pending and confirmed refunded amounts separately.
partial_refundedA partial refund completed.Record the amount and remaining refundable balance.
refundedThe refundable balance represented by the lifecycle was returned.Record terminal completion.
manual_reviewThe payment is held for a risk decision.Keep fulfillment blocked until the payment receives a new status.
deniedThe current attempt was rejected.Do not fulfill. Preserve the reason; a configured retry can re-enter the active flow.
cancelledThe method or merchant cancelled the payment.Check whether a refund or void must still complete.
expiredThe allowed completion window closed before payment finished.Record terminal completion; create a new payment if the customer tries again.

not_authorized and failed are used by processor or operation-level adapters, but they are not canonical values in the core payment.data.status transition graph. Do not merge provider-operation statuses, capture/refund operation statuses, or local timeout markers into the payment status field.

Validated transition reference#

The following transitions match the Payments core state machine. Repeated delivery of the same state is omitted except where it is explicitly accepted. A listed transition does not guarantee that every processor or payment method supports the corresponding operation.

Current statusAllowed next statuses
pendingpending, pending_3ds, authorizing, authorized, processing, processed, cancelled, voided, denied, manual_review, expired
pending_3dspending_3ds, authorizing, authorized, processing, processed, cancelled, denied, manual_review, expired
processingprocessed, cancelled, denied, manual_review, partial_refunding, refunding, partial_refunded, refunded
processedrefunding, refunded, partial_refunding, partial_refunded, voided
authorizingauthorized, captured, voiding, cancelled, denied, manual_review
authorizedcapturing, captured, partial_capturing, partial_captured, voiding, voided, cancelled
capturingcaptured, denied; for supported pending-capture recovery flows: authorized, partial_capturing, partial_refunding, partial_refunded, refunding, refunded
partial_capturingcapturing, partial_captured, captured, denied
partial_capturedcaptured, partial_refunding, partial_refunded, refunding, refunded
capturedpartial_refunding, partial_refunded, refunding, refunded
voidingvoided, denied, authorized
refundingrefunded, partial_refunded, voided, processed, captured
partial_refundingpartial_refunded, refunding, refunded, denied, processed, captured, partial_captured
partial_refundedpartial_refunding, refunding, refunded
manual_reviewprocessed, captured, denied
deniedpending, pending_3ds, processing, processed, authorizing, authorized, manual_review, denied
cancelledrefunded, voided
voidedNone (terminal)
refundedNone (terminal)
expiredNone (terminal)

Settlement-file reconciliation can enable additional recovery transitions while DEUNA reconciles an external processor result. These transitions do not change the public meaning of the statuses.

Some processor profiles can accept a refund while an asynchronous capture is still pending. In that flow, DEUNA can cancel or reverse the pending capture and refund the original authorization, which enables the additional transitions listed for capturing. Do not initiate this flow unless DEUNA has confirmed support for the processor connection.

Handle updates safely#

  1. Retrieve the authoritative payment before changing local state.
  2. Identify the payment and related operation before applying the update.
  3. Store the reported status, confirmed amount, currency, operation identifier, and provider references.
  4. Process repeated retrieval and client retries idempotently. Do not deduplicate by status alone.
  5. Keep fulfillment blocked for transient, review, or unknown states.
  6. Reconcile missing or conflicting outcomes through the supported payment retrieval flow.

An HTTP timeout, lost response, or delayed provider update does not prove denied or expired. Follow idempotent request guidance, retrieve the payment, and distinguish a retry of the same request from a new payment attempt.

In this section