Complete reference for payment status flows, reasons, and return codes
pending
status is the point of no returnCreated
Scheduled
Pending
Paid
pending
status, it has been submitted to the payment network and cannot be stopped, held, or cancelled. The payment must complete its network processing.Status | Description | Can Modify? | Terminal? |
---|---|---|---|
created | Payment created, awaiting verification | ✅ | No |
scheduled | Verified and queued for processing | ✅ | No |
pending | Sent to network | ❌ | No |
on_hold | Paused for review | ✅* | No |
paid | Successfully funded | ❌ | No† |
failed | Declined/returned before funding | ❌ | Yes |
reversed | Returned after funding completed | ❌ | Yes |
cancelled | Terminated before network submission | ❌ | Yes |
reversed
if return occurs post-funding
Status | When It Occurs | Money Movement | Example |
---|---|---|---|
failed | Before funding completes | No money moved | NSF during processing |
reversed | After funding completes | Money moved, then returned | Dispute filed after payment |
Reason Code | Description | Typical Source |
---|---|---|
ok | Normal/successful status | system |
insufficient_funds | Customer’s account has insufficient funds | bank_decline |
closed_bank_account | Bank account is closed | bank_decline |
invalid_bank_account | Account cannot be located or is invalid | bank_decline |
invalid_routing | Invalid ACH routing number | bank_decline |
frozen_bank_account | Account frozen or OFAC hold | bank_decline |
owner_deceased | Account owner is deceased | bank_decline |
disputed | Customer notified bank payment was unauthorized | customer_dispute |
payment_stopped | Customer placed stop payment order | bank_decline |
risk_review | Payment under review by Straddle | watchtower |
fraudulent | Declined due to suspected fraud | watchtower |
payment_blocked | Watchtower rule prevented origination | watchtower |
invalid_paykey | Paykey blocked due to previous failures | watchtower |
amount_too_large | Exceeds maximum allowed amount | system |
too_many_attempts | Daily transaction limit exceeded | system |
duplicate_entry | Duplicate transaction detected | system |
internal_system_error | Internal system error | system |
user_request | User-requested action | user_action |
other_network_return | Other network return codes | bank_decline |
payout_refused | Receiver refused credit | bank_decline |
Source | Description | Examples |
---|---|---|
system | System-generated status | Normal processing, limits |
watchtower | Internal fraud/risk system | Risk holds, fraud detection |
bank_decline | Bank or network declined | NSF, closed account |
customer_dispute | Customer disputed payment | Unauthorized claim |
user_action | Manual user action | User-initiated holds |
Code | Reason | Message | Pre/Post Funding |
---|---|---|---|
R01 | insufficient_funds | The customer’s account has insufficient funds | Both |
R09 | insufficient_funds | Uncollected funds | Both |
R02 | closed_bank_account | The bank account is closed | Both |
R03 | invalid_bank_account | The bank account could not be located | Pre |
R04 | invalid_bank_account | Bank account number invalid (missing digits) | Pre |
R13 | invalid_routing | Invalid ACH routing number | Pre |
R20 | invalid_bank_account | Account not eligible for transaction activity | Pre |
R05 | disputed | Debit to consumer account using corporate consent | Post |
R07 | disputed | Authorization revoked by customer | Post |
R10 | disputed | Customer advises not authorized | Post |
R11 | disputed | Check truncation entry return | Post |
R29 | disputed | Corporate customer notified bank unauthorized | Post |
R08 | payment_stopped | Customer placed stop payment order | Both |
R14 | owner_deceased | Representative payee deceased | Both |
R15 | owner_deceased | Beneficiary/account holder deceased | Both |
R16 | frozen_bank_account | Account frozen or OFAC hold | Both |
R23 | payout_refused | Receiver refused credit | Pre |
R24 | duplicate_entry | Duplicate entry | Pre |
R06+ | other_network_return | Various other return reasons | Both |
Code | Reason | Message | When Applied |
---|---|---|---|
S01 | payment_blocked | Invalid routing number | Pre-origination |
S02 | payment_blocked | Known bad account number | Pre-origination |
S10 | payment_blocked | Invalid account number | Pre-origination |
S11 | payment_blocked | Previous R02, R03, R04, R16, or R20 | Pre-origination |
S12 | payment_blocked | Previous R05, R07, R08, R10, R11, or R29 | Pre-origination |
S13 | payment_blocked | Invalid ODFI credentials | Pre-origination |
created
- Payment initializedscheduled
- Verification passed, risk approvedpending
- Sent to ACH networkpaid
- Funds successfully transferredcreated
→ scheduled
→ pending
failed
with insufficient_funds
reasoncreated
→ scheduled
→ pending
→ paid
paid
to reversed
created
- Payment initializedon_hold
with risk_review
reasonon_hold
→ scheduled
→ normal flowon_hold
→ cancelled
status_details
for specific reasons and codes.