Skip to main content
Every payment in RemitFlex follows a well-defined lifecycle, moving through a sequence of states from the moment you create it to the moment your recipient receives funds. Understanding these flows — and the three primary payment types — helps you build integrations that handle status transitions gracefully, set accurate delivery expectations, and troubleshoot edge cases quickly.

Payment Lifecycle States

RemitFlex represents the state of every payment as a status 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.
StatusDescription
pendingThe payment has been created and accepted by the API. RemitFlex is performing pre-flight compliance checks and preparing the routing plan.
processingCompliance checks passed. The payment is actively moving through the stablecoin rails and/or FX conversion layer.
compliance_reviewThe payment has been flagged for manual compliance review and is temporarily on hold. You will receive a compliance.review_required webhook event.
settledOn-chain settlement is confirmed. For stablecoin-to-stablecoin payments, this is the final success state.
deliveredFunds have been deposited to the recipient’s bank account or wallet. Applies to fiat off-ramp flows where bank delivery is the terminal step.
failedThe payment could not be completed. The payment object will include a failure_reason field with a machine-readable code and human-readable message.
cancelledThe 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.
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
Typical lifecycle:
1

Payment Created

You call POST /payments with source_currency: "USDC" and destination_currency: "EURC". RemitFlex returns a payment object with status: "pending".
2

Compliance Pre-flight

RemitFlex runs automated sanctions screening and AML checks against both the source and destination. This typically completes in under 10 seconds.
3

FX Conversion

The orchestration engine locks an exchange rate and converts USDC to EURC via RemitFlex’s liquidity network.
4

On-Chain Settlement

EURC is delivered to the recipient’s wallet address on-chain. Status transitions to settled.

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
You don’t need to specify a route. If you want visibility into the route chosen, the payment object’s routing field contains the selected corridor ID, liquidity provider, and the locked exchange rate applied to your payment.
Use the preferred_settlement_speed parameter when creating a payment if your use case prioritises either cost or speed. Accepted values are "economy" and "express". Express routing is available on select corridors and incurs a small premium.

Settlement Times by Flow Type

Flow TypeOn-Chain SettlementEnd-to-End Delivery
Stablecoin → Stablecoin< 5 minutes< 5 minutes
Stablecoin → Fiat (Off-Ramp)< 30 minutes1–2 business days
Fiat → Stablecoin (On-Ramp)< 30 min after bank receiptDepends 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 the GET /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.
EventTrigger
payment.pendingPayment created and accepted
payment.processingCompliance passed; payment is on its way
compliance.review_requiredPayment flagged for manual compliance review and on hold
compliance.review_approvedCompliance review passed; payment resumes automatically
payment.settledOn-chain settlement confirmed
payment.deliveredFiat deposited to recipient bank account
payment.failedPayment could not be completed
payment.cancelledPayment cancelled by request or compliance hold
Configure your webhook endpoint in the RemitFlex dashboard under Developers → Webhooks, or via the POST /webhooks API endpoint.