Stablecoin on-ramp limits: payin minimums, maximums, and what caps a deposit

What caps a stablecoin on-ramp payin: per-currency minimums and maximums, the receiver's KYC limit, method caps, OTC floors, and how to check room left.

A stablecoin on-ramp payin is capped by five things at once: a per-currency minimum and maximum, the receiving customer's per-transaction limit, their remaining daily and monthly room, payment method caps, and the payer's own rail. The tightest one wins. On BlindPay, the payin quote checks them before any money moves.

Off-ramp limits get all the attention because payouts are where teams feel them. On-ramps have their own set, and they're shaped differently: the payer is often a third party, the currency floors vary wildly, and some deposits skip quotes entirely. Stablecoin off-ramp limits covers the KYC tiers and how to raise them. This page is the payin side.

Key takeaways

  • The payin quote enforces a minimum and a maximum per currency. COP's floor is far higher in pesos than the others.
  • The maximum that applies is the lower of the currency ceiling and the receiver's per-transaction limit.
  • Payin and payout limits are separate, both counted on the stablecoin amount.
  • Remaining room resets on UTC calendar days and months, and only completed payins count.
  • MXN, COP, and ARS payins settle in whole pesos.
  • OTC payins start at $5,000 and expire in 10 seconds. Virtual account deposits skip quote minimums.

What limits apply to an on-ramp payin?

Five layers. Here's where each one lives and how it fails.

LayerExample on BlindPayHow it fails
Currency minimum and maximumAbout $10 to 100,000 units per quote; COP minimum $2,000.00Quote rejected with LIMITS_AMOUNT_OUT_OF_RANGE
Receiver's per-transaction limit$10,000 to $50,000 by default, by KYC tierSame error, naming the range that applied
Receiver's daily and monthly roomRemaining amounts from the limits endpointQuote rejected once room runs out
Payment method capsach and wire without a virtual account capped at $500,000; rtp alwaysQuote rejected
Payer's railSame Day ACH $1 million per payment; RTP up to $10 millionPayer's bank delays or blocks the transfer

The first four are enforced by the quote (cut-off times, customers). The fifth sits at the payer's bank, outside any provider. Nacha's Same Day ACH rule has "a $1 million per payment limit", and Nacha says it will "increase tenfold from $1 million to $10 million" on September 17, 2027 (Nacha). RTP lets a bank "send up to $10 million per transaction" (The Clearing House). The payer's own bank can still apply a lower limit to its customers.

What are the per-currency minimums and maximums?

BlindPay's payin quotes enforce these bounds, in the currency the payer sends (cut-off times):

CurrencyMinimumMaximum
USD$10.00$100,000
BRLR$10.00R$100,000
MXN$10.00$100,000
ARS$10.00$100,000
EUR€10.00€100,000
COP$2,000.00$100,000

Two cautions. The docs say thresholds "can change", so treat the table as a reference, not constants for your code. And the indicative preview endpoint, POST /payin-quotes/fx, has its own lower floor of $5.00, so a preview can show a price for an amount the real quote will reject (payin quotes). Validate against the quote.

Why is COP different? A peso is worth a fraction of a cent, so a floor that looks huge in pesos is small in dollars. Notice the maximum: 100,000 units in every currency. That's very different value depending on which currency you collect.

Which maximum wins: the currency ceiling or the KYC limit?

The lower one. The docs are direct about it: the maximum that applies to a quote "is the receiver's per-transaction limit", which can sit below the currency ceiling.

Note whose limit it is. On a payin, the limit belongs to the receiving customer, the one whose wallet gets the stablecoins, not to whoever sends the bank transfer. A platform collecting from 300 payers into one customer's wallet hits that one customer's daily and monthly room 300 times.

Limits are counted on the stablecoin amount, and payins and payouts are separate allowances. A business that receives $90,000 on Monday still has its full payout room on Tuesday.

