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
Five layers. Here's where each one lives and how it fails.
| Layer | Example on BlindPay | How it fails |
|---|---|---|
| Currency minimum and maximum | About $10 to 100,000 units per quote; COP minimum $2,000.00 | Quote rejected with LIMITS_AMOUNT_OUT_OF_RANGE |
| Receiver's per-transaction limit | $10,000 to $50,000 by default, by KYC tier | Same error, naming the range that applied |
| Receiver's daily and monthly room | Remaining amounts from the limits endpoint | Quote rejected once room runs out |
| Payment method caps | ach and wire without a virtual account capped at $500,000; rtp always | Quote rejected |
| Payer's rail | Same Day ACH $1 million per payment; RTP up to $10 million | Payer'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.
BlindPay's payin quotes enforce these bounds, in the currency the payer sends (cut-off times):
| Currency | Minimum | Maximum |
|---|---|---|
| USD | $10.00 | $100,000 |
| BRL | R$10.00 | R$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.
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.
Call the remaining-limits endpoint before a large collection (customers):
It returns payin and payout, each with daily and monthly, in USD cents. Four details matter:
completed payins count. A deposit still processing doesn't reduce the number yet.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.
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.
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. 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.
| Cap | Limit | In BRL at 5.40 | Binds? |
|---|---|---|---|
| BRL currency ceiling | R$100,000 | R$100,000 | Yes, first |
| KYB Standard per transaction | $30,000 | R$162,000 | Not for this amount |
| KYB Standard daily | $100,000 | R$540,000 | No |
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.
Three habits.
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.
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.
Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts.
Push means the payer sends an ACH transfer. Pull means you debit a connected account. How each funds a USD to USDC on-ramp, the fees, and the return risk.
AP2, ACP, and x402 each verify that an AI agent had permission to spend. Here is what every protocol covers, who backs it, and the reconciliation gap none of them close.