On-ramp, off-ramp, or both? How to tell which stablecoin API your product needs

Match your use case to the direction money moves: on-ramp, off-ramp, or both. Covers payroll, remittance, marketplaces, treasury, and 10 questions to ask.

You need an on-ramp if money starts in a bank account and must end up as stablecoins, an off-ramp if stablecoins must end up in someone's bank account, and both if your product collects in one currency and pays out in another. Most payroll and supplier products are off-ramp first. Marketplaces and remittance apps usually need both.

Key takeaways

  • Direction is the first decision. It sets which rails, which compliance checks, and which failure modes you have to build for.
  • Payroll, contractor, and supplier payments start off-ramp. Merchant and B2B collections start on-ramp.
  • Marketplaces, remittance, and cross-border collections need both, which is where one provider for both legs saves a KYB and a reconciliation job.
  • Failure handling differs by direction. A rejected deposit goes back to a sender's bank; a rejected payout goes back to a wallet, or does not move at all.
  • Ask providers the same 10 questions for each direction. The answers are rarely the same.

If the terms are new, what is a crypto on-ramp and off-ramp covers the definitions, and types of stablecoin APIs shows where ramps sit among issuer, wallet, and orchestration APIs. This guide is about choosing.

What are a stablecoin on-ramp and off-ramp?

A stablecoin on-ramp converts local currency from a bank transfer into stablecoins and delivers them to a blockchain wallet. A stablecoin off-ramp does the reverse: it converts stablecoins into local currency and pays it into a bank account.

Definition. A stablecoin on-ramp is a service that accepts a bank deposit in local currency, such as USD by ACH or BRL by Pix, converts it to a stablecoin like USDC or USDT, and credits that amount to a wallet the customer chose.

Definition. A stablecoin off-ramp is a service that accepts stablecoins from a wallet, converts them to local currency at a quoted rate, and pays the result into a named bank account over a local rail such as ACH, Pix, SPEI, or SEPA.

How do on-ramps and off-ramps compare side by side?

An on-ramp and an off-ramp run the same conversion in opposite directions, so their inputs, risks, and users mirror each other.

On-rampOff-ramp
DirectionBank account to walletWallet to bank account
InputFiat bank transferUSDC or USDT
OutputStablecoins in a walletLocal currency in a bank account
Typical railsACH, wire, Pix, SPEI, SWIFT inPix, SPEI, ACH, RTP, SEPA, SWIFT out
Typical userMerchants, employers funding payroll, treasuriesPayroll platforms, marketplaces, importers
Key riskDeposits that arrive without the right referenceWrong bank details or a recipient name mismatch
Example productA US virtual account that settles deposits to USDCPaying contractors in Brazil over Pix

Which direction does each use case need?

Most products can be placed in one row below. The last column is the first thing to test in a sandbox, because it is where that use case usually breaks.

Use caseDirectionWhyTest first
Contractor payrollOff-ramp (on-ramp if the employer funds in fiat)Workers want local currencyA batch with one invalid bank account
RemittanceBothSender pays in fiat, recipient gets fiatTotal cost of both conversions on one corridor
Marketplace seller payoutsOff-ramp, often bothBuyers pay by card or bank, sellers want local currencyPayouts to many new recipients in one day
Merchant collectionsOn-rampCustomers pay by bank transfer, the merchant settles in stablecoinsA deposit missing its reference code
B2B collections from abroadOn-rampForeign clients wire dollars to a named accountA SWIFT deposit with intermediary fees deducted
Supplier paymentsOff-rampSuppliers invoice in local currencyName matching on business accounts
Treasury fundingOn-rampMoving bank cash into stablecoinsLarge deposits near the rail's cut-off
Treasury exitOff-rampMoving stablecoins back to a bankPer-transaction limits on large amounts

A useful rule: if your product's ledger is denominated in stablecoins, ask which side of the ledger touches a bank. That side needs a ramp.

How does an on-ramp API flow work?