How do you check how much payin room is left?

Call the remaining-limits endpoint before a large collection (customers):

Bash
GET /v1/instances/{instance_id}/limits/customers/{customer_id}

It returns payin and payout, each with daily and monthly, in USD cents. Four details matter:

  1. It's what's left, not what's used. The limit minus completed volume in the window.
  2. Windows are UTC calendar days and months. Not rolling 24 hours or 30 days.
  3. Only completed payins count. A deposit still processing doesn't reduce the number yet.
  4. It can go negative. For example, after a limit increase is approved for less than the customer already used.

Point three is the trap. Ten payins in flight at once can each pass the quote check and together exceed the day. Check the remaining room, subtract what you already have processing, and then quote.

Why does an MXN, COP, or ARS payin reject cents?

Because those rails settle in whole currency units. With currency_type: "sender", the request_amount for MXN, COP, or ARS must be a multiple of 100 minor units. 10000 works. 10050 fails with request_amount_must_be_a_whole_currency_unit (payin quotes).

If you quote by the stablecoin side instead, currency_type: "receiver", the quote accepts any amount but rounds the computed peso amount down to a whole unit. The payer sees a whole-peso number, slightly lower than a straight conversion. Show that rounded sender_amount to the payer, not your own math. How to on-ramp local currency in Latin America covers what each rail shows the payer.

What changes for OTC quotes and virtual account deposits?

Both change the floor, in opposite directions.

OTC payins raise it. On BlindPay, an OTC payin quote is BRL only, delivers USDT only, needs at least $5,000 in USD equivalent, and expires in 10 seconds. The Pix deposit window runs until 23:59 BRT that day, and if the deposit never arrives, a flat $100.00 penalty is added to the quote's billing fee (payins). OTC vs standard quotes explains when that trade is worth it.

Virtual account deposits remove it. They skip the quote minimums entirely: any positive amount forms a payin, including a $0.01 micro-deposit, and every deposit delivers at least $0.01 of stablecoin. Fees still apply. Below $100.00, BlindPay's fee is accrued to your invoice; at $100.00 or more, it's deducted at the time of the transaction (virtual account fees).

Illustrative example: which cap does a R$150,000 collection hit?

Illustrative example. A Brazilian customer of a marketplace, verified as KYB Standard, wants to on-ramp R$150,000 by Pix in one go. Assume an illustrative rate of 5.40 BRL per USD.

CapLimitIn BRL at 5.40Binds?
BRL currency ceilingR$100,000R$100,000Yes, first
KYB Standard per transaction$30,000R$162,000Not for this amount
KYB Standard daily$100,000R$540,000No

The currency ceiling binds before the KYC limit. R$150,000 doesn't fit one standard quote. The options: two payins of R$75,000, each with its own quote, or an OTC quote if the size and the 10-second window suit the flow. Before sending the second payin, check remaining daily room, since the first one only counts once it completes.

Same marketplace, collecting in MXN instead: 100,000 pesos at an illustrative 18.50 MXN per USD is about $5,405. The per-currency ceiling bites much earlier in value terms. Plan collection sizes per currency, not as one dollar number.

How do you keep limits from breaking a collection flow?

Three habits.

  • Validate before you show payment instructions. Request the quote first. If it fails on range, tell the payer the allowed range from the error, then let them change the amount.
  • Pre-check large days. Pull remaining room every morning for customers with big expected collections and file increases days ahead.
  • Split on purpose, not on failure. If a currency ceiling binds, design the split into the flow instead of retrying after a rejection.

Why crypto on-ramp deposits fail covers the failures that happen after the quote passes. And who earns what on the conversion itself is in how on/off-ramp providers make money.

What to do next

On a development instance, request a payin quote one unit below and one unit above the bounds for each currency you collect, and log the error each returns. Then call the remaining-limits endpoint for a test customer. Ten minutes of that tells you exactly what your payment form must validate.

FAQ