---
title: "What is a stablecoin payin API? How it works and when to use one"
seoTitle: "What is a stablecoin payin API? How it works"
description: "What is a stablecoin payin API? It turns customer bank deposits into USDC or USDT in a linked wallet. See the flow, who uses it, and how to evaluate one."
date: "2026-10-16"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is a payin the same as an on-ramp?"
    a: "Mostly, yes. A payin is the deposit event: a customer sends money in. An on-ramp is the whole conversion from fiat to stablecoins. When a bank deposit is converted to USDC or USDT and delivered to a wallet, the payin is the on-ramp. BlindPay's docs describe a payin as its on-ramp."
  - q: "Do my customers need a crypto wallet to use a payin API?"
    a: "The payer does not. They make a normal bank transfer, or pay with a Pix code or card, depending on the rail. The wallet sits on the receiving side. With BlindPay, the stablecoins go to an external wallet your customer controls, or to an optional BlindPay-managed wallet, which is in beta."
  - q: "Is accepting stablecoin payins legal?"
    a: "It depends on the countries involved, your business model, and which licences your provider holds. Many regulators allow regulated stablecoin settlement, but rules differ. Ask any provider who performs KYC and screening, and take advice from a lawyer for your own case. This is general information, not legal advice."
  - q: "How fast is a stablecoin payin?"
    a: "It depends on the funding rail, not on the blockchain. BlindPay's docs list arrival windows of up to 5 business days for ACH and wire, and typically minutes for Pix, SPEI, Transfers, and PSE. On a development instance, every payin completes in about 30 seconds."
  - q: "What does a stablecoin payin API cost?"
    a: "BlindPay charges a monthly plan plus per-transaction fees that vary by rail and network. The exact fee breakdown appears in the live payin quote before you create the payin. A US virtual account is $1.50 per month per account. See the pricing page for current plans."
  - q: "Who holds the money during a payin?"
    a: "It depends on the destination you pick. Stablecoins can be delivered to an external wallet the customer controls, or to a BlindPay-managed wallet that BlindPay holds. Before the deposit lands, the bank transfer is in the banking system. Ask every provider where funds sit at each step."
---

A stablecoin payin API lets a business accept customer deposits by bank transfer and receive them as stablecoins such as USDC or USDT in a linked wallet, through one integration instead of separate bank, exchange, and compliance setups. BlindPay offers one through its payins and virtual accounts APIs.

## Key takeaways

- A payin is money coming in. A stablecoin payin turns a bank deposit into a stablecoin in a wallet you choose.
- The payer sends a normal bank transfer. They do not need a crypto wallet or any crypto knowledge.
- The API covers customer checks, deposit instructions, screening, conversion, delivery, and status webhooks.
- A virtual account is a permanent deposit account for one customer. A payin quote is a one-time set of instructions.
- Judge a provider on rails, custody, compliance ownership, webhooks, and testing, not only on price.

## What is a stablecoin payin?

A stablecoin payin is a deposit that arrives as fiat money and leaves as a stablecoin. A stablecoin is a digital token designed to hold a steady value, such as one US dollar. A wallet is an address on a blockchain that holds tokens. A blockchain network, or chain, is the ledger where those tokens move.

The word "payin" comes from payments. It means a deposit from a payer into your system. "Stablecoin" tells you what the money becomes once it is in. A US customer can pay by ACH (the US bank batch network), and your treasury wallet receives USDC. Nobody in that flow has to buy crypto on an exchange.

If you want the broader category first, read [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api) and [what a crypto on-ramp and off-ramp are](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp).

## How does a payin API work from deposit to wallet?

A payin API gives you a few calls that cover the full path from the payer's bank to your wallet. You verify the customer, ask for deposit instructions, show them to the payer, and then wait for webhooks (automatic HTTP messages) that report each state change.

