Statuses
Transaction status
The top-level status values a transaction can carry, the status object shape, and how to act on each outcome.
Lifecycle
PROCESSING is the only non-final status. APPROVED, DECLINED, CANCELLED, ERROR, and UNKNOWN
are all final — none of them transition to another status on their own.
How to act on each status
APPROVED
APPROVED
PROCESSING
PROCESSING
The transaction is still in flight. Poll transaction status or
wait for a webhook event rather than resubmitting the request.
DECLINED
DECLINED
The issuer, processor, or a SmartRetry risk/validation rule refused the transaction. Read
reasonCode and domain to determine whether the decline is retryable — see
Decline codes.ERROR
ERROR
A technical failure prevented the transaction from completing, distinct from an issuer decline.
These are typically safe to retry with a new
Idempotency-Key.CANCELLED
CANCELLED
The transaction was cancelled — for example, by a void — before it
reached a final outcome. No funds moved.
UNKNOWN
UNKNOWN
The outcome could not be determined, for example after a timeout with no response from the
processor. Do not assume success or failure.
The status object
GET /v1/payments/status/{terminal_friendly_id}/{transaction_id} returns status as a structured
object, not a plain string:
string
The top-level outcome. See the values above.
string
required
A dot-separated code identifying the reason for the status. See Reason code formats below for
how this differs from the
reason_code on error responses.string
The functional area responsible for the status. See Status reason codes for the full breakdown by domain.
string
The reason segment of the code, without the domain prefix.
string
required
A human-readable name for the specific reason.
string
A plain-language description of what this reason means.
object
Present for validation-related reasons. Identifies the offending field.
Reason code formats
SmartRetry uses the same underlying catalog in two different string formats, depending on where it appears.- status.reasonCode
- error reason_code
Dot-separated, and truncated to at most two segments:
DOMAIN.REASON. The full three-segment
detail is still reflected in name and description.Status domains
Thedomain field tells you which part of the payment chain produced a status — SmartRetry’s own
validation, risk rules, routing, the card network, the processor, the payment method, or the payer’s
account. Domain names and descriptions are documented alongside the full code catalog.
Status reason codes
All 300+ reason codes, grouped and described by domain.
Related
Transaction status endpoint
Retrieve the current status and details of any transaction.
Status reason codes
The full reason-code catalog, grouped by domain.
Errors
HTTP status codes and error response structure.
The high-level outcome of a transaction.
Available options:
APPROVED, PROCESSING, DECLINED, ERROR, CANCELLED, UNKNOWN Example: