Payment Lifecycle States
RemitFlex represents the state of every payment as astatus field on the payment object. The status progresses forward through a linear happy path, with two terminal failure states that can occur at any point.
| Status | Description |
|---|---|
pending | The payment has been created and accepted by the API. RemitFlex is performing pre-flight compliance checks and preparing the routing plan. |
processing | Compliance checks passed. The payment is actively moving through the stablecoin rails and/or FX conversion layer. |
compliance_review | The payment has been flagged for manual compliance review and is temporarily on hold. You will receive a compliance.review_required webhook event. |
settled | On-chain settlement is confirmed. For stablecoin-to-stablecoin payments, this is the final success state. |
delivered | Funds have been deposited to the recipient’s bank account or wallet. Applies to fiat off-ramp flows where bank delivery is the terminal step. |
failed | The payment could not be completed. The payment object will include a failure_reason field with a machine-readable code and human-readable message. |
cancelled | The payment was cancelled — either by your request before processing began, or automatically due to a compliance hold that was not resolved within the review window. |
For stablecoin-to-stablecoin payments,
settled is the terminal success state. The delivered status is only used for flows that end with a fiat bank deposit, confirming the recipient’s account has been credited. The compliance_review status is a transient hold state — payments resume automatically once the review concludes.Flow Types
RemitFlex supports three main payment flow types. The flow type is determined automatically by the source currency and destination currency you specify when creating a payment.- Stablecoin → Stablecoin
- Stablecoin → Fiat (Off-Ramp)
- Fiat → Stablecoin (On-Ramp)
A stablecoin-to-stablecoin flow moves value between two stablecoin denominations — for example, converting USDC to EURC for a European business partner who holds a EURC wallet. No fiat banking system is involved.This is the fastest flow type. Settlement is near-instant once on-chain confirmation is received, typically completing in under five minutes.Example use cases:
- Paying a European supplier in EURC from your USDC treasury
- Rebalancing your own stablecoin holdings across currencies
- Settling invoices between businesses that both hold stablecoin wallets
Payment Created
You call
POST /payments with source_currency: "USDC" and destination_currency: "EURC". RemitFlex returns a payment object with status: "pending".Compliance Pre-flight
RemitFlex runs automated sanctions screening and AML checks against both the source and destination. This typically completes in under 10 seconds.
FX Conversion
The orchestration engine locks an exchange rate and converts USDC to EURC via RemitFlex’s liquidity network.
Payment Routing and the Orchestration Engine
When you submit a payment, RemitFlex’s orchestration engine automatically selects the optimal route based on:- Corridor availability — Which liquidity partners and settlement paths are active for the source/destination pair
- Exchange rates — Real-time FX quotes from multiple liquidity providers; the engine selects the best rate
- Settlement speed — Routes are weighted toward faster paths when multiple options exist at similar cost
- Compliance posture — Certain corridors require additional screening steps; the engine factors these in before routing
routing field contains the selected corridor ID, liquidity provider, and the locked exchange rate applied to your payment.
Settlement Times by Flow Type
| Flow Type | On-Chain Settlement | End-to-End Delivery |
|---|---|---|
| Stablecoin → Stablecoin | < 5 minutes | < 5 minutes |
| Stablecoin → Fiat (Off-Ramp) | < 30 minutes | 1–2 business days |
| Fiat → Stablecoin (On-Ramp) | < 30 min after bank receipt | Depends on inbound bank transfer |
All times are estimates under normal operating conditions. Compliance reviews, network congestion, or local banking disruptions can extend these windows. RemitFlex will emit a
payment.delayed webhook event if a payment exceeds its expected settlement window.Webhook Events for Payment State Changes
Rather than polling theGET /payments/{id} endpoint, subscribe to webhooks to receive real-time state updates. RemitFlex emits an event each time a payment transitions to a new status.
| Event | Trigger |
|---|---|
payment.pending | Payment created and accepted |
payment.processing | Compliance passed; payment is on its way |
compliance.review_required | Payment flagged for manual compliance review and on hold |
compliance.review_approved | Compliance review passed; payment resumes automatically |
payment.settled | On-chain settlement confirmed |
payment.delivered | Fiat deposited to recipient bank account |
payment.failed | Payment could not be completed |
payment.cancelled | Payment cancelled by request or compliance hold |
POST /webhooks API endpoint.