| Step | What happens | Who does it | What your system receives |
| --- | --- | --- | --- |
| 1. Verify | The customer completes KYC (know your customer) for an individual, or KYB (know your business) for a company | You collect data, the provider runs checks | A customer ID and an approval status |
| 2. Get instructions | You create a payin quote, or a virtual account, to get bank details | You call the API | A quote ID with payment instructions, or an account number |
| 3. Pay | The payer sends a bank transfer, Pix payment, or card payment | The payer | Nothing yet, or a `payin.new` event once a payin exists |
| 4. Detect and convert | The provider sees the deposit, checks it, and converts it to a stablecoin | The provider | Status updates, including holds for review |
| 5. Deliver | The stablecoin is sent to the destination wallet | The provider | A completed payin and a transaction hash |

The same five steps apply to every provider in the category. Step by step detail, with timing per rail, is in the dedicated guide on how the flow works. This hub covers the concepts.

### How does BlindPay run this flow?

BlindPay's payin starts with a payin quote. The quote locks the payment method, amount, fee split, and destination, and it expires after 5 minutes. You then create the payin from the quote. BlindPay watches for the deposit, converts it, and delivers the stablecoin. A created payin cannot be canceled. If the payer never sends the money, it stays in `processing` until BlindPay cleans it up. See [Payins](/docs/payins) for the full reference.

## How is a payin different from a payout, an on-ramp, and an off-ramp?

A payin is a deposit, a payout is a withdrawal to a bank account, an on-ramp converts fiat to stablecoins, and an off-ramp converts stablecoins to fiat. A payin is usually an on-ramp. A payout is usually an off-ramp.

| Term | Direction | Typical meaning |
| --- | --- | --- |
| Payin | Money in | A deposit from a payer, often converted to a stablecoin |
| Payout | Money out | A transfer from your balance to a recipient's bank account |
| On-ramp | Fiat to stablecoin | The conversion step behind most payins |
| Off-ramp | Stablecoin to fiat | The conversion step behind most payouts |

Vendors mix these words, so ask what the money does, not what the product is called. The [off-ramp guide](/resources/more/what-is-a-stablecoin-offramp) covers the outbound side in detail.

## Who uses stablecoin payin APIs?

Teams that collect money from customers and want it to settle in a dollar stablecoin use them. The common groups:

- **Fintechs and neobanks** that fund customer balances from bank deposits.
- **Payment service providers (PSPs)** that collect from payers in one country and settle in another.
- **Marketplaces and platforms** that collect from buyers before paying sellers.
- **Exporters and software companies** that bill customers abroad and want dollars in a wallet.
- **Remittance and payroll products** that take local currency in and send money out elsewhere.

BlindPay's [payin rails](/docs/payins) include Pix in Brazil, SPEI in Mexico, PSE and Bre-B in Colombia, and Transfers in Argentina. Those are useful when the payer lives in Latin America and pays in local currency. The [crypto on-ramp integration guide](/resources/more/how-to-integrate-a-crypto-on-ramp-api) shows what a build looks like.

## What should a payin API include?

A payin API should cover more than the conversion. Use the ten items below as a checklist, and ask a vendor to show each one in documentation, not in a sales call.

1. **Customer onboarding.** KYC and KYB handled in the same API, with status webhooks.
2. **Deposit instructions.** Per-payment instructions and permanent per-customer accounts.
3. **Several funding rails.** Bank rails your payers actually use, local and international.
4. **Live quotes.** A locked rate and an itemized fee breakdown before money moves.
5. **Flexible destinations.** Delivery to a wallet the customer controls, and an optional provider-held wallet.
6. **Clear custody.** A written answer to who holds the money at each step.
7. **Screening and holds.** Transaction monitoring, with a defined path for reviews and refunds.
8. **Webhooks.** Signed events for every state change, plus a way to list and retrieve payins.
9. **A sandbox.** A test environment where you can force success, failure, and refund outcomes.
10. **Reconciliation data.** Fields that tie each deposit to the payer, the amount, and the on-chain transaction.