An on-ramp API flow turns a quote into deposit instructions, waits for the bank transfer, converts it, and credits a wallet.

  1. Verify the customer. KYC for a person, KYB for a business. The provider checks who will be sending money in.
  2. Create a quote. Lock the payment method, amount, and fees. Quotes are short-lived; many expire within minutes.
  3. Share deposit instructions. The API returns what the payer needs: bank details and a reference code, a Pix code, a CLABE, or a dedicated virtual account.
  4. Wait for the deposit. Timing follows the rail. Banco de México says SPEI payments should take no more than 30 seconds. ACH follows banking days; Nacha estimates about 80% of ACH payments settle in one banking day or less.
  5. Convert and credit the wallet. The provider converts the deposit to USDC or USDT and sends it to the wallet on the network the quote named.
  6. Confirm by webhook. A completion event tells your system to update the ledger.

How does an off-ramp API flow work?

An off-ramp API flow locks a rate, takes the stablecoins, and pays local currency into a bank account.

  1. Verify the customer and add the recipient. Store the bank account or Pix key and the recipient's name and tax ID where the country requires it.
  2. Create a quote. Lock the rate, fees, and the amount the recipient will receive.
  3. Fund the payout. Either approve the exact stablecoin amount from your wallet or draw on a balance the provider holds.
  4. Convert and pay out. The provider sells the stablecoins for local currency and sends it over the local rail. Pix, run by Banco Central do Brasil, operates 24/7. ACH and wires follow business days.
  5. Confirm by webhook. A terminal event reports completed, failed, or refunded.

What happens when a payment fails or cannot settle?

When a ramp payment cannot settle, the money goes back the way it came, but the two directions return to different places and at different speeds.

On-ramp failures happen before the conversion. A deposit arrives without its reference, from a sender name that does not match, or after the quote expired. The usual outcome is a manual review, then a return to the sender's bank account over the same rail. Returns on business-day rails take business days.

Off-ramp failures happen after the stablecoins moved. The receiving bank rejects the account number, the name does not match, or a limit is hit. The provider has to send the stablecoins back to the funding wallet or hold them until you fix the recipient.

BlindPay separates these outcomes in its statuses. A refunded payin means the deposit was returned to the sender. A refunded payout means the stablecoins were returned to the funding source instead of being converted. A failed payout did not complete and is not refunded automatically, so the right response is to contact support rather than wait. Stablecoin payout statuses explained covers each state.

Build for this from day one: store the quote ID, handle every terminal status in your webhook handler, and never mark a payout as paid on the "processing" event.

When does a product need both directions?

A product needs both an on-ramp and an off-ramp when it collects money in one currency and pays it out in another, and holds stablecoins only in between.

That is the remittance and marketplace pattern. A US buyer pays in dollars by ACH, the platform settles in USDC, and the seller in Mexico receives pesos over SPEI. The stablecoin is the settlement layer, not the product.

Using one provider for both legs removes three joins: a second KYB of the same customer, a transfer of stablecoins between vendors, and two webhook formats to reconcile into one ledger. The trade-off is pricing power. Compare the full round-trip cost on your top corridor against two specialists before you commit. How to choose an on/off ramp provider has the scoring method.

On compliance, both legs carry the same core checks. FATF's guidance on virtual assets applies the Travel Rule to transfers between virtual asset service providers in either direction, so originator and beneficiary data can be required on both sides. Confirm your own obligations with qualified counsel.

What should you ask a provider before integrating?

Ask the same 10 questions for each direction you need. The answers often differ between the on-ramp and the off-ramp of the same provider.

#QuestionWhy it matters
1Which rails are live in production, per direction?A rail can be live for payouts and not for deposits
2Which chains and stablecoins does each direction support?Not every token exists on every chain
3What are the per-transaction and daily limits?Limits decide whether treasury flows fit at all
4Who runs KYC and KYB, and on whom?You may still have to verify the end recipient
5How long is a quote valid?Short expiry needs a fast execute path in your code
6What are the fees, and who pays them?Fees can come off the sent or the received amount
7What happens to funds on a failure or a return?Refund to wallet, return to bank, or manual case
8Which webhook events exist, and are they signed?Your ledger depends on every terminal event
9Does the sandbox simulate failures and refunds?Untested failure paths break in production
10What are the settlement SLAs per rail?Your users will ask when the money arrives

BlindPay answers these per rail in its docs: payins for the on-ramp side and payouts for the off-ramp side, with sandbox amounts that force a failed or refunded payout so you can test question 9 before going live.

FAQ