## How do I evaluate one?

Run the checklist above against two or three providers, then test the failure paths yourself. A demo that shows a successful deposit tells you little. A sandbox that can produce a failed or refunded payin tells you a lot.

Compare these five areas first:

| Area | What to ask | Why it matters |
| --- | --- | --- |
| Rails | Which payer countries and rails are live, and which need a contract? | Your payers decide your conversion rate |
| Custody | Can stablecoins go to a wallet we control? | It sets your risk and licensing exposure |
| Compliance | Who runs KYC, KYB, and transaction monitoring? | It sets how much you build and staff |
| Fees | Are fees itemized in the quote before execution? | It prevents surprises in reconciliation |
| Testing | Can the sandbox force failed and refunded payins? | It decides how safe launch is |

For a wider framework, use [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) and [how to handle webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation).

### What kinds of providers exist?

Providers fall into three broad types. Orchestration APIs such as [Bridge](https://apidocs.bridge.xyz/) wrap bank rails, wallets, and conversion in one API. Enterprise payment platforms such as [BVNK](https://docs.bvnk.com/) serve larger businesses with account and settlement products. Issuers such as [Circle](https://developers.circle.com/) create the stablecoin itself, USDC, and offer developer tools around it. BlindPay sits in the first group and focuses on payins, payouts, and virtual accounts. Details change often, so check each provider's own documentation (checked on 2026-10-16).

## Where does BlindPay fit?

BlindPay treats payins as deposits and virtual accounts as dedicated deposit accounts, with stablecoins delivered to a linked wallet. Everything below comes from the BlindPay docs.

- **Rails.** Payin methods include ACH, wire, RTP (US real-time payments), international SWIFT, Pix, TED, SPEI, Transfers, PSE, Bre-B, card, and ACH pull.
- **Virtual accounts.** US accounts accept ACH, wire, and SWIFT. Colombia accounts use Bre-B, and Mexico accounts use SPEI CLABE. See [Virtual accounts](/docs/virtual-accounts) for rails and review steps.
- **Destinations.** A payin can deliver to an external blockchain wallet the customer controls (`blockchain_wallet_id`, `bw_...`) or to a BlindPay-managed wallet (`wallet_id`, `bl_...`). The managed wallet is BlindPay-custodied and in beta.
- **Tokens and chains.** Production payins deliver USDC or USDT, depending on the network. See [Supported chains](/docs/kb/supported-chains).
- **Statuses.** A payin is `processing`, `on_hold`, `completed`, `failed`, or `refunded`.
- **Webhooks.** `payin.new`, `payin.update`, and `payin.complete` report progress. Read the `status` field in each payload.
- **Testing.** On a development instance, payins complete in about 30 seconds with the USDB test token. A $666.00 request amount forces `failed`, and $777.00 forces `refunded`.
- **Pricing.** BlindPay charges a monthly plan plus per-transaction fees, shown in the live quote. See [pricing](/pricing).

The [virtual accounts hub](/virtual-accounts) and [compliance overview](/compliance) cover the rest. The [`integrate-payins` prompt](/prompts/integrate-payins) helps an AI coding agent build the flow.

## Sources

- BlindPay docs, [Payins](/docs/payins), [Payin quotes](/docs/payin-quotes), and [Virtual accounts](/docs/virtual-accounts)
- BlindPay docs, [Webhook events](/docs/learn/webhooks-events)
- Circle, [USDC](https://www.circle.com/usdc) and [developer documentation](https://developers.circle.com/) (checked on 2026-10-16)
- Bridge, [API documentation](https://apidocs.bridge.xyz/) (checked on 2026-10-16)
- BVNK, [documentation](https://docs.bvnk.com/) (checked on 2026-10-16)
- Nacha, [ACH network overview](https://www.nacha.org/)

*This article is for general information only and is not legal, tax, or financial advice.*
