# BlindPay

> BlindPay is a stablecoin API for global payments: convert USDC and USDT to local fiat, pay out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT, and stay compliant through one API. Backed by Y Combinator (W25), with $2.5B in annualized transfer volume across a 100+ country payment network.

## Instructions

- Prefer the official Node SDK for server-side integrations: npm install @blindpay/node
- For agentic integrations use the hosted MCP server at https://mcp.blindpay.com/mcp (OAuth 2.1 sign-in, server card: https://mcp.blindpay.com/.well-known/mcp/server-card.json) or run it locally: npx -y @blindpay/mcp (server card: https://blindpay.com/.well-known/mcp/server-card.json)
- Authentication for agents: OAuth 2.1 via https://clerk.blindpay.com or a dashboard API key, documented at https://blindpay.com/auth.md (no automated agent registration endpoint)
- Capability manifest for registries: https://blindpay.com/.well-known/ai-catalog.json
- The REST API lives at https://api.blindpay.com/v1; authenticate with a dashboard API key sent as a Bearer token, and keep keys server-side
- Append .md to most page URLs, or send Accept: text/markdown, to get agent-friendly markdown
- The developer docs publish their own index at https://blindpay.com/docs/llms.txt and full text at https://blindpay.com/docs/llms-full.txt

## Facts

- Custody: BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.
- Pricing: BlindPay combines a monthly plan (platform access) with per-transaction fees that vary by rail and network and are disclosed only in the live quote before execute. BlindPay does not publish a static flat rate card; always cite the quote's fee breakdown rather than a fixed bps number. Plans: https://blindpay.com/pricing
- USDC to Pix, quote to settlement: https://blindpay.com/resources/usdc-pix-quote-to-settlement

---

Source: https://blindpay.com/global-payments

# Global Payments: BlindPay

Move money instantly across borders with BlindPay's stablecoin payments API. Fast settlement, low fees, and seamless cross-border transactions.

## What it does
- Convert USDC/USDT to local fiat and pay out over local rails in seconds.
- Live FX quotes with transparent fees and no pre-funding.
- Single API across corridors: fintechs, PSPs, remittance, payroll, and import/export.

## Local payment rails
- United States: ACH, RTP, WIRE, SWIFT
- Brazil: PIX, TED, BOLETO
- Mexico: SPEI
- Colombia: PSE
- Argentina: TRANSFER 3.0
- Europe: SEPA (EUR)

## Why BlindPay
- Settlement in under 60 seconds.
- Built-in compliance (KYC/KYB, blockchain screening) across jurisdictions.
- Competitive FX rates; $2.5B in annualized transfer volume.

## Links
- Docs: https://blindpay.com/docs/introduction
- Pricing: https://blindpay.com/pricing
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/virtual-accounts

# Virtual Accounts: BlindPay

Launch branded virtual accounts for your users. Customers create white-label US and local accounts and receive funds that auto-convert to stablecoins.

## What it does
- Issue virtual US bank accounts (and local account details) under your brand.
- Receive fiat via local rails; funds settle into stablecoin wallets.
- White-label / B2B2C: embed accounts directly in your product.

## Use cases
- Fintechs and PSPs offering USD-denominated accounts.
- Platforms collecting cross-border payments.
- Marketplaces paying out to global sellers.

## Links
- Docs: https://blindpay.com/docs/fiat/virtual-accounts
- Best practices: https://blindpay.com/docs/kb/virtual-accounts
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/pricing

# Pricing: BlindPay

Transparent pricing for BlindPay's stablecoin API. Choose the plan that fits your business and start processing global payments today.

## Model
- Usage-based pricing with transparent FX and per-transaction fees.
- No pre-funding required.
- Volume and partner-fee options for platforms.

## Includes
- Full payments API: quotes, payouts, on-ramps, virtual accounts, webhooks.
- MCP server, Agent Skills, and CLI for AI/agent workflows.
- Built-in compliance (KYC/KYB, screening).

## Links
- Pricing: https://blindpay.com/pricing
- Book a demo: https://cal.com/blindpay/demo-call-blindpay
- Docs: https://blindpay.com/docs/introduction

---

Source: https://blindpay.com/compliance

# Compliance: BlindPay

BlindPay's compliance framework, security features, and regulatory coverage for global stablecoin payments.

## Framework
- Incorporated in Delaware; registered with FinCEN as a Money Services Business (MSB).
- KYC/KYB identity verification and business onboarding.
- Blockchain compliance screening on all transfers.
- Automated fraud detection and risk monitoring.
- Coverage across multiple jurisdictions.

## Resources
- Supported countries: https://blindpay.com/docs/kb/supported-countries
- Prohibited activities: https://blindpay.com/docs/kb/prohibited-activities
- KYB documentation: https://blindpay.com/docs/kb/kyb-documents
- Terms of service: https://blindpay.com/terms-of-service
- Privacy policy: https://blindpay.com/privacy-policy

---

Source: https://blindpay.com/ai

# BlindPay for AI: The complete financial stack for AI agents

Connect AI assistants and agents to BlindPay's payment infrastructure. Move money with natural language via MCP Server, Agent Skills, and the CLI: agentic stablecoin payments.

## Surfaces
- MCP Server: remote at https://mcp.blindpay.com/mcp (OAuth sign-in, no API key) or local via `npx -y @blindpay/mcp` with an API key. Exposes the BlindPay API as MCP tools. Works with Claude, ChatGPT, Cursor, Claude Code, and any MCP host.
- Agent Skills: `npx skills add blindpaylabs/skills`: structured domain knowledge of rails, corridors, fees, and API patterns.
- CLI: `npm install -g @blindpay/cli`: full API in the terminal with JSON output, built for developers and agents.

## Connect an AI client
Remote server: https://mcp.blindpay.com/mcp (Streamable HTTP, OAuth 2.1). Read-only endpoint: https://mcp.blindpay.com/mcp/readonly.

### Claude Code

```bash
claude mcp add --transport http blindpay \
  https://mcp.blindpay.com/mcp
```

### Cursor (`.cursor/mcp.json`)

```json
{
  "mcpServers": {
    "blindpay": {
      "url": "https://mcp.blindpay.com/mcp"
    }
  }
}
```

### VS Code (`.vscode/mcp.json`)

```json
{
  "servers": {
    "blindpay": {
      "type": "http",
      "url": "https://mcp.blindpay.com/mcp"
    }
  }
}
```

### Codex

```bash
codex mcp add blindpay --url https://mcp.blindpay.com/mcp
```

### Claude

1. In Claude, open Settings, then Connectors.
2. Choose Add custom connector and paste https://mcp.blindpay.com/mcp.
3. Sign in with your BlindPay account and pick the instance the agent may use.

### ChatGPT

1. In ChatGPT, open Settings, then Connectors, then Advanced, and turn on Developer mode.
2. Create a connector with https://mcp.blindpay.com/mcp and OAuth authentication.
3. Sign in with your BlindPay account and pick the instance the agent may use.

### npx (`mcp.json`)

```json
{
  "mcpServers": {
    "blindpay": {
      "command": "npx",
      "args": [
        "-y",
        "@blindpay/mcp"
      ],
      "env": {
        "BLINDPAY_API_KEY": "your-api-key",
        "BLINDPAY_INSTANCE_ID": "your-instance-id"
      }
    }
  }
}
```

## Safety and permissions
- OAuth sign-in: no API key is pasted into a chat.
- Each connection is bound to one instance, filled in server-side on every call.
- Read-only endpoint for assistants that must never move money.
- Development instances: KYC auto-approved, payouts auto-complete, USDB test funds.
- Revoke a connection from the BlindPay dashboard at any time.
- Tool calls run through the same API, compliance checks, limits, and audit trail as direct requests.

## What agents can do
- Customers and onboarding (Read and write): Create and update customers, run KYC and KYB, answer RFIs, request limit increases.
- Quotes and FX (Read and write): Quote payouts, payins, transfers, and FX rates before anything moves.
- Payouts (Moves money): Send payouts from EVM chains, Solana, and Stellar to bank accounts, then track their status.
- Payins (Moves money): Accept on-chain and card payins and follow them to completion.
- Transfers (Moves money): Quote and execute stablecoin transfers, then track them to completion.
- Bank accounts and wallets (Read and write): Add bank accounts and blockchain wallets, read balances, turn yield on or off.
- Virtual accounts (Read and write): Issue virtual accounts that receive USD bank transfers and settle to stablecoins.
- Payables and partner fees (Read and write): Register bills, invoices, boletos, and Pix codes to pay, and set the fees you add to transactions.
- Webhooks and team (Read and write): Manage webhook endpoints and instance members.
- Reference data (Read only): Look up available rails, bank details, SWIFT codes, and NAICS codes.

## AI builder integrations
- Hub: https://blindpay.com/docs/integrations
- Lovable, v0, Bolt.new, Replit, Cursor, Claude Code.

## FAQ
### Is it safe to let an AI agent use BlindPay?
The remote MCP server signs in with OAuth, so no API key is pasted into a chat. Each connection is bound to the one instance you pick, and the server fills in that instance on every call, so the agent cannot reach another one. You can disconnect it from the BlindPay dashboard at any time, and https://mcp.blindpay.com/mcp/readonly exposes only reads for assistants that should never move money.

### Do I need an API key to connect an agent?
Not for the remote server: you sign in with your BlindPay account and pick an instance. The local server, run with npx -y @blindpay/mcp, uses an API key and instance ID from your environment instead.

### Which AI clients work with the BlindPay MCP server?
Claude, Claude Code, ChatGPT, Cursor, VS Code, Codex, Windsurf, Gemini CLI, and any other client that supports remote MCP servers over Streamable HTTP. Clients that only run local servers can use the npx package.

### Can I test an agent without moving real money?
Yes. Connect it to a development instance. KYC is approved automatically, payins and payouts complete on their own, and on-chain flows use USDB, a test token with no real funds behind it.

### Do compliance checks still apply when an agent makes the call?
Yes. Every tool call runs through the same API as a direct request, with the same KYC and KYB requirements, limits, and audit trail.

### When should I use the MCP server, Agent Skills, or the CLI?
Use the MCP server when an assistant should act on your BlindPay account. Use Agent Skills when a coding agent is building your integration and needs to know how BlindPay works. Use the CLI for scripts, CI, and terminal agents that prefer shell commands with JSON output. They work well together.

## Links
- MCP repo: https://github.com/blindpaylabs/blindpay-mcp
- Skills repo: https://github.com/blindpaylabs/skills
- Docs: https://blindpay.com/docs/introduction

---

Source: https://blindpay.com/ios

# BlindPay for iOS

Move money globally right from your pocket. BlindPay is the first and only stablecoin payments infrastructure with a native iPhone app: send and receive payins and payouts in under 60 seconds.

## What you can do
- Send and receive money across borders: payins and payouts in a few taps, converting between stablecoins and fiat and settling to local rails in 50+ countries, with live quotes and no pre-funding.
- Manage all of your customers in one place: onboard customers, check verification status, and manage their bank accounts and wallets.

## Get the app
- App Store: https://apps.apple.com/br/app/blindpay/id6774349548
- TestFlight beta: https://testflight.apple.com/join/Gde7ZNWz

## Links
- Web app: https://app.blindpay.com/
- Docs: https://blindpay.com/docs/introduction

---

Source: https://blindpay.com/pobo-cobo-swift

# POBO and COBO over SWIFT: BlindPay

Collect international Wires into accounts named after your customer, and send global SWIFT payouts from stablecoins with a compliance document gate and per-rail payment references.

## Collection on behalf of (COBO)
- Each customer gets a dedicated account with its own BIC and IBAN.
- Inbound Wires settle straight into stablecoins.
- Inbound SWIFT payins require a virtual account: the account is what gives the wire a named beneficiary.
- Every payin reports `sender_name`, `sender_bank_name`, `sender_account_number` and `transaction_reference`.

## Payment on behalf of (POBO)
- Pay suppliers over SWIFT from a USDC or USDT balance.
- The wire is funded from the customer's own account when they hold one, which is what puts their name on the debit. Without a named account the payout is funded from our master account and the customer is identified in the payment reference.
- Minimum SWIFT payout: 100 USD.
- Business payouts require a document proving the sender-customer relationship: invoice, purchase order, delivery slip, contract, customs declaration or bill of lading.
- `tracking_documents.status` reports `waiting_documents`, then `compliance_reviewing`, then null once cleared. Thirty days to submit, up to eight days to review.

## Payment tracking, per rail
- SWIFT: `provider_uetr` (Unique End-to-end Transaction Reference) and `provider_clearing_system`.
- Domestic Fedwire: `provider_uetr`, plus `provider_imad` (Fed Input Message Accountability Data).
- ACH: no UETR and no IMAD. `provider_reference` is returned instead, a bank-side reference rather than the formal network trace number.
- All of these arrive on `GET /payouts/{id}` and on the `payout.complete` webhook.

## Links
- Virtual accounts: https://blindpay.com/virtual-accounts
- SWIFT deliverability: https://blindpay.com/docs/kb/swift-deliverability
- SWIFT statuses: https://blindpay.com/docs/kb/swift-statuses
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/contact

# Contact: BlindPay

Get in touch with BlindPay's sales team for demos, onboarding support, or product questions. Start building globally today.

## Reach us
- Book a demo: https://cal.com/blindpay/demo-call-blindpay
- Sign up: https://app.blindpay.com/sign-up
- Discord: https://discord.gg/2DFKYaxjpp
- X / Twitter: https://x.com/blindpay
- LinkedIn: https://www.linkedin.com/company/blindpay
- GitHub: https://github.com/blindpaylabs

---

Source: https://blindpay.com/usdc-to-usd

# Convert USDC to USD with instant settlement.

Move USDC to US Dollar (USD) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: USDC (USDC)
- To: US Dollar (USD)

## How it works
- Get a live quote for USDC → USD with transparent fees.
- BlindPay converts the stablecoin and settles USD over ACH, RTP, and SWIFT (POBO/COBO).
- RTP settles in seconds around the clock; ACH follows US banking windows and SWIFT wires carry UETR tracking.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdc-to-cop

# Convert USDC to COP with instant settlement.

Move USDC to Colombian Peso (COP) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: USDC (USDC)
- To: Colombian Peso (COP)

## How it works
- Get a live quote for USDC → COP with transparent fees.
- BlindPay converts the stablecoin and settles COP over PSE.
- PSE transfers complete in minutes, subject to Colombian bank processing windows.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdc-to-brl

# Convert USDC to BRL with instant settlement.

Move USDC to Brazilian Real (BRL) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: USDC (USDC)
- To: Brazilian Real (BRL)

## How it works
- Get a live quote for USDC → BRL with transparent fees.
- BlindPay converts the stablecoin and settles BRL over Pix.
- Pix settles in seconds and runs 24/7, weekends and holidays included.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Guide: USDC to Pix, from quote to settlement: https://blindpay.com/resources/usdc-pix-quote-to-settlement
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdc-to-mxn

# Convert USDC to MXN with instant settlement.

Move USDC to Mexican Peso (MXN) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: USDC (USDC)
- To: Mexican Peso (MXN)

## How it works
- Get a live quote for USDC → MXN with transparent fees.
- BlindPay converts the stablecoin and settles MXN over SPEI.
- SPEI settles in near real time and operates 24/7.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdc-to-ars

# Convert USDC to ARS with instant settlement.

Move USDC to Argentine Peso (ARS) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: USDC (USDC)
- To: Argentine Peso (ARS)

## How it works
- Get a live quote for USDC → ARS with transparent fees.
- BlindPay converts the stablecoin and settles ARS over Transfers 3.0.
- Transfers 3.0 settles in near real time and operates 24/7.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdc-to-eur

# Convert USDC to EUR with instant settlement.

Move USDC to Euro (EUR) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: USDC (USDC)
- To: Euro (EUR)

## How it works
- Get a live quote for USDC → EUR with transparent fees.
- BlindPay converts the stablecoin and settles EUR over SEPA.
- SEPA credit transfers typically complete same day, in seconds where SEPA Instant is supported.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdt-to-usd

# Convert USDT to USD with instant settlement.

Move Tether to US Dollar (USD) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: Tether (USDT)
- To: US Dollar (USD)

## How it works
- Get a live quote for USDT → USD with transparent fees.
- BlindPay converts the stablecoin and settles USD over ACH, RTP, and SWIFT (POBO/COBO).
- RTP settles in seconds around the clock; ACH follows US banking windows and SWIFT wires carry UETR tracking.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdt-to-cop

# Convert USDT to COP with instant settlement.

Move Tether to Colombian Peso (COP) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: Tether (USDT)
- To: Colombian Peso (COP)

## How it works
- Get a live quote for USDT → COP with transparent fees.
- BlindPay converts the stablecoin and settles COP over PSE.
- PSE transfers complete in minutes, subject to Colombian bank processing windows.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdt-to-brl

# Convert USDT to BRL with instant settlement.

Move Tether to Brazilian Real (BRL) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: Tether (USDT)
- To: Brazilian Real (BRL)

## How it works
- Get a live quote for USDT → BRL with transparent fees.
- BlindPay converts the stablecoin and settles BRL over Pix.
- Pix settles in seconds and runs 24/7, weekends and holidays included.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdt-to-mxn

# Convert USDT to MXN with instant settlement.

Move Tether to Mexican Peso (MXN) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: Tether (USDT)
- To: Mexican Peso (MXN)

## How it works
- Get a live quote for USDT → MXN with transparent fees.
- BlindPay converts the stablecoin and settles MXN over SPEI.
- SPEI settles in near real time and operates 24/7.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdt-to-ars

# Convert USDT to ARS with instant settlement.

Move Tether to Argentine Peso (ARS) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: Tether (USDT)
- To: Argentine Peso (ARS)

## How it works
- Get a live quote for USDT → ARS with transparent fees.
- BlindPay converts the stablecoin and settles ARS over Transfers 3.0.
- Transfers 3.0 settles in near real time and operates 24/7.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/usdt-to-eur

# Convert USDT to EUR with instant settlement.

Move Tether to Euro (EUR) with instant settlement, full compliance, and competitive FX rates through a single API.

## Pair
- From: Tether (USDT)
- To: Euro (EUR)

## How it works
- Get a live quote for USDT → EUR with transparent fees.
- BlindPay converts the stablecoin and settles EUR over SEPA.
- SEPA credit transfers typically complete same day, in seconds where SEPA Instant is supported.
- Instant settlement, full compliance, competitive FX: through a single API.

## Links
- Global payments: https://blindpay.com/global-payments
- Docs: https://blindpay.com/docs/introduction
- Sign up: https://app.blindpay.com/sign-up

---

Source: https://blindpay.com/resources/more/how-to-off-ramp-usdc-to-gbp-faster-payments

---
title: "How to off-ramp USDC to GBP over UK Faster Payments: bank details, quotes, and timing"
seoTitle: "How to off-ramp USDC to GBP over Faster Payments"
description: "Turn USDC into pounds in a UK bank account over Faster Payments: sort code details, quotes in USDC or GBP, quote windows, timing, and a worked example."
date: "2026-10-14"
updated: "2026-10-14"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to off-ramp USDC to GBP over UK Faster Payments"
  steps:
    - name: "Add the recipient's UK bank account"
      text: "Create a faster_payments bank account with the beneficiary's legal name, a 6-digit sort code, an 8-digit account number, account class (individual or business), and address. Save the ba_ id it returns."
    - name: "Request a payout quote in USDC or in GBP"
      text: "Call the quotes endpoint with the bank account id, token USDC, the funding network, cover_fees, and currency_type: sender to fix the USDC you send, or receiver to fix the pounds that arrive. Amounts are in minor units."
    - name: "Show the amount and read expires_at"
      text: "Display receiver_amount and the fee lines, and count down from expires_at, which is in epoch milliseconds. Faster Payments quotes can expire sooner than the usual 5 minutes, so never hardcode the window."
    - name: "Authorize and execute before the quote expires"
      text: "For an external EVM wallet, approve the quoted amount using the contract payload in the quote, then create the payout with the quote_id and sender wallet address. A managed wallet skips the approval."
    - name: "Track the payout to the UK account"
      text: "Listen for payout.new, payout.update, and payout.complete webhooks. BlindPay estimates about 1 business day for a Faster Payments payout, and a failed payout fires payout.update rather than payout.complete."
faq:
  - q: "Can I convert USDC to GBP and send it to a UK bank account?"
    a: "Yes. BlindPay pays GBP to UK bank accounts over Faster Payments. You add the recipient's sort code and 8-digit account number, request a payout quote funded in USDC, and execute it before the quote expires. Individual and business beneficiaries are both supported, and the account can belong to a third party."
  - q: "How long does a USDC to GBP payout take?"
    a: "BlindPay's documented estimate is about 1 business day for a Faster Payments payout. The Faster Payments scheme itself is real-time and runs day and night, 365 days a year, according to Pay.UK. High volumes can affect delivery estimates, so track each payout through webhooks instead of promising a fixed minute."
  - q: "Can I make sure the recipient gets an exact amount in pounds?"
    a: "Yes. Create the quote with currency_type set to receiver and request_amount in pence, so 250000 means 2,500.00 GBP. The quote returns the USDC you need to send. Set cover_fees to true if the sender should pay the fees on top, so the full pound amount lands."
  - q: "Which blockchains can fund a GBP payout?"
    a: "GBP payouts are funded in USDC. An offramp wallet linked to a UK account accepts deposits on Ethereum, Base, Arbitrum, Polygon, and Solana. Whatever network you fund from, the crypto leg of a Faster Payments payout runs on Polygon, which can affect the on-chain timing you observe but not your API call."
  - q: "Why did my GBP quote expire in less than 5 minutes?"
    a: "BlindPay quotes default to 5 minutes, but Faster Payments payout quotes can be shorter because the underlying rail's own deadline can be tighter. Read expires_at from every response, show a countdown from it, and request a fresh quote when it passes. An expired quote is rejected, never executed at a new rate."
---

To off-ramp USDC to GBP, add the recipient's UK bank account (6-digit sort code, 8-digit account number), request a payout quote in USDC or in pounds, and execute it before the quote expires. The USDC converts to GBP and is paid out over Faster Payments, the UK's real-time bank rail. BlindPay estimates about 1 business day end to end.

This is the UK version of the [USDC to euros over SEPA guide](/resources/more/how-to-off-ramp-usdc-to-euros-sepa). Same quote-then-execute pattern, different bank details, and one quirk in the quote window worth knowing before you build the screen.

**Key takeaways**

- Faster Payments pays GBP to UK accounts identified by a sort code and an 8-digit account number.
- GBP payouts are funded in USDC. The crypto leg always runs on Polygon, whatever network you fund from.
- Quote in USDC (`currency_type: sender`) or in pounds (`currency_type: receiver`) to fix the amount that lands.
- Faster Payments quotes can expire sooner than 5 minutes. Read `expires_at`, never hardcode it.
- BlindPay's estimate is about 1 business day per payout. Individual and business beneficiaries are both supported.

## What is Faster Payments?

Faster Payments is the UK's real-time interbank payment system, run by Pay.UK. Pay.UK says it has operated since 2008, is "available day and night, 365 days per year", and supports real-time payments of up to £1 million, with individual banks setting their own lower limits ([Pay.UK](https://www.wearepay.uk/what-we-do/payment-systems/faster-payment-system/)).

It is also enormous. In 2025 it processed 5.55 billion transactions worth £4.84 trillion, per the same page. For a business paying UK contractors, suppliers, or customers, it is the default rail for pounds.

Faster Payments sits next to Pix, SPEI, and RTP in the family of instant domestic rails. [Instant payment systems by country](/resources/more/instant-payment-systems-by-country) compares their hours and limits.

## What do you need before the first GBP payout?

You need a customer that has passed KYC and a bank account of type `faster_payments` for the recipient. The required fields, from BlindPay's [bank accounts docs](/docs/bank-accounts):

| Field | Format | Notes |
| --- | --- | --- |
| `name` | Text | Your display name for the account |
| `account_class` | `individual` or `business` | Both beneficiary types are supported |
| `faster_payments_sort_code` | 6 digits | Dashes and spaces are stripped |
| `faster_payments_account_number` | 8 digits | UK account number |
| `faster_payments_beneficiary_legal_name` | Text | The account holder's legal name |
| `faster_payments_beneficiary_address_line_1` | Text | Beneficiary address |
| `faster_payments_beneficiary_city` | Text | Beneficiary city |
| `faster_payments_beneficiary_country` | `GB` | Country code |

Address line 2, state or region, and postal code are optional. The account can belong to someone other than your customer: set `recipient_relationship` to a value other than `first_party`, for example `vendor_or_supplier` or `independent_contractor`.

Get the legal name exactly right. UK banks run Confirmation of Payee, an account name check that Pay.UK says completes more than 2 million checks a day ([Pay.UK](https://www.wearepay.uk/what-we-do/overlay-services/confirmation-of-payee/)). The stakes are on the bank side too: since 7 October 2024, UK providers must reimburse in-scope APP scam victims on Faster Payments up to £85,000 per claim ([Payment Systems Regulator](https://www.psr.org.uk/information-for-consumers/app-fraud-reimbursement-protections/)), so name checks are taken seriously. [Verification of payee for instant payments](/resources/more/verification-of-payee-instant-payments) covers how those checks work.

## How do you send USDC to a UK bank account, step by step?

Five steps, the same shape as every BlindPay payout.

1. **Add the bank account.** `POST /v1/instances/{instance_id}/customers/{customer_id}/bank-accounts` with `type: "faster_payments"` and the fields above. Save the `ba_...` id.
2. **Request a payout quote.** `POST /v1/instances/{instance_id}/quotes` with `bank_account_id`, `token: "USDC"`, the `network` you fund from, `cover_fees`, `currency_type`, and `request_amount` in minor units ([payout quotes](/docs/payout-quotes)).
3. **Show the numbers and start the countdown.** Display `receiver_amount`, the fee lines, and a timer counting down to `expires_at` (epoch milliseconds).
4. **Authorize and execute.** From an external EVM wallet, call `approve` on the token contract with the `contract` payload from the quote, then `POST /v1/instances/{instance_id}/payouts/evm` with `quote_id` and `sender_wallet_address`. A managed wallet skips the approval.
5. **Track it.** `payout.new` fires when the payout is created and the funds are captured, `payout.update` on intermediate steps, and `payout.complete` when it is confirmed at the destination or refunded ([webhook events](/docs/learn/webhooks-events)).

There is also a no-quote path. An [offramp wallet](/docs/offramp-wallets) is a deposit address linked to the UK bank account: any USDC sent to it converts and pays out automatically. For Faster Payments accounts it accepts deposits on Ethereum, Base, Arbitrum, Polygon, and Solana. [What an off-ramp wallet is](/resources/more/what-is-an-off-ramp-wallet) covers when that beats a quote.

## Can you fix the exact amount the recipient receives in pounds?

Yes. Set `currency_type` to `receiver` and pass the pound amount in pence. The quote works backwards and tells you how much USDC to send. [Paying an exact local amount with receiver-side quotes](/resources/more/pay-exact-local-amount-receiver-side-quote) goes deeper on when to fix which side.

Illustrative example. A UK contractor invoices £2,500.00 and must receive exactly that.

| Line | Value |
| --- | --- |
| `request_amount` | 250000 (£2,500.00 in pence) |
| `commercial_quotation` (market rate) | 0.7450 GBP per USDC |
| `blindpay_quotation` (rate after BlindPay's margin) | 0.7413 GBP per USDC |
| FX margin | (0.7450 - 0.7413) / 0.7450 = 0.50% |
| USDC needed at the quoted rate | 2,500 / 0.7413 = 3,372.46 USDC |
| Flat fee, paid by the sender (`cover_fees: true`) | 2.00 USDC |
| `sender_amount` | 3,374.46 USDC |
| `receiver_amount` | £2,500.00 |

At the pure market rate the same £2,500 would cost 2,500 / 0.7450 = 3,355.70 USDC. The 18.76 USDC difference is the full cost of this payout: 16.76 in the rate plus the 2.00 flat fee, about 0.56% all in. [Cost per delivered dollar](/resources/more/cost-per-delivered-dollar) shows how to compare that number across providers.

The quote does this math for you. Read `sender_amount` from the response instead of computing it yourself, because fee rounding and minimums are applied server side.

Faster Payments payouts also carry a minimum per payout, set on the USDC side when you quote by sender amount and on the pound side when you quote by receiver amount. Below it, the quote fails with an error naming the side you missed. Current figures are in the [payouts docs](/docs/payouts).

## Which networks and tokens can fund a GBP payout?

GBP payouts are funded in USDC. The quote is priced for the `network` you send from, and BlindPay's [supported chains](/docs/kb/supported-chains) reference lists where USDC is deployed.

The detail that surprises people: the crypto leg of a Faster Payments payout always runs on Polygon, regardless of the network you funded from ([payment methods](/docs/kb/payment-methods)). That changes nothing in your API call. It can change the on-chain timing you see between funding and the bank send.

If you use an offramp wallet instead of quotes, pick one of the five deposit networks above. [Which network to use to off-ramp stablecoins](/resources/more/best-network-to-off-ramp-stablecoins) compares finality and fees by chain.

## How long does a GBP payout take?

BlindPay's documented estimate is about 1 business day for Faster Payments, and high transaction volumes can affect that estimate ([bank accounts docs](/docs/bank-accounts)). The Faster Payments rail itself is real-time. The estimate covers the whole payout through BlindPay's banking partner network, not just the final bank credit.

| Stage | What happens | Timing |
| --- | --- | --- |
| Quote | Rate and fees locked | Up to 5 minutes, often shorter on this rail |
| Execute | USDC pulled from the funding wallet | One on-chain confirmation |
| Conversion and bank send | USDC to GBP, paid over Faster Payments | Part of the ~1 business day estimate |
| Credit | Pounds land in the UK account | Status moves to completed |

Promise your users "about 1 business day", then update them from webhooks. [How to track an off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) has a status-to-message map you can reuse.

## Why can a GBP quote expire sooner than 5 minutes?

Because the rail's own deadline can be tighter than BlindPay's default. Every BlindPay quote defaults to 5 minutes, and the [cut-off times reference](/docs/kb/cut-off-times) notes that SEPA and Faster Payments payout quotes may be shorter.

In practice that means three rules for your code:

1. Read `expires_at` from the response. It is epoch milliseconds, not seconds.
2. Request the quote on the confirmation screen, not two screens earlier.
3. When the timer hits zero, re-quote and show the new numbers. An expired quote is rejected, never executed at a different rate.

[Handling expired quotes in TypeScript and Python](/resources/more/handle-expired-quotes-typescript-python) has the full retry loop, and [who carries FX risk in a stablecoin payout](/resources/more/who-carries-fx-risk-stablecoin-payout) explains why short windows exist at all.

## What does a GBP payout cost?

Every cost is in the quote before you execute. `commercial_quotation` next to `blindpay_quotation` shows the FX margin, `flat_fee` shows the fixed part, and `partner_fee_amount` shows any markup your platform adds ([partner fees on live quotes](/resources/more/partner-fees-markup-on-live-quotes)).

BlindPay combines a monthly plan with per-transaction fees that vary by rail and network and are disclosed in the live quote before execute. There is no static rate card. Owners and admins can read the Faster Payments fee object for their instance from `GET /v1/instances/{instance_id}/billing/fees` ([billing](/docs/learn/billing)). Plans are on the [pricing page](/pricing).

To judge whether the price is good, the [on/off-ramp liquidity scorecard](/resources/more/onramp-offramp-liquidity-scorecard) and the [liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary) give you the terms and the tests.

## What to do next

Create a `faster_payments` bank account on a development instance, request one receiver-side quote for £2,500, and check how `expires_at` compares with the 5-minute default. The [bank accounts docs](/docs/bank-accounts) have the exact request body.

---

Source: https://blindpay.com/resources/more/ai-agents-live-fx-quotes-mcp

---
title: "How AI agents get live FX quotes and pay out through MCP and Agent Skills"
seoTitle: "How AI agents get live FX quotes and pay out via MCP"
description: "How an AI agent creates a live stablecoin quote, shows rate, fees, and expiry, waits for a human to confirm, and pays out through BlindPay's MCP server."
date: "2026-10-13"
updated: "2026-10-13"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Can an AI agent get a live FX quote?"
    a: "Yes. An agent connected to a payments API through the Model Context Protocol can call a quote tool the same way a backend calls an endpoint. With BlindPay's MCP server, an agent in Claude Code, Cursor, Codex, or Windsurf can create a payout or payin quote and read the rate, fees, amounts, and expiry from the response."
  - q: "How do I connect Claude Code to BlindPay?"
    a: "Run claude mcp add blindpay with two environment variables, BLINDPAY_API_KEY and BLINDPAY_INSTANCE_ID, pointing at npx -y @blindpay/mcp, or add the same server to your project's .mcp.json. Then load Agent Skills with npx skills add blindpaylabs/skills so the agent knows BlindPay's rails, corridors, and API patterns. Start on a development instance."
  - q: "Should an AI agent execute payouts without confirmation?"
    a: "No. The MCP specification says there should always be a human in the loop with the ability to deny tool invocations, and BlindPay's docs ask you to build a confirmation step into the agent prompt or app flow before any payout, payin, or transfer executes. Have the agent show the quote and wait for an explicit reply."
  - q: "What happens if the quote expires while the agent waits?"
    a: "The quote can no longer back a payout. BlindPay quotes expire 5 minutes after creation by default, and the response carries expires_at in epoch milliseconds. The agent should request a new quote, show the new numbers, and ask for confirmation again, rather than executing against the old quote id."
  - q: "Do AI app builders like Lovable or v0 use the MCP server?"
    a: "They use the REST API instead. Lovable, v0, Bolt, and Replit generate application code rather than hosting MCP tools, so you paste a prompt that describes a backend route calling BlindPay's quote and payout endpoints, and store the API key as a server-side secret. The key never goes into client code."
---

An AI agent gets a live FX quote by calling a payments API as a tool. With BlindPay's MCP server, an agent in Claude Code, Cursor, Codex, or another MCP host can create a payout quote, show the rate, fees, and expiry, wait for a person to confirm, and execute the payout before the 5-minute window closes.

**Key takeaways**

- Three surfaces: an MCP server for agent hosts, Agent Skills for domain knowledge, and the REST API for code-generating builders.
- The quote is the same binding quote a backend gets: rate, fees, amounts, and `expires_at`, locked for 5 minutes by default.
- Confirmation is the agent's job. Build an explicit "confirm" step into the prompt or the app before any money moves.
- Start on a free development instance, where the token is USDB and nothing real moves.
- Agents are also useful after the payout: status checks and quality reports run on the same tools.

## What does an AI agent need to quote and pay out?

It needs tools to call, knowledge of how payments work, and credentials it cannot leak. BlindPay ships one surface for each, described in the [Build with AI docs](/docs/build-with-ai).

| Surface | What it gives the agent | Where it fits |
| --- | --- | --- |
| MCP server (`@blindpay/mcp`) | The BlindPay API as callable tools | Agent hosts: Claude Code, Codex, Cursor, Windsurf, and other MCP clients |
| Agent Skills (`blindpaylabs/skills`) | Rails, corridors, fees, and API patterns as packaged knowledge | Any agent that loads skills, alongside MCP or on its own |
| REST API | Plain HTTP endpoints | Builders that generate code: Lovable, v0, Bolt, Replit |

The [Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro) is an open-source standard for connecting AI applications to external tools and data. An MCP server turns an API into a list of tools the agent can discover and call. Skills are a separate layer: reusable instructions an agent loads to do a task well, installed through the [open skills ecosystem](https://skills.sh/) with `npx skills add`.

For how agent payments fit with card and protocol initiatives, see [agent payment protocols compared](/resources/more/agent-payment-protocols-compared).

## How do you connect an agent to BlindPay's MCP server?

Two environment variables and one command. In Claude Code:

```bash
claude mcp add blindpay \
  --env BLINDPAY_API_KEY=YOUR_API_KEY \
  --env BLINDPAY_INSTANCE_ID=in_000000000000 \
  -- npx -y @blindpay/mcp
```

Codex uses `codex mcp add` with the same arguments, and Cursor reads the same server block from `.cursor/mcp.json`. Then add the knowledge layer:

```bash
npx skills add blindpaylabs/skills
```

Use a development instance first. Development instances are free, run on testnets with USDB as the only token, and auto-complete payins, so an agent can rehearse the full flow without touching real money. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) covers what changes when you switch the key. Claude Code's own [MCP documentation](https://code.claude.com/docs/en/mcp) explains project-scoped `.mcp.json` files if you want the server checked into a repo.

## What does a quote-to-payout run look like in an agent?

Six steps, each a tool call or a message to the human:

1. **Find the rail.** `GetV1AvailableRails` lists every payout rail, then `GetV1AvailableBankDetails` returns the fields a bank account needs for the chosen rail.
2. **Create the quote.** The agent calls the payout quote tool with the bank account, amount, `currency_type`, `cover_fees`, network, and token.
3. **Show the numbers.** Market rate, applied rate, each fee, what leaves, what arrives, and the expiry time.
4. **Wait for confirmation.** Nothing executes until the human replies.
5. **Execute against the `quote_id`.** Before `expires_at`. The funding step depends on where the stablecoins sit; see the [payouts docs](/docs/payouts).
6. **Report status.** `GetV1InstancesPayoutsById` returns the payout and its status.

A prompt that encodes those rules:

```text
Use the BlindPay tools to create a payout quote that delivers exactly
25,000 BRL to bank account ba_000000000000, with cover_fees true.
Show me the market rate, the applied rate, every fee, the USDC I send,
and when the quote expires. Do not execute until I reply "confirm".
If the quote expires first, request a new one and show me the new numbers.
```

**Illustrative example.** The agent requests a receiver-side quote: `currency_type: "receiver"`, `request_amount: 2500000` (R$25,000.00 in minor units), `cover_fees: true`. Suppose the quote returns a market rate (`commercial_quotation`) of 5.40, an applied rate (`blindpay_quotation`) of 5.373, and a 5.00 USDC flat fee added on top because the sender covers fees.

- USDC needed at the applied rate: 25,000 / 5.373 = 4,652.89
- Plus the flat fee: 4,652.89 + 5.00 = 4,657.89 USDC sent
- Delivered value at the market rate: 25,000 / 5.40 = $4,629.63
- All-in cost: (4,657.89 - 4,629.63) / 4,657.89 = 0.61%

The agent can show that last line too. [Cost per delivered dollar](/resources/more/cost-per-delivered-dollar) explains the formula, and every number here is illustrative, not a BlindPay price.

## How should an agent handle quote expiry?

Treat expiry as a normal path. A BlindPay quote expires 5 minutes after creation by default, and `expires_at` is epoch milliseconds. If the human replies after that, the agent requests a new quote, shows what changed, and asks again.

Three rules to put in the prompt:

- **Never reuse an expired `quote_id`.** A quote backs one payout, and an expired one is rejected rather than executed at a new rate.
- **Quote late.** Ask for the quote when the human is ready to decide, not at the start of a long conversation.
- **Say what moved.** If the new `receiver_amount` or `sender_amount` differs, show the old and new numbers side by side.

For the same logic in application code, with retries and idempotency keys, see [how to handle expired quotes in TypeScript and Python](/resources/more/handle-expired-quotes-typescript-python). The quote fields themselves are covered in [stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained).

## Which guardrails should wrap money-moving tools?

A human confirmation, a scoped key, and a log. The [MCP specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools) says there should always be a human in the loop with the ability to deny tool invocations, and that applications should show confirmation prompts for operations. BlindPay's docs apply that to payments: build the confirmation step into the agent prompt or app flow before any payout, payin, or transfer executes.

| Guardrail | Why it matters | How to set it up |
| --- | --- | --- |
| Explicit confirmation | Agents chain tool calls on their own | "Do not execute until I reply confirm" in the prompt, plus the host's tool approval |
| Development instance first | Mistakes cost nothing on testnets | Separate dev and production keys; USDB on dev |
| Scoped credentials | Limits what a confused agent can do | Give the agent only the key it needs, stored as an env var |
| Amount ceiling in the prompt | Catches a misread amount | "Refuse any payout above 5,000 USDC without a second confirmation" |
| Quote and payout ids in the transcript | Makes every action traceable | Ask the agent to print `quote_id` and `payout_id` |

Autonomous agents that chain many calls, such as OpenClaw, need the confirmation rule most. The [connect an AI agent prompt](/prompts/connect-ai-agent-mcp) packages these guardrails into a setup prompt you can paste.

## Can an agent show a price before creating a quote?

Yes, on the payin side. `POST /payin-quotes/fx` returns an indicative rate and amount without creating a quote, so an agent can answer "roughly how much USDC will 10,000 BRL buy?" before committing to a binding, time-limited payin quote. [Indicative rate vs binding quote](/resources/more/indicative-rate-vs-binding-quote-api) explains when each one belongs in a flow, and the [payin quotes docs](/docs/payin-quotes) list the fields.

## How do agents help after the payout?

They answer status and quality questions in plain language. "Where is payout po_...?" maps to `GetV1InstancesPayoutsById`, which returns the same payout object your backend sees. Since October 2, 2026, the MCP server lists the authenticated status tools instead of the public tracking-page endpoints, which only answer BlindPay's shareable tracking pages.

Agents also make reporting cheaper. Ask for last week's payouts by corridor, then compute expiry rate and delivery success with the formulas in [payout quality metrics](/resources/more/payout-quality-metrics-slippage-expiry-rate). The vocabulary throughout follows the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

## What about AI app builders without an MCP host?

They call the REST API from a backend route. Lovable, v0, Bolt, and Replit generate application code, so you paste a prompt describing a server function that creates a payout quote with `POST /v1/instances/{instance_id}/quotes`, shows the live quote, and executes the payout before it expires. The API key lives in the builder's secrets, never in client code. The [Claude Code integration guide](/docs/integrations/claude-code) and its sibling pages cover each builder, and [how to integrate a stablecoin API](/resources/more/how-to-integrate-a-stablecoin-api) walks the same flow by hand.

## What to do next

Add the BlindPay MCP server to your agent host with a development instance key, load Agent Skills, and paste the prompt above with a test bank account. Watch the agent quote, wait, and execute. Setup for every host is in the [Build with AI docs](/docs/build-with-ai).

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

---

Source: https://blindpay.com/resources/more/payout-quality-metrics-slippage-expiry-rate

---
title: "Payout quality metrics: realized slippage, quote expiry rate, and re-quote delta"
seoTitle: "Payout quality metrics: slippage, expiry, re-quote delta"
description: "Five metrics for a quote-based payout flow: realized slippage, expiry rate, re-quote delta, delivery success, and time to settle, with formulas and a log."
date: "2026-10-12"
updated: "2026-10-12"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What metrics should I track for payout quality?"
    a: "Track five per corridor: realized slippage (delivered vs quoted amount), quote expiry rate (quotes that lapse before the user confirms), re-quote delta (how much the amount moves between an expired quote and its replacement), delivery success rate (completed payouts over all finished payouts), and time to settle (execution to completion, at the median and 90th percentile)."
  - q: "What is realized slippage on a payout?"
    a: "Realized slippage is the gap between the amount a quote promised the recipient and the amount that actually arrived, in basis points: (quoted receiver_amount minus delivered amount) divided by quoted receiver_amount, times 10,000. On a binding quote executed before it expires, it should be zero on every payout. Any non-zero value is worth a support ticket."
  - q: "What is a good quote expiry rate?"
    a: "There is no universal number, because it depends on your screen flow. As a starting point, aim for fewer than 1 in 10 quotes expiring on a single confirmation screen, then set your own baseline after a few weeks. A rising expiry rate usually means quotes are fetched too early, or the confirmation flow has too many steps."
  - q: "What does a large re-quote delta mean?"
    a: "It means the market moved during the quote window. Re-quote delta compares an expired quote with its replacement for the same inputs. Small deltas on liquid corridors are normal. Large or growing deltas on one corridor point to volatility, and they are a signal to fetch quotes later in the flow and to warn users when the new amount changes."
  - q: "Which webhook events do I need to measure payout quality?"
    a: "At BlindPay, payout.new fires when a payout is created and the source funds are captured, payout.update fires on intermediate steps, including a move to failed, and payout.complete fires when a payout is confirmed at the destination or refunded. Read the status field on every event to classify the outcome instead of relying on the event name alone."
---

Payout quality comes down to five numbers per corridor: realized slippage, quote expiry rate, re-quote delta, delivery success rate, and time to settle. On a binding quote, realized slippage should be zero. The other four tell you whether your screen flow, your corridors, and your provider are doing what they promised.

**Key takeaways**

- Realized slippage on a binding quote executed inside its window should be zero, every time.
- Expiry rate measures your UX; re-quote delta measures the market; delivery success and time to settle measure the rails.
- One event log row per quote, keyed by `quote_id`, is enough to compute all five.
- Classify payout outcomes by the `status` field on each webhook, not by the event name.
- Report time to settle as a median and a 90th percentile per rail. Averages hide the slow tail.

## Why measure payout quality at all?

Because a quote-based flow can fail quietly. A user sees one number, confirms, and either gets that number or does not. If you only track volume and revenue, you will not notice a corridor where one confirmation in five expires, or a rail whose slow tail doubled last month.

The approach borrows from site reliability engineering. Google's SRE book frames service quality as [indicators, objectives, and agreements](https://sre.google/sre-book/service-level-objectives/): pick a few metrics users care about, set a target for each, and decide in advance what you do when you miss it. The five metrics below are those indicators for payouts.

They extend the three checks in [how live quotes turn the quoted rate into the rate you get](/resources/more/stablecoin-fx-slippage-live-quotes). Terms follow the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

## Which five metrics matter, and how do you calculate them?

Each metric has one formula, a starting target, and a meaning when it goes wrong. Targets below are starting points; set your own after a few weeks of data.

| Metric | Formula | Starting target | A bad number tells you |
| --- | --- | --- | --- |
| Realized slippage | (quoted receiver_amount - delivered amount) / quoted receiver_amount x 10,000 | 0 bps on a binding quote | The quote was not binding, or a fee landed outside the quote |
| Quote expiry rate | quotes expired before confirm / quotes shown | Under 10% on a single confirm screen | Quotes are fetched too early, or the flow is too long |
| Re-quote delta | (new receiver_amount - old receiver_amount) / old receiver_amount x 10,000 | Within the corridor's normal range | The corridor is volatile right now |
| Delivery success rate | completed / (completed + failed + refunded) | Above 99% on established corridors | Bad recipient data, compliance holds, or a rail issue |
| Time to settle | completed_at - executed_at, p50 and p90 per rail | Within the rail's expected window | A rail, a review step, or a cut-off is slowing payouts |

A few rules for reading them:

- **Realized slippage is binary in practice.** On a binding quote executed before `expires_at`, the recipient gets the quoted `receiver_amount`. A non-zero value is not "a bit of noise", it is a finding.
- **Re-quote delta needs the same inputs.** Compare quotes with the same amount, currency side, fee setting, and destination. Otherwise you are measuring your own changes.
- **Delivery success excludes payouts still in flight.** Count only payouts that reached a terminal status: `completed`, `failed`, or `refunded`.
- **Time to settle is per rail.** Pix and SPEI settle in minutes, RTP is instant, and ACH, TED, and SEPA take about one to two business days, per BlindPay's [cut-off times reference](/docs/kb/cut-off-times). Blending them makes every number meaningless.

The policy benchmark for speed is the G20 roadmap. The [Financial Stability Board's targets](https://www.fsb.org/2021/10/targets-for-addressing-the-four-challenges-of-cross-border-payments-final-report/) aim for 75% of retail cross-border payments to make funds available within one hour of initiation, and the rest within one business day, by end-2027. Your p50 and p90 per rail show where you stand against that.

## What does a week of numbers look like?

**Illustrative example.** A marketplace pays sellers in Brazil and Mexico. One week of data:

- Quotes shown: 4,000. Confirmed and executed: 3,250. Expired before confirm: 560. Abandoned without expiring: 190.
- Expiry rate: 560 / 4,000 = 14%.
- Re-quotes after expiry: 480. Average re-quote delta: 9 bps on BRL, 6 bps on MXN.
- Payouts finished: 3,240 completed, 6 failed, 4 refunded. Delivery success: 3,240 / 3,250 = 99.69%.
- Realized slippage: 0 bps on all 3,240 completed payouts.
- Time to settle over Pix: p50 3 minutes, p90 11 minutes.

What to do with it. The 14% expiry rate is above the starting target, so look at the screen: the quote is probably fetched when the payout form opens, not when the user reaches the confirm step. Moving the quote request later is the cheapest fix. The delivery success rate is healthy; the 10 failures and refunds go to a weekly review of recipient bank details. [Common stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes) lists the usual causes.

## What should the event log store?

One row per quote, keyed by `quote_id`, updated as the payout moves. This is enough to compute all five metrics.

| Field | Source | Used for |
| --- | --- | --- |
| `quote_id` | Quote response (`qu_...`) | Primary key |
| `requote_of` | Your app: the expired `quote_id` this one replaced | Re-quote delta |
| `corridor` | Your app: currency and rail | Grouping |
| `quoted_sender_amount`, `quoted_receiver_amount` | Quote response `sender_amount`, `receiver_amount` | Slippage, re-quote delta |
| `commercial_quotation`, `blindpay_quotation` | Quote response | Spread and cost tracking |
| `quote_created_at` | Your clock when the response arrives | Expiry analysis |
| `expires_at` | Quote response, epoch milliseconds | Expiry rate |
| `confirmed_at` | Your clock when the user confirms | Expiry rate, time on screen |
| `payout_id`, `executed_at` | Payout response (`po_...`) and your clock | Time to settle |
| `status` | Latest payout webhook | Delivery success |
| `completed_at` | Completion time from the payout's tracking objects | Time to settle |
| `delivered_amount` | Recipient confirmation or bank statement, where you have it | Realized slippage |

A sample row:

```json
{
  "quote_id": "qu_000000000000",
  "requote_of": null,
  "corridor": "BRL_pix",
  "quoted_sender_amount": 100000,
  "quoted_receiver_amount": 537300,
  "commercial_quotation": 5.4,
  "blindpay_quotation": 5.373,
  "quote_created_at": "2026-10-12T14:00:02Z",
  "expires_at": 1791813902000,
  "confirmed_at": "2026-10-12T14:01:15Z",
  "payout_id": "po_000000000000",
  "executed_at": "2026-10-12T14:01:16Z",
  "status": "completed",
  "completed_at": "2026-10-12T14:04:40Z",
  "delivered_amount": 537300
}
```

Two traps. `expires_at` is epoch milliseconds, not seconds; divide by 1,000 only if your date library expects seconds. And amounts are integers in minor units, so 537300 means R$5,373.00.

## How do webhooks feed the log?

Webhooks update the `status` and timestamps without polling. BlindPay sends three payout events, documented in the [webhook events reference](/docs/learn/webhooks-events):

1. `payout.new`: the payout is created and the source funds are captured. Set `payout_id` and `status`.
2. `payout.update`: the payout moves through an intermediate step, such as document checks, manual review, or the bank send. A payout that reaches `failed` arrives here too.
3. `payout.complete`: the payout is confirmed at the destination or refunded.

So the rule is simple: on every payout event, read the `status` field and write it to the row. Classify `completed`, `failed`, and `refunded` as terminal from the status, never from the event name alone. That keeps delivery success correct whichever event carried the change.

Verify every webhook signature before trusting it, and process events idempotently, since the same event can arrive twice. [Stablecoin webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation) covers both, and [stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) covers what each status means for the recipient.

## What should the dashboard show?

Three rows, read top to bottom in under a minute.

- **Row 1, health tiles.** Five numbers for the last 7 days, each against its target: realized slippage (should read 0 bps), expiry rate, average re-quote delta, delivery success rate, and Pix or SPEI p90 time to settle.
- **Row 2, per-corridor trends.** One line chart per metric, split by corridor, over 90 days. Expiry rate and re-quote delta on the same time axis, so you can see when volatility drove expiries.
- **Row 3, exceptions.** A table of payouts that broke a rule: any non-zero realized slippage, any payout past its rail's p90, and every `failed` or `refunded` payout with its reason.

Alert on two things only: any non-zero realized slippage, and a delivery success rate that drops below target for a corridor. Everything else is a weekly review.

When an expired quote triggers a re-quote in your code, log the link between the two ids. [How to handle expired quotes in TypeScript and Python](/resources/more/handle-expired-quotes-typescript-python) shows the retry pattern, and [cost per delivered dollar](/resources/more/cost-per-delivered-dollar) turns the same log into an all-in cost per corridor. For who absorbs the market move while a quote is open, see [who carries FX risk in a stablecoin payout](/resources/more/who-carries-fx-risk-stablecoin-payout).

## How does BlindPay help you measure this?

Every BlindPay quote returns the fields the log needs: `id`, `expires_at`, `commercial_quotation`, `blindpay_quotation`, `sender_amount`, `receiver_amount`, and the fee lines. Payout quotes lock the rate and fees for 5 minutes by default, and an expired quote is rejected instead of executed at a new rate, so realized slippage on BlindPay payouts executed in time is designed to be zero.

Payout webhooks are signed and carry the payout's status and tracking objects. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.

## What to do next

Add the event log table to your database, write one row per quote, and backfill a week of payouts. Then compute the five metrics per corridor and set your first targets. The [payout quotes docs](/docs/payout-quotes) list every field the log reads.

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

---

Source: https://blindpay.com/resources/more/stablecoin-card-demand-by-country

---
title: "Where stablecoin card demand is growing: the US, India, UAE, Vietnam, Pakistan, and beyond"
seoTitle: "Stablecoin card demand by country in 2026"
description: "Which countries ask AI about stablecoin cards most, why interest is rising in India, the UAE, Vietnam, and Pakistan, and where local payouts matter."
date: "2026-10-12"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Which countries are most interested in stablecoin cards?"
    a: "In BlindPay's research on ChatGPT and Gemini prompts that mention stablecoin cards, from July 1 to October 12, 2026, the US led with about 80,800 projected prompts, followed by India at 51,600, the UK at 12,800, Canada at 11,300, the UAE at 6,900, Vietnam at 5,700, Pakistan at 5,100, and Germany at 4,300."
  - q: "Does search interest mean people use stablecoin cards in those countries?"
    a: "No. Prompt volume measures how often people ask AI assistants about stablecoin cards, not how many cards are issued or used. Interest can come from people who cannot get a card yet. Card availability depends on each program's country list and on local rules, which vary widely."
  - q: "Are stablecoin cards available in India, Pakistan, or Vietnam?"
    a: "It depends on the program and on local law, both of which change. Each card program publishes the countries it serves, and the rules on crypto and on foreign card spending differ by country. Check the program's eligibility page and your local regulator before applying, and do not rely on a card for essential payments."
  - q: "Why does stablecoin card demand show up in emerging markets?"
    a: "The common reasons are access to dollars, the cost of converting currency, remittances from family abroad, and income from foreign clients paid in USDC or USDT. A card lets that dollar balance be spent at merchants. Paying rent or bills usually still needs a bank transfer in local currency."
  - q: "How many stablecoin card programs are there worldwide?"
    a: "Visa reported more than 130 stablecoin-linked card programs in more than 50 countries in March 2026, and said it expects the number of programs to roughly double during 2026. Paymentscan, which tracks onchain card activity, lists 29 card programs on its dashboard."
---

Interest in stablecoin cards is global but concentrated. In BlindPay's research on ChatGPT and Gemini prompts from July 1 to October 12, 2026, the US accounted for about 80,800 projected prompts, India for 51,600, and the UK, Canada, the UAE, Vietnam, Pakistan, and Germany followed. This measures interest, not card usage, and access still varies by country.

This page reads that interest signal country by country, explains the likely reasons behind it, and shows where a card is not enough on its own. For how the cards themselves work, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing). For volume and program data, see the [state of stablecoin cards 2026](/resources/more/stablecoin-card-statistics-2026).

**Key takeaways**

- About 184,600 projected AI prompts mentioned stablecoin cards on ChatGPT and Gemini from July 1 to October 12, 2026, per BlindPay's research using Profound.
- The US and India together made up about 72% of the projected prompts.
- Interest is not usage. Many people asking may not be able to get a card where they live.
- Visa reported more than 130 stablecoin-linked card programs in more than 50 countries in March 2026.
- Where cards are hard to get, or bills need a bank transfer, local payout rails do the work a card cannot.

## What does the AI search data show?

It shows where people ask AI assistants about stablecoin cards. BlindPay tracked prompts that match the phrase "stablecoin card" on ChatGPT and Gemini with Profound, an AI search analytics platform, from July 1 to October 12, 2026.

| Country | Projected prompts | Share of the 184,600 total |
| --- | --- | --- |
| United States | 80,800 | About 44% |
| India | 51,600 | About 28% |
| United Kingdom | 12,800 | About 7% |
| Canada | 11,300 | About 6% |
| United Arab Emirates | 6,900 | About 4% |
| Vietnam | 5,700 | About 3% |
| Pakistan | 5,100 | About 3% |
| Germany | 4,300 | About 2% |

ChatGPT carried about 151,200 of the projected prompts and Gemini about 33,400. Perplexity had no reportable estimate for the period.

**Definition: projected prompts.** An estimate of how many conversations on an AI assistant include a matching question, modeled from a sample. It is a measure of interest. It does not count cards, users, or spend.

## What are people asking about stablecoin cards?

Mostly what they are, how they work, and which one to pick. Of the classified conversations in the same dataset, 21.5% were informational, such as definitions, news, and how-to questions, and 13.3% were commercial, such as comparisons and provider research.

The rest were mostly writing tasks, which say little about demand. Read the informational and commercial share as the real signal: people want plain definitions, current numbers, and help choosing. The fundamentals pages in this cluster, starting with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card) and [how stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle), answer those questions.

## Why is interest high in the United States?

The US has the most card programs, the biggest crypto user base, and a new federal frame for stablecoins. Interest there is mostly about which card to pick and how it is regulated.

Two events gave US readers reasons to ask. The [GENIUS Act](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm), signed July 18, 2025, set the federal frame for payment stablecoin issuers. And in December 2025, [Visa launched USDC settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html) with its first banking participants. [Stablecoin cards in the United States](/resources/more/stablecoin-cards-united-states-regulation) covers both.

## Why is interest high in India?

India ranks second on prompt volume, which likely reflects a large, young, mobile-first population, a big freelance and remote work sector paid by foreign clients, and remittances from family abroad. Many of those people earn or receive dollars and ask how to spend them.

Rules on crypto, on foreign currency, and on card spending abroad apply in India, and they change. Card availability depends on whether a program serves Indian residents at all. Check the program's eligibility page and the current local rules before applying. For income from foreign clients, [how freelancers spend USDC](/resources/more/how-freelancers-spend-usdc) compares a card with a bank payout.

## Why does demand show up in the UAE, Vietnam, and Pakistan?

Each market has its own reason, but dollar access and cross-border income run through all three. The patterns below are likely drivers, not measured causes.

- **UAE.** A financial hub with a large expatriate population that moves money across borders often. Gulf issuers are also moving into stablecoins: [INFINIOS](https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2026/august/infinios-goes-live-with-mastercard-on-stablecoin-settlement-marking-a-first-for-issuers-in-the-kingdom-of-bahrain) said in August 2026 it was the first issuer in Bahrain to settle with Mastercard using stablecoins.
- **Vietnam.** High crypto adoption and inbound remittances, with people asking how to spend stablecoins they already hold.
- **Pakistan.** Remittances and freelance income from abroad, plus interest in holding dollars.

In all three, card availability depends on the program and on local rules. Interest in AI prompts does not mean a card is easy to get.

What the three have in common is that the stablecoin balance often arrives from abroad, from a client, an employer, or a family member, and the person then has to turn it into something they can spend locally. A card is one answer for shopping. A transfer into a local bank account is the answer for everything a card cannot pay, which in most households is the larger share of monthly spending.

## How does Latin America fit the picture?

Latin America is not in the top eight countries by prompt volume, but it is one of the clearest card markets. Visa and Bridge launched stablecoin-linked card issuing in [Argentina, Colombia, Ecuador, Mexico, Peru, and Chile](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html) in April 2025.

Many questions in the region are asked in Spanish and Portuguese, which a phrase match on "stablecoin card" in English would undercount. [Stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america) covers the country rules, and [stablecoin card vs Pix and SPEI payouts](/resources/more/stablecoin-card-vs-pix-spei-payouts) covers when a local payout fits better.

## Why do local payout rails matter where card access is uneven?

Because a card only works where cards are issued and accepted, while a bank transfer works for rent, bills, payroll, and suppliers. Where card access is uneven, a local payout rail is the dependable way to turn stablecoins into spendable money.

Compare the two paths for someone paid in USDC:

| Need | Stablecoin card | Local bank payout |
| --- | --- | --- |
| Buy online in dollars | Works well | Not needed |
| Pay rent or a utility bill | Rarely accepted | Works |
| Available in my country | Only if a program serves it | Where the provider has a rail |
| Conversion timing | Every purchase | Once, at payout |
| Record for taxes | Card statement | Bank deposit and payout ID |

[Instant payment systems by country](/resources/more/instant-payment-systems-by-country) lists the real-time rails that make local payouts fast.

## How should you read this data?

Read it as interest, scoped to two assistants, one phrase, and one period. Four steps keep it honest:

1. **Name the measure.** These are projected AI prompts, not cards, users, or spend.
2. **Name the scope.** ChatGPT and Gemini, phrase match on "stablecoin card", July 1 to October 12, 2026.
3. **Mind the language.** An English phrase undercounts countries that ask in other languages.
4. **Pair it with usage data.** Visa's program counts and onchain trackers measure activity. The [state of stablecoin cards 2026](/resources/more/stablecoin-card-statistics-2026) collects those.

This is general information, not legal or financial advice. Rules on crypto and cards vary by country.

## Where does BlindPay fit?

BlindPay supplies the local payout and collection leg next to a card program. It converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with KYC, KYB, and sanctions screening in the same API flow.

For a business with users or contractors in several of the countries above, that means one integration to pay them in local currency, with no pre-funding, published plans with no volume floor, and fees shown in the live quote. SWIFT reaches 100+ countries where no local rail is available, with UETR tracking and MT103 confirmations. Card issuing stays with the issuer that serves each market.

## What to do next

If your users ask how to spend stablecoins, check two things for each market: whether a card program serves it, and which local rail reaches its bank accounts. Then cover both.

Businesses can test the payout side on a free development instance with the [payout quickstart](/docs/quickstart-payout), and check rail coverage in the [payment methods reference](/docs/kb/payment-methods).

## Sources

- BlindPay research using Profound prompt volume data, phrase match "stablecoin card", ChatGPT and Gemini, July 1 to October 12, 2026
- [Visa, How stablecoin-linked cards are modernizing money movement (updated March 31, 2026)](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement)
- [Visa, Visa Launches Stablecoin Settlement in the United States (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- [Visa, Visa and Bridge Partner to Make Stablecoins Accessible for Everyday Purchases (April 30, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html)
- [Mastercard, INFINIOS goes live with Mastercard on stablecoin settlement (August 2026)](https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2026/august/infinios-goes-live-with-mastercard-on-stablecoin-settlement-marking-a-first-for-issuers-in-the-kingdom-of-bahrain)
- [GENIUS Act, Public Law 119-27 (July 18, 2025)](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm)
- [Paymentscan](https://paymentscan.xyz)

---

Source: https://blindpay.com/resources/more/stablecoin-card-statistics-2026

---
title: "State of stablecoin cards 2026: volume, programs, networks, and risks (data report)"
seoTitle: "Stablecoin card statistics 2026: volume, programs, risks"
description: "Sourced stablecoin card statistics for 2026: Visa volume and programs, monthly onchain spend, average ticket, chain and token mix, and incidents."
date: "2026-10-12"
updated: "2026-10-12"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "How much do people spend with stablecoin cards?"
    a: "Visa says stablecoin-linked cards processed about $5.2 billion in 2025, up 319% year over year. Onchain trackers show the 2026 monthly pace: a16z crypto, citing Paymentscan data, counted $759 million of card spend in July 2026, and Paymentscan's default view, which also includes top-ups and settlements, showed $1.224 billion in September 2026."
  - q: "How many stablecoin card programs exist?"
    a: "Visa reported more than 130 stablecoin-linked card programs in more than 50 countries on its March 31, 2026 update, and said it expects the number of programs to roughly double during 2026. Paymentscan lists 29 card programs on its onchain dashboard, which covers only programs whose activity it can track."
  - q: "What is the average stablecoin card purchase?"
    a: "About $86, according to a16z crypto's August 7, 2026 analysis of Paymentscan data, across nearly 9 million purchases a month. That ticket size looks like everyday spending, such as groceries, restaurants, and subscriptions, rather than large one-off purchases."
  - q: "Which blockchain carries the most stablecoin card spend?"
    a: "Optimism, at about 29% of volume, followed by Solana and Base at about 19% each, per a16z crypto's August 2026 analysis of Paymentscan data. Gnosis had dropped to about 2%. By token, USDC carried about 58% and USDT about 26%, while euro stablecoin EURe fell from about 88% in early 2024 to about 2%."
  - q: "Why do stablecoin card statistics differ between sources?"
    a: "They measure different things over different programs. Paymentscan's default view mixes spends, settlements, clearing, and top-ups. a16z crypto reports spend only. SpendNode reports spend for the programs it has mapped. Visa reports volume across its own network. Always name the source, period, and coverage with each number."
  - q: "Is Visa's $7 billion stablecoin figure card spending?"
    a: "No. Visa's $7 billion is an annualized stablecoin settlement run rate, reported on April 29, 2026: the value of settlement between Visa and its partners paid in stablecoins. It is a different measure from card spend, and the two figures should never be added together."
---

Stablecoin cards processed about $5.2 billion on Visa in 2025, up 319% year over year, yet that was only 0.04% of Visa's $14.2 trillion volume. In 2026 the pace kept rising: a16z crypto counted $759 million of card spend in July, and Paymentscan's broader onchain view reached $1.224 billion in September 2026.

Card numbers get mixed up even more than general stablecoin numbers. Trackers cover different programs, some count top-ups and settlements, and settlement run rates get quoted as spend. This report keeps each figure next to its source, date, and scope. It is refreshed quarterly; the change log is at the end. For how the cards work, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Visa: about $5.2 billion of stablecoin-linked card volume in 2025, up 319%, or 0.04% of its $14.2 trillion total.
- Visa: more than 130 programs in more than 50 countries, with the number of programs expected to roughly double in 2026.
- Paymentscan (mixed view): $1.038 billion in July, $1.116 billion in August, and $1.224 billion in September 2026.
- a16z crypto: average purchase about $86, nearly 9 million purchases a month, Optimism carries about 29% of volume.
- SpendNode: ether.fi and KAST supplied 70.1% of the $305.6 million it measured in August 2026.

## What are the headline stablecoin card numbers for 2026?

Five numbers summarize the market. Each comes from a different source with a different scope, so they should be quoted separately, never added.

| Metric | Value | Source and date | Scope |
| --- | --- | --- | --- |
| 2025 card volume | About $5.2 billion, up 319% YoY | [Visa](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement), March 31, 2026 | Visa stablecoin-linked cards, full year |
| Share of Visa volume | About 0.04% of $14.2 trillion | Visa, March 31, 2026 | Visa global volume |
| Programs | 130+ in 50+ countries | Visa, March 31, 2026 | Visa programs |
| Monthly card spend | $759 million in July 2026, about 2.5x from $306 million | [a16z crypto](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend), August 7, 2026 | Onchain spend tracked by Paymentscan |
| Monthly onchain card activity | $1.224 billion in September 2026 | [Paymentscan](https://paymentscan.xyz) | Mixed view, 29 listed programs |
| Measured spend, 11 programs | $305.6 million in August 2026 | [SpendNode](https://www.spendnode.io/crypto-cards/stats/august-2026/), September 2, 2026 | Mapped programs only |

**Definition: stablecoin-linked card.** A payment card whose balance is held in a stablecoin such as USDC or USDT. The card network authorizes in fiat, the program converts the stablecoins, and the merchant is paid in local currency.

## How fast is stablecoin card spending growing?

Fast, from a small base. Visa's 2025 volume grew 319%, and a16z crypto's July 2026 spend was about 2.5 times the $306 million a year earlier.

Month by month, Paymentscan's default view rose from $1.038 billion in July to $1.116 billion in August and $1.224 billion in September 2026, about 18% over two months. CoinDesk reported on [crypto card spending topping $1 billion in a month](https://www.coindesk.com/business/2026/08/23/crypto-card-spending-tops-usd1-billion-as-stablecoins-move-into-everyday-purchases) on August 23, 2026.

SpendNode measured $305.6 million in August and [$347.1 million in September 2026](https://www.spendnode.io/crypto-cards/stats/september-2026/). Its coverage can change between months, so treat month-on-month changes there with care.

The share is still tiny. At 0.04% of Visa's volume in 2025, stablecoin cards are a fast-growing niche, not yet a mainstream payment method.

## How many stablecoin card programs are there?

More than 130 on Visa alone, per Visa's March 2026 update, in more than 50 countries. Visa said it expects the number of programs to roughly double in 2026. That forecast is about program count, not volume.

Onchain trackers see fewer. Paymentscan lists 29 card programs. The difference is coverage: a tracker can only count programs whose wallets and contracts it can identify onchain, and some programs report off-chain data themselves.

Program counts also hide concentration. In SpendNode's August 2026 data, two programs, ether.fi and KAST, supplied $214.3 million of the $305.6 million measured, or 70.1%. SpendNode notes that adding programs to its coverage can change that ratio materially.

## What does a typical stablecoin card purchase look like?

Small and frequent. a16z crypto counted nearly 9 million purchases a month with an average of about $86, based on Paymentscan data for mid-2026.

That ticket size points to everyday spending rather than large purchases. It also explains why fees matter so much: a fixed per-transaction charge weighs heavily on an $86 purchase. [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) breaks down spread, FX markup, and ATM costs.

## Which chains and stablecoins carry card spend?

Optimism, Solana, and Base carry most of it, and dollar stablecoins dominate. The figures below are from a16z crypto's August 7, 2026 analysis of Paymentscan data.

| Breakdown | Share of card volume |
| --- | --- |
| Optimism | About 29% |
| Solana | About 19% |
| Base | About 19% |
| Gnosis | About 2% |
| USDC | About 58% |
| USDT | About 26% |
| EURe | About 2%, down from about 88% in early 2024 |

The token shift is the bigger story. Early card programs ran largely on the euro stablecoin EURe. By mid-2026, dollar stablecoins carried most of the volume. [Which stablecoin is best for card spending](/resources/more/best-stablecoin-for-card-spending) compares the options.

## How are Visa and Mastercard moving on stablecoin settlement?

Both networks now settle with some partners in stablecoins, and Mastercard bought a stablecoin infrastructure company. Settlement figures measure money moving between the network and its partners, not card spend.

| Date | Network | Event |
| --- | --- | --- |
| April 30, 2025 | Visa | [Visa and Bridge](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html) announce stablecoin card issuing, starting in six Latin American countries |
| December 16, 2025 | Visa | [USDC settlement in the US](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html); $3.5 billion annualized run rate as of November 30, 2025 |
| April 29, 2026 | Visa | [$7 billion annualized settlement run rate](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), up 50% in a quarter, nine blockchains |
| August 3, 2026 | Mastercard | [Completes acquisition of BVNK](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx) |
| August 2026 | Mastercard | [INFINIOS](https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2026/august/infinios-goes-live-with-mastercard-on-stablecoin-settlement-marking-a-first-for-issuers-in-the-kingdom-of-bahrain) says it is the first issuer in Bahrain to settle with Mastercard in stablecoins |

[Visa and Mastercard stablecoin settlement explained](/resources/more/visa-mastercard-stablecoin-settlement) covers the two settlement models.

## What security incidents affected stablecoin cards in 2026?

Two incidents stand out, and both ended with users made whole. They show that shared smart contract infrastructure can affect several programs at once.

- **Rain-managed Solana contract, August 28, 2026.** Unauthorized withdrawals hit card balances held in a Solana contract. Rain described "a vulnerability impacting a small number of programs using an outdated version of our Solana contracts." Tria reported 636 affected users and $431,945, with every affected user being refunded in full, per [SpendNode](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/). Avici reported $500,859 across 1,685 users and said refunds were processed in full with an extra 10% cashback, per [SpendNode](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/). Self-custodial wallets were reported unaffected.
- **Gnosis Pay, June 1, 2026.** An exploit of the Delay and Roles modules. According to the [Gnosis Pay post-mortem](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit), attackers extracted $1.5 million, and Gnosis absorbed the losses and restored all funds to users.

Neither incident means every program on the same provider was exposed. [Are stablecoin cards safe?](/resources/more/are-stablecoin-cards-safe) covers the risk categories in full.

## Why do stablecoin card statistics differ by source?

Because each source measures a different slice. The July 2026 numbers show it clearly: a16z crypto reported $759 million while Paymentscan's default view showed $1.038 billion for the same month.

Methodology notes for readers and journalists:

1. **Paymentscan's default view is mixed.** Its [methodology](https://paymentscan.xyz/methodology) says the figures include "spends, settlements, clearing transactions, and top-ups." That is broader than spend.
2. **a16z crypto reports spend.** Its July figure counts card purchases tracked onchain through Paymentscan.
3. **SpendNode reports mapped programs only.** Its $305.6 million covers 11 programs in August 2026, and coverage can change month to month.
4. **Some data is self-reported.** Paymentscan notes that off-chain data is self-reported by the teams and not verified by Paymentscan.
5. **Visa reports its own network.** Its figures cover Visa programs, including activity no onchain tracker sees.
6. **Settlement is not spend.** Visa's $7 billion run rate measures settlement between Visa and partners.

Quote one source per number, with its date and scope.

## What should you watch next?

Watch four things through the end of 2026:

- **Mastercard and BVNK.** How the combined company packages stablecoin settlement and card issuing after the August 3 close.
- **Visa settlement.** Whether the run rate keeps growing and how many more US banks settle in USDC.
- **Program count.** Whether Visa's programs double as forecast, and how much concentration in the top two programs eases.
- **Security.** Whether shared contract infrastructure gets audits, monitoring, and published post-mortems after the August incident.

## How does the money get in and out of a card program?

Every number above measures spending. Before a card can spend, stablecoins have to arrive, and many users also need part of their money in a local bank account. That is the payout and collection leg, and it sits outside every card statistic in this report.

BlindPay runs that leg. It converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), collects bank deposits into US virtual accounts that settle as stablecoins, and runs KYC, KYB, and sanctions screening in the same API flow, with no pre-funding. Card issuing stays with the card program.

## Read the full stablecoin card guide

Fundamentals:

- [What is a stablecoin-backed card?](/resources/more/what-is-a-stablecoin-backed-card)
- [How stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle)
- [Stablecoin card vs crypto debit, prepaid, and credit cards](/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit)
- [Custodial vs self-custodial stablecoin cards](/resources/more/custodial-vs-self-custodial-stablecoin-cards)
- [Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards)
- [Best stablecoin for card spending](/resources/more/best-stablecoin-for-card-spending)

Fees, tax, safety, and use cases:

- [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained)
- [Are stablecoin card purchases taxable?](/resources/more/are-stablecoin-card-purchases-taxable)
- [Are stablecoin cards safe?](/resources/more/are-stablecoin-cards-safe)
- [Do stablecoin cards require KYC?](/resources/more/do-stablecoin-cards-require-kyc)
- [How freelancers spend USDC](/resources/more/how-freelancers-spend-usdc)
- [Using a stablecoin card for travel](/resources/more/stablecoin-card-for-travel)

Regions and regulation:

- [Stablecoin card vs Pix and SPEI payouts](/resources/more/stablecoin-card-vs-pix-spei-payouts)
- [Stablecoin cards in Europe and MiCA](/resources/more/stablecoin-cards-europe-mica)
- [Stablecoin cards in the United States](/resources/more/stablecoin-cards-united-states-regulation)
- [Stablecoin card demand by country](/resources/more/stablecoin-card-demand-by-country)

Business and builders:

- [How to launch a stablecoin card program](/resources/more/how-to-launch-a-stablecoin-card-program)
- [How to choose a stablecoin card issuing provider](/resources/more/how-to-choose-a-stablecoin-card-issuing-provider)
- [Visa and Mastercard stablecoin settlement](/resources/more/visa-mastercard-stablecoin-settlement)
- [How to fund a stablecoin card](/resources/more/how-to-fund-a-stablecoin-card)
- [From stablecoin card balance to a local bank](/resources/more/stablecoin-card-balance-to-local-bank)
- [Stablecoin card and payout compliance map](/resources/more/stablecoin-card-and-payout-compliance-map)
- [Paying contractors: cards or local payouts](/resources/more/pay-contractors-stablecoin-cards-or-payouts)

If you are building the money movement around a card program, test the payout side on a free development instance with the [payout quickstart](/docs/quickstart-payout).

## Change log

- **October 12, 2026:** first edition. Covers Visa data to March and April 2026, Paymentscan through September 2026, a16z crypto's August 7 analysis, SpendNode's August and September reports, and incidents through August 2026. Next refresh planned for January 2027.

## Sources

- [Visa, How stablecoin-linked cards are modernizing money movement (updated March 31, 2026)](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement)
- [Visa, Adding Five Blockchains for Settlement (April 29, 2026)](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html)
- [Visa, Stablecoin Settlement in the United States (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- [Visa and Bridge partnership (April 30, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html)
- [Paymentscan](https://paymentscan.xyz) and [methodology](https://paymentscan.xyz/methodology)
- [a16z crypto, Charts: payment card stablecoin spend (August 7, 2026)](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend)
- [SpendNode, August 2026 stats](https://www.spendnode.io/crypto-cards/stats/august-2026/) and [September 2026 stats](https://www.spendnode.io/crypto-cards/stats/september-2026/)
- [CoinDesk (August 23, 2026)](https://www.coindesk.com/business/2026/08/23/crypto-card-spending-tops-usd1-billion-as-stablecoins-move-into-everyday-purchases)
- [Mastercard completes acquisition of BVNK (August 3, 2026)](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx)
- [Mastercard, INFINIOS stablecoin settlement (August 2026)](https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2026/august/infinios-goes-live-with-mastercard-on-stablecoin-settlement-marking-a-first-for-issuers-in-the-kingdom-of-bahrain)
- [SpendNode on Tria (August 29, 2026)](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/) and [on Avici (August 30, 2026)](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/)
- [Gnosis Pay post-mortem](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit)

---

Source: https://blindpay.com/resources/more/cost-per-delivered-dollar

---
title: "Cost per delivered dollar: the real cost of a cross-border payout"
seoTitle: "Cost per delivered dollar: real cross-border payout cost"
description: "Cost per delivered dollar compares what you send with what lands, valued at the market rate. The formula, three worked setups, and 8 hidden costs."
date: "2026-10-11"
updated: "2026-10-11"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is cost per delivered dollar?"
    a: "Cost per delivered dollar is the share of a cross-border payment that never reaches the recipient. Take the amount you sent, subtract what was delivered valued at the market rate at send time, and divide by the amount sent. It captures spread, slippage, and every fee in one percentage, so two providers can be compared on the same basis."
  - q: "How do I calculate the hidden fees in a cross-border payment?"
    a: "Work backward from the delivered amount. Convert what the recipient received into your currency at the mid-market rate from the moment you sent, subtract that from the total you paid out, and the difference is your all-in cost. Any part of it that does not appear as a fee line on your quote or invoice is a hidden cost."
  - q: "What is a good all-in cost for a cross-border payout?"
    a: "The Financial Stability Board's G20 target for retail cross-border payments is a global average cost of no more than 1%, with no corridor above 3%, by end-2027. Treat under 1% all-in as strong, 1% to 3% as typical, and above 3% as a reason to re-check the route, especially on large B2B payments."
  - q: "Which market rate should I use as the benchmark?"
    a: "Use a mid-market rate captured at the same minute you request the quote, from a source you trust. Central bank reference rates such as the ECB's euro rates are published once a day for information, so they work for monthly reviews but not for minute-level checks. A BlindPay quote also returns commercial_quotation, the raw market rate."
  - q: "Does a binding quote remove all hidden costs?"
    a: "It removes the two that hide best: slippage, because the rate cannot move inside the window, and fee surprises, because every fee line is in the quote. It does not remove costs outside the payout itself, such as the on-ramp leg if you start in fiat, idle pre-funded balances, or the cost of re-sending a payment that failed."
---

Cost per delivered dollar is the share of a cross-border payment that never reaches the recipient: (amount sent minus the delivered amount valued at the market rate) divided by the amount sent. It turns spread, slippage, intermediary fees, and receiving fees into one percentage you can compare across providers, corridors, and months.

**Key takeaways**

- Formula: (amount sent - delivered value at market rate) / amount sent.
- Benchmark it against the G20 target: under 1% average for retail cross-border payments by end-2027.
- On a $10,000 illustrative payout, the same corridor costs 3.03%, 1.93%, or 0.55% depending on how it is priced.
- Eight costs hide outside the quote; a binding live quote with itemized fees puts the biggest two in plain sight.
- On BlindPay, `receiver_amount` divided by `commercial_quotation` gives you the delivered value before you execute.

## What is cost per delivered dollar?

It is the all-in cost of a payout, measured from the recipient's side. Instead of adding up the fees you were told about, you measure what arrived and value it at the market rate from the moment you sent.

The formula has three inputs:

- **Amount sent.** Everything that left your account for this payment, in your currency, including any upfront fee.
- **Delivered amount.** What the recipient's bank credited, in their currency.
- **Market rate.** The mid-market rate at send time, the rate with no margin in it.

Delivered value = delivered amount / market rate. Then cost = (amount sent - delivered value) / amount sent.

Why measure from the delivered side? Because that is where every cost lands. A spread hides in the rate, slippage hides in the gap between the quoted and settled rate, and receiving bank fees hide on the far end of the wire. None of them can hide from the delivered amount.

One note on the denominator. Dividing by amount sent gives the share of each dollar sent that was lost. Dividing by delivered value instead gives the cost to deliver one dollar, which is slightly higher. Both are fine; pick one and use it everywhere. This article divides by amount sent.

## How does the cost change across three payout setups?

**Illustrative example.** A company sends $10,000 to a supplier in Brazil. The mid-market rate at send time is 5.40 BRL per USD. All rates and fees below are illustrative, not quotes from any provider.

**Setup A: indicative rate, slippage, and an intermediary fee.** A $30 upfront fee, a $25 intermediary deduction before conversion, and a shown rate of 5.346 that settles later at 5.325.

- To convert: $10,000 - $30 - $25 = $9,945
- Delivered: $9,945 x 5.325 = R$52,957.13
- Delivered value: R$52,957.13 / 5.40 = $9,806.88
- Cost: ($10,000 - $9,806.88) / $10,000 = 1.93%

**Setup B: bank wire with a wide spread and a receiving fee.** A $45 wire fee, a 2.5% spread (5.265), and a R$50 receiving bank fee.

- To convert: $10,000 - $45 = $9,955
- Converted: $9,955 x 5.265 = R$52,413.08
- Delivered after receiving fee: R$52,413.08 - R$50 = R$52,363.08
- Delivered value: R$52,363.08 / 5.40 = $9,696.87
- Cost: ($10,000 - $9,696.87) / $10,000 = 3.03%

**Setup C: binding live quote with itemized fees.** The quote shows a market rate of 5.40, an applied rate of 5.373 (0.5% margin), and a $5 flat fee, locked for the window. You fund it with 10,000 USDC, treated here as $10,000.

- To convert: $10,000 - $5 = $9,995
- Delivered: $9,995 x 5.373 = R$53,703.14
- Delivered value: R$53,703.14 / 5.40 = $9,945.03
- Cost: ($10,000 - $9,945.03) / $10,000 = 0.55%

| Setup | Delivered (BRL) | Delivered value (USD) | Cost per delivered dollar | Visible before sending? |
| --- | --- | --- | --- | --- |
| C: binding live quote | R$53,703.14 | $9,945.03 | 0.55% | Yes, every line |
| A: indicative rate | R$52,957.13 | $9,806.88 | 1.93% | Partly; slippage shows up after |
| B: bank wire | R$52,363.08 | $9,696.87 | 3.03% | Partly; receiving fee shows up after |

The gap between A and C is not one big fee. It is four small ones, two of which never appeared on a screen. That is why measuring from the delivered side matters.

Setup C assumes you already hold USDC. If you start with dollars in a bank account, add the on-ramp leg to the amount sent. [Why on-ramp and off-ramp rates differ](/resources/more/why-onramp-and-offramp-rates-differ) walks through that round trip.

## Which eight costs hide in a cross-border payout?

Each cost below either lowers the delivered amount or raises the amount sent. A good provider shows most of them on the quote. The rest you have to measure.

| Cost source | Where it hides | How to measure it | On a binding quote? |
| --- | --- | --- | --- |
| Spread | Inside the exchange rate | Compare the applied rate with mid-market at the same minute | Yes, as market rate vs applied rate |
| Slippage | Between the shown rate and the settled rate | Quoted vs delivered amount, in basis points | Removed inside the window |
| Intermediary fees | Deducted by correspondent banks along a wire | Amount sent vs amount that reached the destination bank | A local rail payout has no correspondent chain |
| Receiving bank fees | Charged by the recipient's bank on arrival | Ask the recipient, or compare the credit with the instruction | Depends on the rail |
| Pre-funding cost of capital | Balances parked in destination accounts | Idle balance x your cost of capital | Not needed when each payout is funded at execution |
| Failed payment re-fees | Return fees plus the cost of sending again | Failed payouts x (return fee + new send cost) | Partly: Pix and other non-USD local rail failures are refunded automatically |
| Network fees | Blockchain transaction costs | Fee line on the quote or the onchain record | Shown in the quote's fee lines |
| FX on both legs | Converting into stablecoins, then out of them | Round-trip cost of on-ramp plus off-ramp | Each leg has its own quote |

Pre-funding deserves its own line because it never shows up on a single payment. **Illustrative example:** $200,000 parked across four corridors at an 8% annual cost of capital costs $200,000 x 0.08 / 12 = $1,333 a month. On $400,000 of monthly payouts, that adds 1,333 / 400,000 = 0.33% to every dollar you send. [How much USDC to hold to fund payouts](/resources/more/how-much-stablecoin-float-for-payouts) covers sizing the balance you do need.

Failed payments are the other quiet one. A returned wire costs the return fee, the time to fix the bank details, and a second send at a new rate. [Common stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes) lists the errors that cause most of them.

## What is a good number to aim for?

Under 1% is strong, 1% to 3% is typical, and above 3% needs a second look.

Those bands follow the G20 cross-border payments roadmap. The [Financial Stability Board's targets](https://www.fsb.org/2021/10/targets-for-addressing-the-four-challenges-of-cross-border-payments-final-report/) set a global average cost of no more than 1% for retail cross-border payments, which covers B2B and person-to-business payments, with no corridor above 3%, by end-2027. For $200 remittances the target is 3% on average by 2030, with no corridor above 5%. Small payments carry flat fees that a 1% target cannot absorb, so judge them against the remittance bands.

Track the number per corridor and per ticket size, not as one blended figure. A 0.6% average can hide a 4% corridor. For typical ranges by corridor, see [cross-border payment costs in 2026](/resources/more/cross-border-payment-costs-2026), and for how wire charge codes move money off the delivered amount, see [hidden fees in international wires](/resources/more/hidden-fees-international-wires-our-sha-ben).

## How do you get the market rate for the benchmark?

Capture it at the same minute you request the quote. A rate from an hour earlier can be off by more than the spread you are trying to measure.

For monthly reviews, central bank reference rates work: the [ECB publishes euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) around 16:00 CET each working day, and Brazil's central bank publishes its [PTAX rates](https://www.bcb.gov.br/estabilidadefinanceira/historicocotacoes). The ECB notes its rates are for information only, so treat them as a benchmark, not a tradable price.

Consumer sites that show a single rate usually show a mid-market reference too. [Why the rate on Google differs from your quote](/resources/more/why-google-rate-differs-from-quote) explains the gap between a reference rate and an executable one.

## How does a BlindPay quote show the cost up front?

Every BlindPay quote returns the market rate next to the applied rate, so the spread is visible on each quote, before you execute.

The fields come from the [payout quote response](/docs/payout-quotes):

- `commercial_quotation` is the raw market rate.
- `blindpay_quotation` is the rate net of BlindPay's fee.
- `flat_fee`, `partner_fee_amount`, and `billing_fee_amount` are the fee lines.
- `sender_amount` and `receiver_amount` are what leaves and what arrives, in minor units.

That gives you cost per delivered dollar before any money moves. Delivered value = `receiver_amount` / `commercial_quotation`, and cost = (`sender_amount` - delivered value) / `sender_amount`. Cross-check `commercial_quotation` against your own mid-market source at the same minute.

The quote locks the rate and every fee until `expires_at`, 5 minutes by default, so the cost you calculate is the cost you get when you execute inside the window. There is no pre-funding: the payout is funded when you execute it. BlindPay publishes its plans on the [pricing page](/pricing), and per-transaction fees vary by rail and network, so the quote is where you read them.

Running a platform with your own markup? [Partner fees on live quotes](/resources/more/partner-fees-markup-on-live-quotes) shows how your fee appears as one more line in the same calculation. And for the vocabulary used here, see the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

## What to do next

Take last month's ten largest payouts, look up the mid-market rate at each send time, and compute cost per delivered dollar for each one. Then request a quote for the same corridor through the [payout quotes API](/docs/payout-quotes) and compare the two numbers.

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

---

Source: https://blindpay.com/resources/more/fund-stablecoin-card-pix-spei

---
title: "How to fund a stablecoin card with Pix or SPEI, and cash out what is left"
seoTitle: "Fund a stablecoin card with Pix or SPEI"
description: "The full top-up and cash-out loop for stablecoin cards in Brazil and Mexico: Pix and SPEI payins, where FX happens, timing, limits, and what to check."
date: "2026-10-11"
updated: "2026-10-11"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Can I top up a stablecoin card with Pix?"
    a: "Yes, if the card program uses a funding provider that accepts Pix payins. The app requests a quote, shows the cardholder a Pix code to copy or scan, and the cardholder pays from any Brazilian bank app. The BRL deposit converts into USDC or USDT and lands in the wallet the card spends from, usually within minutes."
  - q: "Can I top up a stablecoin card with SPEI in Mexico?"
    a: "Yes. With a SPEI payin, the app shows the cardholder a CLABE number for that top-up, and they send MXN from their bank. BlindPay's cut-off table lists SPEI payin arrival at up to 10 minutes. Once the deposit lands, it converts into stablecoins and is sent to the card wallet, the same as a Pix top-up."
  - q: "How long does a Pix top-up take to reach a stablecoin card?"
    a: "Pix runs 24/7, and BlindPay's cut-off table lists Pix payin arrival at up to 5 minutes. Conversion and the on-chain transfer to the card wallet follow. If a non-OTC Pix payin never arrives, BlindPay waits up to 30 minutes before marking it failed, after a reconciliation check. Credit the card only when the payin completes."
  - q: "How many currency conversions happen on a Pix-funded stablecoin card?"
    a: "Up to three. BRL converts to USDC or USDT at top-up. If the cardholder spends in BRL at a local merchant, the card network converts the USD amount back to BRL. If they cash out leftovers to Pix, stablecoins convert to BRL again. Each step has its own rate, so local spend on a USD card pays FX twice."
  - q: "What is the difference between Pix and SPEI for card funding?"
    a: "Pix is Brazil's instant payment system, run by Banco Central do Brasil, and the payer sees a Pix code. SPEI is Mexico's interbank system, run by Banco de México, and the payer sees a CLABE. Both run around the clock and both usually settle within minutes. Both also work as payout rails for cashing out."
  - q: "Is there a minimum or maximum for a Pix or SPEI top-up?"
    a: "Yes. BlindPay payin quotes enforce minimums of R$10.00 for BRL and $10.00 for MXN. The maximum that applies is the receiver's per-transaction limit, which defaults to $10,000 to $50,000 depending on KYC tier. The quote enforces the exact range, so read the error instead of hardcoding numbers."
---

*Reading time: about 8 minutes.*

**Summary:** To fund a stablecoin card in Brazil or Mexico, create a local payin: the cardholder pays a Pix code or sends SPEI to a CLABE, the deposit converts into USDC or USDT, and it lands in the wallet the card spends from, usually within minutes. Cashing out reverses the path over Pix or SPEI. Plan for FX at each step.

**Key takeaways**

- Pix and SPEI fund a card through a payin per top-up, not through a standing bank account.
- Both rails run around the clock. BlindPay lists Pix payin arrival at up to 5 minutes and SPEI at up to 10.
- A USD stablecoin card funded in BRL and spent in BRL converts currency twice. Show that to users.
- Cash-out over Pix or SPEI is what makes cardholders comfortable topping up more than they need.
- Credit the card on payin completion, never on creation.


The [Latin America card guide](/resources/more/stablecoin-cards-latin-america) covers why stablecoin cards caught on in the region. The [local on-ramp guide](/resources/more/how-to-on-ramp-local-currency-latin-america) covers the payin mechanics for every rail. This page connects the two. It follows one cardholder's money through the whole loop: BRL or MXN in, card spend, and whatever is left back to their bank.

## How does the top-up loop work end to end?

The loop has three legs. Local currency in through a payin, card spend from the stablecoin balance, and an optional payout back to local currency. Each leg is a separate transaction with its own quote, status, and rate.

```
Top-up:   Bank app ──Pix code / CLABE──▶ Payin ──BRL or MXN → USDC──▶ Card wallet
Spend:    Card wallet ──authorization + settlement──▶ Merchant paid in local currency
Cash-out: Card wallet ──USDC → BRL or MXN──▶ Payout ──Pix / SPEI──▶ Bank account
```

The card issuer owns the middle line. The first and last lines belong to the funding and payout layer.

## How does a Pix top-up work, step by step?

A Pix top-up is a quote, a code, and a webhook. The cardholder never leaves their bank app.

1. **Quote.** Your app requests a payin quote for the BRL amount, with `pix` as the method and the card wallet as the destination. The quote locks the amount, fees, and destination for 5 minutes ([payin quotes](/docs/payin-quotes)).
2. **Create the payin.** Create the payin from the quote inside that window. The response carries a `pix_code`.
3. **Show the code.** Display it as copyable text and a QR code. The cardholder pays it from any Brazilian bank app.
4. **Wait for the deposit.** BlindPay watches for the payment. Pix runs 24/7 ([BCB](https://www.bcb.gov.br/en/financialstability/pix_en)), and BlindPay's [cut-off table](/docs/kb/cut-off-times) lists Pix payin arrival at up to 5 minutes.
5. **Credit the card.** BRL converts into USDC or USDT and goes on-chain to the card wallet. On `payin.complete`, update your ledger. The card can spend it.

If the payment never arrives, BlindPay waits up to 30 minutes before marking a non-OTC Pix payin `failed`, after a reconciliation check ([payins](/docs/payins)). Your app should show "waiting for payment" until then, not an error.

## How does a SPEI top-up differ?

SPEI follows the same five steps with different instructions. Instead of a code, the payin returns a CLABE, the standard Mexican bank account number used for SPEI transfers. The cardholder sends MXN to it from their bank.

SPEI is owned and operated by Banco de México and runs 24 hours a day, 365 days a year ([Banxico](https://www.banxico.org.mx/services/interbanking-electronic-payme.html)). BlindPay lists SPEI payin arrival at up to 10 minutes, and waits up to 30 minutes before marking a SPEI payin failed.

The same pattern covers two more countries. Transfers 3.0 in Argentina shows a CBU, and PSE in Colombia shows a payment link with a bank redirect.

## Pix vs SPEI vs ACH: which rail does what?

For a card program, each rail matters twice: once as a way in, once as a way out.

| | Pix (Brazil) | SPEI (Mexico) | ACH (United States) |
|---|---|---|---|
| Currency | BRL | MXN | USD |
| Funding: what the payer sees | Pix code, copy or QR | CLABE | Routing + account number (virtual account or memo code) |
| Funding: typical arrival | Up to 5 minutes | Up to 10 minutes | 1 to 3 business days; same-day ACH before 3:00 PM ET |
| Operating hours | 24/7 | 24/7, 365 days | Business days, with cut-offs |
| Payout (cash-out) speed | Minutes | Minutes | About 1 to 2 business days |
| Payin minimum on BlindPay | R$10.00 | $10.00 MXN | $10.00 |

Timings and minimums come from BlindPay's [cut-off times](/docs/kb/cut-off-times), [payment methods](/docs/kb/payment-methods), and [payin quotes](/docs/payin-quotes) pages. Maximums follow the receiver's per-transaction limit, which defaults to $10,000 to $50,000 depending on KYC tier ([KYC limits](/docs/kb/kyc)).

For US cardholders, the [virtual accounts guide](/resources/more/stablecoin-virtual-accounts-explained) covers ACH, wire, and SWIFT funding.

## Where does FX happen on a Pix-funded card?

Up to three times. This is the part most programs never explain to users, and it is the first thing they notice on a statement.

1. **At top-up.** BRL or MXN converts into USDC or USDT. The payin quote shows the rate and fees before the payer pays.
2. **At a local merchant.** The card is denominated in USD, the merchant charges in BRL, and the merchant is still paid in local currency. When Visa and Bridge announced stablecoin-linked Visa cards for Argentina, Colombia, Ecuador, Mexico, Peru, and Chile in April 2025, they described Bridge deducting the stablecoin balance and converting it so the merchant gets paid locally ([Visa](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html)). Bridge also notes that conversion at settlement could occur 1 to 3 days after authorization ([Bridge](https://bridge.xyz/learn/stablecoin-payments-global-card-issuance)). The issuer may add a foreign transaction fee, so check its disclosure.
3. **At cash-out.** USDC converts back into BRL or MXN on the payout quote.

Illustrative only: a cardholder who tops up R$1,000 and spends it all at Brazilian supermarkets has converted BRL to USD and back to BRL. Two spreads for money that never needed to leave reais. The same cardholder buying from a US software vendor converts once, at top-up, which is where a USD stablecoin card earns its keep.

So say it on the top-up screen: "Best for spending in dollars. For spending in reais, your Pix balance may be cheaper." The [FX spread guide](/resources/more/how-to-calculate-fx-spread) shows how to measure each spread.

## Why does the cash-out leg matter?

Because people top up more when they know they can get money out. A card that only accepts money feels like a gift card. A card that sends leftovers back to Pix in minutes feels like an account.

The cash-out is a payout: your app quotes it against the cardholder's Brazilian or Mexican bank account, shows the exact amount they will receive, and the cardholder authorizes it from their wallet. Pix and SPEI payouts usually settle in minutes ([payment methods](/docs/kb/payment-methods)).

If a payout cannot be delivered, the custody rule applies. BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.

## What should you check for each country?

A few checks per market save most launch-week tickets.

- **Brazil.** Confirm the cardholder passes KYC in Brazil under the program's rules, decide whether users see the Pix code or a QR first, and read up on Brazil's self-custody wallet declaration, covered in the [self-custody declaration guide](/resources/more/brazil-self-custody-wallet-declaration).
- **Mexico.** Show the CLABE with a copy button, since typos are the top cause of a missing deposit, and say "usually arrives in minutes" rather than "instant."
- **Both.** Match token and network to what the card issuer pulls ([supported chains](/docs/kb/supported-chains)), and decide the minimum top-up you show, at or above the payin minimum.

Licensing and network rules also differ by country. The [cross-border compliance guide](/resources/more/cross-border-stablecoin-card-compliance-by-country) has a country readiness template.

## Where does BlindPay fit?

Pix and SPEI are BlindPay's strongest rails, on both legs. The card issuer runs the card. BlindPay moves money into and out of the stablecoin balance behind it.

On the way in, BlindPay creates Pix, SPEI, Transfers 3.0, and PSE payins with the payment instructions your app shows, then converts BRL, MXN, ARS, or COP into USDC or USDT and delivers it to the card wallet on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, or Tron. On the way out, payouts run over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, SEPA, and SWIFT (POBO/COBO), and every quote shows the rate and fees before execute.

KYC runs inside the same API, and each top-up and cash-out sends signed webhooks your ledger can trust. Read the [payins docs](/docs/payins), or [talk to the team](/contact).

## What to read next

- [Stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america)
- [How to on-ramp BRL, MXN, ARS, and COP into stablecoins](/resources/more/how-to-on-ramp-local-currency-latin-america)
- [Stablecoin card program architecture](/resources/more/stablecoin-card-program-architecture), for where these legs sit in the stack
- [A country readiness template for cross-border card compliance](/resources/more/cross-border-stablecoin-card-compliance-by-country), for onboarding and rails by market
- [How to calculate an FX spread](/resources/more/how-to-calculate-fx-spread)

## Sources

- Banco Central do Brasil, [Pix](https://www.bcb.gov.br/en/financialstability/pix_en)
- Banco de México, [SPEI](https://www.banxico.org.mx/services/interbanking-electronic-payme.html)
- Bridge, [Global card issuance with stablecoins explained](https://bridge.xyz/learn/stablecoin-payments-global-card-issuance)
- Visa, [press release on the Visa and Bridge stablecoin card partnership](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html), April 30, 2025

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

---

Source: https://blindpay.com/resources/more/pay-contractors-stablecoin-cards-or-payouts

---
title: "Paying contractors and teams with stablecoins: cards, expense cards, or local payouts?"
seoTitle: "Pay contractors with stablecoins: cards or local payouts?"
description: "How to pay a global team with stablecoins: compare stablecoin cards, wallet payments, and local bank payouts by country, amount, frequency, and cost."
date: "2026-10-11"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Can I pay contractors with stablecoins?"
    a: "Yes, in three ways: send USDC or USDT to the contractor's wallet, fund a stablecoin card they spend from, or convert the stablecoins and pay local currency into their bank account over a rail such as Pix, SPEI, ACH, or SEPA. Most teams use local payouts for invoices and cards for small expenses."
  - q: "Should I pay salaries onto a stablecoin card?"
    a: "Usually not as the only option. Rent, utilities, taxes, and loan payments mostly need a bank transfer, so a card balance alone leaves the worker converting money a second time. A card works well for expenses and as an optional spending account next to a local bank payout."
  - q: "What is a stablecoin expense card?"
    a: "A company card funded from a stablecoin balance that employees or contractors use for work costs such as software, travel, and ads. The company sets limits per card, the merchant is paid in local currency through the card network, and the company reconciles spend against its stablecoin treasury."
  - q: "Is it cheaper to pay contractors by card or by local bank payout?"
    a: "It depends on how the contractor uses the money. If they spend most of it on card-accepting merchants in dollars, a card can be cheap. If they need local currency in a bank account, card FX markups of 1.5% to 3% (per NGIBANK) and ATM fees usually make a direct local payout cheaper."
  - q: "Do I need to pre-fund accounts to pay a global team in stablecoins?"
    a: "Not with every provider. Card programs often ask you to load a balance before employees spend. Some payout providers, BlindPay included, quote the conversion and execute the payout from stablecoins you already hold, with no pre-funded account in each country."
---

To pay a global team with stablecoins, match the method to the payment. Salaries and contractor invoices usually go best as local bank payouts over Pix, SPEI, ACH, RTP, SEPA, or SWIFT. Small, frequent work expenses fit a stablecoin expense card. Paying a wallet directly suits contractors who already hold and use stablecoins.

Companies tend to pick one method and use it for everything. That is where the cost and the complaints come from. This guide compares the three models, gives a decision table, and works through an illustrative monthly cost model for a ten-person team. For background on how the cards themselves work, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Three models exist: stablecoin cards, payouts to local bank accounts, and direct wallet payments. Each fits a different kind of payment.
- Local payouts fit invoices and salaries, because rent and bills need a bank account.
- Cards fit small expenses. a16z crypto (August 7, 2026) puts the average stablecoin card purchase at about $86.
- Card-only pay pushes FX and ATM costs onto the worker. NGIBANK cites 1.5% to 3% FX markups on crypto cards.
- Most teams end up with a mix: local payout for pay, card for expenses.

## What are the three ways to pay a team with stablecoins?

You can send stablecoins to a wallet, fund a card, or convert and pay into a bank account. The difference is who converts to local currency, and when.

- **Wallet payment:** you send USDC or USDT on a blockchain to the contractor's address. They convert it themselves, if they need to.
- **Stablecoin card:** you fund a card balance in stablecoins. The card program converts at the moment of each purchase, and the merchant is paid in local currency.
- **Local payout:** a payout provider converts your stablecoins and sends local currency over the recipient country's rail, such as Pix in Brazil or SPEI in Mexico. The contractor sees a normal bank deposit.

A short definition helps here. A **stablecoin expense card** is a company card funded from stablecoins, with per-card limits, used for work costs rather than pay.

## How do the three models compare?

They differ most on where the money lands and who pays for conversion. The table compares them on the questions finance teams ask first.

| Question | Local bank payout | Stablecoin card | Wallet payment |
| --- | --- | --- | --- |
| Where money lands | Recipient's bank account, local currency | Card balance, spent at merchants | Recipient's wallet, stablecoins |
| Who converts | The payout provider, once | The card program, on every purchase | The recipient, through an exchange |
| Pays rent and bills | Yes | Only where cards are accepted | No, until converted |
| Typical use | Salaries, contractor invoices | Software, travel, ads, small costs | Crypto-native contractors |
| Recipient setup | Bank details or a Pix key or CLABE | Card program KYC | A wallet address |
| Company controls | Per-payment approval | Per-card limits and merchant rules | Per-payment approval |
| Records | Payout ID and rail reference | Card transaction log | Onchain transaction hash |

The wallet option looks cheapest on paper, because the company pays only network fees. The cost moves to the recipient, who then pays an exchange to withdraw.

## Which model fits which payment?

Pick by country, amount, frequency, and what the recipient wants. The decision table below is a starting point.

| Situation | Best fit | Why |
| --- | --- | --- |
| Monthly invoice, contractor in Brazil | Local payout over Pix | Lands in minutes in reais, pays rent |
| Monthly invoice, contractor in Mexico | Local payout over SPEI | Lands in minutes in pesos |
| Salary, employee in the US | Local payout over ACH or RTP | Normal payroll deposit |
| Contractor in the SEPA zone | Local payout over SEPA | Euro deposit to any SEPA bank |
| Contractor in a country with no local rail on your provider | SWIFT payout | Reaches most banks worldwide |
| Recurring software and travel costs | Stablecoin expense card | Limits per card, small tickets |
| Contractor who wants to hold dollars | Wallet payment, or a payout plus an optional card | Recipient's choice |
| One-off large supplier invoice | Local payout or SWIFT | Bank record, proof of payment |

Two rules hold across the table. Pay that covers living costs goes to a bank account. Spend that is small and frequent goes on a card.

For the country side, [stablecoin card vs Pix and SPEI payouts](/resources/more/stablecoin-card-vs-pix-spei-payouts) compares the options in Brazil and Mexico, and [stablecoin payroll for LatAm contractors](/resources/more/stablecoin-payroll-latam-contractors) covers payroll in the region.

## What does it cost? An illustrative monthly model

The model below is illustrative. It uses public fee ranges and one stated assumption to show where cost lands, not to price any provider.

Assumptions for a ten-person team:

1. Ten contractors, each paid $3,000 a month, $30,000 in total.
2. Each contractor needs about 80% of their pay in local currency in a bank account for rent and bills, and spends 20% at card-accepting merchants.
3. Card FX markup of 2%, inside the 1.5% to 3% range [NGIBANK](https://www.ngibank.com/en/blog/crypto-debit-card-guide) cites for crypto cards, on spend in local currency.
4. For card-only pay, the contractor moves the 80% to the bank through ATM withdrawals at 1.75%, inside NGIBANK's 1.5% to 2% range after a free quota.
5. A hypothetical all-in payout cost of 1% for the local payout model. This is an assumption for the math, not a quote from any provider. Real fees are shown in each provider's quote.

| Model | Cost on the 80% that needs a bank | Cost on the 20% card spend | Monthly total for the team |
| --- | --- | --- | --- |
| Card only | 1.75% ATM plus 2% FX = 3.75% of $24,000 = $900 | 2% FX on $6,000 = $120 | About $1,020, mostly paid by contractors |
| Local payout only | 1% of $30,000 = $300 | Paid from the bank account, no card FX | About $300, paid by the company |
| Payout plus expense card | 1% of $24,000 = $240 | 2% FX on $6,000 = $120 | About $360 |

Change the assumptions and the totals change. The shape usually holds: card-only pay is the most expensive model for workers who need local currency, and it hides the cost on their side.

Two cost lines are easy to miss. Card programs can charge top-up fees of 1% to 2% per load above a free allowance, per NGIBANK. And "no FX fee" can mean the cost sits in the conversion spread. [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) shows how to calculate the effective rate.

## When does a stablecoin card make sense for a team?

A card makes sense for work expenses and as an optional spending account. It does not make sense as the only way a person gets paid.

Good uses:

- **Software and ads.** Subscriptions billed in dollars, where a dollar card avoids a conversion.
- **Travel.** Hotels and flights booked by team members, with per-trip limits.
- **Small, frequent costs.** The average stablecoin card purchase was about $86 in July 2026, according to [a16z crypto's analysis of Paymentscan data](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend). Cards are built for this size of payment.

Card programs are growing. [Visa](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement) reported more than 130 stablecoin-linked card programs in more than 50 countries in March 2026. That makes it easier to find a program for a team, but each program has its own country list, so check that every team member can get a card.

## How do you run local payouts for a global team?

Collect bank details once, then quote and send each pay run. The steps are the same whether you pay one contractor or a hundred.

1. **Verify your company.** The payout provider runs KYB on you before the first payout.
2. **Collect recipient details.** A Pix key or CPF in Brazil, a CLABE in Mexico, an account and routing number in the US, an IBAN in the SEPA zone.
3. **Get a quote per payout.** The quote locks the exchange rate and fees for a short window.
4. **Send the stablecoins.** USDC or USDT moves from your wallet to the provider.
5. **Track to completion.** Store the payout ID and the rail reference, and share the reference with the contractor.

The compliance side of running cards and payouts together is mapped in [stablecoin card and payout compliance](/resources/more/stablecoin-card-and-payout-compliance-map).

## Where does BlindPay fit?

BlindPay fits the local payout column. It converts USDC and USDT into local currency and pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with KYC, KYB, and sanctions screening in the same API flow.

For a team pay run, the parts that matter:

- **No pre-funding.** Each payout is quoted and executed from stablecoins you already hold, with no balance parked in each country.
- **Settlement time.** Pix and SPEI settle in minutes, RTP is instant, ACH and SEPA take about 1 to 2 business days, per the [payment methods reference](/docs/kb/payment-methods).
- **Pricing.** Published plans with no volume floor, and per-payout fees shown in the live quote before you send.
- **Custody.** BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction.

Cards stay with a card program. A team can run its expense cards with an issuer and its pay runs through BlindPay, from the same stablecoin treasury.

## How to decide this week

Sort last month's payments into three buckets: pay, expenses, and one-offs. Send pay as local payouts, put expenses on cards, and handle one-offs case by case. Then run one real contractor payment end to end.

To test the payout side, set up a free development instance and send a test payout with the [payout quickstart](/docs/quickstart-payout). Contractors who want to understand their own options can read [how freelancers spend USDC](/resources/more/how-freelancers-spend-usdc).

## Sources

- [a16z crypto, Charts: payment card stablecoin spend (August 7, 2026)](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend)
- [NGIBANK, Crypto debit card guide (March 3, 2026)](https://www.ngibank.com/en/blog/crypto-debit-card-guide)
- [Visa, How stablecoin-linked cards are modernizing money movement (updated March 31, 2026)](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement)

---

Source: https://blindpay.com/resources/more/cross-border-stablecoin-card-compliance-by-country

---
title: "Compliance for cross-border stablecoin card programs: a country readiness template"
seoTitle: "Cross-border stablecoin card compliance by country"
description: "A country readiness template for stablecoin card programs: onboarding rules, funding rails, and payout rails for the US, LatAm, and the EU."
date: "2026-10-10"
updated: "2026-10-10"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What compliance does a cross-border stablecoin card program need?"
    a: "Four layers in every market: licensing for the card issuer and for any virtual asset service, card network program rules, AML and sanctions controls on people, wallets, and transactions, and data protection for the personal data you collect. Each country where cardholders live can add its own rules on top of the country where the card is issued, so the work is done market by market."
  - q: "How do you check if a country is ready for a stablecoin card launch?"
    a: "Fill one row per country with five answers: can cardholders there be onboarded and at what verification level, which local rails can fund the card balance, which rails can pay money back out, which licenses apply, and which data protection law governs the data. A market is ready when every cell has a confirmed answer from a provider or from local counsel, not an assumption."
  - q: "Which local rails can fund a stablecoin card in Latin America?"
    a: "Through BlindPay, a card balance can be funded by Pix or TED in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina, each converted into USDC or USDT and delivered to a wallet. Pix, SPEI, Transfers, and PSE payins typically arrive within minutes. US-based senders can use ACH, wire, RTP, or a dedicated US virtual account."
  - q: "Do card network rules change for stablecoin card programs?"
    a: "The program rules, dispute rights, and chargeback processes stay the same. What changes is the settlement option: Visa settles with some programs in stablecoins, and Mastercard announced plans in June 2026 for on-chain card settlement that keeps existing dispute processes. Visa also notes that every card program has to fund its daily settlement obligation before it collects from cardholders."
  - q: "Who should review a cross-border stablecoin card program?"
    a: "Counsel in the country where the card is issued, for banking and card rules, and counsel in each country where cardholders live, for virtual asset, consumer protection, and data protection rules. Your sponsor bank and each provider will also run their own reviews. Bring them a completed readiness table so the questions are specific to your markets and rails."
  - q: "Does data protection law apply to stablecoin card programs?"
    a: "Yes. A card program collects identity documents, addresses, selfies, and transaction histories, which are personal data in every market. Brazil's LGPD and the EU's GDPR are the two you will meet first in a Latin America and Europe program. Map which provider receives which data, get consent where the law requires it, and set retention periods before launch."
---

*Reading time: about 8 minutes.*

**Summary:** A cross-border stablecoin card program is compliant country by country, not once. For each market, confirm who can be onboarded and at what verification level, which local rails fund the card balance and pay money back out, which licenses apply to the card and the stablecoin layer, and which data protection law governs cardholder data. A readiness table makes the gaps visible.

**Key takeaways**

- The card is licensed where it is issued. The stablecoin service is often regulated where the cardholder lives.
- Fill one readiness row per country before launch. Empty cells are your counsel's to-do list.
- Funding and payout rails differ by country: Pix in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina.
- Card network rules and dispute rights do not change when settlement moves to stablecoins.
- Sanctions compliance is strict liability in the US, so wallet screening belongs in every market.


This guide is for compliance leads and founders planning a card program across the Americas and Europe. The [card issuing compliance guide](/resources/more/stablecoin-card-issuing-compliance) explains each regulatory regime. This page turns that into a working template you can fill in, with the rail and onboarding cells already completed for six markets from published BlindPay documentation.

## What makes cross-border card compliance different?

Two legal anchors apply at once. Card issuing follows the country where the card is issued, and virtual asset services usually follow the country where the customer is.

So a US-issued card held by a cardholder in Brazil can sit under US banking and card rules and Brazil's virtual asset regime at the same time. Add Mexico and the EU and the same program answers to four sets of stablecoin rules. That is why one license almost never covers a global program, and why the [license guide](/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi) starts with "where are your customers?"

The practical effect is a matrix: every country where you onboard cardholders is a row, and every compliance layer is a column.

## What goes into a country readiness table?

Five columns per country. Two are about people, two are about money, and one is about law.

| Column | Question it answers | Who confirms it |
|---|---|---|
| Onboarding rules | Can people here be onboarded, at what verification level, with which ID documents? | Card provider and funding provider |
| Funding rails | How does money from this country reach the card balance? | Funding provider |
| Payout rails | How does money get back out to a local bank account? | Payout provider |
| Licensing | Which card and virtual asset licenses apply to each party? | Local counsel |
| Data protection | Which law governs cardholder data, and where may it be stored? | Local counsel |

Fill the first three from provider documentation. Fill the last two with counsel. A row is ready only when every cell has a confirmed source.

## What does a filled-in table look like?

Here are the first three columns for six markets, filled in from BlindPay's documentation. BlindPay assigns each country a verification tier, lists its payment methods by direction, and publishes typical arrival times per rail.

| Market | Onboarding (BlindPay tier) | Funding rails into stablecoins | Payout rails to local accounts | Typical timing |
|---|---|---|---|---|
| United States | Standard: automated KYC for eligible individuals | ACH, ACH Pull (Plaid), domestic wire, RTP, SWIFT (with an approved US virtual account) | ACH, domestic wire, RTP, SWIFT (POBO/COBO) | RTP instant; same-day ACH same business day; ACH 1 to 3 business days |
| Brazil | Standard | Pix, TED (enabled per instance) | Pix, PIX Safe, TED | Pix payins up to 5 minutes |
| Mexico | Standard | SPEI (CLABE) | SPEI | SPEI payins up to 10 minutes |
| Colombia | High-risk tier: individuals use KYC Enhanced, manual review up to 1 business day | PSE (payment link) | ACH Colombia | PSE payins up to 10 minutes; ACH Colombia payouts about 1 business day |
| Argentina | Standard | Transfers 3.0 (CBU) | Transfers 3.0 | Payins up to 10 minutes |
| EU (SEPA zone, for example Germany, France, Spain) | Standard | SWIFT in USD to a US virtual account | SEPA in EUR | SEPA about 1 to 2 business days |

Sources for each cell: [supported countries](/docs/kb/supported-countries), [payment methods](/docs/kb/payment-methods), and [cut-off times](/docs/kb/cut-off-times). Two details from those pages are worth copying into your own notes. In high-risk tier countries a driver's license is not accepted as an ID document, so ask for a passport or national ID. And SEPA payouts to a few countries, including France and Portugal, are limited to individual beneficiaries.

The underlying rails are national infrastructure, so their hours are set by central banks: Banco Central do Brasil launched Pix on November 16, 2020 and runs it 24/7, and Banco de México operates SPEI 24 hours a day, 365 days a year.

## How do you fill the licensing and data protection columns?

With counsel, one market at a time. These are the questions to bring.

**Licensing.** Who is the legal card issuer, and under which regulator? Does any party in your stack exchange, custody, or transfer stablecoins for residents of this country, and does that need registration or authorization? In Brazil the answer runs through the PSAV regime ([PSAV explainer](/resources/more/psav-brazil-explained)); in the EU through MiCA ([MiCA explainer](/resources/more/mica-stablecoin-rules-explained)). The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) keeps the country list current.

**Card network rules.** The networks set program rules, brand standards, and dispute processes, and those travel with the card into every market. Mastercard's June 2026 announcement on stablecoin settlement says it keeps existing dispute processes. Visa's September 2026 guidance on stablecoin-linked programs notes that every card program has to fund its daily settlement obligation before it collects from cardholders, which shapes your treasury plan in every country.

**AML and sanctions.** Who screens cardholders, business owners, and wallet addresses, and who files suspicious activity reports in each country? OFAC says civil penalties generally apply on a strict liability basis, so any US person in the chain screens regardless of where the cardholder lives. For stablecoin transfers between providers, the [Travel Rule guide](/resources/more/travel-rule-stablecoin-off-ramps) covers what originator data must move with the funds.

**Data protection.** Which law governs cardholder data, where may it be stored, and which providers receive it? Brazil's LGPD and the EU's GDPR are the first two you will meet in this footprint. Map each data field to each provider before launch.

## How do you build the table for your program?

Six steps, roughly one working session per market once the providers are chosen.

1. **List target markets in launch order.** Start with the two where most cardholders live.
2. **Copy the onboarding cell from each provider.** Confirm tier, verification level, accepted ID documents, and review time. Note where providers disagree.
3. **Fill funding and payout rails.** Use the provider's published rail list, by direction, with timing. Mark any rail that needs a separate feature or approval.
4. **Send the licensing and data rows to counsel.** One memo per country, with your stack diagram attached.
5. **Add network rule checks.** Confirm with your card provider which card types, currencies, and settlement options apply per market.
6. **Review quarterly.** Rules, rails, and country tiers change. Put a date on every cell.

## What are the common gaps teams miss?

Three show up in almost every review.

- **Assuming one tier everywhere.** A country in a higher verification tier changes your onboarding flow, your review time, and your accepted documents. Colombia is the example in the table above.
- **Funding without payout.** A program that lets users fund in a country but cannot pay them back out locally ends up with stuck balances and support tickets. Fill both columns.
- **No owner for data residency.** Two providers plus your own systems means three copies of identity data. Decide retention and deletion before launch.

The [card issuing compliance guide](/resources/more/stablecoin-card-issuing-compliance#who-is-responsible-for-what) covers who runs each verification across the program.

## Where does BlindPay fit?

BlindPay is the funding and payout layer for the countries in your table. It turns local bank money into USDC or USDT for the balance behind a card, over ACH, wire, RTP, and SWIFT in the US, Pix and TED in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina. It pays stablecoins back out as local currency over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations.

The onboarding cells come with it. Each country has a published verification tier, KYC and KYB run inside the API before any payment moves, and BlindPay is registered with FinCEN as a Money Services Business, with licenses on the [licenses page](/licenses). Every quote shows the fee breakdown and exact amount before execute, so the timing and cost columns in your table come from live data. Read the [payment methods reference](/docs/kb/payment-methods) or [talk to the team](/contact).

## What to read next

- [Compliance for stablecoin card issuing](/resources/more/stablecoin-card-issuing-compliance)
- [Stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america)
- [The GENIUS Act explained for businesses](/resources/more/genius-act-for-businesses)
- [BIN sponsor vs. issuer-processor vs. program manager](/resources/more/bin-sponsor-vs-issuer-processor-vs-program-manager)
- [Build vs. buy a stablecoin card program](/resources/more/build-vs-buy-stablecoin-card-program), for the partner decision before a country rollout

## Sources

- [Banco Central do Brasil: Pix](https://www.bcb.gov.br/en/financialstability/pix_en)
- [Banco de México: SPEI](https://www.banxico.org.mx/services/interbanking-electronic-payme.html)
- [Mastercard: expanding settlement capabilities to include stablecoins, June 3, 2026](https://www.mastercard.com/us/en/news-and-trends/press/2026/june/mastercard-expands-settlement-capabilities-to-include-stablecoin.html)
- [Visa: financing stablecoin-linked card programs, September 8, 2026](https://www.visa.com/en-us/thought-leadership/innovation/financing-stablecoin-linked-card-programs)
- [OFAC: Sanctions compliance guidance for the virtual currency industry, October 2021](https://ofac.treasury.gov/media/913571/download?inline)

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

---

Source: https://blindpay.com/resources/more/partner-fees-markup-on-live-quotes

---
title: "How platforms add their own margin to a live quote: partner fees explained"
seoTitle: "Partner fees: add your own margin to a live FX quote"
description: "A partner fee is the markup a platform adds to a stablecoin quote. How to set percentage or flat fees, show them on the quote, and get paid each month."
date: "2026-10-10"
updated: "2026-10-10"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a partner fee in a stablecoin API?"
    a: "A partner fee is a markup a platform adds on top of each transaction it runs through a payments provider. At BlindPay you create a fee configuration once, pass its partner_fee_id on a payin, payout, or transfer quote, and the quote returns partner_fee_amount as its own line. BlindPay collects it during the transaction and pays it out monthly."
  - q: "Can I charge a percentage and a flat fee?"
    a: "Yes. A BlindPay fee configuration has percentage and flat fields, set separately for payins and payouts. Percentages are in basis points from 0 to 9,900, where 100 means 1%, capped at 99% of the transaction. Flat fees are in minor units from 0 to 100,000, where 200 means $2.00, capped at $1,000.00 per transaction."
  - q: "When do I receive the partner fees I collect?"
    a: "Fees collected during a calendar month accumulate and are released for withdrawal on the first day of the following month. BlindPay nets your outstanding BlindPay invoice out of that balance first, so you receive the net amount and never pay the invoice separately. If you collect $500 and your invoice is $250, $250 becomes available."
  - q: "Should a platform hide its margin inside the exchange rate?"
    a: "It works, but it makes your price hard to audit and hard to compare. A separate fee line keeps the market rate visible, lets users check the spread, and maps to how US remittance disclosures separate fees from the exchange rate. On BlindPay the partner fee is always its own field, partner_fee_amount, next to the market and applied rates."
  - q: "How do I track partner fee revenue per transaction?"
    a: "Store partner_fee_amount from each quote next to the quote_id and the payout or payin id. That field is the exact amount collected for that transaction, so summing it by month gives you the revenue BlindPay will release on the first of the next month, before invoice netting. Reconcile that sum against the monthly release."
  - q: "Do partner fees apply to virtual account deposits?"
    a: "Yes. Deposits into a virtual account create payins without a quote request, so the fee is configured ahead of time: an instance-wide default set with virtual_account_set true, or a fee pinned to a single virtual account, which overrides the default. A deposit always delivers at least $0.01, so tiny deposits can collect a partial fee."
---

A partner fee is the margin a platform adds to a live quote so it earns on every payin, payout, or transfer it runs for its users. On BlindPay, you create a percentage or flat fee once, pass its `partner_fee_id` when you request a quote, and the quote shows `partner_fee_amount` as a separate line before anyone confirms.

**Key takeaways**

- A partner fee rides on the quote, so the user sees your margin, the market rate, and the provider's fees before confirming.
- Percentage fees run from 0 to 9,900 basis points (capped at 99%); flat fees from 0 to 100,000 minor units (capped at $1,000.00).
- Fees are set separately for payins and payouts, and can also be applied to transfer quotes.
- Collected fees accumulate per calendar month and are released on the 1st of the next month, net of your BlindPay invoice.
- A fee line beats a hidden rate markup: it is easier to disclose, audit, and reconcile.

## What is a partner fee on a live quote?

A partner fee is your markup, added on top of the provider's price inside the same binding quote. The quote locks the market rate, the provider's fees, and your fee together for its window, so the number your user confirms is the number that settles.

This is the business model for most platforms that embed stablecoin payments: a payroll app, a marketplace paying sellers, a wallet offering cash-out to a bank. The provider runs the conversion and the rail. You own the user and charge for the product around it.

Every term here has one meaning across this cluster. The [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary) defines live quote, spread, and fee lines if you want the vocabulary first.

## How do you add a partner fee to a quote?

You configure the fee once, then reference it on every quote that should carry it. Four steps:

1. **Create a fee configuration.** `POST /v1/instances/{instance_id}/partner-fees` with a `name` and the four fee fields: `payin_percentage_fee`, `payin_flat_fee`, `payout_percentage_fee`, `payout_flat_fee`. Save the returned id (`pf_...`). You can also create it in the dashboard's Partner Fees tab.
2. **Pass it on the quote.** Add `partner_fee_id` to the payin quote, payout quote, or transfer quote request.
3. **Show the quote.** The response returns `partner_fee_amount` next to `commercial_quotation`, `blindpay_quotation`, `flat_fee`, `sender_amount`, and `receiver_amount`. Render your fee as its own line.
4. **Execute before `expires_at`.** The fee is locked into the quote like everything else. If the quote expires, request a new one and the fee is recalculated on the new amounts.

Two details that save debugging time. Fee configurations are immutable: to change a fee, delete the configuration and create a new one, then point new quotes at the new id. And `POST /partner-fees` accepts an `Idempotency-Key` header, so a retried create does not leave you with two configurations.

The full field reference is in the [partner fees docs](/docs/learn/partner-fees), and the quote fields are in the [payout quotes docs](/docs/payout-quotes).

## Percentage or flat: which fee type fits your product?

Percentage fees scale with the amount, flat fees do not. Pick by ticket size and by how your users think about price.

**Illustrative example.** Compare a 50 basis point fee (0.50%) with a $5.00 flat fee across three payout sizes:

| Payout size | 50 bps fee | 50 bps as % | $5.00 flat fee | Flat as % |
| --- | --- | --- | --- | --- |
| $200 | $200 x 0.005 = $1.00 | 0.50% | $5.00 | 5 / 200 = 2.50% |
| $2,000 | $2,000 x 0.005 = $10.00 | 0.50% | $5.00 | 5 / 2,000 = 0.25% |
| $20,000 | $20,000 x 0.005 = $100.00 | 0.50% | $5.00 | 5 / 20,000 = 0.025% |

The flat fee looks expensive on a $200 consumer payout and almost free on a $20,000 supplier payment. The percentage fee is steady, which is easier to explain and easier to compare.

A decision rule that holds up in practice:

- **Choose a percentage fee** if tickets vary a lot or skew small, as in consumer cash-out, creator payouts, and contractor payroll.
- **Choose a flat fee** if tickets are large and predictable, as in B2B supplier payments and treasury moves, where a percentage starts to look like a tax on size.
- **Set payins and payouts differently** when the two directions have different economics. The configuration takes separate fields for each, so a 1% payin fee and a $2.00 flat payout fee can live on the same instance.

## Should the markup sit in the rate or in a fee line?

Put it in a fee line. A margin hidden inside the exchange rate is still a cost, it is just harder for users to see and harder for you to defend.

US remittance rules show why. For consumer remittance transfers, the CFPB's pre-payment disclosure under [12 CFR 1005.31](https://www.law.cornell.edu/cfr/text/12/1005.31) asks providers to list the transfer amount, the transfer fees, the total, and the exchange rate used as separate items. A separate fee line maps onto that structure directly. Whether those rules apply to your product depends on what you do and who your users are, so check with counsel.

A fee line also keeps your pricing honest against the market. The quote shows `commercial_quotation`, the raw market rate, and `blindpay_quotation`, the rate net of BlindPay's fee. With your fee as `partner_fee_amount`, a user can see three things at once: the market, the provider's margin, and yours. The method for measuring a spread from those two rates is in [how to calculate FX spread](/resources/more/how-to-calculate-fx-spread).

And it reconciles cleanly. One field per transaction means revenue is a sum, not a reverse-engineering exercise on exchange rates.

## When do you get paid?

Monthly. BlindPay collects your partner fee from your customer during each transaction, accumulates the total over the calendar month, and releases it for withdrawal on the first day of the next month.

Your BlindPay invoice is netted out first, so you never pay it separately.

**Illustrative example.** Your platform runs 1,200 payouts in January at an average of $1,500 each, with a 40 basis point partner fee:

- Volume: 1,200 x $1,500 = $1,800,000
- Partner fees collected: $1,800,000 x 0.004 = $7,200
- BlindPay invoice for January (illustrative): $2,000
- Available for withdrawal on February 1: $7,200 - $2,000 = $5,200

The docs use a smaller version of the same math: $500 collected, a $250 invoice, $250 available on February 1.

## How do partner fees work on virtual account deposits?

Deposits into a [virtual account](/resources/more/what-is-a-virtual-account) create payins on their own, with no quote request where you could pass a `partner_fee_id`. So the fee is set ahead of time, at two levels:

| Level | How to set it | Effect |
| --- | --- | --- |
| Instance-wide default | Create a fee with `virtual_account_set: true`, or toggle it in the dashboard | Applies to every virtual account deposit on the instance; one active default at a time |
| Per virtual account | Pass `partner_fee_id` when creating the account, or set it later | Overrides the default for that account; set it to `null` to fall back |

Send `virtual_account_set` as a real boolean. A string such as `"false"` is read as true.

Every deposit delivers at least $0.01 of stablecoin, and the partner fee comes out of what remains after any transaction-time BlindPay fee. On a tiny deposit, collection can be partial: a $5.00 fee on a $5.00 deposit collects $4.99. If you price per account, the [virtual account fees breakdown](/resources/more/virtual-account-fees) shows every other cost on the same deposit.

## How do you track partner fee revenue per transaction?

Read `partner_fee_amount` from each quote and store it with the `quote_id` and the payin or payout id. That field is the exact amount collected for that transaction, and it is the source of truth for revenue.

A minimal revenue log needs five columns: `quote_id`, transaction id, `partner_fee_amount`, currency, and the month it settled. Sum by month, subtract your BlindPay invoice, and the result should match the release on the 1st.

Webhooks tell you when the underlying payout or payin moves (`payout.new`, `payout.update`, `payout.complete`), and the fee travels with that transaction. Build revenue reporting off the quote field rather than waiting for a fee-specific event.

## How do you price a markup users will accept?

Price the total, not your slice. Your user compares what lands in the recipient's account, so your fee plus the provider's margin plus any network cost is the number that matters.

Two anchors help:

- **The policy benchmark.** The G20 target set by the [Financial Stability Board](https://www.fsb.org/2021/10/targets-for-addressing-the-four-challenges-of-cross-border-payments-final-report/) is a global average cost of no more than 1% for retail cross-border payments, with no corridor above 3%, by end-2027. Staying under 1% all-in is a strong position.
- **The quote screen.** If your fee shows as a clean line on a well-designed quote screen, users accept it more readily than a mystery rate. [How to show a cross-border quote to users](/resources/more/cross-border-quote-screen-fee-disclosure) covers the layout and the disclosure rules.

Then test it. Request a quote with and without your `partner_fee_id` for the same corridor, compare `receiver_amount`, and ask whether a user would still pick you. If you are also evaluating providers, the [10-point liquidity scorecard](/resources/more/onramp-offramp-liquidity-scorecard) tells you whether the base quote underneath your fee is worth building on.

BlindPay publishes its plans on the [pricing page](/pricing), and per-transaction fees vary by rail and network, so each quote shows the exact fee lines before execution.

## What to do next

Create one partner fee on a free development instance, pass its id on a payout quote, and read `partner_fee_amount` in the response. Then follow the [partner fees guide](/docs/learn/partner-fees) to set payin and payout fees separately and wire the amount into your revenue log.

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

---

Source: https://blindpay.com/resources/more/stablecoin-card-and-payout-compliance-map

---
title: "Stablecoin card and payout compliance map: who owns KYC, KYB, sanctions, and the Travel Rule"
seoTitle: "Stablecoin card and payout compliance: who owns what"
description: "A compliance map for programs that run stablecoin cards and payouts together: KYC, KYB, monitoring, sanctions, Travel Rule, and records, split by owner."
date: "2026-10-10"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Who is responsible for compliance in a stablecoin card program that also pays out to bank accounts?"
    a: "Each provider owns the duties for the leg it runs. The issuing bank and program manager own cardholder KYC and card monitoring. The payout provider owns KYC or KYB on the sender, sanctions screening of wallets and recipients, and Travel Rule data on its transfers. Your company still owns its own customer risk decisions and records."
  - q: "Does the Travel Rule apply to stablecoin card spending?"
    a: "Not to the card authorization itself, which runs on card network rules. It applies when stablecoins or funds move between regulated providers, such as a stablecoin transfer to an exchange or a payout provider. In the US the funds transfer rule in 31 CFR 1010.410 sets a $3,000 threshold. FATF updated its Recommendation 16 on payment transparency in June 2025."
  - q: "Do I need KYB if my company only funds employee stablecoin cards?"
    a: "Yes, in practice. The issuer or program manager verifies the company before approving a corporate card program, and a payout provider verifies the company before it sends payments on its behalf. Expect to provide registration documents, ownership details for each major owner, a description of the business, and the expected source of funds."
  - q: "What sanctions screening does a stablecoin payout need?"
    a: "Two kinds. The people and companies involved are screened against sanctions lists, and the wallet addresses are screened for links to sanctioned or high-risk activity. OFAC's October 2021 guidance for the virtual currency industry describes a risk-based program that covers both, with ongoing rescreening whenever lists change."
  - q: "How long should a stablecoin card and payout program keep records?"
    a: "For the period the local rules set, which differs by country and by record type. Keep onboarding files, screening results, transaction records on both the card and payout side, and investigation notes in one place you can search by customer. Ask counsel for the exact retention periods in each country where you operate."
---

A program that runs stablecoin cards and stablecoin payouts has two compliance stacks, not one. The card leg follows card network and issuing bank rules. The payout leg follows money transmission, virtual asset, and Travel Rule rules. Each provider owns its leg, and your company owns the gaps between them, plus its own customer risk decisions.

This page is a map, not a checklist for one provider. It shows which duty sits where when a company spends from stablecoin balances on a card and also sends stablecoin-funded payouts to bank accounts. For the card side alone, read [stablecoin card issuing compliance](/resources/more/stablecoin-card-issuing-compliance). For the basics of the product, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

This is general information, not legal advice. Confirm your obligations with counsel in each country where you operate.

**Key takeaways**

- A combined program has five control areas: onboarding (KYC and KYB), transaction monitoring, sanctions screening, the Travel Rule, and record keeping.
- The issuing bank owns card compliance. The payout provider owns the compliance on the transfers it executes. Neither owns your customer relationship.
- The Travel Rule applies to transfers between regulated providers, not to card authorizations. In the US the threshold is $3,000 under 31 CFR 1010.410.
- Wallet screening is the control traditional card programs lack. Every stablecoin funding and payout address needs it.
- The most common audit gap is records split across providers with no shared customer ID.

## What does a combined card and payout program have to cover?

It has to cover five control areas across two legs. The card leg covers cardholders and card transactions. The payout leg covers senders, recipients, wallets, and bank transfers.

Some quick definitions first:

- **Issuer (issuing bank):** the licensed bank or e-money institution whose license the card runs under. It owns the card program's anti-money laundering program.
- **Program manager:** the company that runs the card program day to day under the issuer's policies.
- **Payout provider:** the company that converts stablecoins and pays local currency into bank accounts. It runs its own compliance program on those transfers.
- **KYC and KYB:** know your customer (verifying a person) and know your business (verifying a company and its owners).
- **Travel Rule:** the requirement that regulated providers pass sender and recipient information along with a transfer.

The two legs touch at the funding wallet. Stablecoins that sit behind the card balance are the same stablecoins a payout draws on, so a gap in one leg shows up in the other.

## Who owns each compliance duty?

Each provider owns the duties for the transactions it executes, and your company owns everything about its own customers that neither provider sees. The table below is the usual split. Contracts can move duties around, so check yours.

| Duty | Issuing bank and program manager | Payout provider | Your company |
| --- | --- | --- | --- |
| KYC on individuals | Every cardholder, before the card is issued | Every individual sender it pays out for | Your own users, if you onboard them first |
| KYB on businesses | Companies in a corporate card program | Companies that send payouts | Your business customers and their owners |
| Transaction monitoring | Card authorizations, clearing, disputes | Payout and payin activity, wallet flows | Patterns across both, tied to your customer |
| Sanctions screening | Cardholders, merchants per network rules | Senders, recipients, wallet addresses | Your customer base, on every list update |
| Travel Rule | Not on card authorizations | Transfers above the local threshold | Correct sender and recipient data |
| Record keeping | Card and cardholder records | Transfer, quote, and screening records | A single customer file linking both |
| Reporting suspicious activity | Card activity, to its regulator | Payout activity, to its regulator | Escalating what you see to both |

Read the last column carefully. Your company sits in the middle and is the only party that sees the whole customer.

## How does KYC and KYB work across both legs?

Each provider runs its own check, and you supply the data both times. A cardholder verified by the issuer is not automatically verified by the payout provider, unless your contracts set up a reliance arrangement.

On the card side, the issuer needs cardholder identification even when the wallet behind the card is permissionless. [neobankbeat's explainer](https://www.neobankbeat.com/blog/stablecoin-cards-explained) puts it plainly: "The wallet may be permissionless; the plastic isn't." [Do stablecoin cards require KYC?](/resources/more/do-stablecoin-cards-require-kyc) covers what cardholders are asked for.

On the payout side, the provider verifies whoever is sending money. For a company that means KYB: registration, business activity, ownership, and source of funds. [What is KYB](/resources/more/what-is-kyb) lists the usual documents.

The practical step is to collect once and map twice:

1. Collect identity and business data in your own onboarding flow.
2. Map the fields to each provider's schema, including country-specific ID numbers.
3. Submit to the issuer for cardholders and to the payout provider for senders.
4. Store both providers' verification IDs on your own customer record.
5. Re-verify on the schedule each provider sets, and when a customer's details change.

## Where does transaction monitoring sit?

Each provider monitors its own leg, and only you can monitor across them. The card program sees spend at merchants. The payout provider sees transfers to bank accounts. A pattern that crosses both, such as a card loaded and then drained by payouts to many new recipients, is visible only in your data.

Useful cross-leg signals to watch:

- A new customer whose first activity is a large payout rather than card spend.
- Card balances funded from many unrelated wallets.
- Payouts to recipients in countries that do not match the customer's profile.
- Repeated small payouts just under a threshold.

For the payout side, [real-time transaction monitoring for stablecoin payments](/resources/more/real-time-transaction-monitoring-stablecoin-payments) covers rule design, and [transaction monitoring red flags](/resources/more/transaction-monitoring-red-flags-stablecoin-payments) lists patterns worth alerting on.

## How should sanctions screening work for cards and payouts?

Screen people, companies, and wallet addresses, and screen again whenever lists change. Card programs screen cardholders by default. Stablecoin flows add a second target: the wallet address.

[OFAC's 2021 sanctions guidance for the virtual currency industry](https://home.treasury.gov/system/files/126/virtual_currency_guidance_brochure.pdf) describes a risk-based program for companies in this space. In a combined program, that means:

- Screening every cardholder and every payout sender and recipient at onboarding.
- Screening every wallet that funds a card balance or a payout.
- Rescreening the whole customer base on each list update, not only at onboarding.
- Blocking or holding the transaction, not only flagging it, when there is a true match.

[How wallet screening works](/resources/more/how-wallet-screening-works-stablecoin-payments) explains the address side, and [how often to rescreen](/resources/more/ongoing-sanctions-screening-how-often-to-rescreen) covers ongoing screening.

## When does the Travel Rule apply?

The Travel Rule applies when funds or virtual assets move between regulated providers. It does not apply to a card authorization, which runs under card network rules instead.

In the US, the funds transfer recordkeeping and travel rule sits in [31 CFR 1010.410](https://www.law.cornell.edu/cfr/text/31/1010.410), with a $3,000 threshold. Globally, [FATF updated Recommendation 16](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html) on payment transparency in June 2025. In a combined program, the moments that trigger it are:

| Event | Travel Rule in scope? | Who sends the data |
| --- | --- | --- |
| Cardholder pays a merchant | No, card network rules apply | Issuer, under network rules |
| Stablecoins move from an exchange to the card wallet | Often, between regulated providers | The sending provider |
| Payout from stablecoins to a recipient's bank | Yes, above the local threshold | The payout provider, with your data |
| Recipient sends funds back | Depends on the route | The provider that executes it |

The data has to be right before the transfer starts. Wrong or missing originator details are the most common reason a payout gets held. [Travel Rule holds, returns, and rejections](/resources/more/travel-rule-workflow-hold-return-reject) walks through what happens next.

## What records should you keep?

Keep one customer file that links both legs. Each provider keeps its own records, but an examiner or a bank partner will ask you to reconstruct a customer's full activity, and that is hard when data sits in two dashboards.

At minimum, store:

- Onboarding data you collected and both providers' verification results.
- Every card transaction ID and every payout and quote ID, tagged with your customer ID.
- Screening results and the decision taken on each alert.
- Notes on investigations and any reports filed.

Retention periods differ by country and record type. Ask counsel for the exact periods in each market.

## How does the regulatory layer differ by region?

The regulatory frame on top of these duties changes by market. The card leg is licensed where the card is issued. The stablecoin leg is often regulated where the customer lives. One program can sit under several regimes.

- **EU:** [MiCA](https://eur-lex.europa.eu/eli/reg/2023/1114/oj/eng) covers stablecoin issuers and crypto service providers. Read [stablecoin cards in Europe](/resources/more/stablecoin-cards-europe-mica).
- **US:** the [GENIUS Act](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm), signed July 18, 2025, sets the frame for payment stablecoin issuers, while card programs run through sponsor banks. Read [stablecoin cards in the United States](/resources/more/stablecoin-cards-united-states-regulation).
- **Elsewhere:** licensing for virtual asset services varies. [Stablecoin payment licenses](/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi) explains MSB, MTL, VASP, and EMI.

## Where does BlindPay fit in the compliance map?

BlindPay runs the payout and collection leg, with KYC, KYB, and sanctions screening built into the same API flow. In the table above, it sits in the payout provider column, next to whichever issuer runs the card program.

From the [BlindPay docs](/docs/kb/kyc), customers are verified through the API before they can send payouts, and businesses go through KYB with documents listed in the [KYB documents guide](/docs/kb/kyb-documents). Payouts run over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT. Each payout starts from a live quote, which gives you a quote ID to store on the customer file next to the card transaction IDs.

BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. That keeps the payout leg separate from the card balance in your records, which is what an examiner wants to see.

## How to get started

Draw your own version of the who-owns-what table before you sign the second contract. Then:

1. List every event in your flow, from onboarding to payout.
2. Mark which provider executes each one.
3. Find the events no provider owns, and assign them to a person on your team.
4. Agree a shared customer ID across both providers.

When the payout column is ready to fill in, run a test payout from a free development instance with the [payout quickstart](/docs/quickstart-payout), and keep the quote and payout IDs it returns as your first record.

## Sources

- [neobankbeat, Stablecoin cards explained (November 18, 2025)](https://www.neobankbeat.com/blog/stablecoin-cards-explained)
- [OFAC, Sanctions compliance guidance for the virtual currency industry (October 2021)](https://home.treasury.gov/system/files/126/virtual_currency_guidance_brochure.pdf)
- [31 CFR 1010.410, recordkeeping for funds transfers](https://www.law.cornell.edu/cfr/text/31/1010.410)
- [FATF, Update to Recommendation 16 on payment transparency (June 2025)](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html)
- [Regulation (EU) 2023/1114 (MiCA)](https://eur-lex.europa.eu/eli/reg/2023/1114/oj/eng)
- [GENIUS Act, Public Law 119-27 (July 18, 2025)](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm)

---

Source: https://blindpay.com/resources/more/build-vs-buy-stablecoin-card-program

---
title: "Build vs. buy: should you build your own stablecoin card program?"
seoTitle: "Build vs. buy a stablecoin card program: scoring guide"
description: "Scoring build, assemble, and buy options for a stablecoin card program on network membership, BIN sponsorship, processing, compliance, time, and cost."
date: "2026-10-09"
updated: "2026-10-09"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Should I build or buy a stablecoin card program?"
    a: "Buy, for almost every company. Building means network membership or a BIN sponsor contract, an authorization engine, PCI DSS compliance, and a full anti-money-laundering program, before the first card ships. A card provider has done that work already. Build only when cards are your core product, you have the capital, and you expect volumes that justify owning the stack."
  - q: "What does it take to build a card program from scratch?"
    a: "Four things you would own: a relationship with Visa or Mastercard, directly as a principal member or through a sponsor bank; an issuer-processor that answers every authorization in real time; PCI DSS compliance for card data, currently version 4.0.1; and a compliance program covering KYC, sanctions screening, monitoring, and disputes. Each is a separate team and a separate audit."
  - q: "What is the middle path between building and buying?"
    a: "Buy the card layer and buy the payments layer around it, then build only your product and ledger. A card provider handles issuance, network settlement, and card KYC. A payments provider such as BlindPay handles bank funding into stablecoins and local-currency payouts. You keep control of the user experience and the ledger, which is where programs actually differ."
  - q: "How long does it take to launch a stablecoin card program?"
    a: "With a provider, weeks to a few months. Stripe's docs for Bridge-backed cards describe a live launch 6 to 8 weeks after onboarding starts. Building your own stack takes far longer, because sponsor bank negotiations, network certification, and compliance reviews run before any code reaches production. Treat any provider timeline as a target that depends on program approval."
  - q: "When does building a card program make sense?"
    a: "When cards are the product, not a feature. That usually means a company with large expected card volume, the capital to fund reserves and audits, and a reason to control economics that a provider would share. Rain, for example, describes holding principal memberships with Visa and Mastercard. Most companies are better served starting with a provider and revisiting the decision at scale."
  - q: "What should I build myself if I buy the card program?"
    a: "Build the ledger, the authorization decision logic, the onboarding experience, and the product rules. Those decide approval rates, reconciliation quality, and what users feel. Buy the regulated pieces: the sponsor bank, network connection, card data vault, and the bank rails for funding and payouts. Owning the ledger also keeps you portable if you change providers later."
---

*Reading time: about 8 minutes.*

**Summary:** Most companies should buy a stablecoin card program, not build one. Building means network membership or a BIN sponsor, an authorization engine, PCI DSS compliance, and an AML program before the first card. The best default is a middle path: buy the card layer, buy the payments layer around it, and build your product and ledger.

**Key takeaways**

- There are four options: direct network membership, assemble your own stack, buy a full-stack card provider, or buy a card provider plus a payments layer.
- Time to market favors buying by a wide margin. Stripe's docs describe a live launch 6 to 8 weeks after onboarding starts.
- Building pays off only at scale, when you control economics a provider would otherwise share.
- Whatever you buy, own the ledger. It decides approvals, reconciliation, and portability.
- Bank funding and local payouts are a second build-vs-buy decision that teams often miss.


Visa counted 160+ stablecoin-linked card programs in a September 2026 article. Very few of them built the stack from scratch. If you are mapping the roles first, read [BIN sponsor vs. issuer-processor vs. program manager](/resources/more/bin-sponsor-vs-issuer-processor-vs-program-manager). For the integration itself, read [how to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api).

## What are the options between building and buying?

There are four realistic options, from most to least ownership. Each moves a different set of regulated work onto your team.

1. **Direct network membership.** You become a principal member of Visa or Mastercard, or partner with a bank that does, and run issuing yourself. Maximum control, maximum obligations.
2. **Assemble your own stack.** You sign a BIN sponsor bank, license an issuer-processor, and act as program manager. You own the integration between all three.
3. **Buy a full-stack card provider.** One provider brings the sponsor bank, network connection, processing, and card KYC. You build the product on its API.
4. **Middle path: card provider plus payments layer.** You buy the card layer and also buy the bank funding and local payout layer, then build only the product and ledger.

Terms used below:

- **Principal member:** a company that holds a direct license with a card network and settles with it.
- **BIN sponsor:** a licensed bank that owns the card number range and carries regulatory responsibility for cards issued on it.
- **Issuer-processor:** the system that receives each authorization and approves or declines it.
- **Program manager:** the company that designs the card product and owns the cardholder relationship.

## How do the options score?

The table scores each option from 1 (hard or expensive for you) to 5 (easy or cheap for you). The scores are our judgment, not measured data, and are meant as a starting point for your own scoring.

| Criterion | Direct membership | Assemble own stack | Full-stack provider | Provider plus payments layer |
|---|---|---|---|---|
| Network membership | 1: you apply and meet network requirements | 3: through the sponsor bank | 5: provided | 5: provided |
| BIN sponsorship | 1: you are or partner with the issuing bank | 2: you negotiate and sign it | 5: provided | 5: provided |
| Processing | 1: build or license | 2: license and integrate | 5: provided, you answer a webhook | 5: provided |
| Card compliance (KYC, monitoring, disputes) | 1: full program | 2: full program under sponsor oversight | 4: shared with the provider | 4: shared with the provider |
| Bank funding and local payouts | 1: bank contracts per country | 1: bank contracts per country | 2: build or source separately | 5: provided |
| Time to market | 1: longest | 2: long | 4: weeks to months | 4: weeks to months |
| Upfront cost | 1: highest | 2: high | 4: low | 4: low |
| Control of economics | 5: you keep most of it | 4: high | 2: shared with provider | 2: shared with providers |
| Total | 12 | 18 | 31 | 34 |

The totals are not the decision. Weight each row by what matters to your company. A company whose whole business is card economics may weight "control of economics" three times and land on a different answer.

## What does building actually involve?

Building means owning four regulated systems, each with its own audit. None of them is the card product your users see.

**Network relationship.** Rain, for example, describes holding principal memberships with Visa and Mastercard and settling with the networks daily in stablecoins. That is the far end of the build option. A principal member carries network obligations directly.

**Authorization engine.** Every purchase is a real-time question. Stripe's real-time authorization docs give an integrator 2 seconds to approve or decline. If you build, you own that deadline for every card.

**Card data security.** Storing and processing card numbers puts you in scope for PCI DSS, now version 4.0.1, with annual assessments.

**Settlement and reserves.** Visa's September 2026 article puts it plainly: "Every card program has to fund its daily settlement obligation before it collects from cardholders." If you settle in fiat, you park cash for the lag. [Prefunding in card issuing](/resources/more/prefunding-and-collateral-in-card-issuing) covers the math.

## What is the middle path, and why is it the default?

The middle path is to buy two layers and build one. The card provider runs the card. A payments provider runs the bank legs. You build the product and the ledger in between.

Teams often buy a card provider and then discover a second build: how cardholders top up from a bank account, and how they cash out to one. That second build is its own stack: bank contracts in each country, local rails like Pix and SPEI, FX conversion, and KYC for every customer moving money. Buying it keeps your team on the product.

What you still build:

- **The ledger.** One available balance per cardholder, updated by funding, card, and payout events. Read from it at authorization, never from a live chain query.
- **Authorization rules.** Limits, merchant category blocks, and fraud signals that run inside the provider's deadline.
- **Onboarding.** One flow that collects the data both providers need, in the right order.
- **Reconciliation.** Daily matching of every movement against a provider event.

The layer-by-layer picture is in the [stablecoin card program architecture](/resources/more/stablecoin-card-program-architecture).

## Which option fits which company stage?

Match the option to the stage you are in now, and revisit at each funding round or volume step.

| Company stage | Recommended option | Why |
|---|---|---|
| Pre-launch or seed | Provider plus payments layer | Fastest path to a live card with the least regulated work |
| Growth (Series A to B) | Provider plus payments layer, with a second card provider evaluated | Volume justifies negotiating terms, not building |
| Scale (cards are core revenue) | Assemble own stack, or negotiate a dedicated program with a provider | Economics start to justify owning more |
| Bank or licensed institution | Direct membership or own BIN | The licenses and compliance teams already exist |

Two signals that it is time to revisit: interchange and FX revenue you share with providers has grown larger than the cost of a team to run the stack, or you need a country or feature no provider supports. Until then, the [interchange economics of a card program](/resources/more/how-stablecoin-card-issuers-make-money) usually favor buying.

## Where does BlindPay fit?

In the middle path, BlindPay is the payments layer you buy instead of building banking and payout rails. The card provider runs the card. BlindPay moves money into and out of the stablecoin balance behind it.

Funding: each customer can get a [US virtual account](/virtual-accounts) in its own name that converts ACH, wire, and SWIFT deposits to USDC or USDT in a linked wallet. Latin American payins over Pix, SPEI, Transfers 3.0, and PSE deliver stablecoins the same way.

Payouts: stablecoins convert to local currency over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, Domestic Wire, SEPA, and SWIFT (POBO/COBO), funded at send time with no pre-funding per country.

KYC, KYB, and sanctions screening run inside the same API. Fees are a monthly plan plus per-transaction fees shown in each live quote before execute.

Read the [BlindPay introduction](/docs/introduction) or [talk to the team](/contact).

## What to read next

- [BIN sponsor vs. issuer-processor vs. program manager](/resources/more/bin-sponsor-vs-issuer-processor-vs-program-manager)
- [Stablecoin card issuing platforms compared](/resources/more/stablecoin-card-issuing-platforms-compared)
- [How stablecoin card issuers make money](/resources/more/how-stablecoin-card-issuers-make-money)
- [How to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api)

## Sources

- Visa, [Financing stablecoin-linked card programs](https://www.visa.com/en-us/thought-leadership/innovation/financing-stablecoin-linked-card-programs) (September 8, 2026)
- Rain, [homepage](https://www.rain.xyz)
- Stripe, [Issue stablecoin-backed cards with Bridge](https://docs.stripe.com/issuing/bridge-stablecoin-cards) and [Real-time authorizations](https://docs.stripe.com/issuing/controls/real-time-authorizations)
- PCI Security Standards Council, [PCI DSS v4.0.1](https://blog.pcisecuritystandards.org/just-published-pci-dss-v4-0-1)

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

---

Source: https://blindpay.com/resources/more/onramp-offramp-liquidity-scorecard

---
title: "How to evaluate an on/off-ramp provider's liquidity: a 10-point scorecard"
seoTitle: "On/off-ramp liquidity scorecard: 10 checks for providers"
description: "Score any on/off-ramp provider's liquidity from 0 to 20: binding quotes, lock length, expiry, fees, depth, pre-funding, custody, and pricing."
date: "2026-10-09"
updated: "2026-10-09"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do I evaluate an on-ramp or off-ramp provider's liquidity?"
    a: "Score ten things from 0 to 2: binding quotes, rate lock length, slippage, settlement estimates, expiry behavior, itemized fees, rate stability across sizes, pre-funding, custody model, and pricing transparency. Collect evidence from docs, a real quote response, and a test, not from a sales deck. A total of 16 or more out of 20 is production ready."
  - q: "What is a good score on the liquidity scorecard?"
    a: "16 to 20 means the provider can carry production payouts. 12 to 15 means pilot it on one corridor with a volume cap while you close the gaps. Under 12, keep production volume elsewhere. A 0 on binding quotes or on expiry behavior disqualifies a provider regardless of the total, because both mean the rate you see is not the rate you get."
  - q: "How can I test an off-ramp's liquidity depth myself?"
    a: "Request quotes for the same corridor at four sizes, such as $500, $5,000, $50,000, and $250,000, within the same minute, and compare the effective rate after fees. Repeat at three times of day. A spread that stays flat across sizes shows real depth. A spread that widens fast shows inventory running out early."
  - q: "Why do itemized fees matter for liquidity?"
    a: "Because a provider can hide a thin market inside the rate. If the quote shows the market rate, the provider's rate, and each fee line separately, you can see whether a worse price comes from the market or from a wider margin. A single all-in number makes depth problems invisible until you compare delivered amounts."
  - q: "Does the custody model affect liquidity?"
    a: "It affects who holds funds while liquidity is being sourced. A custodial provider holds your balance before and after conversion. A non-custodial payout flow leaves stablecoins in your wallet until execution and pulls only the quoted amount. The second keeps provider failure risk away from idle balances, which is why custody is a scorecard row."
---

To evaluate an on/off-ramp provider's liquidity, score ten things from 0 to 2: binding quotes, lock length, slippage, settlement estimates, expiry behavior, itemized fees, rate stability across sizes, pre-funding, custody, and pricing transparency. A total of 16 or more out of 20 means the provider is ready for production payouts.

Liquidity is hard to see from outside. Every provider says it has deep books. The scorecard turns that claim into evidence you can collect in a week: docs, one real quote response, and a quote-ladder test.

**Key takeaways**

- Ten rows, 0 to 2 points each, 20 maximum.
- 16 or more: production. 12 to 15: pilot one corridor with a cap. Under 12: keep production volume elsewhere.
- A 0 on binding quotes (row 1) or expiry behavior (row 5) disqualifies a provider, whatever the total.
- Score from evidence: a docs page, an API response, or a test you ran. Never from a sales claim.
- Run the scorecard on every provider yourself, BlindPay included. The rows below are designed to be checked.

## What does the 10-point liquidity scorecard measure?

It measures whether the rate you see is the rate you get, at the size you need, without parking money first. Each row is one observable behavior.

| # | Question | 2 points | 1 point | 0 points |
| --- | --- | --- | --- | --- |
| 1 | Are quotes binding? | Executes at the quoted rate and fees, documented | Binding only on some corridors | Indicative only, settles at market |
| 2 | How long is the rate locked? | Minutes, stated per product | Seconds, or unstated but consistent | No lock |
| 3 | Is there slippage inside the window? | Zero by design, documented | Tolerance band you must accept | Settles at whatever the market does |
| 4 | Is settlement time published per rail? | Estimate per rail, plus failure and refund rules | Vague ranges | Nothing published |
| 5 | What happens after expiry? | Rejected with a distinct error, nothing moves | Re-priced, but only with your consent | Silently executed at a new rate |
| 6 | Are fees itemized in the quote? | Market rate, provider rate, and every fee line | All-in amount plus a total fee | Only the final amount |
| 7 | Does the rate hold across sizes? | Spread flat from $500 to $250,000 | Widens gradually | Widens fast or quotes fail |
| 8 | Is pre-funding required? | No, each payout funds at execution | Partial buffer or collateral | Local balances per corridor |
| 9 | Who holds funds between steps? | Funds stay in your wallet until execution | Custodial with segregation evidence | Custodial with no detail |
| 10 | Is pricing transparent, with no volume floor? | Plans published, fees shown per quote, no floor | Published but with a minimum volume | Negotiated only |

A few definitions, so every scorer reads the rows the same way. A **binding quote** is a price you can execute at, with an id and an expiry. **Slippage** is the gap between the quoted rate and the settled rate. **Depth** is how much volume a provider can convert before its price gets worse. The [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary) has the full set.

## How do you score each row without taking the provider's word for it?

Collect one piece of evidence per row, and write down where it came from. Three sources cover all ten rows.

**Docs (rows 2, 4, 8, 9, 10).** Look for stated quote windows, per-rail settlement estimates, how payouts are funded, who holds keys, and a public pricing page. "Contact sales" is not evidence.

**One real quote response (rows 1, 3, 5, 6).** Request a quote through the API and read the fields. You want an id, an expiry timestamp, the market rate next to the provider's rate, and each fee line. Then execute one quote after it expires and record the exact error. [Indicative rate vs binding quote](/resources/more/indicative-rate-vs-binding-quote-api) shows how to tell the two apart in a response.

**A test (row 7).** Run the quote ladder: $500, $5,000, $50,000, and $250,000 on the same corridor within the same minute, at three times of day. [How to test an off-ramp's liquidity depth](/resources/more/test-offramp-liquidity-depth) has the protocol and the logging table.

Public rules are a useful template for row 6. The US CFPB's remittance rule lists what a pre-payment disclosure must show: transfer amount, fees, total, exchange rate, and total to recipient ([12 CFR 1005.31](https://www.law.cornell.edu/cfr/text/12/1005.31)). The Financial Stability Board's 2027 transparency target asks for the same core list, total cost including the FX rate, expected time to deliver, payment tracking, and terms of service ([FSB targets](https://www.fsb.org/uploads/P131021-2.pdf)). A quote that shows less than a consumer remittance receipt should not score 2.

## What total should you require before routing production payouts?

Require 16 or more, with no 0 on rows 1 or 5.

- **16 to 20: production.** The provider binds its prices, shows its costs, and holds up at size.
- **12 to 15: pilot.** Route one corridor with a monthly volume cap, close the gaps in writing, and re-score in 30 days.
- **Under 12: not yet.** Keep production volume elsewhere.

Rows 1 and 5 are hard gates because both decide whether the confirmation screen tells the truth. If quotes are indicative, or an expired quote executes at a new price, your user can confirm one amount and receive another. No total makes up for that.

## Illustrative example: how do two providers compare on the scorecard?

Illustrative example. Two anonymous providers, scored by a payments team after a one-week evaluation.

| Row | Provider A | Provider B |
| --- | --- | --- |
| 1. Binding quotes | 2 | 1 |
| 2. Lock length | 2 | 1 |
| 3. Slippage | 2 | 1 |
| 4. Settlement published | 2 | 1 |
| 5. Expiry behavior | 2 | 2 |
| 6. Itemized fees | 2 | 0 |
| 7. Rate across sizes | 1 | 2 |
| 8. Pre-funding | 2 | 0 |
| 9. Custody | 2 | 1 |
| 10. Pricing | 2 | 1 |
| **Total** | **19** | **10** |

Provider A: 2 + 2 + 2 + 2 + 2 + 2 + 1 + 2 + 2 + 2 = 19. Production ready. The spread widened from 0.48% at $5,000 to 0.62% at $250,000, so it lost one point on row 7. Worth a note in the contract, not a blocker.

Provider B: 1 + 1 + 1 + 1 + 2 + 0 + 2 + 0 + 1 + 1 = 10. Its depth was excellent, flat across all four sizes. But it only returned an all-in amount, and it required a local balance per corridor. Deep liquidity you have to pre-fund and cannot see the price of is still a 10.

That's the useful part of a scorecard. It stops one strong row from carrying a weak provider.

## How does BlindPay score on each row?

Here is what BlindPay documents for each row, so you can check it yourself. Score it with the same rules as everyone else.

| # | What BlindPay documents | Where |
| --- | --- | --- |
| 1 | A payout quote locks the exchange rate and fee, and a payout can only execute against a valid, unexpired quote | [Payout quotes](/docs/payout-quotes) |
| 2 | Quotes expire 5 minutes after creation by default; OTC payin quotes expire in 10 seconds; some payout rails can return a shorter window, so `expires_at` is the source of truth | [Cut-off times](/docs/kb/cut-off-times) |
| 3 | The fee is locked at quote creation, so nothing changes between quote and execution | [Billing](/docs/learn/billing) |
| 4 | Estimated arrival per rail, for example Pix and SPEI instant, ACH about 2 business days, SWIFT about 5 | [Bank accounts](/docs/bank-accounts) |
| 5 | An expired quote is rejected with 400 `QUOTES_EXPIRED`, and nothing moves | [API reference](https://api.blindpay.com/reference) |
| 6 | `commercial_quotation` (market rate), `blindpay_quotation` (rate net of BlindPay's fee), `flat_fee`, `partner_fee_amount`, `billing_fee_amount`, `sender_amount`, `receiver_amount` | [Payout quotes](/docs/payout-quotes) |
| 7 | Measure it: run the quote ladder on your corridor | [Depth test](/resources/more/test-offramp-liquidity-depth) |
| 8 | No pre-funding: the quote is funded when you execute it, from the funding wallet | [Payouts](/docs/payouts) |
| 9 | See the custody note below | [Payouts: funding source](/docs/payouts) |
| 10 | Published plans, no volume floor; per-transaction fees vary by rail and network and are disclosed in the live quote, with no static rate card | [Pricing](/pricing) |

On row 9, the exact wording matters. BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.

Row 7 is the one no docs page can answer for you. Depth is a property of a corridor at a moment, so run the ladder on the corridors you actually pay into.

## Where do providers usually lose points?

Five patterns cost the most points in practice:

- **Indicative rates on the screen, market rates at settlement.** Rows 1, 3, and 5 all drop. [Stablecoin FX slippage and live quotes](/resources/more/stablecoin-fx-slippage-live-quotes) shows how to spot it after the fact.
- **The margin inside one number.** Row 6. If you cannot compare the provider's rate with the market rate in the same response, use a public reference such as the ECB's euro reference rates, published around 16:00 CET on working days and "for information purposes only" ([ECB](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html)).
- **A depth cliff.** Row 7. Fine at $5,000, broken at $250,000.
- **A local balance per corridor.** Row 8. [What no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) covers the cost of that capital.
- **"Contact us" pricing.** Row 10.

A broader buyer checklist, covering corridors, licensing, and API quality, lives in [how to choose an on/off-ramp provider](/resources/more/how-to-choose-on-off-ramp-provider). This scorecard is the liquidity slice of it. When you write the result into an evaluation, the [30-day stablecoin API evaluation plan](/resources/more/stablecoin-api-30-day-evaluation-plan) gives you the week-by-week structure, and [handling expired quotes in code](/resources/more/handle-expired-quotes-typescript-python) helps you run the row 5 test.

## What to do next

Copy the table above into a sheet, request one live quote from each provider you are considering, and score rows 1, 3, 5, and 6 from the response alone. For BlindPay, the [payout quotes docs](/docs/payout-quotes) show every field you need for those four rows.

---

Source: https://blindpay.com/resources/more/stablecoin-card-balance-to-local-bank

---
title: "From stablecoin to local bank: when to cash out over Pix, SPEI, ACH, SEPA, or SWIFT instead of using a card"
seoTitle: "Stablecoin to local bank: Pix, SPEI, ACH, SEPA, SWIFT"
description: "When a stablecoin card is the wrong tool and a local bank payout fits: rent, payroll, invoices. Each rail compared, plus how a payout API flow works."
date: "2026-10-09"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to convert USDC or USDT to a local bank account through a payout API"
  steps:
    - name: "Verify the sender"
      text: "Onboard the person or business sending the payout with KYC or KYB, including sanctions screening."
    - name: "Add the recipient's bank account"
      text: "Register the recipient with the details the rail needs: a Pix key, a CLABE, a US routing and account number, an IBAN, or SWIFT details."
    - name: "Get a quote"
      text: "Request a quote for the amount. It locks the exchange rate and fees and shows exactly what the recipient will receive."
    - name: "Send the stablecoins"
      text: "Authorize the exact USDC or USDT amount from your wallet on the chain you picked."
    - name: "Execute the payout"
      text: "The provider converts the stablecoins and sends local currency over the rail."
    - name: "Track to completion"
      text: "Follow the payout status by webhook until it is completed, and store the rail reference for the recipient."
faq:
  - q: "How do I convert USDC to my local bank account?"
    a: "Use an off-ramp that sells the USDC for your local currency and sends it over a domestic rail, such as Pix in Brazil, SPEI in Mexico, ACH in the US, or SEPA in Europe. Get a quote first so you see the rate and fees, then send the stablecoins and track the payout until it completes."
  - q: "How long does USDC to Pix or SPEI take?"
    a: "The rail leg takes minutes. Pix and SPEI both run 24/7. On BlindPay, Pix, PIX Safe, and SPEI payouts are listed as settling in minutes once the stablecoins arrive. Most delay comes from wrong recipient details or a compliance review, not from the rail itself."
  - q: "Why can't I just pay rent with my stablecoin card?"
    a: "Most landlords, utilities, tax authorities, and payroll recipients take bank transfers, not card payments. A card pays merchants through Visa or Mastercard. A bank account needs a transfer over a local rail, so the money has to be converted and paid out to the account."
  - q: "What is the difference between ACH, wire, and RTP for a USDC payout?"
    a: "All three pay US bank accounts in dollars. RTP is instant where the receiving bank supports it. A domestic wire usually settles the same business day if sent before the cut-off. ACH typically takes one to three business days and is the lowest-cost option for routine payments."
  - q: "When should I use SWIFT instead of a local rail?"
    a: "Use SWIFT when the recipient's country or currency has no local rail available from your provider, or when the recipient needs an MT103 confirmation for a large payment. SWIFT can take up to five business days, so prefer a local rail when one covers the destination."
---

A stablecoin card pays merchants. Rent, payroll, supplier invoices, taxes, and family transfers go to bank accounts, so they need a local payout: stablecoins sold for local currency and sent over Pix, SPEI, ACH, RTP, SEPA, or SWIFT. Pick the rail by country, amount, and speed, get a quote, then track the payout to completion.

This guide covers the cash-out side of a stablecoin card setup. It explains when a card is the wrong tool, what each rail is for, and how a payout API flow works from quote to settlement, without code. For the card side, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Cards cover purchases. Bank-only payments such as rent, payroll, and invoices need a payout to a bank account.
- Pix, PIX Safe, SPEI, and Transfers 3.0 settle in minutes. RTP is instant. ACH, domestic wire, SEPA, TED, and ACH Colombia take about one to two business days. SWIFT can take up to five.
- Use the rail the recipient's bank already uses. Local rails are usually faster and cheaper than SWIFT.
- Ask for a quote that locks the rate and fees before any stablecoins move.
- Know what happens if a payout cannot be delivered, and where the funds go.

## When is a stablecoin card the wrong tool?

A stablecoin card is the wrong tool whenever the recipient is a bank account rather than a merchant. That covers most large and recurring payments.

Cards are built for purchases. a16z crypto's [August 7, 2026 analysis](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend) of Paymentscan data put the average crypto card purchase at about $86, across nearly 9 million purchases a month. Rent and salaries look nothing like that.

Use a payout instead of a card for:

- **Rent and mortgages.** Landlords and lenders take bank transfers.
- **Payroll and contractor pay.** Recipients need money in their bank account to pay their own bills.
- **Supplier invoices.** Invoices list bank details, not a card terminal.
- **Taxes, utilities, and school fees.** These are usually paid by transfer or bill.
- **Bank-only merchants.** Some businesses only accept transfers.
- **Cash needs.** ATM withdrawals on crypto cards often have a small free quota and then 1.5% to 2%, per NGIBANK's [crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide). KAST's [fee page](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts) lists ATM withdrawals at $3 plus 2%. Moving money to a bank account first can be cheaper.

## What is a local payout?

A local payout converts stablecoins into local currency and sends it to a bank account over the country's own payment rail. The recipient sees an ordinary domestic transfer.

A few terms:

- **Off-ramp:** the step that sells stablecoins for fiat. [What is a stablecoin off-ramp](/resources/more/what-is-a-stablecoin-offramp) explains it from the start.
- **Rail:** the bank network that moves the fiat, such as Pix or ACH.
- **Quote:** a price for the conversion that fixes the rate and fees for a short window.
- **POBO/COBO:** payments and collections on behalf of. A SWIFT setup where a provider sends or receives wires for a client while naming that client. [POBO vs COBO explained](/resources/more/swift-pobo-vs-cobo-explained) covers it.

## Which rail should you use for each country?

Use the rail the recipient's bank already uses for domestic payments. The table lists the main rails with BlindPay's documented settlement times from its [payment methods reference](/docs/kb/payment-methods) and [cut-off times](/docs/kb/cut-off-times).

| Rail | Country and currency | Recipient details | Typical settlement | Typical uses |
| --- | --- | --- | --- | --- |
| Pix | Brazil, BRL | Pix key (CPF, CNPJ, phone, email, random key) | Minutes, 24/7 | Rent, salaries, family, suppliers |
| PIX Safe | Brazil, BRL | CPF or CNPJ, bank code, branch, account | Minutes | Payments where you have bank details, not a key |
| TED | Brazil, BRL | Bank details | Same banking day before cut-off | Bank transfers in banking hours |
| SPEI | Mexico, MXN | 18-digit CLABE | Minutes, 24/7 | Rent, salaries, suppliers |
| ACH Colombia | Colombia, COP | Bank account details | About 1 business day | Salaries, suppliers |
| Transfers 3.0 | Argentina, ARS | CBU | Minutes | Local transfers |
| ACH | United States, USD | Routing and account number | About 1 to 3 business days | Payroll, routine payments |
| Domestic wire | United States, USD | Routing and account number | Same business day before 3:00 PM ET | Larger or urgent payments |
| RTP | United States, USD | RTP-eligible routing and account number | Instant | Urgent payments to supporting banks |
| SEPA | Europe, EUR | IBAN and BIC | About 1 business day | Payments across the SEPA zone |
| SWIFT | Global, USD | SWIFT/BIC and account details | Up to 5 business days | Countries without a local rail, large B2B payments |

[Pix vs SPEI](/resources/more/pix-vs-spei) compares Brazil's and Mexico's rails in depth. For US dollars, see [how to off-ramp USDC to a US bank account](/resources/more/how-to-off-ramp-usdc-to-us-bank-account), and for euros, [how to off-ramp USDC over SEPA](/resources/more/how-to-off-ramp-usdc-to-euros-sepa).

## How does a stablecoin-to-bank payout work?

A payout runs in six steps: verify, register the recipient, quote, send, execute, and track. The steps below are code-free and apply to most payout APIs.

1. **Verify the sender.** The provider runs KYC on a person or KYB on a business, plus sanctions screening.
2. **Register the recipient's bank account.** Collect the details for the rail: a Pix key, a CLABE, a routing and account number, an IBAN, or SWIFT details. Validate them on entry.
3. **Get a quote.** The quote fixes the rate and fees for a short window and shows the exact amount the recipient receives.
4. **Send the stablecoins.** Authorize the exact USDC or USDT amount from your wallet on the chain you picked.
5. **Execute the payout.** The provider converts and sends local currency over the rail.
6. **Track to completion.** Follow status changes by webhook and store the rail reference, such as a Pix transaction ID, a SPEI tracking key, or a SWIFT UETR.

[How to track a crypto off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) lists the reference each rail returns and what to tell a recipient who asks where the money is.

## What does a payout cost compared with a card?

A payout's cost is the exchange rate and fees in the quote. A card's cost is spread across the conversion rate, any FX markup, and per-use fees such as ATM charges.

NGIBANK puts FX markups at 1.5% to 3% on many crypto cards for non-USD spend, against 0% to 1% on good fintech debit cards. Coinbase advertises [no transaction fees](https://help.coinbase.com/en/coinbase/trading-and-funding/coinbase-card/cb-card-fees-tax) on Coinbase Card spending, but a spread applies when crypto is converted. Neither number is a payout price.

To compare fairly, calculate the effective rate: local currency received divided by stablecoins sent, against the mid-market rate at the same moment. [How much a stablecoin off-ramp costs](/resources/more/stablecoin-off-ramp-fees-explained) breaks down the payout side line by line.

## What happens if a payout cannot be delivered?

It depends on the provider, so ask before you integrate. The answer should name who holds the funds, which statuses are final, and when a refund is automatic.

On BlindPay, a payout ends as `completed`, `failed`, or `refunded`, per the [payouts reference](/docs/payouts). If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic. USD payouts, and payouts whose review times out, are refunded after an operator review.

The most common causes of a failed payout are wrong recipient details, a closed account, and a compliance hold. Validate details on entry and keep source of funds records ready.

## Where does BlindPay fit?

BlindPay is a payout API for the cash-out leg. It converts USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT, plus TED, PIX Safe, ACH Colombia, and Transfers 3.0.

From the BlindPay docs as of this article's date:

- **Live quote.** A [payout quote](/docs/payout-quotes) locks the rate and fees for five minutes and shows the exact amount the recipient receives. No pre-funding is required.
- **Compliance in the same flow.** KYC, KYB, and sanctions screening run inside the API, not in a separate vendor.
- **Non-custodial payouts.** Payouts are funded from a wallet the customer controls. The customer authorizes the exact amount and BlindPay executes that single transaction.
- **Chains.** Payouts can be funded on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, per the [supported chains reference](/docs/kb/supported-chains).
- **SDKs.** Node.js, Python, Go, PHP, and Swift, plus an OpenAPI spec, per the [SDKs page](/docs/sdks).

Plans are published with no volume floor, and each payout's fee appears in its live quote. BlindPay works alongside a card issuer: the card handles purchases, and BlindPay handles money leaving the stablecoin balance for a bank account.

## What should you do next?

List the payments your card cannot make and the countries they go to. Match each one to a rail from the table above. Then run a test payout on a free development instance with the [payout quickstart](/docs/quickstart-payout), and confirm the status and rail reference you get back.

## Sources

- a16z crypto, payment card stablecoin spend charts, August 7, 2026: [a16zcrypto.com](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend)
- NGIBANK, crypto debit card guide, March 3, 2026: [ngibank.com](https://www.ngibank.com/en/blog/crypto-debit-card-guide)
- KAST, fees and conditions for KAST cards and accounts: [concierge.kast.xyz](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts)
- Coinbase, Coinbase Card fees: [help.coinbase.com](https://help.coinbase.com/en/coinbase/trading-and-funding/coinbase-card/cb-card-fees-tax)

---

Source: https://blindpay.com/resources/more/best-real-time-cross-border-settlement-providers-2026

---
title: "Best real-time cross-border settlement providers for fintechs in 2026: low fees compared"
seoTitle: "Best real-time cross-border settlement providers 2026"
description: "A 10-point checklist and a side-by-side of BlindPay, Wise Platform, Airwallex, Thunes, Bridge, and Circle for real-time, low-fee cross-border settlement."
date: "2026-10-08"
updated: "2026-10-08"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the best real-time cross-border settlement service for fintechs with low fees?"
    a: "For fintechs paying out to the US, Latin America, and Europe, BlindPay fits best on the criteria that drive cost and speed: published plans, rate and fees shown in every quote, no pre-funding or minimum volume, instant payouts over Pix, SPEI, and RTP, and SWIFT (POBO/COBO) for the rest. Wise Platform and Airwallex have broader currency coverage, so check your own corridors first."
  - q: "Which cross-border payment providers publish their pricing?"
    a: "Few publish everything. On the pages we reviewed in October 2026, BlindPay publishes plan prices and shows per-payment fees in each quote, and Airwallex publishes US SWIFT fees of $15 to $25 and an FX markup of 0.5% to 1.0% above interbank rates. Thunes, Bridge, and Circle Payments Network didn't list transaction pricing on the pages we checked."
  - q: "Do I need to pre-fund accounts to get real-time cross-border payouts?"
    a: "Not with every provider. Traditional payout models park money in each destination country so local payouts can go out fast. Stablecoin-based providers such as BlindPay fund each payout when it's sent, from a wallet you control, so there's no balance to keep topped up per corridor. Ask each vendor where the money sits before, during, and after a payout."
  - q: "Which provider is best for payouts to Brazil and Mexico?"
    a: "Pick one that pays out on Pix and SPEI directly, because both rails settle in minutes and run 24/7. BlindPay pays out over Pix, PIX Safe, and TED in Brazil and SPEI in Mexico, with a quote showing the exact reais or pesos received. Bridge also lists Pix and SPEI. Confirm hours, limits, and fees for your ticket size in a test."
  - q: "How do I compare cross-border payment providers fairly?"
    a: "Run the same payment through each one. Pick one real corridor and amount, request quotes at the same time, and compare the amount the recipient receives, not the headline fee. Then send a small live payment and time it from confirmation to credit. Repeat on a weekend if your recipients expect money outside banking hours."
  - q: "Who wrote this comparison?"
    a: "BlindPay did. We compared providers on criteria that matter for real-time, low-fee settlement, and BlindPay is strong on most of them, so read it with that in mind. Every competitor fact comes from that provider's own website, checked in October 2026. Where a fact wasn't published, the table says so instead of guessing."
---

The best real-time cross-border settlement service for a fintech is the one that publishes its pricing, shows every fee in the quote, needs no pre-funding, and pays out on the instant rails your recipients use. On those criteria BlindPay ranks first for US, Latin America, and Europe corridors. The benchmark it beats: the World Bank's latest global average of 6.36% to send $200.

This comparison was written by BlindPay. We checked every competitor fact on that company's own website in October 2026.

**Key takeaways**

- "Real-time" depends on the destination rail. Pix, SPEI, and RTP settle in minutes. ACH, SEPA, and SWIFT don't.
- "Low fees" means low total cost: FX spread plus every fee, measured as the amount the recipient actually receives.
- BlindPay publishes plan prices, shows the market rate and its own rate in every quote, and needs no pre-funding or minimum volume.
- Wise Platform and Airwallex cover more currencies. Thunes has a wide payout network. Bridge covers more of the stablecoin stack. Circle Payments Network is for licensed financial institutions.
- Run a delivered-amount test on your own corridor before you sign anything.

## What makes a cross-border settlement service real-time and low-fee?

Two things: an instant destination rail and a total cost you can see before you pay. Everything else is detail.

**Real-time** means the recipient's bank account is credited with usable money within seconds or minutes, nights and weekends included. That only happens when the last leg is an instant domestic rail such as Pix in Brazil, SPEI in Mexico, or RTP in the US. [What is real-time cross-border settlement](/resources/more/what-is-real-time-cross-border-settlement) covers which rails qualify.

**Low-fee** means the full cost is low, not the line called "fee". The full cost is the FX spread (the gap between the market rate and your rate) plus provider, network, and bank fees. The G20 target for retail cross-border payments is an average of no more than 1% by end-2027, per the [Financial Stability Board](https://www.fsb.org/work-of-the-fsb/financial-innovation-and-structural-change/cross-border-payments/g20-targets-for-enhancing-cross-border-payments-2/). The [World Bank's latest data](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) (Q3 2025) puts the average cost of sending $200 at 6.36%, and 14.99% through banks.

## What should a fintech check before choosing a provider?

Use these 10 points. Each one decides either what you pay or how fast your recipient gets paid.

1. **Published pricing.** Can you see plan prices or a fee schedule before a sales call? If not, you can't model a corridor.
2. **FX transparency.** Does each quote show the market rate, the rate you get, and every fee? [How to calculate FX spread](/resources/more/how-to-calculate-fx-spread) shows how to check.
3. **Pre-funding.** Do you need to park money in each destination currency before you can pay out? Idle balances cost money. [Nostro and vostro accounts](/resources/more/nostro-vostro-accounts-explained) explains why the old model needs them.
4. **Minimum volume.** Is there a monthly minimum or a volume floor to get the advertised price?
5. **Instant rail coverage.** Does the provider pay out on Pix, SPEI, RTP, or the instant rails in your corridors? [Instant payment systems by country](/resources/more/instant-payment-systems-by-country) lists them.
6. **SWIFT fallback.** For countries without a local rail, is there a SWIFT product with tracking, such as UETR references and MT103 confirmations?
7. **Settlement time per rail.** Does the provider publish an expected window for each rail, or just say "fast"?
8. **Custody model.** Who holds the money between your confirmation and the payout? What happens to it if the provider fails?
9. **Compliance scope.** Which checks does the provider run (KYC, KYB, sanctions screening, transaction monitoring, Travel Rule) and which stay with you?
10. **Developer experience and support.** Is there a REST API, public docs, a sandbox, SDKs, and a named onboarding contact?

The [30 due diligence questions](/resources/more/stablecoin-payments-provider-due-diligence) go deeper on points 8 and 9.

## How do the leading providers compare?

Each provider below solves a different version of the problem. The table uses only what each company publishes on its own site, checked in October 2026.

| Provider | What it is | Real-time payout rails named on its site | Published transaction pricing | Funding model | Best fit |
| --- | --- | --- | --- | --- | --- |
| **BlindPay** | Stablecoin payout and payin API | Pix, PIX Safe, SPEI, RTP (4,000+ US banks), Transfers 3.0; plus ACH, wire, TED, ACH Colombia, SEPA, and SWIFT (POBO/COBO) | Plans from $499/month on the [pricing page](/pricing); fees shown in every quote | Each payout funded when sent; no pre-funding, no minimum volume | Fintechs paying out to the US, LATAM, and Europe with stablecoins or USD |
| Wise Platform | Wise's payment network for banks, financial institutions, and enterprises | Not listed per rail; says "77% of instant payments take under 20 seconds; 96% under 24 hours" (Q1 FY27) | Not on the Platform page reviewed | Not stated on the page reviewed | Banks and enterprises that want broad currency coverage (160+ countries, 40+ currencies) |
| Airwallex | Business account and payouts platform | Not listed per rail; says 90%+ of transfers typically arrive the same day | US: SWIFT $15 to $25 per transfer; FX 0.5% above interbank for major currencies, 1.0% for others; custom pricing for Platform API | Holds balances in a multi-currency business account | Companies that also want a multi-currency business account |
| Thunes | Cross-border payout network | Not listed per rail; lists 85% immediate settlement | Not published; says "100% transparency on pricing and FX fees" | Not stated on the page reviewed | Large payout and remittance businesses that need wide reach (140 countries, 90 currencies) |
| Bridge (a Stripe company) | Stablecoin orchestration API | Lists ACH, FedNow, Wire, SEPA, SPEI, Pix, Faster Payments, Bre-B and bank transfer (COP) | No public pricing page found; developer fees configurable per transaction | Orchestration across wallets, virtual accounts, and transfers | Teams that also want stablecoin issuance, wallets, or cards |
| Circle Payments Network | Network connecting financial institutions for stablecoin settlement | Near real-time settlement in USDC and EURC between members | Not on the page reviewed | Members settle in stablecoins | Licensed banks, PSPs, and VASPs that meet Circle's eligibility rules |

Bridge rails are from Bridge's [supported fiat rails docs](https://apidocs.bridge.xyz/get-started/introduction/what-we-support/payment-routes). Airwallex figures are from its [US pricing page](https://www.airwallex.com/us/pricing). Wise figures are from the [Wise Platform page](https://wise.com/platform/), Thunes from [thunes.com](https://www.thunes.com/), and Circle from its [Circle Payments Network page](https://www.circle.com/cpn).

## Which provider is best for low-fee, real-time settlement?

BlindPay, for fintechs whose recipients are in the US, Latin America, or Europe. It's the option in this table that checks the most of the 10 points with public evidence.

Point by point:

- **Pricing is public.** Basic is $499 a month ($399 billed annually), Business is $1,999 a month ($1,599 annually), and Enterprise is custom. Per-payment fees show in the quote before you confirm.
- **FX is visible.** Every [payout quote](/docs/payout-quotes) returns `commercial_quotation` (the market rate), `blindpay_quotation` (the rate after BlindPay's fee), the flat fee, and the exact `receiver_amount`. The spread is one subtraction away.
- **No pre-funding, no minimum volume.** Payouts are funded from a wallet at send time. Payouts funded from a wallet you control stay non-custodial.
- **Instant rails where they exist.** Pix and SPEI settle in minutes and run 24/7. RTP reaches 4,000+ US banks. Settlement windows are published per rail in the [cut-off times](/docs/kb/cut-off-times) docs.
- **SWIFT for everything else.** SWIFT (POBO/COBO) reaches 100+ countries with UETR tracking and MT103 confirmations, up to 5 business days.
- **Compliance in the flow.** Every payment runs through a customer who has passed KYC or KYB, with transaction screening built in.
- **Developer tooling.** REST API, public docs, five official SDKs, and a free development instance.

Other providers in the table fit other jobs: Wise Platform, Airwallex, and Thunes for local payouts across many currencies in Asia and Africa, and Bridge for teams that also want to issue their own stablecoin.

## Which provider is best for Latin America corridors?

The one that pays out directly on each country's own rail. Latin America has some of the fastest domestic rails in the world, so a provider that ends on them gets real-time settlement for free.

BlindPay covers the four largest corridors on local rails: Pix and TED in Brazil, SPEI in Mexico, ACH Colombia, and Transfers 3.0 in Argentina. It also collects payins over Pix, SPEI, PSE, and Transfers 3.0. [Pix vs SPEI](/resources/more/pix-vs-spei) compares the two biggest rails.

Of the other providers, Bridge lists Pix, SPEI, and Colombian rails in its docs. The Wise Platform page lists Brazil among its eight markets with direct access to the domestic payment system. If Argentina matters to you, check each provider's coverage directly, since it's the least covered of the four.

## How do you run a fair pilot?

Test the same payment on every shortlisted provider and compare what the recipient gets. A five-step pilot takes about a week.

1. **Pick one real corridor and amount.** For example, $10,000 USD to MXN, paid to a supplier's CLABE.
2. **Request quotes at the same minute.** FX moves, so quotes taken an hour apart aren't comparable.
3. **Compare the amount received.** Total cost % = (amount sent in USD minus amount received converted at the mid-market rate) divided by amount sent, times 100.
4. **Send a small live payment.** Time it from confirmation to the recipient's bank credit. Do one on a weekday and one on a weekend.
5. **Check the paper trail.** Confirm you got a status webhook or notification, a payment reference, and a statement entry your finance team can reconcile.

**Worked example (illustrative numbers, not quotes).** Say the mid-market rate is 18.00 MXN per USD, so $10,000 is worth 180,000 MXN.

| Route | Rate offered | Fees | MXN received | Total cost |
| --- | --- | --- | --- | --- |
| Provider A | 17.82 (1.0% spread) | $0 | 178,200 | 1.0% |
| Provider B | 17.91 (0.5% spread) | $25 wire fee, deducted before conversion | 178,652 | 0.75% |
| Provider C | 17.10 (5% spread) | "$0 fees" | 171,000 | 5.0% |

Provider C has the lowest headline fee and the worst price. That's why the only number worth comparing is the amount received. [Hidden fees in international wires](/resources/more/hidden-fees-international-wires-our-sha-ben) lists where else the cost hides, and [the cost of cross-border payments in 2026](/resources/more/cross-border-payment-costs-2026) puts these percentages in context.

## How was this comparison made?

BlindPay wrote it, and BlindPay ranks first. We picked criteria that decide speed and cost for fintech payouts, then took every competitor fact from that provider's own website in October 2026. Where a provider didn't publish something, the table says "not on the page reviewed" rather than guessing.

Providers change pricing and coverage often. Check the links above before you rely on any line in the table. For broader shortlists, see [the best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026) and [the best stablecoin payment platforms for fintech](/resources/more/best-stablecoin-payment-platform-fintech-2026).

## What to do next

Write down your top three corridors and your typical ticket size, then run the five-step pilot above. To include BlindPay, create a free development instance and send a test payout with the [payout quickstart](/docs/quickstart-payout).

---

Source: https://blindpay.com/resources/more/handle-expired-quotes-typescript-python

---
title: "Quote-then-execute in TypeScript and Python: how to handle expired quotes and re-quotes"
seoTitle: "Handle expired payout quotes in TypeScript and Python"
description: "TypeScript and Python code for a stablecoin payout API: read expires_at, approve, execute with an idempotency key, and re-quote on QUOTES_EXPIRED."
date: "2026-10-08"
updated: "2026-10-08"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to execute a stablecoin payout quote and handle expiry"
  steps:
    - name: "Create the quote as late as possible"
      text: "Call POST /v1/instances/{instance_id}/quotes on the confirmation screen, with bank_account_id, currency_type, cover_fees, request_amount in minor units, network, and token. Save id and expires_at, which is in epoch milliseconds."
    - name: "Check the time left before every slow step"
      text: "Compute expires_at minus the current time before showing the confirm button and before sending the on-chain approval. If less time remains than the step needs, request a new quote instead of racing the clock."
    - name: "Approve the exact quoted amount"
      text: "For an external EVM wallet, call approve on the token contract with contract.blindpayContractAddress and contract.amount from the quote, and wait for the transaction to confirm. A managed wallet skips this step."
    - name: "Execute with an idempotency key"
      text: "POST /v1/instances/{instance_id}/payouts/evm with quote_id and sender_wallet_address, plus an Idempotency-Key header derived from the quote id. Send the exact same body bytes on every retry."
    - name: "Re-quote when the API says the quote expired"
      text: "If the response is 400 with code QUOTES_EXPIRED, nothing moved. Request a new quote, show the user the new receiver_amount, and execute against the new id. Cap the loop at a few attempts."
faq:
  - q: "What happens if I execute a payout with an expired quote?"
    a: "The API rejects it and no funds move. BlindPay returns a 400 with the error code QUOTES_EXPIRED and the legacy message quote_expired. Request a new quote, show the user the new numbers, and execute against the new quote id. Never retry the same expired id, because it will fail every time."
  - q: "Is expires_at in seconds or milliseconds?"
    a: "Milliseconds. BlindPay returns expires_at as epoch milliseconds on payin, payout, and transfer quotes. Compare it with Date.now() in JavaScript, or with time.time() x 1000 in Python. Dividing by 1,000 is only needed when a date library expects seconds, and forgetting the unit puts your countdown thousands of years in the future."
  - q: "Should the idempotency key be the same when I re-quote?"
    a: "No. Tie the key to the quote, for example payout-qu_123. Retries of the same quote reuse the key and the same body, so a network timeout cannot create two payouts. A new quote is a new request, so it gets a new key. Reusing a key with a different body returns 422 idempotency_key_payload_mismatch."
  - q: "How long is a BlindPay payout quote valid?"
    a: "Five minutes by default. Some rails can return a shorter window, and OTC payin quotes last 10 seconds. That is why the code reads expires_at from each response instead of hardcoding 300 seconds. Budget the time your user needs to read the amount plus the time your approval transaction needs to confirm."
  - q: "How do I test quote expiry before going live?"
    a: "Use a development instance with USDB on a testnet such as base_sepolia. Create a quote, wait until expires_at passes, then execute it and confirm your code receives QUOTES_EXPIRED and re-quotes. Development instances allow roughly 100 requests per minute, so add a pause between test loops to avoid 429 responses."
---

To handle quote expiry, read `expires_at` (epoch milliseconds) from every quote, check the time left before each slow step, and execute with an `Idempotency-Key`. If the API answers 400 with code `QUOTES_EXPIRED`, nothing moved: request a new quote, show the new numbers, and execute against the new id.

That's the whole pattern. The code below is the part people get wrong: the approval transaction that eats the window, the retry that creates a duplicate, and the countdown that is off by a factor of 1,000.

**Key takeaways**

- `expires_at` is epoch milliseconds. Compare it with `Date.now()`, or `time.time() * 1000` in Python.
- Check the time left before the user confirms and again before the on-chain approval. Re-quote instead of racing the clock.
- An expired quote returns 400 `QUOTES_EXPIRED`. No funds move, so re-quoting is always safe.
- Use one `Idempotency-Key` per quote and send byte-identical bodies on retry.
- Every re-quote is a new price. Show the new `receiver_amount` before executing again.

## What does the quote-then-execute flow look like?

Four calls, one clock. The quote locks the rate and fees for a window, and everything after it has to fit inside that window. At BlindPay a payout can only execute against a valid, unexpired quote ([payout quotes](/docs/payout-quotes)).

| Step | Call | What to read | Time it takes |
| --- | --- | --- | --- |
| 1. Quote | `POST /v1/instances/{instance_id}/quotes` | `id`, `expires_at`, `receiver_amount`, `contract` | Under a second |
| 2. User confirms | Your UI | Countdown from `expires_at` | Seconds to minutes |
| 3. Approve (external EVM wallet) | ERC-20 `approve` on-chain | Transaction receipt | One block confirmation |
| 4. Execute | `POST /v1/instances/{instance_id}/payouts/evm` | Payout `status`, or error `code` | Under a second |

A [managed wallet](/docs/payout-managed-wallet) skips step 3, which removes the slowest part of the budget. Either way the funding wallet needs the stablecoins at execute time, which is what [sizing a payout float](/resources/more/how-much-stablecoin-float-for-payouts) is about. For the terms used here, see the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary), and for why the window exists at all, [who carries FX risk in a stablecoin payout](/resources/more/who-carries-fx-risk-stablecoin-payout).

## How do you create a quote and read the expiry in TypeScript?

Create the quote on the confirmation screen, not earlier. A quote fetched while the user is still choosing a bank account has already spent part of its window.

```ts
// Node 18+ (global fetch), ethers v6. Placeholder ids; key from env.
import { ethers } from 'ethers'

const API = 'https://api.blindpay.com/v1'
const INSTANCE_ID = 'in_000000000000'
const headers = {
  'Authorization': `Bearer ${process.env.BLINDPAY_API_KEY}`,
  'Content-Type': 'application/json',
}

type Quote = {
  id: string
  expires_at: number // epoch MILLISECONDS
  commercial_quotation: number
  blindpay_quotation: number
  sender_amount: number // minor units
  receiver_amount: number // minor units
  flat_fee: number
  partner_fee_amount: number
  contract: { address: string, abi: any[], blindpayContractAddress: string, amount: string } | null
}

async function createQuote(bankAccountId: string, requestAmount: number): Promise<Quote> {
  const res = await fetch(`${API}/instances/${INSTANCE_ID}/quotes`, {
    method: 'POST',
    headers,
    body: JSON.stringify({
      bank_account_id: bankAccountId,
      currency_type: 'sender', // request_amount is the stablecoin side
      cover_fees: false,
      request_amount: requestAmount, // 10000 = 100.00
      network: 'base_sepolia', // production: 'base', 'polygon', ...
      token: 'USDB', // production: 'USDC' or 'USDT'
    }),
  })
  if (!res.ok)
    throw new Error(`quote failed: ${res.status} ${await res.text()}`)
  return res.json()
}

const msLeft = (quote: Quote) => quote.expires_at - Date.now()
```

Render the countdown from `msLeft(quote)`, not from a 300-second constant. Most windows are 5 minutes, but some rails return a shorter one ([cut-off times](/docs/kb/cut-off-times)).

## How do you approve and execute without racing the clock?

Check the time left before the approval and again before the execute call. The approval is an on-chain transaction, so it is the step most likely to push you past `expires_at`.

```ts
const APPROVAL_BUDGET_MS = 30_000 // how long your chain usually needs to confirm an approve

async function ensureAllowance(quote: Quote, wallet: ethers.Wallet) {
  const c = quote.contract!
  const token = new ethers.Contract(c.address, c.abi, wallet)
  const current: bigint = await token.allowance(wallet.address, c.blindpayContractAddress)
  if (current >= BigInt(c.amount))
    return // an earlier approval already covers this quote
  const tx = await token.approve(c.blindpayContractAddress, c.amount)
  await tx.wait()
}

type ExecResult =
  | { ok: true, payout: unknown }
  | { ok: false, expired: boolean, code?: string }

async function executePayout(quote: Quote, senderAddress: string): Promise<ExecResult> {
  const body = JSON.stringify({ quote_id: quote.id, sender_wallet_address: senderAddress })
  const res = await fetch(`${API}/instances/${INSTANCE_ID}/payouts/evm`, {
    method: 'POST',
    headers: { ...headers, 'Idempotency-Key': `payout-${quote.id}` },
    body, // reuse these exact bytes if you retry this quote
  })
  const json = await res.json()
  if (res.ok)
    return { ok: true, payout: json }
  return { ok: false, expired: json.code === 'QUOTES_EXPIRED', code: json.code }
}

export async function payWithFreshQuote(
  bankAccountId: string,
  requestAmount: number,
  wallet: ethers.Wallet,
  confirm: (quote: Quote) => Promise<boolean>, // shows receiver_amount and fees
) {
  for (let attempt = 1; attempt <= 3; attempt++) {
    const quote = await createQuote(bankAccountId, requestAmount)
    if (!(await confirm(quote)))
      return null // user declined the numbers
    if (msLeft(quote) < APPROVAL_BUDGET_MS)
      continue // too little time left: get a fresh price
    await ensureAllowance(quote, wallet)
    if (msLeft(quote) <= 0)
      continue
    const result = await executePayout(quote, wallet.address)
    if (result.ok)
      return result.payout
    if (!result.expired)
      throw new Error(`payout failed: ${result.code}`)
  }
  throw new Error('quote expired 3 times: check approval time and clock drift')
}
```

Two details worth copying. The `confirm` callback runs on every attempt, so a re-quote always shows the user the new `receiver_amount` before money moves. And `ensureAllowance` reads the existing allowance first, so a re-quote for a similar amount does not need a second approval.

One ERC-20 gotcha: the [EIP-20 standard](https://eips.ethereum.org/EIPS/eip-20) recommends setting an allowance to 0 before changing it to another value for the same spender, and USDT on Ethereum enforces that. If you fund from USDT on Ethereum, approve 0 first when an old allowance is still open.

The approval code follows BlindPay's [EVM payout tutorial](/docs/payout-evm), which uses [ethers v6](https://docs.ethers.org/v6/).

## What does the same flow look like in Python?

Same logic, with `requests` for HTTP and [web3.py](https://web3py.readthedocs.io/) v7 for the approval. Note the explicit `data=body`: the idempotency check hashes the raw bytes, so the body is serialized once and reused.

```python
import json, os, time
import requests
from web3 import Web3

API = "https://api.blindpay.com/v1"
INSTANCE_ID = "in_000000000000"
HEADERS = {
    "Authorization": f"Bearer {os.environ['BLINDPAY_API_KEY']}",
    "Content-Type": "application/json",
}

def create_quote(bank_account_id: str, request_amount: int) -> dict:
    r = requests.post(f"{API}/instances/{INSTANCE_ID}/quotes", headers=HEADERS, timeout=10, json={
        "bank_account_id": bank_account_id,
        "currency_type": "sender",
        "cover_fees": False,
        "request_amount": request_amount,  # 10000 = 100.00
        "network": "base_sepolia",
        "token": "USDB",
    })
    r.raise_for_status()
    return r.json()

def ms_left(quote: dict) -> int:
    return quote["expires_at"] - int(time.time() * 1000)  # expires_at is epoch ms

def ensure_allowance(quote: dict, w3: Web3, account) -> None:
    c = quote["contract"]
    token = w3.eth.contract(address=Web3.to_checksum_address(c["address"]), abi=c["abi"])
    spender = Web3.to_checksum_address(c["blindpayContractAddress"])
    if token.functions.allowance(account.address, spender).call() >= int(c["amount"]):
        return
    tx = token.functions.approve(spender, int(c["amount"])).build_transaction({
        "from": account.address,
        "nonce": w3.eth.get_transaction_count(account.address),
    })
    signed = account.sign_transaction(tx)
    w3.eth.wait_for_transaction_receipt(w3.eth.send_raw_transaction(signed.raw_transaction))

def execute_payout(quote: dict, sender: str) -> dict:
    body = json.dumps({"quote_id": quote["id"], "sender_wallet_address": sender})
    headers = {**HEADERS, "Idempotency-Key": f"payout-{quote['id']}"}
    for _ in range(3):
        try:
            r = requests.post(f"{API}/instances/{INSTANCE_ID}/payouts/evm",
                              headers=headers, data=body, timeout=30)
        except requests.Timeout:
            continue  # same key, same bytes: safe to resend
        if r.status_code == 409:  # idempotency_key_in_flight
            time.sleep(int(r.headers.get("Retry-After", "1")))
            continue
        payload = r.json()
        if r.ok:
            return {"ok": True, "payout": payload}
        return {"ok": False, "expired": payload.get("code") == "QUOTES_EXPIRED", "code": payload.get("code")}
    return {"ok": False, "expired": False, "code": "retries_exhausted"}

def pay_with_fresh_quote(bank_account_id, request_amount, w3, account, confirm, approval_budget_ms=30_000):
    for _ in range(3):
        quote = create_quote(bank_account_id, request_amount)
        if not confirm(quote):
            return None
        if ms_left(quote) < approval_budget_ms:
            continue
        ensure_allowance(quote, w3, account)
        if ms_left(quote) <= 0:
            continue
        result = execute_payout(quote, account.address)
        if result["ok"]:
            return result["payout"]
        if not result["expired"]:
            raise RuntimeError(f"payout failed: {result['code']}")
    raise RuntimeError("quote expired 3 times: check approval time and clock drift")
```

## How do retries and idempotency work with quotes?

Retries are safe when the key and the body match. BlindPay accepts an `Idempotency-Key` header of up to 255 characters on any mutating request under `/v1` and keeps a finished key for 24 hours ([idempotency docs](/docs/learn/idempotency)).

| Retry situation | What BlindPay returns | What your code does |
| --- | --- | --- |
| Same key, same body, first request finished | The original response, with `Idempotency-Replayed: true` | Treat it as the result |
| Same key, same body, first request still running | 409 `idempotency_key_in_flight` with `Retry-After` | Wait, then resend |
| Same key, different body | 422 `idempotency_key_payload_mismatch` | Bug: you rebuilt the body |
| First attempt returned a 5xx | Key released, not stored | Resend; it runs as a fresh attempt |
| Quote expired | 400 `QUOTES_EXPIRED` | New quote, new key |

Keying on the quote id gives you the right behavior for free: a timeout retry replays, and a re-quote starts clean. The response envelope, with `code`, `message`, `description`, and `trace_id`, is listed in the [API reference](https://api.blindpay.com/reference). Build on `code`, since `message` is a legacy string. The [idempotency keys guide](/resources/more/stablecoin-api-idempotency-keys) covers the pattern beyond quotes.

## Illustrative example: how much of a 5-minute window does one payout use?

Illustrative example. A finance user approves one payout funded from an external wallet on an EVM chain.

| Step | Time used | Window left (of 300,000 ms) |
| --- | --- | --- |
| Quote returned | 400 ms | 299,600 ms |
| User reads amount and confirms | 45,000 ms | 254,600 ms |
| Approval transaction confirms | 20,000 ms | 234,600 ms |
| Execute call | 600 ms | 234,000 ms |

Total: 400 + 45,000 + 20,000 + 600 = 66,000 ms, or 22% of the window. Comfortable.

Now shrink the window to 60,000 ms, as a short-window rail might return. The same steps need 66,000 ms, so the quote expires before execute. That's the case `APPROVAL_BUDGET_MS` catches: with 30,000 ms budgeted and only 14,600 ms left after confirmation, the loop re-quotes before sending a doomed approval. The user sees a refreshed amount instead of an error.

Clock drift matters at this scale. `expires_at` is set by BlindPay's clock and compared with yours, so keep servers on NTP and leave a few seconds of margin.

## How do you test expiry in development?

On a development instance, use USDB on a testnet such as `base_sepolia`. Development instances expose the same endpoints, fields, and response shapes as production, so the expiry path you test is the one you ship ([sandbox vs production](/docs/learn/sandbox-vs-production)).

1. Create a quote and log `expires_at`.
2. Wait until it passes.
3. Execute it and assert your code gets `QUOTES_EXPIRED` and re-quotes.
4. Execute a fresh quote twice with the same key and body, and assert the second response carries `Idempotency-Replayed: true`.
5. Pace the loop. Development instances allow roughly 100 requests per minute and answer 429 with `Retry-After` above that.

[Sandbox vs production for stablecoin APIs](/resources/more/stablecoin-api-sandbox-vs-production) lists what else a sandbox can and cannot exercise.

## What should happen after the payout executes?

Stop polling the quote and listen for webhooks. `payout.new` fires when the payout is created and the funds are captured, `payout.update` on intermediate steps, and `payout.complete` when it is confirmed at the destination or refunded. A `failed` payout fires `payout.update`, not `payout.complete`, so route on the status field ([webhook events](/docs/learn/webhooks-events)).

[Webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation) shows how to store the quote id next to the payout id so finance can match quoted and delivered amounts later. If you are new to the flow, [stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers fee direction and minor units, and [what goes on a quote screen](/resources/more/cross-border-quote-screen-fee-disclosure) covers the countdown UI.

## What to do next

Request a development instance key, paste the TypeScript or Python loop above, and run the expiry test in step 3 before writing any UI. The [EVM payout tutorial](/docs/payout-evm) has the full approval script these examples follow.

---

Source: https://blindpay.com/resources/more/how-to-fund-a-stablecoin-card

---
title: "How to fund a stablecoin card: exchanges, wallet transfers, virtual accounts, and bank deposits"
seoTitle: "How to fund a stablecoin card: 4 funding routes compared"
description: "Four ways to fund a stablecoin card, compared by speed, cost, and control: exchange withdrawal, wallet transfer, virtual account deposit, and card top-up."
date: "2026-10-08"
category: "stablecoins"
author: "BlindPay Team"
howto:
  name: "How to fund a stablecoin card from a bank account with a virtual account"
  steps:
    - name: "Find the card's funding details"
      text: "Look up which stablecoin and which blockchain the card program accepts, and the deposit address or wallet the card spends from."
    - name: "Verify the account holder"
      text: "Complete KYC for an individual or KYB for a business with the funding provider. Virtual accounts also go through a compliance and bank review."
    - name: "Link the settlement wallet"
      text: "Register the wallet that funds the card as the settlement destination, on a chain and token the card program accepts."
    - name: "Create the virtual account"
      text: "Request a US virtual account for the customer. Once approved, it has its own routing and account number."
    - name: "Send a bank transfer"
      text: "Send ACH, wire, or SWIFT to the account number like any other bank transfer. Each deposit creates its own payin record."
    - name: "Confirm delivery and spend"
      text: "The deposit converts to USDC or USDT and lands in the linked wallet. Check the card balance, then spend."
faq:
  - q: "What is the cheapest way to fund a stablecoin card?"
    a: "It depends on where your money starts. If you already hold USDC or USDT on the card's chain, a direct transfer costs only network gas. If your money is in a bank, compare the full conversion cost of an exchange, a virtual account, and the card's own top-up, including spreads and per-load fees."
  - q: "Can I fund a stablecoin card directly from my bank account?"
    a: "Yes, through a route that converts the bank transfer into stablecoins. Some card apps offer bank top-ups. A virtual account gives you a dedicated account number where every deposit converts to USDC or USDT and is sent to a linked wallet, so recurring funding works like paying any other bank account."
  - q: "Why did my stablecoin card deposit not show up?"
    a: "The most common causes are sending on the wrong blockchain, sending a token the card does not accept, or a deposit still waiting for confirmations or a compliance check. Check the card's supported chain and token before every transfer, and test with a small amount first."
  - q: "Do stablecoin card top-ups have fees?"
    a: "Many do. NGIBANK's March 2026 guide says prefunded cards often charge 1% to 2% per load above a free monthly allowance. Direct-balance cards that spend from a wallet may not charge per load, but conversion spreads and FX markups still apply when you spend."
  - q: "What is a virtual account for funding stablecoins?"
    a: "A virtual account is a bank account number issued in a customer's name that receives bank transfers and converts each deposit to a stablecoin. With BlindPay, US virtual accounts receive ACH, wire, and SWIFT and settle USDC or USDT to the wallet linked to the account."
---

You fund a stablecoin card by getting USDC or USDT into the wallet or balance the card spends from. There are four routes: buy on an exchange and withdraw, transfer from a wallet you already hold, deposit through a virtual account that converts bank transfers into stablecoins, or use the card app's own top-up. The best route depends on where your money starts.

Most guides stop at "send USDC to your card." That skips the hard part. Money usually starts in a bank account, and the cost, delay, and failure points sit in the conversion. This guide compares the routes and gives a step-by-step setup for recurring bank funding. For how the card works once it is funded, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Check the chain and token first. A card that accepts USDC on one chain cannot see USDC sent on another.
- A direct wallet transfer is the cheapest route if you already hold stablecoins on the right chain.
- Bank money needs a conversion. Exchanges, virtual accounts, and card top-ups each price it differently.
- Prefunded cards often charge 1% to 2% per load above a free allowance, per NGIBANK (March 2026).
- A virtual account turns funding into a normal bank transfer: every deposit converts and lands in the linked wallet.

## What does it mean to fund a stablecoin card?

Funding a stablecoin card means moving stablecoins into the balance the card authorizes against. Depending on the program, that balance is a wallet you control or an account the program holds for you.

Two definitions matter here:

- **Direct-balance card:** the card spends from a wallet balance at the moment of purchase. Funding the card means funding that wallet.
- **Prefunded card:** you load money onto the card ahead of time and spend from the loaded balance. Funding is a top-up, often with a fee.

[Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards) compares the two models in detail.

## Which chain and token does your card accept?

Check before you send anything. Card programs run on specific blockchains and accept specific stablecoins, and a deposit on the wrong chain will not appear.

Card activity is spread across several chains. a16z crypto's [August 7, 2026 analysis](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend) of Paymentscan data found Optimism carried about 29% of card volume, Solana and Base about 19% each, and Gnosis about 2%. The same analysis found USDC handled about 58% of volume and USDT about 26%. Dollar stablecoins now dominate. EURe went from about 88% in early 2024 to about 2%.

So a card on Base and a card on Solana need different deposits, even if both say "USDC." [Which stablecoin is best for card spending](/resources/more/best-stablecoin-for-card-spending) covers the token choice.

## What are the four ways to fund a stablecoin card?

The four routes differ in where the money starts and who handles the conversion.

1. **Exchange buy and withdraw.** Deposit fiat at an exchange, buy USDC or USDT, then withdraw to the card's deposit address on the right chain.
2. **Direct stablecoin transfer.** Send stablecoins you already hold from your own wallet to the card's wallet or deposit address.
3. **Virtual account deposit.** Send a bank transfer to a dedicated account number. The provider converts each deposit to stablecoins and sends them to a linked wallet.
4. **Card top-up.** Use the card app's own funding option, such as a bank transfer or debit card payment, and let the program convert.

## How do the funding routes compare?

Speed, cost, and control vary most. The table assumes funds start in a bank account for routes 1, 3, and 4, and in a wallet for route 2.

| Route | Speed | Cost to check | Control | Best for |
| --- | --- | --- | --- | --- |
| Exchange buy and withdraw | Bank deposit time plus withdrawal | Trading spread, trading fee, withdrawal fee | You hold funds at the exchange until you withdraw | Occasional large top-ups |
| Direct stablecoin transfer | Seconds to minutes onchain | Network gas only | You sign every transfer | People already paid in stablecoins |
| Virtual account deposit | Bank rail time, then conversion and onchain delivery | Provider fee and rate on each deposit, monthly account fee | Settles to a wallet you link | Recurring funding from a bank |
| Card app top-up | Varies by app | Often 1% to 2% per load above a free allowance | Funds sit in the program's balance | Small, occasional loads |

The top-up range comes from NGIBANK's [crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide) (March 2026). Fee pages vary by program, so check the live page of the card you use. [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) lists every line to check.

## When does a virtual account make sense for funding?

A virtual account makes sense when money arrives by bank transfer on a regular schedule: salary, client payments, or company spend budgets. It replaces "buy, withdraw, send" with one bank transfer.

A **virtual account** is a bank account number issued in a customer's name. Anyone can send money to it. Each deposit is converted to a stablecoin and delivered to the wallet linked to the account. The payer sees an ordinary bank account. The recipient sees stablecoins.

This helps two groups:

- **Individuals and freelancers** paid by US clients. A client pays a normal invoice to the account number, and the stablecoins land in the wallet that funds the card. [How freelancers spend USDC](/resources/more/how-freelancers-spend-usdc) covers the spending side.
- **Card programs and businesses.** A program can give each user or company its own account number for top-ups, so every deposit is matched to one customer without reference codes. [How virtual accounts automate reconciliation](/resources/more/virtual-account-reconciliation) shows how that matching works.

Watch three things. The settlement wallet must be on a chain and token the card accepts. Account approval takes time because of compliance and bank review. And each deposit carries a fee, so check the price on the amounts you actually send.

## How do you set up recurring bank funding, step by step?

The flow below uses a virtual account. It is the same whether you are an individual funding your own card or a program funding users' cards.

1. **Find the card's funding details.** Note the stablecoin, the blockchain, and the deposit address or wallet the card spends from.
2. **Verify the account holder.** Complete KYC for an individual or KYB for a business with the funding provider.
3. **Link the settlement wallet.** Register the wallet that funds the card as the destination, on a chain and token the card accepts.
4. **Create the virtual account.** Wait for compliance and bank approval. The account then gets its own routing and account number.
5. **Send a bank transfer.** Use ACH, wire, or SWIFT. Each deposit creates its own record.
6. **Confirm delivery.** The deposit converts to USDC or USDT and lands in the linked wallet. Check the card balance before you spend.
7. **Test small first.** Send a small amount once, confirm it shows on the card, then automate.

## What goes wrong when funding a stablecoin card?

Most failed top-ups come from the wrong chain, the wrong token, or a deposit stuck in review. A few checks prevent nearly all of them.

| Problem | Cause | Fix |
| --- | --- | --- |
| Deposit not on the card | Sent on a chain the card does not support | Confirm the chain before sending; ask the program about recovery |
| Wrong token | Sent USDT to a USDC-only card | Check the accepted token on the card's deposit screen |
| Deposit delayed | Bank rail cut-off, weekend, or compliance check | Check the rail's cut-off times; keep source of funds documents ready |
| Fee larger than expected | Per-load fee above a free allowance | Batch loads or use a route without per-load fees |
| Bank transfer returned | Wrong account details or name mismatch | Copy the account details exactly as issued |

## Where does BlindPay fit?

BlindPay supplies the funding leg. Its [virtual accounts](/docs/virtual-accounts) give a customer a US bank account in their own name that receives ACH, wire, and SWIFT, and every deposit converts to USDC or USDT and is sent to the linked wallet.

From the BlindPay docs as of this article's date:

- Each US virtual account costs $1.50 a month. Every deposit creates a payin, including $0.01 verification micro-deposits.
- New accounts go through a compliance review and then a bank review before they get real routing and account numbers.
- Settlement lands in the wallet linked to the account. USDT settlement needs a wallet on Polygon, Ethereum, or Solana, and the [supported chains reference](/docs/kb/supported-chains) lists which token runs on which chain.
- Payouts from an account issued to an end user are sent in that user's name, not a pooled name.
- For funding from Latin America, [payins](/docs/payins) collect Pix, SPEI, PSE, and Transfers 3.0 and deliver stablecoins.
- KYC and KYB run inside the same API, and SDKs cover Node.js, Python, Go, PHP, and Swift.

The card itself comes from a card issuer. BlindPay works alongside it on the money coming in, and on the way out through payouts over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO).

## What should you do next?

Write down the card's chain and token, then pick the route that matches where your money starts. If bank transfers are your main source, test a virtual account on a free development instance with the [payin quickstart](/docs/quickstart-payin), and confirm the stablecoins land on the chain your card reads.

## Sources

- a16z crypto, payment card stablecoin spend charts, August 7, 2026: [a16zcrypto.com](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend)
- NGIBANK, crypto debit card guide, March 3, 2026: [ngibank.com](https://www.ngibank.com/en/blog/crypto-debit-card-guide)
- Paymentscan, card program activity tracker: [paymentscan.xyz](https://paymentscan.xyz)

---

Source: https://blindpay.com/resources/more/cross-border-quote-screen-fee-disclosure

---
title: "How to show a cross-border payment quote to users: rate, fees, and expiry"
seoTitle: "Cross-border quote screen: rate, fees, expiry, disclosure"
description: "What a cross-border quote screen must show: amount sent, rate, fees, amount received, expiry, and delivery date, plus the CFPB and EU disclosure rules."
date: "2026-10-07"
updated: "2026-10-07"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to build a cross-border payment quote screen"
  steps:
    - name: "Ask which side is fixed"
      text: "Let the user choose between a fixed amount to send and a fixed amount to receive, and request the quote in that mode."
    - name: "Request a firm quote"
      text: "Call the quote endpoint with the amount, the recipient's bank account, and who pays the fees. Store the quote ID and its expiry."
    - name: "Render every line"
      text: "Show amount sent, each fee, total charged, exchange rate, amount received, and the estimated delivery date, all from the quote response."
    - name: "Run a countdown from the expiry"
      text: "Count down to the quote's expiry time. When it reaches zero, disable the confirm button and offer a new quote."
    - name: "Requote visibly"
      text: "Fetch a fresh quote and show the new numbers. Never swap in a different rate without the user seeing it before confirming."
    - name: "Confirm and issue a receipt"
      text: "Execute the payment against the quote ID, then show a receipt with the same figures, the payment reference, the status, and how to get help."
faq:
  - q: "What must a cross-border payment quote show?"
    a: "At minimum: the amount sent, every fee, the total charged, the exchange rate, the amount the recipient gets in their currency, when the quote expires, and when the money should arrive. For US consumer remittances the CFPB's Remittance Transfer Rule makes most of these mandatory before the sender pays, with the delivery date on the receipt."
  - q: "Does the CFPB Remittance Transfer Rule apply to business payments?"
    a: "The rule protects a sender who is a consumer sending money mainly for personal, family, or household purposes, so payments a company makes for business purposes generally fall outside it. Providers that made 500 or fewer remittance transfers in both the previous and current calendar year are also outside the provider definition. Confirm your own case with counsel."
  - q: "How many decimal places should the exchange rate show?"
    a: "For US consumer remittances, Regulation E requires the disclosed exchange rate to be rounded consistently for each currency to no fewer than two and no more than four decimal places. Outside that rule, four decimal places is a sensible default for most pairs, and the rate should always say which direction it runs, such as 1 USD = 5.3730 BRL."
  - q: "What should happen when a quote expires on screen?"
    a: "Disable the confirm button the moment the countdown hits zero, explain that rates move, and offer a one-click new quote. Show the refreshed numbers and make the user confirm again. Silently replacing an expired quote with a new rate at the moment of confirmation is the fastest way to lose trust."
  - q: "Should a quote screen show the mid-market rate?"
    a: "It helps. Showing the market rate next to your rate lets users see the margin, and EU rules already push card currency conversion toward a percentage markup over the ECB reference rate. At BlindPay, every quote returns commercial_quotation and blindpay_quotation, so you can display both without a separate data feed."
---

A cross-border quote screen should show six things before the user confirms: amount sent, every fee, the exchange rate, the amount the recipient gets, when the quote expires, and when the money arrives. US consumer remittances must show most of these by law. BlindPay quotes return each figure as a field, with a 5-minute expiry, so the screen can render straight from the response.

Most quote screens fail in the same three places. They hide the margin in the rate, they let an expired rate through, and they promise "instant" for a rail that takes days.

**Key takeaways**

- Show amount sent, fees, total, rate, amount received, expiry, and delivery estimate. Leave nothing for the user to compute.
- US consumer remittances fall under the CFPB Remittance Transfer Rule: pre-payment disclosure, receipt, 30-minute cancellation, and error resolution.
- The EU requires online credit transfers with currency conversion to show estimated conversion charges and the estimated total before the payment starts.
- Drive the countdown from the quote's expiry, disable confirm at zero, and requote visibly.
- Delivery estimates depend on the rail. Pix and SPEI land in minutes; ACH, SEPA, and SWIFT take business days.

## What should a cross-border quote screen show?

It should show every number the user needs to judge the payment, taken from one firm quote, so the user never has to calculate anything. Here is the full list and where each line comes from in a BlindPay payout quote ([payout quotes](/docs/payout-quotes)).

| Line on screen | Why it matters | BlindPay quote field |
| --- | --- | --- |
| You send | The amount debited or funded | `sender_amount` (minor units) |
| Fees, itemized | Separates your fees from provider fees | `flat_fee`, `partner_fee_amount`, `billing_fee_amount` |
| Total charged | What actually leaves the user's balance | Derived from the amounts above and `cover_fees` |
| Exchange rate, with direction | Shows the price of the currency | `blindpay_quotation` |
| Market rate (optional) | Makes the margin visible | `commercial_quotation` |
| Recipient gets | The number the recipient checks | `receiver_amount` (minor units) |
| Quote expires in | Tells the user the numbers are firm, but not forever | `expires_at` (epoch milliseconds) |
| Estimated arrival | Sets expectations per rail | From the rail; see [cut-off times](/docs/kb/cut-off-times) |
| Recipient | Name and masked account, so the user can spot a mistake | From the saved bank account |

Two formatting rules. Amounts come back as integers in minor units, so divide by 100 for USD, BRL, and MXN before display. And write the rate with its direction, such as "1 USD = 5.3730 BRL", because a bare "5.373" means nothing to someone comparing two apps.

[Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers the API side of these fields: what a quote locks, fee direction, and minor units. This page is about what the user sees.

## What does the CFPB Remittance Transfer Rule require?

For consumer remittances sent from the US, the CFPB's Remittance Transfer Rule (Regulation E, subpart B, 12 CFR 1005.30 to 1005.36) requires a disclosure before payment, a receipt after it, a 30-minute cancellation right, and an error resolution process.

**Who it covers.** A remittance transfer is an electronic transfer requested by a consumer to a recipient abroad, excluding transfers of $15 or less. The sender must be a consumer acting mainly for personal, family, or household purposes, so business-purpose payments generally fall outside it. A provider that made 500 or fewer remittance transfers in the previous calendar year and makes 500 or fewer in the current one is not treated as providing them in the normal course of business ([12 CFR 1005.30](https://www.law.cornell.edu/cfr/text/12/1005.30)).

**Pre-payment disclosure.** Before the sender pays, [12 CFR 1005.31](https://www.law.cornell.edu/cfr/text/12/1005.31) requires:

1. The transfer amount, in the currency the sender funds it with.
2. Fees and taxes the provider charges.
3. The total, the sum of the two.
4. The exchange rate, rounded consistently to between two and four decimal places.
5. Covered third-party fees, and the amount in the recipient's currency.
6. The total to recipient, in the recipient's currency.
7. A statement that fees or taxes charged by others may reduce what the recipient gets, where they may apply.

**Receipt.** Everything above, plus the date funds will be available, the recipient's name, a statement of error and cancellation rights, and contact details for the provider, the state regulator, and the CFPB.

**Cancellation.** The sender can cancel if the request arrives no later than 30 minutes after payment and the funds haven't been picked up or deposited. The provider refunds the full amount, fees included, within three business days ([12 CFR 1005.34](https://www.law.cornell.edu/cfr/text/12/1005.34)).

**Errors.** The sender has 180 days after the disclosed availability date to report an error, such as a wrong amount or funds that arrive late. The provider has 90 days to investigate ([12 CFR 1005.33](https://www.law.cornell.edu/cfr/text/12/1005.33)).

What this means for the screen: if you serve US consumers, the 30-minute window and the "date available" line belong in your product spec from day one. Adding them later means redesigning confirmation and receipt flows.

This is for information only and is not legal advice. Whether your product is a remittance transfer provider depends on your facts.

## What do EU rules require on a quote screen?

For online credit transfers that include a currency conversion, EU rules require the payer's provider to show the estimated conversion charges and the estimated total amount before the payment starts.

The requirement is Article 3b of Regulation (EC) No 924/2009, inserted by [Regulation (EU) 2019/518](https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32019R0518) and applied from 19 April 2020. The information has to be "clear, neutral and comprehensible". For card-based payments, the same regulation goes further and expresses conversion charges as a percentage markup over the latest [ECB euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html).

Even outside the EU, that percentage-over-reference format is a good pattern. Users understand "0.5% above the market rate" faster than two rates with four decimals each. [How to calculate FX spread](/resources/more/how-to-calculate-fx-spread) shows how to compute that number from a quote.

## How should the screen handle who pays the fee?

Decide which side of the payment is fixed, then show fees in a way that matches it. Two choices drive this: which amount the user types, and who absorbs the fees.

**Which amount is fixed.** A business paying a supplier invoice usually knows the amount the supplier must receive. A user sending money home usually knows how much they want to spend. Offer both modes. In BlindPay quotes, `currency_type: "sender"` fixes the stablecoin amount sent, and `currency_type: "receiver"` fixes the fiat amount the bank account receives.

**Who pays fees.** With `cover_fees: false`, fees are deducted from the fiat the recipient receives. With `cover_fees: true`, they are added on top of the amount sent, so the recipient gets the full figure. On screen:

| Mode | User types | Fees appear as | Recipient sees |
| --- | --- | --- | --- |
| Fixed receive, sender covers fees | R$10,000 to receive | Added to the amount sent | Exactly R$10,000 |
| Fixed send, recipient absorbs fees | $2,000 to send | Deducted before conversion | Less than $2,000 x rate |

For invoices, fixed receive with the sender covering fees is almost always right. A supplier who gets R$9,940 against a R$10,000 invoice will chase the gap, and your user pays for the follow-up. [Hidden fees in international wires](/resources/more/hidden-fees-international-wires-our-sha-ben) explains why the same problem shows up with SWIFT SHA and BEN charges.

## How should you handle quote expiry in the UI?

Run a visible countdown from the quote's expiry time, block confirmation when it reaches zero, and fetch a new quote that the user must confirm again. Never let an expired price through.

BlindPay payout and payin quotes expire after 5 minutes by default, and some rails can return less, such as SEPA payout quotes. `expires_at` is in epoch milliseconds, so compare it to `Date.now()` directly. Read it from every response instead of hardcoding 5 minutes.

A pattern that works:

1. **Start the timer from `expires_at`,** not from when the screen rendered. Network latency eats seconds.
2. **Leave a buffer.** Stop accepting confirmation a few seconds before expiry so the execute call lands while the quote is still valid.
3. **Disable, then explain.** "This rate expired. Rates change every few seconds. Get a new quote?"
4. **Show the new numbers.** If the rate moved, show what changed before the user confirms again.
5. **Requote on return.** If the user leaves the tab and comes back, check expiry immediately.

Short expiries are a feature. A provider that locks a rate for an hour has priced an hour of market risk into that rate. [Stablecoin FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes) explains the trade-off.

## What delivery estimate should the screen show?

Show an estimate per rail, adjusted for cut-offs and weekends, and never "instant" for a rail that runs on business days. The rail is the biggest driver of arrival time.

| Rail | Typical BlindPay payout timing |
| --- | --- |
| Pix (Brazil), SPEI (Mexico), Transfers 3.0 (Argentina) | Minutes; Pix and SPEI run 24/7 |
| RTP (US) | Instant |
| ACH, wire (US) | ACH about 2 business days; wire about 1 business day |
| TED (Brazil), ACH Colombia, SEPA | About 1 business day |
| SWIFT (POBO/COBO) | About 5 business days, after compliance documents are approved |

Source: [bank accounts](/docs/bank-accounts), [payment methods](/docs/kb/payment-methods), and [cut-off times](/docs/kb/cut-off-times). High volume can stretch any estimate, and payouts can be held for compliance review, so phrase it as "usually arrives by" rather than a promise. [Do stablecoin payouts work on weekends?](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays) covers the calendar side.

## What should the receipt and status screen show?

The receipt should repeat the exact quote figures, add a payment reference and status, and tell the user how to get help. It is the screen users come back to when something looks wrong.

- **The same numbers as the quote.** Amount sent, fees, rate, amount received. If they differ, you have a bug.
- **Status in plain words.** BlindPay payouts move through `processing`, `on_hold`, `completed`, `failed`, or `refunded`. Map each to a sentence. [Stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) has suggested wording.
- **A reference the recipient's bank understands.** For SWIFT payouts, show the UETR once it is populated; every bank in the chain uses it. BlindPay sends SWIFT payments on behalf of the customer (POBO/COBO) with UETR tracking and MT103 confirmations ([POBO and COBO](/docs/kb/pobo-cobo)).
- **A help path.** For US consumer remittances, the receipt must include error and cancellation rights and contact details.

## How does BlindPay help you build the quote screen?

Every line on the screen maps to a field in one BlindPay quote, so the UI renders from a single response and executes against the same quote ID.

- **One quote, every figure.** `sender_amount`, `receiver_amount`, `commercial_quotation`, `blindpay_quotation`, `flat_fee`, `partner_fee_amount`, and `expires_at` in one response.
- **Both fee modes.** `cover_fees` and `currency_type` support fixed-send and fixed-receive screens without extra math on your side.
- **Your margin, itemized.** A [partner fee](/docs/learn/partner-fees) adds your markup to the quote as its own line, so you can show it separately from BlindPay's fee.
- **Rails behind one call.** Pix, SPEI, ACH, RTP, SEPA, Transfers 3.0, ACH Colombia, and SWIFT (POBO/COBO), funded from stablecoins at send time with no pre-funding.

The disclosure duties themselves sit with whoever is the provider to the end user. BlindPay gives you the numbers; your product decides how to present them and which rules apply.

## What to do next

Sketch your quote screen against the table at the top of this page and mark any line you can't fill from a single quote. Then create a test quote from the [payout quickstart](/docs/quickstart-payout) and render it: amount sent, fees, rate with direction, amount received, and a countdown from `expires_at`. For the bigger picture, read [what real-time cross-border settlement is](/resources/more/what-is-real-time-cross-border-settlement).

---

Source: https://blindpay.com/resources/more/how-much-stablecoin-float-for-payouts

---
title: "How much USDC should you hold to fund payouts? Sizing a stablecoin float without pre-funding"
seoTitle: "How much USDC to hold to fund payouts: sizing your float"
description: "No pre-funding still means holding some USDC. How to size one stablecoin float for every payout corridor: lead time, safety stock, and a worked example."
date: "2026-10-07"
updated: "2026-10-07"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin float for payouts?"
    a: "It is the USDC or USDT a business keeps in its own wallet so it can fund payouts the moment they are executed. With a no pre-funding payout provider, nothing sits in destination countries, but the stablecoins still have to be in the funding wallet when you execute each quote. The float is that working balance."
  - q: "How do I calculate how much USDC to hold?"
    a: "Use float = average daily payout volume x top-up lead time in days + safety stock. Safety stock = 1.65 x the daily standard deviation of payouts x the square root of the lead time, which covers about 95% of days under a normal model. Recalculate monthly from your own payout history, not from a guess."
  - q: "Does one float cover Brazil, Mexico, and other corridors at once?"
    a: "Yes. The float holds dollar stablecoins, and each payout converts to BRL, MXN, COP, or another currency only when its quote executes. One pooled balance replaces one local balance per country, so busy and quiet corridors offset each other and the total buffer is smaller."
  - q: "What makes a payout float smaller?"
    a: "Faster top-ups, more than anything else. The float scales with how many days it takes to refill the wallet. Moving top-ups from a rail that can take up to 5 business days to one that settles the same day cuts the buffer by roughly three quarters in our illustrative example, far more than pooling corridors does."
  - q: "Can the idle float earn yield?"
    a: "On BlindPay it can, if the float sits in a managed wallet (beta, custodial) and yield is enabled on the instance. Idle USDC moves into a lending vault and is pulled back when a payout needs it. The rate is variable, can be zero, and carries smart contract and market risk, with a performance fee on gains."
---

A stablecoin float is the USDC or USDT you keep in your own wallet to fund payouts as they happen. Size it as average daily payout volume times the days it takes to refill the wallet, plus a safety buffer for busy days. One float covers every corridor, so it replaces a separate pre-funded account per country.

"No pre-funding" gets read as "no balance at all". Not quite. Nothing has to sit in Brazil or Mexico before you pay, but the stablecoins still have to be in the funding wallet when you press execute. The question is how much.

**Key takeaways**

- Float = average daily payouts x top-up lead time + safety stock.
- Safety stock = 1.65 x daily standard deviation x square root of lead time (about a 95% service level).
- One dollar float covers every corridor, because each payout converts only when its quote executes.
- Top-up speed moves the number most. In the example below, faster top-ups shrink the float from about $55,600 to about $13,600.
- The float is dollar exposure to a stablecoin issuer, not FX exposure, so treat issuer risk as part of the sizing decision.

## Why do you still need a float if there is no pre-funding?

Because a payout pulls stablecoins from a funding wallet at the moment it executes. No pre-funding removes the balances parked in destination countries. It does not remove the balance that pays for each conversion.

Pre-funding is a cost the industry names out loud. The Financial Stability Board lists "liquidity cost for prefunding" among the drivers of high cross-border payment costs in its [targets report](https://www.fsb.org/uploads/P131021-2.pdf). The traditional fix is a local account per corridor, topped up in advance. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) shows how that capital gets trapped.

With a stablecoin payout provider, you request a quote, the quote locks the rate and fees, and executing it pulls the quoted amount from your wallet. At BlindPay, the funding source is a managed wallet balance or an external wallet you control and authorize on-chain ([payouts docs](/docs/payouts)). Either way, the money has to be there.

| | Pre-funded local accounts | One stablecoin float |
| --- | --- | --- |
| Where money sits | One bank balance per destination country | One wallet in USDC or USDT |
| Currency of idle money | BRL, MXN, COP, ARS, and so on | Dollars |
| FX exposure on idle money | Yes, on every local balance | No, conversion happens at execution |
| Number of balances to watch | One per corridor | One |
| Refill method | Cross-border wire to each country | One on-ramp or stablecoin transfer |

## What is the formula for sizing a stablecoin float?

A float has two parts: cycle stock, which covers normal days until the next top-up lands, and safety stock, which covers the days that run hot. Same reorder math inventory teams use, applied to dollars.

- **Average daily payouts (D).** Total payout volume over a period, divided by the payout days in it.
- **Lead time (L).** Business days between deciding to top up and the stablecoins being spendable in the funding wallet.
- **Daily standard deviation (σ).** How much daily payout volume swings around the average.
- **Service level (z).** 1.65 covers about 95% of days under a normal model. 2.33 covers about 99%.

The formula:

- Cycle stock = D x L
- Safety stock = z x σ x √L
- Float = cycle stock + safety stock

Pull D and σ from at least 90 days of payout history. Recalculate before seasonal peaks such as payroll dates.

## How long does it take to refill the float?

Lead time depends on the rail you use to buy the stablecoins. At BlindPay, a bank deposit into the instance creates a payin that delivers USDC or USDT to the destination wallet, and the timing follows the rail ([overview](/docs/overview)).

| Top-up route | Documented receive timing at BlindPay | What it means for lead time |
| --- | --- | --- |
| RTP (US) | Instant | Same-day refill, L close to 1 |
| Pix (Brazil) | Instant, up to 5 minutes to confirm | Same-day refill from BRL |
| SPEI (Mexico) | Instant, up to 10 minutes to confirm | Same-day refill from MXN |
| ACH (US) | Up to 5 business days | Plan for L = 5 |
| Domestic wire (US) | Up to 5 business days | Plan for L = 5 |
| Stablecoins already held elsewhere | One on-chain transfer | Minutes, depending on the network |

RTP is the US rail worth planning around. [The Clearing House](https://www.theclearinghouse.org/payment-systems/rtp) runs it 24/7/365 with final settlement and a $10 million network limit per transaction, which is why it pulls lead time down toward one day.

Two details catch teams out. Business days are not calendar days: payouts over Pix and SPEI run on weekends, while ACH and wire top-ups do not ([cut-off times on weekends and holidays](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays)). And a deposit into a US [virtual account](/docs/virtual-accounts) turns into a payin automatically, so a standing transfer from your operating account can refill the float without anyone creating a quote.

## Illustrative example: how big a float does $200,000 a month need?

Illustrative example. A company pays out $200,000 a month over 22 business days: $80,000 to Brazil, $60,000 to Mexico, $30,000 to Colombia, and $30,000 to Argentina. Daily standard deviations are $1,800, $1,500, $1,000, and $1,000. Service level z = 1.65.

**Pre-funded model, refilled every 5 business days, one balance per country:**

| Corridor | Daily average | Cycle stock (x5) | Safety stock (1.65 x σ x √5) | Balance |
| --- | --- | --- | --- | --- |
| Brazil | $3,636 | $18,182 | $6,641 | $24,823 |
| Mexico | $2,727 | $13,636 | $5,534 | $19,171 |
| Colombia | $1,364 | $6,818 | $3,690 | $10,508 |
| Argentina | $1,364 | $6,818 | $3,690 | $10,508 |
| **Total** | $9,091 | | | **$65,009** |

**One pooled stablecoin float.** Daily average is $200,000 / 22 = $9,091. Pooled σ, assuming corridors move independently, is √(1,800² + 1,500² + 1,000² + 1,000²) = √7,490,000 = $2,737.

- Top-ups over ACH (L = 5): 9,091 x 5 + 1.65 x 2,737 x √5 = 45,455 + 10,097 = **$55,552**
- Top-ups over RTP (L = 1): 9,091 x 1 + 1.65 x 2,737 x 1 = 9,091 + 4,516 = **$13,607**

Pooling saves about $9,500 (15%). Faster top-ups save about $42,000 more. What's interesting here is the order of the effects: the float shrinks most when refills get faster, not when corridors share a balance.

At an illustrative 5% annual cost of capital, the difference between $65,009 in four local currencies and $13,607 in dollars is about $2,570 a year, before any FX loss on the local balances.

## Where should the float sit?

The float sits wherever your payouts are funded from, on the same network and token you quote with. A quote is priced for a specific `network` and `token` pair, so a float on Ethereum cannot fund a quote created for Solana. [Does the network change your off-ramp quote?](/resources/more/does-network-change-offramp-quote) covers how that choice shows up in fees.

| Location | Who controls the keys | How a payout pulls funds |
| --- | --- | --- |
| Your own wallet (self-custody or a wallet provider) | You | You authorize the exact quoted amount on-chain, for example an ERC-20 `approve` on EVM chains |
| BlindPay managed wallet (beta) | BlindPay, as custodian | One API call, no on-chain signing |

BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.

If the float sits in a managed wallet, idle USDC on Base or Polygon can earn [yield](/docs/yield) once BlindPay enables it on the instance. Payouts still work: BlindPay redeems from the vault when the idle balance is short, which adds processing time. The rate is variable, can be zero, and the vault carries smart contract and market risk.

## When should you top up the float?

Top up when the balance falls to the reorder point, which equals the float formula itself: D x L + safety stock. Above that line you have enough to cover the lead time. Below it, a busy stretch can leave a payout unfunded.

A simple rule set:

1. Set the reorder point to D x L + z x σ x √L for your main top-up rail.
2. Check the funding wallet balance after each `payout.complete` webhook, or on a schedule.
3. When the balance crosses the reorder point, send a top-up worth one cycle of payouts (D x L).
4. Recalculate D and σ every month.

Refunds feed the float too. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Count pending refunds as incoming, not as cash on hand.

## What does holding a float cost?

Two things: the return you give up on the idle balance, and exposure to the stablecoin issuer. The first is the cost of capital times the float. The second is why the float should be sized, not maximized.

USDC's issuer says each token is backed by cash and cash-equivalent reserves and redeemable 1:1 for US dollars, and publishes reserve reports on its [transparency page](https://www.circle.com/transparency). A peg can still wobble under stress. [Stablecoin depeg risk in payments](/resources/more/stablecoin-depeg-risk-payments) walks through what that means for a working balance, and [who carries FX risk in a stablecoin payout](/resources/more/who-carries-fx-risk-stablecoin-payout) explains why the float itself carries no FX risk until a quote executes.

A float sized with the formula keeps both costs bounded. A float sized by habit ("keep a month on hand") usually carries three or four times what the lead time requires.

For the bigger picture of why pre-funding exists at all, read [what no pre-funding means in a stablecoin API](/resources/more/no-pre-funding-stablecoin-payouts), and for the vocabulary used here, the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

## What to do next

Export the last 90 days of payouts, compute the daily average and standard deviation, and plug them into D x L + 1.65 x σ x √L for the top-up rail you use today. Then run it again with a same-day rail. The gap between the two numbers is the capital a faster refill would free. The [payouts docs](/docs/payouts) show how each funding source is authorized.

---

Source: https://blindpay.com/resources/more/stablecoin-payments-statistics-2026

---
title: "Stablecoin payment statistics 2026: volume, B2B share, and cross-border data"
seoTitle: "Stablecoin payment statistics 2026: B2B and cross-border"
description: "Sourced stablecoin payment statistics for 2026: real payment volume vs transfer volume, B2B share, domestic vs cross-border, top markets, and chains."
date: "2026-10-07"
updated: "2026-10-12"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "How big are stablecoin payments in 2026?"
    a: "Allium's State of Stablecoins and Payments report (September 15, 2026) puts stablecoin payments at between $401 billion and $527 billion from January to August 2026, up 42% to 63% on the previous year. For full-year 2025, BCG's January 2026 white paper estimated about $350 to $550 billion of real economy payments and calls its figures lower bounds."
  - q: "What share of stablecoin volume is actually payments?"
    a: "A small one. Allium (September 2026) counts $85 trillion of stablecoin transfers from January to August 2026, but only $4.0 trillion of real economic activity after removing exchange-internal, DeFi, and infrastructure transfers. Of that adjusted volume, trading was 69%, store of value 13%, and payments up to 13%. Headline transfer volume is not a payments number."
  - q: "Are stablecoin payments mostly cross-border?"
    a: "No. Allium's September 2026 report found that 61% of geographically attributed stablecoin payment volume was domestic. B2B transfers had the highest cross-border share, at 43%. Cross-border use is growing faster, though: Allium and FXC Intelligence report that cross-border stablecoin payments grew 64% in 2025, against 9% for fiat payments."
  - q: "What share of cross-border payments use stablecoins?"
    a: "About 0.31% of retail cross-border payment value in 2025, according to Allium and FXC Intelligence (July 30, 2026): $135 billion of a $44.3 trillion market, up from $82 billion and 0.2% in 2024. The share is higher where consumers are involved, at 0.95% for C2C and 0.89% for B2C, and lowest for B2B at 0.19%."
  - q: "How much of stablecoin payment volume is B2B?"
    a: "B2B is the largest lane. Allium's September 2026 report sizes B2B settlement at $137 billion to $153 billion from January to August 2026, and says businesses receive 58% to 64% of all stablecoin payments. BCG's January 2026 white paper estimated B2B at about 40% of 2025 real economy stablecoin payments, growing about 65% a year."
  - q: "Which blockchain carries the most stablecoin payments?"
    a: "TRON. BCG's January 2026 white paper estimates TRON carried about $235 to $375 billion of real economy stablecoin payments in 2025, but its share fell from about 74% in January 2025 to about 60% by year end. BCG attributes newer growth to more regulated entities using chains such as BNB Smart Chain, Ethereum, Solana, and Polygon."
---

Stablecoin payments reached between $401 billion and $527 billion from January to August 2026, up 42% to 63% year over year, according to Allium's September 2026 report. That is a small slice of $85 trillion in total stablecoin transfers. Businesses receive most payments, B2B is the largest lane, and 61% of attributed volume stays domestic.

Stablecoin numbers get quoted badly. A trillion-dollar transfer figure ends up in a slide about payments, a range becomes a single number, and a 2025 estimate gets cited as 2026. This page collects the figures from three primary research sources, keeps every range intact, and names the source and date next to each number.

**Key takeaways**

- Total transfer volume is not payment volume. Allium counts $85 trillion of transfers in January to August 2026 and $4.0 trillion of real economic activity.
- Payments are growing fast from a small base: $401 billion to $527 billion in eight months of 2026, up 42% to 63% (Allium, September 2026).
- Businesses are the main users. They receive 58% to 64% of stablecoin payments, and B2B is the largest lane.
- Most attributed payment volume is domestic (61%), but cross-border stablecoin payments grew 64% in 2025 against 9% for fiat.
- Stablecoins were 0.31% of retail cross-border payment value in 2025. Real, growing, and still tiny.

For how the pieces behind these numbers fit together, start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure).

## What are the headline stablecoin payment statistics for 2026?

The headline figures come from Allium's [State of Stablecoins and Payments report](https://www.allium.so/reports/state-of-stablecoins-and-payments-september-2026), published September 15, 2026, with full-year 2025 context from [BCG's white paper with Allium Labs](https://www.bcg.com/assets/2026/white-paper-stablecoin-payments-truth-behind-numbers.pdf) (January 2026) and [Allium's report with FXC Intelligence](https://www.allium.so/reports/stablecoins-cross-border-payments-2026) (July 30, 2026).

| Metric | Figure | Period | Source |
| --- | --- | --- | --- |
| Stablecoin payments | $401B to $527B, up 42% to 63% | Jan to Aug 2026 | Allium, Sep 2026 |
| Total stablecoin transfer volume | $85T | Jan to Aug 2026 | Allium, Sep 2026 |
| Real economic activity in that volume | $4.0T | Jan to Aug 2026 | Allium, Sep 2026 |
| Share of payments received by businesses | 58% to 64% | Jan to Aug 2026 | Allium, Sep 2026 |
| B2B settlement lane | $137B to $153B | Jan to Aug 2026 | Allium, Sep 2026 |
| Domestic share of geo-attributed payment volume | 61% | Jan to Aug 2026 | Allium, Sep 2026 |
| Cross-border share of B2B transfers | 43% | Jan to Aug 2026 | Allium, Sep 2026 |
| Stablecoin share of retail cross-border value | 0.31% ($135B of $44.3T) | 2025 | Allium and FXC Intelligence, Jul 2026 |
| Cross-border growth, stablecoins vs fiat | 64% vs 9% | 2025 | Allium and FXC Intelligence, Jul 2026 |
| Real economy stablecoin payments | About $350B to $550B (lower bound) | 2025 | BCG, Jan 2026 |
| Stablecoin supply | $303B, up 6% year over year | Aug 2026 | Allium, Sep 2026 |

## How much stablecoin volume is real payments?

Only a small share. Most onchain stablecoin volume is trading, exchange movements, DeFi, and protocol plumbing, not payments for goods and services.

Allium's September 2026 report counts $85 trillion of stablecoin transfer volume from January to August 2026, but only $4.0 trillion of real economic activity once exchange-internal, DeFi, and infrastructure transfers are removed. Within that adjusted $4.0 trillion, Allium attributes 69% to trading, 13% to store of value, and up to 13% to payments.

BCG's January 2026 white paper reached a similar picture for 2025: more than $62 trillion of stablecoin transfers, of which about $4.2 trillion, or about 7%, was real economic activity. BCG then identified about $350 to $550 billion of observable payments for goods and services in 2025, and says those flows grew about 60% between 2024 and 2025.

So the honest one-line version: stablecoin transfer volume is in the tens of trillions, stablecoin payment volume is in the hundreds of billions.

## Who sends and receives stablecoin payments?

Businesses. Allium's September 2026 report says businesses receive 58% to 64% of stablecoin payments, and B2B settlement is the largest single lane at $137 billion to $153 billion from January to August 2026.

Corporate operations lead the use cases. In the same report, Allium counts $56 billion in service fees, $43 billion in payroll, and $28 billion in supplier payments, all ahead of $19 billion in retail purchases.

BCG's January 2026 white paper splits 2025 real economy payments by segment:

| Segment | Share of 2025 real economy stablecoin payments | Growth rate (BCG CAGR) | Typical use (BCG) |
| --- | --- | --- | --- |
| B2B | About 40% | About 65% | Treasury, intercompany funding, supplier settlement, platform payouts |
| C2C | About 25% | About 75% | Remittances and peer-to-peer transfers |
| C2B | About 25% | About 55% | Consumers paying for digital and cross-border services |
| B2C | About 10% | About 50% | Contractor payments, creator earnings, refunds |

BCG explains the B2B lead with 24/7 settlement, speed, finality, and USD settlement without correspondent banking, which matter most when banks are closed on weekends and holidays.

## Are stablecoin payments mostly cross-border or domestic?

Mostly domestic, by Allium's count. Its September 2026 report found 61% of geographically attributed stablecoin payment volume was domestic, while B2B transfers had the highest cross-border share at 43%.

Cross-border is where the growth is. Allium's July 30, 2026 report with FXC Intelligence sized stablecoins at $135 billion of the $44.3 trillion retail cross-border payments market in 2025, or 0.31%, up from $82 billion and 0.2% in 2024. Stablecoin cross-border volume grew 64% in 2025, against 9% for fiat.

The same report shows adoption follows consumer involvement, not segment size:

| Cross-border segment (2025) | Stablecoin penetration | Stablecoin cross-border growth |
| --- | --- | --- |
| C2C | 0.95% | 44% |
| B2C | 0.89% | 62% |
| B2B | 0.19% | 69% |
| C2B | No data | 72% |
| All retail cross-border | 0.31% | 64% (fiat: 9%) |

B2B is 79% of fiat cross-border flow but 49% of stablecoin cross-border flow, according to Allium and FXC Intelligence. That gap is the opportunity most B2B payment companies are looking at. It is also a reminder that business cross-border payments still run overwhelmingly on banks. [Stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments) covers when each rail makes sense.

## Where are stablecoin payments growing fastest?

In emerging markets and trade hubs. Allium's September 2026 report estimates that wallets in Thailand received $10.8 billion in payments through August 2026, followed by Turkey at $7.8 billion, Indonesia at $6.3 billion, and Mexico at $6.1 billion.

Allium and FXC Intelligence (July 2026) found that Taiwan to Turkey, Taiwan to Indonesia, and Turkey to Indonesia together carried about 13% of stablecoin cross-border payments in 2025. They tie most of the flow to two conditions: FX, inflation, and capital-control stress in markets such as Turkey, Ukraine, Mexico, and Indonesia, and deep crypto trading ecosystems in Taiwan and South Korea. On the Mexico to US corridor, the dominant stablecoin flow runs opposite to traditional remittances, which the report reads as demand for dollars.

Agent payments are a new, small lane. Allium's September 2026 report counts 29 million monthly transfers on the x402 protocol in August 2026, averaging 6 cents per payment.

## Which blockchains carry stablecoin payments?

TRON carries the most, but its share is falling. BCG's January 2026 white paper estimates TRON carried about $235 to $375 billion of real economy stablecoin payments in 2025, with its share dropping from about 74% in January 2025 to about 60% by year end as absolute volume kept growing.

BCG estimates 2025 payment volume on other chains at about $35 to $50 billion on BNB Smart Chain, $20 to $35 billion on Ethereum, $20 to $35 billion on Solana, and $8 to $10 billion on Polygon. It reads the shift as newer growth coming from larger, more regulated entities that weigh compliance and integration alongside fees.

On the supply side, Allium's September 2026 report puts total stablecoin supply at $303 billion in August 2026, up 6% year over year, with Tether and Circle accounting for 85% of it. Payments grew far faster than supply.

## How should you read stablecoin payment statistics?

Read every stablecoin statistic for what it measures, over which period, and against which total. Most misquotes come from mixing those three.

1. **Separate transfers from payments.** $85 trillion is transfer volume. $401 billion to $527 billion is payments. Never put the first number on a payments slide.
2. **Keep ranges as ranges.** Allium reports payments as $401 billion to $527 billion. Quote "at least $401 billion" or the full range, not a midpoint.
3. **Check the period.** Allium's 2026 figures cover January to August. BCG's figures cover full-year 2025. They are not directly comparable.
4. **Check the denominator.** The 0.31% share is of the $44.3 trillion retail cross-border market, not of all payments. BCG compares stablecoin payments to a $200 trillion global payments market.
5. **Treat estimates as lower bounds where the source says so.** BCG says its payment figures should be read as lower bounds, and it excludes card-based stablecoin spending and internal exchange settlements.
6. **Note what "attributed" means.** The 61% domestic figure covers only volume that could be tied to a geography, not every payment.

## What do these statistics not tell you?

They describe onchain activity, so they miss most of what a payments team needs to price a corridor.

- **Off-chain legs are invisible.** Onchain data shows the stablecoin transfer, not the bank deposit before it or the local payout after it. Settlement time and cost to the recipient depend on those legs.
- **Classification is probabilistic.** BCG and Allium label flows by wallet behavior. BCG left about $950 billion of 2025 activity unclassified on purpose.
- **No cost data.** None of these figures tell you what a payment costs end to end. [Stablecoin cross-border payment savings](/resources/more/stablecoin-cross-border-payments-savings) breaks down where cost sits.
- **Sources overlap.** BCG's paper uses Allium data, and the FXC Intelligence report uses Allium's payments layer. Three citations are not three independent measurements.
- **Numbers change fast.** These are 2025 and January to August 2026 figures. Expect revisions as coverage improves.

## What do the numbers mean for a payments team?

They say the use case that is actually working is business money movement, paid out to a bank account. B2B is the largest lane, payroll and supplier payments are among the biggest categories, and cross-border B2B is growing from a very low share.

That pattern matches where a payout API sits. BlindPay is one example: it converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations, and settles on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, per its [supported chains reference](/docs/kb/supported-chains). The onchain leg is the fast part. The payout rail at the end decides when the recipient can spend the money, which none of the statistics above measure.

If these numbers make the case for a pilot, the [30-day stablecoin API evaluation plan](/resources/more/stablecoin-api-30-day-evaluation-plan) turns it into measured cost and settlement time on your own corridor.

For card spending specifically, which most payment datasets leave out, see the [state of stablecoin cards 2026](/resources/more/stablecoin-card-statistics-2026) report.

---

Source: https://blindpay.com/resources/more/visa-mastercard-stablecoin-settlement

---
title: "Visa and Mastercard stablecoin settlement explained: what changed in 2025 and 2026"
seoTitle: "Visa and Mastercard stablecoin settlement explained"
description: "How Visa's USDC settlement and $7B run rate, Mastercard's BVNK deal, and INFINIOS in Bahrain change card settlement, and what stays the same for payouts."
date: "2026-10-07"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is Visa stablecoin settlement?"
    a: "Visa stablecoin settlement lets issuers and acquirers settle what they owe Visa in a stablecoin such as USDC instead of dollars over bank rails. Visa launched it in the United States on December 16, 2025, with Cross River Bank and Lead Bank settling in USDC over the Solana blockchain."
  - q: "How big is Visa's stablecoin settlement?"
    a: "Visa said on April 29, 2026 that its stablecoin settlement pilot supports nine blockchains and reached a $7 billion annualized run rate, up 50% since the previous quarter. That figure measures settlement between Visa and its partners. It is not card spending and should never be added to card volume."
  - q: "Did Mastercard buy BVNK?"
    a: "Yes. Mastercard announced the acquisition of BVNK, a stablecoin payments infrastructure company, on March 17, 2026, reported at up to $1.8 billion including up to $300 million contingent. Mastercard said it completed the acquisition on August 3, 2026."
  - q: "Does stablecoin settlement change anything for cardholders?"
    a: "Very little that a cardholder can see. Authorization, clearing, and merchant payout look the same. Settlement is the back-office leg where issuers and acquirers pay each other through the network, so the change mostly affects treasury, funding times, and liquidity for the banks and programs involved."
  - q: "Is $7 billion in stablecoin settlement the same as stablecoin card spending?"
    a: "No. Visa reported about $5.2 billion of stablecoin-linked card volume for all of 2025, which measures purchases on cards. The $7 billion annualized run rate measures settlement flows between Visa and its partners. They are different measures from different dates and cannot be added together."
---

Visa and Mastercard now let banks and card programs settle with the network in stablecoins. Visa launched USDC settlement in the United States on December 16, 2025 and reported a $7 billion annualized settlement run rate on April 29, 2026. Mastercard completed its acquisition of BVNK on August 3, 2026. Cardholders and merchants see almost no difference.

That last point gets lost in the coverage. Network stablecoin settlement is a back-office change. It moves the money that issuers and acquirers owe each other, not the money that reaches a merchant's bank or a recipient's account. This guide explains what each network has done, with dates and sources, and what it means for businesses that move money across borders. For how stablecoin cards themselves work, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Visa launched USDC settlement in the US on December 16, 2025, with Cross River Bank and Lead Bank settling over Solana.
- Visa's settlement pilot reached a $7 billion annualized run rate across nine blockchains by April 29, 2026. That is settlement, not card spend.
- Stablecoin-linked Visa cards processed about $5.2 billion in 2025, roughly 0.04% of Visa's $14.2 trillion volume.
- Mastercard completed its acquisition of BVNK on August 3, 2026, and INFINIOS became the first issuer in Bahrain to settle with Mastercard in stablecoins.
- Network settlement does not pay a supplier, an employee, or a family member. Those payments still run over local bank rails.

## What is card network settlement?

Card network settlement is the step where issuers and acquirers pay each other for the day's card transactions, with the network in the middle. It happens after the purchase is approved and cleared, usually the next business day.

A few definitions help:

- **Issuer:** the bank or licensed institution behind the cardholder's card.
- **Acquirer:** the bank or processor that serves the merchant and pays it.
- **Clearing:** the step where the merchant submits final transaction amounts.
- **Settlement:** the movement of funds between issuers, the network, and acquirers to cover cleared transactions.
- **Settlement run rate:** a recent period's settlement volume projected to a full year. It describes pace, not a completed annual total.

In a traditional card program, settlement moves in fiat over banking rails. A stablecoin card program first converts the cardholder's stablecoins to fiat, then settles like any other program. [How stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle) walks through each step with worked examples.

## What are the two settlement models for stablecoin cards?

There are two. In the traditional model, the card program converts stablecoins to fiat and settles with the network in fiat. In the newer model, the issuer settles with the network directly in a stablecoin.

| | Traditional model | Stablecoin settlement model |
| --- | --- | --- |
| What the issuer pays the network in | Fiat, over banking rails | A stablecoin such as USDC |
| Who converts stablecoins | The card program, before settlement | Handled closer to the network side |
| Typical timing | Next business day | Set by the network's settlement program |
| What the merchant receives | Local currency | Local currency |
| What the cardholder sees | A normal card purchase | A normal card purchase |

The merchant row is the same in both. Merchants are paid in local currency on their normal schedule and never touch the stablecoin.

## What has Visa announced, and when?

Visa has moved in four public steps since April 2025. Each one is dated and sourced below.

1. **April 30, 2025.** Visa and Bridge [announced a partnership](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html) to issue stablecoin-linked cards, starting with Argentina, Colombia, Ecuador, Mexico, Peru, and Chile.
2. **December 16, 2025.** Visa [launched stablecoin settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html). Initial banking participants Cross River Bank and Lead Bank began settling with Visa in USDC over Solana. Visa reported a $3.5 billion annualized run rate as of November 30, 2025, and said broader US availability was planned through 2026.
3. **March 31, 2026.** Visa's [stablecoin-linked cards page](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement) reported about $5.2 billion of stablecoin-linked card volume in 2025, up 319% year over year, across more than 130 programs in more than 50 countries. Visa expects the number of programs to roughly double in 2026.
4. **April 29, 2026.** Visa said its settlement pilot [added five blockchains](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), now supports nine, and reached a $7 billion annualized stablecoin settlement run rate, up 50% since the prior quarter.

The run rate doubled from $3.5 billion to $7 billion between November 2025 and April 2026. That is growth in settlement flows, not in purchases.

## What has Mastercard done?

Mastercard's biggest move was buying a stablecoin infrastructure company. It also has issuers settling with it in stablecoins.

Mastercard announced its acquisition of BVNK on March 17, 2026, reported by [The Block](https://www.theblock.co/post/393898/mastercard-to-acquire-stablecoin-infrastructure-firm-bvnk-for-up-to-1-8-billion) at up to $1.8 billion, including up to $300 million contingent. Mastercard [said it completed the acquisition](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx) on August 3, 2026. BVNK describes itself as enterprise stablecoin payments infrastructure, with products that include linking virtual cards to stablecoin balances.

The same day, Mastercard announced that [INFINIOS went live](https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2026/august/infinios-goes-live-with-mastercard-on-stablecoin-settlement-marking-a-first-for-issuers-in-the-kingdom-of-bahrain) on stablecoin settlement. The company described itself as the first issuer in Bahrain to enable Mastercard settlement using stablecoins.

## How do the Visa and Mastercard moves compare?

Visa has published settlement volume and named US bank participants. Mastercard has bought a stablecoin platform and named an issuer settling in stablecoins. Both still pay merchants in local currency.

| Date | Network | Move | What it measures or changes |
| --- | --- | --- | --- |
| April 30, 2025 | Visa | Bridge card partnership in Latin America | Card issuing, six launch countries |
| December 16, 2025 | Visa | US USDC settlement launch | Issuers settle with Visa in USDC over Solana |
| March 17, 2026 | Mastercard | BVNK acquisition announced | Up to $1.8 billion, per reports |
| March 31, 2026 | Visa | 2025 card volume published | About $5.2 billion of card spend |
| April 29, 2026 | Visa | Settlement pilot expanded | Nine blockchains, $7 billion run rate |
| August 3, 2026 | Mastercard | BVNK acquisition completed | Stablecoin infrastructure inside Mastercard |
| August 3, 2026 | Mastercard | INFINIOS live in Bahrain | Issuer settles with Mastercard in stablecoins |

## Why is $7 billion in settlement not the same as card spend?

The two numbers measure different flows. Card spend counts purchases made with stablecoin-linked cards. Settlement counts money that banks and programs move to the network to cover obligations. Adding them double counts and mixes periods.

Visa's $5.2 billion figure covers stablecoin-linked card purchases for all of 2025. The $7 billion figure is an annualized settlement pace measured in April 2026. A third type of number comes from onchain trackers. [Paymentscan](https://paymentscan.xyz) showed about $1.224 billion of card program activity in September 2026, but its default view mixes spends, settlements, clearing, and top-ups, and some offchain data is self-reported by the programs.

Keep each figure with its source, date, and what it measures. [Stablecoin payment statistics 2026](/resources/more/stablecoin-payments-statistics-2026) applies the same rule to wider payment data.

## What changes for cardholders, issuers, and merchants?

Most of the change sits with issuers and their banks. Cardholders and merchants see the same experience.

- **Cardholders.** Purchases authorize, clear, and post as before. Fees and exchange rates are still set by the program, not by the settlement method.
- **Issuers and program managers.** A program holding stablecoin reserves can settle with the network without first converting to dollars through a bank. That can shorten the funding chain and reduce conversions.
- **Acquirers and merchants.** Merchants are paid in local currency on their normal schedule.
- **Banks.** Participating banks need stablecoin custody, wallet operations, and controls for the chains the network supports.

[Onchain settlement vs bank settlement](/resources/more/onchain-settlement-vs-bank-settlement) compares the finality and timing of each model.

## What does it mean for businesses that move money across borders?

Network settlement makes stablecoins part of card plumbing. It does not move money to a bank account in another country. Paying a supplier in Mexico, an employee in Brazil, or a vendor in Germany still needs a local rail at the end.

That gap grows as more programs launch. Visa expects its stablecoin-linked card programs to roughly double in 2026, and every program has users who want to move part of their balance to a bank account. Businesses paying teams and suppliers abroad face the same last step. A card covers purchases. Rent, payroll, and invoices need Pix, SPEI, ACH, SEPA, or SWIFT.

If you are choosing partners for a card program, [how to choose a stablecoin card issuing provider](/resources/more/how-to-choose-a-stablecoin-card-issuing-provider) includes the settlement model in its evaluation criteria.

## Where does BlindPay fit?

BlindPay handles the leg that network settlement leaves out: turning USDC or USDT into local currency in a bank account. It sits beside a card issuer, not inside the network.

BlindPay pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations, with KYC, KYB, and sanctions screening in the same API flow. A [payout quote](/docs/payout-quotes) locks the rate and fees before the stablecoins move, and no pre-funding is required. Plans are published with no volume floor.

## What should you do next?

If you run or plan a card program, map which leg each partner owns: issuing, network settlement, and cash-out to bank accounts. Then test the cash-out leg on a free development instance with the [payout quickstart](/docs/quickstart-payout).

## Sources

- Visa, "How stablecoin-linked cards are modernizing money movement," last updated March 31, 2026: [visa.com](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement)
- Visa, "Visa Launches Stablecoin Settlement in the United States," December 16, 2025: [usa.visa.com](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- Visa, "Visa Accelerates Stablecoin Momentum: Adding Five Blockchains for Settlement," April 29, 2026: [corporate.visa.com](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html)
- Visa and Bridge partnership, April 30, 2025: [usa.visa.com](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html)
- Mastercard, completion of the BVNK acquisition, August 3, 2026: [investor.mastercard.com](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx)
- The Block, Mastercard to acquire BVNK for up to $1.8 billion, March 2026: [theblock.co](https://www.theblock.co/post/393898/mastercard-to-acquire-stablecoin-infrastructure-firm-bvnk-for-up-to-1-8-billion)
- Mastercard, INFINIOS goes live on stablecoin settlement, August 2026: [mastercard.com](https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2026/august/infinios-goes-live-with-mastercard-on-stablecoin-settlement-marking-a-first-for-issuers-in-the-kingdom-of-bahrain)
- Paymentscan, card program activity tracker: [paymentscan.xyz](https://paymentscan.xyz)

---

Source: https://blindpay.com/resources/usdc-pix-quote-to-settlement

---
title: "USDC to Pix, from quote to settlement: a step-by-step guide"
seoTitle: "USDC to Pix: quote to settlement guide"
description: "What happens between a USDC to BRL quote and reais landing over Pix: the locked quote, execution, the on-chain leg, review, and Pix delivery, step by step."
date: "2026-10-07"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How long does a USDC to Pix payout take?"
    a: "The on-chain leg takes seconds to a couple of minutes, and Pix delivers in Brazil instantly, 24 hours a day, including weekends. At BlindPay, Pix payouts do not wait for compliance documents, so most of the end-to-end time is the on-chain confirmation plus automatic screening."
  - q: "How long is a USDC to BRL quote valid?"
    a: "A BlindPay payout quote expires 5 minutes after it is created. Read expires_at from the quote response, which is in epoch milliseconds, instead of hardcoding the window, and request a new quote if the payout is not executed in time."
  - q: "Is BlindPay custodial?"
    a: "BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Optional BlindPay-managed wallets (beta) are custodial when you choose that path."
  - q: "How much does a USDC to Pix payout cost?"
    a: "BlindPay combines a monthly plan (platform access) with per-transaction fees that vary by rail and network and are disclosed only in the live quote before execute. BlindPay does not publish a static flat rate card; always cite the quote's fee breakdown rather than a fixed bps number."
  - q: "What recipient details does a Pix payout need?"
    a: "A pix bank account needs the recipient's name and a Pix key, which can be a CPF, CNPJ, phone number, email, or random key. If you have the recipient's bank routing instead of a key, use a pix_safe account with the CPF or CNPJ, the bank's ISPB code, branch, and account number."
  - q: "How do I test a USDC to Pix payout without moving real money?"
    a: "Use a BlindPay development instance. It runs on testnets with the USDB test token and completes payouts automatically. To force an outcome, quote 66600 ($666.00) to get a failed payout or 77700 ($777.00) to get a refunded one; any other amount completes."
---

A USDC to Pix payout is five steps: quote, authorize, on-chain transfer, review, and Pix delivery. The quote locks the rate and every fee before any money moves. The on-chain leg confirms in seconds to a couple of minutes. Pix then delivers reais to the recipient's account instantly, any hour, any day.

This guide walks the path one step at a time, with the API field or webhook that tells you where a payout is.

## Key facts

- **Quote:** a BlindPay payout quote locks the exchange rate, the fees, and the exact BRL amount the recipient receives. It expires 5 minutes after creation (`expires_at`, epoch milliseconds).
- **Rail:** Pix (`pix`) and PIX Safe (`pix_safe`) are instant and run 24/7. Pix payouts never wait for compliance documents.
- **Custody:** BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.
- **Pricing:** BlindPay combines a monthly plan (platform access) with per-transaction fees that vary by rail and network and are disclosed only in the live quote before execute. BlindPay does not publish a static flat rate card; always cite the quote's fee breakdown rather than a fixed bps number.

## What are the steps from quote to settlement?

| Step | What happens | What you read |
| --- | --- | --- |
| 1. Quote | Rate, fees, and the BRL receive amount are locked against a Pix bank account | Quote `id`, `expires_at`, `receiver_amount` |
| 2. Authorize and execute | You authorize the exact quoted amount and create the payout | Payout `status: processing`, `payout.new` webhook |
| 3. On-chain transfer | USDC moves from the funding wallet on the quoted network | `tracking_transaction` |
| 4. Review and conversion | Automatic screening runs; most payouts clear without a hold | `tracking_payment`, `payout.update` if the status changes |
| 5. Pix delivery | Reais land in the recipient's account over Pix | `status: completed`, `payout.complete` webhook |

The full field reference is in the [payouts docs](/docs/payouts), and the quote fields are in [payout quotes](/docs/payout-quotes).

## What does the quote lock?

The quote is the only point where price is set. It is created against one approved Pix bank account and one `network` and `token` pair, and it returns:

- `commercial_quotation`: the market exchange rate.
- `blindpay_quotation`: the rate net of BlindPay's fee.
- `flat_fee` and `partner_fee_amount`: the fixed and partner fees on this payout.
- `sender_amount` and `receiver_amount`: what leaves the funding wallet and what the Pix account receives, in minor units.

`cover_fees` decides who pays. Leave it `false` and fees come out of the BRL the recipient gets. Set it `true` and fees are added on top of the USDC sent, so the recipient gets the full amount, which is the usual choice for payroll.

Because the fees are only fixed in the quote, this guide does not publish a rate card or a basis-point figure. To see the numbers for your volume, request a live quote on the [USDC to BRL page](/usdc-to-brl) or in the API, and see [pricing](/pricing) for plans.

## How long does each step take?

| Interval | What to expect |
| --- | --- |
| Quote to execute | Your choice, within the 5-minute quote window |
| Execute to on-chain confirmation | Seconds to a couple of minutes, by network |
| Confirmation to Pix credit | Pix is instant and runs 24/7 |
| Quote to settlement, end to end | Minutes |

Network choice changes the on-chain interval. On a production instance, USDC payouts run on Base, Polygon, Arbitrum, Ethereum, Stellar, and Solana. For every other rail, see [stablecoin payout settlement times by country and rail](/resources/more/stablecoin-payout-settlement-times).

## Who holds the funds during the payout?

BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.

On EVM networks the authorization is explicit: the quote returns a `contract` payload, and you call `approve` on the token contract for the exact quoted amount before executing the payout. BlindPay collects the USDC before it sends any reais, so a failed delivery is a refund of USDC already collected. Set `refund_wallet_address` on the quote to choose where that refund goes.

## What can go wrong between quote and settlement?

- **The quote expires.** After 5 minutes the payout call is rejected. Request a new quote; the rate may have moved.
- **The Pix details are wrong.** A bad key or closed account means the receiving bank rejects the transfer. BlindPay sends the USDC back automatically to the quote's `refund_wallet_address`, or to the sending wallet if you did not set one. The payout stays `processing` until the refund confirms on-chain, then ends `refunded`.
- **A review holds the payout.** Screening matches or unusual activity can move a payout to `on_hold`. Treat it as pending, not as an error, and do not retry. A review that times out ends the payout `failed`, and the refund goes through support@blindpay.com.
- **The payout was funded on Stellar.** Automatic refunds run on the EVM networks and Solana. On Stellar, a failed Pix transfer is resolved by support rather than refunded automatically.

## How do you test the flow before going live?

A development instance runs the same API on testnets with the `USDB` test token and completes payouts on its own. Set the quote's `request_amount` to force an outcome:

| `request_amount` | Payout ends |
| --- | --- |
| `66600` ($666.00) | `failed` |
| `77700` ($777.00) | `refunded` |
| Any other amount | `completed` |

The testing section of the [payouts docs](/docs/payouts#testing) has the details, and [stablecoin API sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) covers what a sandbox cannot show you before launch.

## Where to go next

- [USDC to BRL](/usdc-to-brl): the live quote for this corridor.
- [Pricing](/pricing): plans and how per-transaction fees are disclosed.
- [BlindPay vs Bridge](/compare/bridge): how the payout leg compares.
- [Payouts sandbox testing](/docs/payouts#testing): run the flow end to end on a development instance.

---

Source: https://blindpay.com/resources/more/does-network-change-offramp-quote

---
title: "Does the blockchain network change your off-ramp quote? What moves and what doesn't"
seoTitle: "Does the network or token change your off-ramp quote?"
description: "Network and token are inputs to every payout quote. Which quote lines can change by chain, where gas sits, and how to compare two networks fairly."
date: "2026-10-06"
updated: "2026-10-06"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Does the blockchain I send from change my off-ramp exchange rate?"
    a: "The network is an input to the quote, but the main thing it changes is the fee side, not the bank rail or the recipient's details. At BlindPay, fees are scheduled per payment rail and per blockchain network. The reliable way to see the effect is to request the same payout on two networks and compare commercial_quotation, the fee fields, and receiver_amount."
  - q: "Where do I see BlindPay's fees for each network?"
    a: "Call GET /v1/instances/{instance_id}/billing/fees with an owner or admin key. It returns a fee object per payment rail and per blockchain network, each with payout_flat in cents and payout_percentage in basis points, plus the payin equivalents. Every quote also discloses the exact fees for that payment before you execute it."
  - q: "Is gas included in an off-ramp quote?"
    a: "No. Gas is the blockchain's own fee for moving the tokens, paid by whoever signs the transaction, usually in the chain's native token. It doesn't appear in the quote's fee lines. On most chains it is small next to the payment, but on EVM chains each payout from an external wallet also needs an approve transaction, which costs gas too."
  - q: "Is USDT or USDC cheaper to off-ramp?"
    a: "It depends on the network and the payout path, so compare quotes rather than tokens. One documented case: on a BlindPay offramp wallet paying out in USD, USDT deposits convert at a flat 1:1 rate with no market spread, while USDC deposits use the live market rate. The per-chain additional fee on that offramp wallet then differs by network."
  - q: "What happens if I quote a token on a network where it isn't deployed?"
    a: "The quote request fails with a 400 error that names the pair. At BlindPay, USDC payouts run on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, and Solana, and USDT payouts run on Ethereum, Polygon, Tempo, Solana, and Tron. Development instances use USDB on testnets only."
---

Partly. On BlindPay, every payout quote takes a `network` and a `token`, and fees are scheduled per payment rail and per blockchain network, so the fee lines can differ by chain. The bank rail, the recipient, and the quote's window don't change. Gas sits outside the quote. To know the real difference, quote the same payout on two networks and compare.

Short version: the chain mostly changes what you pay to get the stablecoins in, not how the local currency gets out.

**Key takeaways**

- `network` and `token` are required inputs to a payout quote. An incompatible pair fails with a 400.
- Fees are set per rail and per network. Read your schedule from `GET /billing/fees`, then confirm on a live quote.
- Gas is paid on-chain by the signer and is not a quote line. EVM payouts from external wallets add an `approve` transaction.
- Offramp wallets add a fixed per-chain fee: 15 USDT on Tron, 1 USDC on Ethereum, 0.50 USDC on Solana, zero on Polygon, Arbitrum, Base, Tempo, and Arc.
- Compare networks on `receiver_amount` for the same request, not on token or chain reputation.

## Why does a payout quote ask for a network and token?

Because the quote prices the funding leg as well as the conversion. The stablecoins have to leave a wallet on a specific chain, and BlindPay has to know which token contract to pull from and how to settle it.

The request to `POST /v1/instances/{instance_id}/quotes` always carries both:

```json
{
  "bank_account_id": "ba_000000000000",
  "currency_type": "sender",
  "cover_fees": false,
  "request_amount": 1000000,
  "network": "polygon",
  "token": "USDC"
}
```

For EVM networks, the response also returns a `contract` object: the token contract address, the ABI, BlindPay's address to approve as spender, and the exact decimal-adjusted amount. Stellar and Solana don't use that allowance pattern; Stellar payouts sign an XDR transaction and Solana payouts sign a token delegation. Same quote, different signing step. The [payout quotes reference](/docs/payout-quotes) has every field.

## Which parts of a quote can change with the network or token?

Some lines can. Others are fixed by the bank side of the payment and don't care which chain the USDC came from.

| Part of the payout | Can network or token change it? | Where you see it |
| --- | --- | --- |
| Market rate (`commercial_quotation`) | Possibly, by token; check by quoting both | Quote response |
| BlindPay's fee lines (`flat_fee`, applied rate) | Yes, fees are scheduled per rail and per network | Quote response, `GET /billing/fees` |
| Partner fee (`partner_fee_amount`) | No, partner fees are set per payin and per payout | Quote response |
| Gas | Yes, and it sits outside the quote | Your wallet's transaction |
| Signing step | Yes: `approve` on EVM, delegation on Solana, XDR on Stellar | Payout tutorials |
| Offramp wallet additional fee and minimum | Yes, fixed per chain | Offramp wallet docs |
| Bank rail, recipient, arrival time | No | Bank account |
| Quote window | No, set by quote type and rail | `expires_at` |

The rule for the first row: don't assume. Request two quotes a few seconds apart, identical except for `network` or `token`, and diff them. [Where the exchange rate gets fixed](/resources/more/where-is-the-exchange-rate-set-onramp-offramp) explains which line holds which part of the price.

## How do you read your fee schedule per network?

Call `GET /v1/instances/{instance_id}/billing/fees` with an owner or admin key. It returns one fee object per payment rail and one per blockchain network configured for your instance.

The [billing reference](/docs/learn/billing) lists the rails (`ach`, `domestic_wire`, `rtp`, `international_swift`, `pix`, `pix_safe`, `ted`, `ach_colombia`, `transfers_3`, `spei`, `sepa`) and the networks (`tron`, `ethereum`, `polygon`, `base`, `arbitrum`, `stellar`, `solana`). Each object has four fields:

| Field | Unit | Meaning |
| --- | --- | --- |
| `payout_flat` | Cents | Flat fee per payout |
| `payout_percentage` | Basis points (`50` = 0.50%) | Percentage fee per payout |
| `payin_flat` | Cents | Flat fee per payin |
| `payin_percentage` | Basis points | Percentage fee per payin |

BlindPay doesn't publish a flat rate card. The schedule is your instance's configuration, and every quote discloses the exact fee for that payment before you execute. Use the schedule to plan and the quote to decide. [Stablecoin off-ramp fees explained](/resources/more/stablecoin-off-ramp-fees-explained) covers the fee types more broadly.

## What does a network comparison look like?

**Illustrative example.** A team pays out 10,000 USDC to a Pix account and quotes the same request on two networks. The numbers are made up for the arithmetic, not BlindPay pricing.

| | Quote on network A | Quote on network B |
| --- | --- | --- |
| `request_amount` (sender side) | 10,000.00 USDC | 10,000.00 USDC |
| `commercial_quotation` | 5.40 BRL per USDC | 5.40 BRL per USDC |
| Extra network-level fee | 0.00 USDC | 1.00 USDC |
| Effective rate | 5.373 | 5.373 |
| `receiver_amount` | R$53,730.00 | R$53,724.63 |

Network B delivers 1.00 x 5.373 = R$5.37 less. On one payout, noise. On 2,000 payouts a month, R$10,746 less for the same USDC. Since the market rate matched, the whole difference is fees, which is what you'd confirm in the fee fields.

**Worked example with documented offramp wallet fees.** Offramp wallets, deposit addresses that pay out to a linked bank account automatically, carry a fixed additional fee per chain, per the [offramp wallet docs](/docs/offramp-wallets):

| Chain | Tokens on an offramp wallet | Minimum | Additional fee | Share of a 250 payment |
| --- | --- | --- | --- | --- |
| Polygon | USDC, USDT | Fees only | 0 | 0.0% |
| Arbitrum, Base, Tempo, Arc | USDC | Fees only | 0 | 0.0% |
| Solana | USDC | 50 USDC | 0.50 USDC | 0.2% |
| Ethereum | USDC | Fees only | 1 USDC | 0.4% |
| Tron | USDT | 200 USDT | 15 USDT | 6.0% |

The math: 15 ÷ 250 = 6.0% on Tron, against 0% for the same USDT on Polygon. For small recurring payouts, the chain is the biggest fee decision you make. More on the mechanism in [what an off-ramp wallet is](/resources/more/what-is-an-off-ramp-wallet).

## Does USDC vs USDT change the rate?

It can, depending on the path. The same docs give one concrete case: on an offramp wallet paying out in USD, USDT deposits convert at a flat 1:1 rate with no market spread, while USDC deposits use the live market rate.

For local-currency payouts, quote both tokens and compare `commercial_quotation`. Token choice is also constrained by the chain. Per [BlindPay's supported chains](/docs/kb/supported-chains), USDC payouts run on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, and Solana, and USDT payouts run on Ethereum, Polygon, Tempo, Solana, and Tron. Circle lists its [USDC contract addresses](https://developers.circle.com/stablecoins/usdc-contract-addresses) per chain, and Tether lists its [supported protocols](https://tether.to/en/supported-protocols/).

Mistakes surface early: a token on a chain where it isn't deployed fails at quote time with a 400 that names the pair, before any money moves. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares the tokens themselves.

## Where does gas fit?

Outside the quote. Gas is the chain's fee for processing your transaction, paid by whoever signs it, and it never shows up in `flat_fee` or `receiver_amount`.

On most chains you pay it in the native token: ETH on Ethereum, per [ethereum.org](https://ethereum.org/en/developers/docs/gas/), SOL on Solana, per [Solana's fee docs](https://solana.com/docs/core/fees), and bandwidth or energy on Tron, per [Tron's resource model](https://developers.tron.network/docs/resource-model). Arc uses USDC as its gas token.

On EVM payouts from an external wallet, your wallet signs an `approve` call for the quoted amount, and that transaction needs gas. Funding from a BlindPay-managed wallet skips the client-side signing, but managed wallets are in beta and custodial. [Who pays gas fees](/resources/more/who-pays-gas-fees-stablecoin-payments) breaks this down by flow.

## Does the network change how fast the money arrives?

Only the on-chain part. The rail decides the rest. Pix and SPEI deliver in minutes whatever chain funded them, and a SEPA payout's crypto leg always runs on Polygon regardless of which network you funded from. That doesn't change your API call, but it can change the on-chain timing you observe.

Finality by chain is covered in [which network to off-ramp on](/resources/more/best-network-to-off-ramp-stablecoins). Choose by token support first, then by the fee lines on a real quote, then by gas and finality. For how live quotes behave when the local currency moves, see [live quotes and volatile currencies](/resources/more/live-quotes-volatile-currencies-latin-america), and the [glossary](/resources/more/onramp-offramp-liquidity-glossary) for any term here.

## What to do next

Pull your fee schedule from `GET /billing/fees`, then request the same payout quote on your two most likely networks and diff `receiver_amount`. Ten minutes, and you'll know which chain to default to. The [billing reference](/docs/learn/billing) has the request.

---

Source: https://blindpay.com/resources/more/stablecoin-api-30-day-evaluation-plan

---
title: "How to evaluate a stablecoin API in 30 days: a week-by-week plan"
seoTitle: "How to evaluate a stablecoin API in 30 days"
description: "A 30-day plan to evaluate a stablecoin API: shortlist, sandbox tests, compliance review, and a live pilot, plus where costs hide and a worked cost model."
date: "2026-10-06"
updated: "2026-10-06"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How long does it take to evaluate a stablecoin API?"
    a: "About 30 days is enough for most fintechs if the work is split by week: a written shortlist in week 1, sandbox testing in week 2, compliance and commercial review in week 3, and a small live pilot in week 4. Longer evaluations usually stall in contracting or compliance review, not in engineering, so start those conversations on day one."
  - q: "What should you test in a stablecoin API sandbox?"
    a: "Test the unhappy paths, not only a successful payout. Force a failed payout and a refunded one, let a quote expire, send the same request twice with one idempotency key, replay a webhook, submit invalid bank details, and hit the rate limit. A provider passes when your system ends each case in the right state without a person fixing the ledger."
  - q: "How do you compare the real cost of two stablecoin APIs?"
    a: "Compare all-in cost on the same corridor, the same amounts, and the same day. Take the dollar value you sent, subtract what the recipient received converted at a reference rate you record at quote time, then add monthly fees and the cost of any pre-funded balance. Divide by volume. Headline fees alone often rank providers in the wrong order."
  - q: "Should a stablecoin API pilot use real money?"
    a: "Yes, in small amounts on one corridor. Sandboxes skip the bank leg, so only real payouts show settlement time, how recipients' banks behave, what support looks like, and whether your reconciliation closes. Start with internal recipients, cap each payout, and stop the pilot if any payout ends in a state your ledger cannot explain."
  - q: "Who should sign off on a stablecoin API choice?"
    a: "Engineering signs off on integration and failure handling, compliance on licensing and the split of KYC, KYB, and screening duties, finance on all-in cost and reconciliation, and operations on support and incident handling. Product owns the final call. If one of those owners has not seen pilot data, the decision is not ready."
  - q: "What are red flags when evaluating a stablecoin API?"
    a: "A sandbox that requires a sales call, pricing that only arrives by email as one blended rate, no written answer on who holds funds at each step, statuses that jump from pending to done with nothing in between, and no clear rule for what happens to stablecoins when a payout cannot complete. Each one turns into a cost after launch."
---

To evaluate a stablecoin API in 30 days, give each week one job: shortlist providers in writing in week 1, break their sandboxes in week 2, run compliance and commercial review in week 3, and pilot real payouts on one corridor in week 4. Decide on day 30 from measured cost, speed, and failure handling, not from demos.

Feature lists converge. Every provider claims quotes, webhooks, and global rails. The differences show up when a payout fails, when a quote expires, and when finance tries to close the month. This plan is built to surface those three things fast.

**Key takeaways**

- Time-box the evaluation. Thirty days with weekly exit criteria beats an open-ended "let's try a few providers."
- Spend sandbox week on failure cases. A successful payout proves almost nothing.
- Start compliance and contracting on day one. They are the slowest part, not the code.
- Measure all-in cost: what you sent minus what arrived, valued at a reference rate, plus fixed fees and pre-funding.
- Pilot with real money on one corridor. Only the bank leg shows real settlement time.

If you're still sorting out which kind of provider you need, read [the types of stablecoin APIs](/resources/more/types-of-stablecoin-apis) first. This plan assumes you've narrowed it to payment APIs that convert between stablecoins and local currency.

## Who needs to be part of a stablecoin API evaluation?

Five owners, each with one sign-off. Without all five, the evaluation ends in a decision that one team has to undo later.

| Owner | What they evaluate | What they sign off on |
| --- | --- | --- |
| Engineering | API design, SDKs, webhooks, failure behavior | The sandbox test results |
| Compliance | Licensing, KYC and KYB split, sanctions screening, record keeping | The responsibility split, in writing |
| Finance | All-in cost, invoicing, reconciliation | The cost model and the pilot reconciliation |
| Operations | Support response, incident process, recipient issues | The support runbook |
| Product | Corridors, user experience, launch date | The final decision |

Name the owners on day one, and give each one a calendar slot in week 4 to review pilot data.

## What should happen in week 1?

Week 1 turns a long list into two or three providers that answered your questions in writing.

1. **Write the requirements on one page.** Corridors, rails, expected monthly volume and payout size, tokens and chains you hold, who must hold funds at each step, and who verifies your end users.
2. **Map providers by category.** Issuers, custodial wallet platforms, orchestration layers, and payout APIs solve different problems. Drop any that don't do the job on your page.
3. **Send written questions.** Use a fixed list so answers are comparable. The [six questions that matter](/resources/more/how-to-choose-a-stablecoin-api) are a short version; the [30 due diligence questions](/resources/more/stablecoin-payments-provider-due-diligence) are the long one.
4. **Ask for a sandbox and a sample quote.** A sample quote for your top corridor at your typical amount, with fees itemized.
5. **Start compliance and contract review now.** Request the provider's licensing summary and the standard contract on day one, not in week 3.

**Exit criterion:** two or three providers with written answers, sandbox access, and a sample quote. A provider that can't give you a sandbox in week 1 is telling you something.

## What should you test in the sandbox in week 2?

Test the failure paths. Every sandbox handles the happy path; the question is whether your system ends each unhappy case in the right state without manual fixes.

| Test | How to trigger it | Pass if |
| --- | --- | --- |
| Successful payout | Normal quote and execution | Status and webhooks arrive in order; ledger balances |
| Failed payout | The provider's documented test trigger | Your ledger marks it failed and doesn't release funds twice |
| Refunded payout | The provider's documented test trigger | Stablecoins return and your ledger shows the refund |
| Expired quote | Execute after the quote window | You get a clear error and request a new quote |
| Duplicate request | Same idempotency key, sent twice | One payout exists, not two |
| Duplicate webhook | Replay an event from the dashboard | Your handler skips the repeat |
| Out-of-order webhooks | Delay one event in your receiver | Final state is still correct |
| Invalid bank details | Bad account number or check digit | Rejected at creation, not days later |
| Compliance hold | Ask the provider how to simulate one | Your UI shows "under review," not "failed" |
| Rate limit | Burst requests | Your client backs off and retries |

Sandboxes fake some of these. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) lists what typically doesn't carry over, so note which tests a provider can't run at all. On BlindPay, development instances are free, and setting a payout's request amount to 666.00 or 777.00 forces a `failed` or `refunded` result, so both failure paths take two API calls.

**Exit criterion:** each provider's results in one table, with every failing test explained.

## What does week 3 cover?

Week 3 is compliance and commercial review: who is licensed for what, who does which checks, and what the contract says when something goes wrong.

**Compliance.** Check registrations yourself instead of trusting a slide. In the US, FinCEN's [MSB registrant search](https://www.fincen.gov/resources/msb-state-selector) shows federal registration, and [NMLS Consumer Access](https://www.nmlsconsumeraccess.org/) shows many state licenses. Then write down who runs KYC, KYB, sanctions screening, transaction monitoring, and record keeping for your flow. [Which license a stablecoin payment flow needs](/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi) explains the categories.

If you work with a bank partner, expect it to ask how you chose and monitor the provider. US bank regulators' [2023 interagency guidance on third-party relationships](https://www.occ.gov/news-issuances/bulletins/2023/bulletin-2023-17.html) treats vendor risk as a life cycle and says not every third party carries the same risk. Your week 3 notes become that evidence.

**Commercial.** Get pricing in writing for your corridors and amounts, including anything billed monthly. Read the contract for minimums, termination terms, data export on exit, support response times, and what happens to funds in a payout that can't complete.

**Exit criterion:** compliance has a signed responsibility split, and finance has written pricing for the pilot corridor.

## How do you run the week 4 pilot?

Run real payouts on one corridor, in small amounts, and record everything. This is where settlement time, support quality, and reconciliation become numbers.

1. **Pick one corridor** that matters to your launch.
2. **Pay internal recipients first.** Team members or your own accounts in the destination country.
3. **Cap each payout** at an amount you'd accept losing time on, not money.
4. **Add a handful of real recipients** once internal payouts reconcile.
5. **File one support ticket on purpose.** Ask a real question and time the answer.
6. **Close the books on the pilot.** Finance reconciles every payout against the provider's records.

Log every pilot payout with the same fields, for every provider:

| Field | Why you need it |
| --- | --- |
| Quote ID and payout ID | Ties your ledger to the provider's |
| Amount sent and amount received | The basis of all-in cost |
| Reference rate at quote time | Lets you price the spread |
| Quote, execution, and completion timestamps | Real settlement time |
| Rail reference (tracking key, UETR, trace ID) | Proof of delivery for recipients |
| Status history | Shows whether statuses are honest |
| Support time, if any | Real support quality |

**Exit criterion:** every pilot payout is either completed and reconciled, or explained.

## Where do stablecoin API costs hide?

Most of the cost isn't in the fee line. It sits in the rate, in the contract, or in capital you never see on an invoice.

| Cost | Where it hides | How to catch it in the evaluation |
| --- | --- | --- |
| FX spread | Inside the exchange rate, not as a fee | Compare each quote to a reference rate recorded at the same minute |
| Percentage fee | The quote's fee fields, or a blended rate | Ask for itemized quotes |
| Flat per-payout fee | Small print; hurts small payouts most | Model your real payout size, not an average |
| Network fee | Which side pays gas, and on which chain | Check who pays on the chain you'll use |
| Monthly or platform fee | The contract, not the pricing page | Read the order form |
| Minimum volume | The contract | Model a slow month |
| Pre-funding | Capital parked in a destination account | Price it at your cost of capital |
| Requotes | Rate movement between expired quotes | Count requotes in the pilot |
| Failure handling | Return fees and staff time | Count failed and returned payouts in the pilot |
| Invoice-billed fees | Charged at month end, not deducted from the payout | Read the first invoice, not just the quotes |

[Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) goes deeper on mint fees, burn fees, and itemized quotes.

## How do you compare all-in cost between providers?

Compare all-in cost: the dollar value you sent minus what arrived, valued at a reference rate, plus fixed monthly costs and the carrying cost of any pre-funded balance, divided by volume.

All-in cost = (value sent − value received at the reference rate) + monthly fees + pre-funding cost

Here's a worked example. Every number is hypothetical and chosen to show the method. None describes a real provider.

Assumptions: payouts of $1,000 each to one corridor, a network fee of $0.05 per payout, and a 5% annual cost of capital. Provider B requires a pre-funded balance equal to half a month's volume.

| Cost line | Provider A, 100 payouts | Provider B, 100 payouts | Provider A, 1,000 payouts | Provider B, 1,000 payouts |
| --- | --- | --- | --- | --- |
| Percentage fee (A 0.50%, B 0.20%) | $500 | $200 | $5,000 | $2,000 |
| Flat fee (A $0, B $2) | $0 | $200 | $0 | $2,000 |
| Spread vs reference (A 0.30%, B 0.60%) | $300 | $600 | $3,000 | $6,000 |
| Monthly platform fee (A $0, B $500) | $0 | $500 | $0 | $500 |
| Pre-funding cost at 5% a year, one month | $0 | $208 | $0 | $2,083 |
| Network fees | $5 | $5 | $50 | $50 |
| **Total** | **$805** | **$1,713** | **$8,050** | **$12,633** |
| **All-in cost as % of volume** | **0.81%** | **1.71%** | **0.81%** | **1.26%** |

Provider B has the lower headline fee and still costs more at both volumes. The spread and the parked capital do the damage, and neither appears as a fee line. Fixed costs shrink as volume grows, so run the model at your expected volume and at a slow month.

## How do you make the decision on day 30?

Use gates first, then scores. A provider that fails a gate is out, no matter how cheap it is.

**Gates (pass or fail):**

1. Your launch corridors are live in production, in the direction you need.
2. Compliance signed the responsibility split.
3. Every sandbox failure test ended in the right state, or the gap is understood.
4. Every pilot payout reconciled.

**Scores (weight them to your business):** all-in cost at expected volume, median and slowest settlement time in the pilot, support response time, and developer experience as your engineers rated it.

Write the decision down with the pilot log attached. In six months, when someone asks why you picked this provider, that page is the answer.

## How does BlindPay fit a 30-day evaluation?

BlindPay is built to be tested before anyone signs. Development instances are free, there's no setup fee or monthly minimum, and every quote returns the sender amount, receiver amount, and fee fields before you execute, so most of the pilot log above comes straight from the API. A [fee schedule endpoint](/docs/learn/billing) returns the flat and percentage fee per rail and network on your instance. SDKs cover Node.js, Python, Go, PHP, and Swift, and payouts run over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with no pre-funding.

Start week 2 today: create a development instance and run the failure tests from the [payout quickstart](/docs/quickstart-payout).

---

Source: https://blindpay.com/resources/more/stablecoin-card-vs-pix-spei-payouts

---
title: "Stablecoin card or Pix and SPEI payout? When each one wins in Brazil and Mexico"
seoTitle: "Stablecoin card vs Pix and SPEI payouts in Latin America"
description: "When a stablecoin card fits in Brazil and Mexico, when a Pix or SPEI payout wins, and how to combine both for spending, rent, payroll, and suppliers."
date: "2026-10-06"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Can I pay rent in Brazil or Mexico with a stablecoin card?"
    a: "Usually not. Most landlords, utilities, and schools in Brazil and Mexico expect a bank transfer, so a stablecoin card has nothing to swipe. The practical route is to convert USDC or USDT into reais or pesos and pay over Pix in Brazil or SPEI in Mexico, which both run 24/7 and settle in minutes."
  - q: "Is a Pix or SPEI payout cheaper than spending with a stablecoin card?"
    a: "It depends on the provider, so compare effective rates. Card costs sit in the conversion spread, an FX markup that NGIBANK puts at 1.5% to 3% on many crypto cards for non-USD spend, and ATM fees. A payout cost sits in the quoted rate and fee. Check both against the mid-market rate for the same amount."
  - q: "How fast is a SPEI payout funded with USDC?"
    a: "The SPEI leg itself takes seconds to minutes, and SPEI runs 24/7, including weekends. On BlindPay, SPEI payouts are listed as instant once the stablecoins are received and the payout clears compliance. The slow parts are usually wrong CLABE details or a compliance review, not the rail."
  - q: "Do I need a stablecoin card if I already receive Pix or SPEI payouts?"
    a: "Not always. A Pix or SPEI payout puts local currency in a bank account, and that account comes with its own debit card. A stablecoin card adds value when you want to keep a dollar balance until the moment you buy, or pay foreign merchants in dollars."
  - q: "Can a company pay contractors in Latin America with stablecoin cards instead of payouts?"
    a: "It can for small expenses, but salaries and invoices usually belong in a bank account. Contractors pay rent and taxes from their bank, and a card balance cannot pay a bank-only bill. Many teams pay salaries over Pix or SPEI and reserve cards for travel, software, and other spend."
---

A stablecoin card wins in Brazil and Mexico when the money is going to a merchant that takes Visa or Mastercard. A Pix or SPEI payout wins when the money is going to a bank account: rent, bills, salaries, suppliers, and family. Most people and businesses holding USDC need both, and the payout leg moves more of the money.

That split is easy to miss. Stablecoin card launches get the headlines in Latin America, but the region runs on instant bank transfers. This guide compares card spend with Pix and SPEI cash-out by use case, cost, and speed, so you can route each payment to the right tool. For how the card itself works, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- A stablecoin card pays merchants. A Pix or SPEI payout pays bank accounts. Rent, payroll, and supplier invoices are bank-account jobs.
- Visa and Bridge announced stablecoin card issuing in Latin America on April 30, 2025, starting with Argentina, Colombia, Ecuador, Mexico, Peru, and Chile.
- Pix (Brazil) and SPEI (Mexico) both run 24/7 and settle in minutes, so a payout is not slower than a card for most needs.
- Card costs hide in spreads and FX markups. Payout costs show up in the quote. Compare effective rates, not headline fees.
- Teams that run a card program in the region still need a local payout leg so users can cash out.

## What is the difference between card spend and a local payout?

Card spend converts stablecoins at the moment of purchase and pays a merchant through the card network. A local payout converts stablecoins into local currency and sends it to a bank account over a domestic rail. The first is a purchase. The second is a transfer.

Four terms come up throughout this guide:

- **Stablecoin-backed card:** a Visa or Mastercard debit card whose balance is held in a stablecoin such as USDC or USDT. The merchant is paid in local currency and never sees the stablecoin. See [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card).
- **Pix:** Brazil's instant payment system, run by Banco Central do Brasil. Recipients are addressed by a Pix key, such as a CPF, CNPJ, phone number, email, or random key.
- **SPEI:** Mexico's interbank electronic payment system, run by Banco de México. Recipients are addressed by an 18-digit CLABE.
- **Local payout (off-ramp):** a transfer that sells stablecoins for local currency and delivers the money to a bank account over a local rail.

[Pix vs SPEI](/resources/more/pix-vs-spei) compares the two rails in depth: addressing, returns, and proof of payment.

## When does a stablecoin card win in Latin America?

A stablecoin card wins at the point of sale: in stores, online, and abroad. It lets the holder keep dollars until the moment of purchase, which matters where local currencies lose value or where getting dollars through a bank is slow.

That is the case Visa and Bridge made when they [announced their card partnership](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html) on April 30, 2025. The program started with Argentina, Colombia, Ecuador, Mexico, Peru, and Chile, with plans to expand into Europe, Africa, and Asia.

Cards fit small, frequent purchases. a16z crypto's [August 7, 2026 analysis](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend) of Paymentscan data counted nearly 9 million crypto card purchases a month, with an average of about $86. That is grocery, fuel, and subscription territory.

A card is the better tool for:

- Paying merchants who accept Visa or Mastercard, in person or online.
- Paying foreign websites in dollars without a local-currency conversion.
- Travel spending outside Brazil or Mexico.
- Keeping a dollar balance and converting only what you spend.

## When does a Pix or SPEI payout win?

A payout wins whenever the recipient is a bank account. In Brazil and Mexico, that covers most of what households and businesses pay that is not a store purchase.

Rent goes to a landlord's account. Utilities, school fees, and taxes are paid by transfer or bill. Salaries and contractor invoices land in bank accounts, and the recipient pays the rest of their life from there. None of these accept a card swipe in the normal course.

Both rails are fast enough that speed rarely decides the choice. Pix and SPEI run 24/7, including weekends and holidays. On a payout from USDC or USDT, the rail leg takes seconds to minutes. The slower parts are the onchain transfer, compliance checks, and wrong recipient details. [How to send USDC to a bank account in Mexico](/resources/more/how-to-send-usdc-to-bank-account-mexico) walks through each SPEI status, and [how to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) does the same for Pix.

## How do card spend, Pix, and SPEI compare by use case?

Use the recipient to decide. If it is a merchant with a card terminal, use the card. If it is a bank account, use Pix in Brazil or SPEI in Mexico.

| Use case | Stablecoin card | Pix payout (Brazil) | SPEI payout (Mexico) |
| --- | --- | --- | --- |
| Grocery or retail purchase | Best fit | Works where the store takes Pix QR | Rarely used at the till |
| Online subscription billed in USD | Best fit | Not applicable | Not applicable |
| Rent to a landlord | Not accepted | Best fit | Best fit |
| Utilities and taxes | Rarely accepted | Best fit | Best fit |
| Contractor or employee pay | Expense use only | Best fit | Best fit |
| Supplier invoice | Rarely accepted | Best fit | Best fit |
| Sending money to family | Not designed for it | Best fit | Best fit |
| Cash withdrawal | ATM, with fees | Withdraw from the bank account | Withdraw from the bank account |
| Keeping a dollar balance | Best fit | Converts to BRL | Converts to MXN |

The table shows why the two are complements. A person who receives USDC can keep spending money on a card and move rent money to a bank account the same day.

## What does each path cost?

Each path has a conversion cost, but it shows up in different places. Card costs hide in the exchange rate and in per-use fees. Payout costs show up in the quote before you send.

On the card side, NGIBANK's [crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide) (March 2026) puts FX markups at 1.5% to 3% on many crypto cards, versus 0% to 1% on good fintech debit cards. It also notes that ATM withdrawals often come with a small free quota and then 1.5% to 2%. Fee pages vary widely. KAST's [fee page](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts), for example, lists 0% for USD card spend and 0.5% to 1.75% for non-USD spend, so a purchase in reais or pesos is not the same price as a purchase in dollars.

On the payout side, the cost is the exchange rate and fee in the quote. A good quote shows the stablecoin amount sent, the rate, every fee, and the exact BRL or MXN amount the recipient gets.

To compare, convert both to an effective rate:

1. Take the local-currency amount that actually arrives or is spent.
2. Divide it by the stablecoins that left the wallet.
3. Compare that rate with the mid-market rate at the same time.
4. Repeat for the amounts you actually move, because fixed fees weigh more on small payments.

[Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) covers the card side line by line.

## How do you decide which one to use?

Route by recipient, then by amount, then by currency. A simple rule set covers most cases.

1. **Is the recipient a bank account?** Use Pix in Brazil or SPEI in Mexico.
2. **Is the recipient a merchant that takes cards?** Use the card, especially for small purchases.
3. **Is the amount large?** Prefer a payout with a quoted rate, so you see the exact cost before the money moves.
4. **Is the purchase in dollars?** A card spending from a USD stablecoin balance avoids a conversion entirely.
5. **Will the recipient need the money in their bank for bills?** Use a payout, even if they also have a card.
6. **Do you need a record per payment?** Payouts return a rail reference, such as a Pix transaction ID or a SPEI tracking key, that you can match to an invoice.

## How do businesses run cards and payouts together?

Businesses in the region usually run two lanes. Cards cover spending: travel, software, and small expenses. Payouts cover obligations: payroll, contractors, suppliers, and user withdrawals.

A company running a stablecoin card program for Latin American users has the same split on the product side. Users spend with the card, but they also want to move part of their balance to their own bank account. That withdrawal is a Pix or SPEI payout, not a card transaction. A card program without a cash-out lane pushes users to an exchange for that step.

The [stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america) guide covers the country rules for the card itself. The payout lane needs a provider with local rails, recipient validation, and compliance checks on each transfer.

## Where does BlindPay fit?

BlindPay is the payout lane. It converts USDC or USDT into reais over Pix and into pesos over SPEI through one API, with KYC, KYB, and sanctions screening in the same flow. It works alongside whichever card issuer runs the card.

From the [BlindPay docs](/docs/kb/payment-methods) as of this article's date:

- Pix payouts take a Pix key. PIX Safe pays to bank details using the CPF or CNPJ, bank code, branch, and account number. Both settle in minutes.
- SPEI payouts take a CLABE and settle in minutes.
- A [payout quote](/docs/payout-quotes) locks the rate and fees for five minutes before any stablecoins move. No pre-funding is required.
- Payouts are funded from a wallet the customer controls. If a Pix or SPEI payout cannot be delivered after the stablecoins are collected, BlindPay refunds them automatically to the quote's refund wallet, or to the sending wallet.
- The same API pays out over ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations.

Plans are published with no volume floor, and the fee for each payout appears in its live quote.

## What should you do next?

List where your USDC actually goes each month. Mark every payment as merchant or bank account. Send the bank-account share over Pix or SPEI and keep the card for the rest.

To test the payout lane, create a free development instance and run a test Pix or SPEI payout from the [payout quickstart](/docs/quickstart-payout).

## Sources

- Visa and Bridge, "Visa and Bridge Partner to Make Stablecoins Accessible for Everyday Purchases," April 30, 2025: [usa.visa.com](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html)
- a16z crypto, payment card stablecoin spend charts, August 7, 2026: [a16zcrypto.com](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend)
- NGIBANK, crypto debit card guide, March 3, 2026: [ngibank.com](https://www.ngibank.com/en/blog/crypto-debit-card-guide)
- KAST, fees and conditions for KAST cards and accounts: [concierge.kast.xyz](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts)

---

Source: https://blindpay.com/resources/more/swift-instant-cross-border-scheme-vs-stablecoins

---
title: "Swift's new payments scheme and blockchain ledger vs stablecoins: what changes in 2026"
seoTitle: "Swift's 2026 payments scheme and ledger vs stablecoins"
description: "Swift launched a retail payments scheme in June 2026 and a blockchain ledger pilot in July. What each one changes, and how they compare with stablecoins."
date: "2026-10-06"
updated: "2026-10-06"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the Swift payments scheme?"
    a: "It's a set of network rules for retail cross-border payments that Swift announced on 25 September 2025 and launched in June 2026. Participating banks commit to upfront transparency on fees and FX, full-value delivery, end-to-end tracking, and instant settlement where domestic infrastructure allows. It covers consumers and small businesses, and Swift said in September 2026 that more than 100 banks are involved."
  - q: "Is Swift's blockchain ledger a stablecoin?"
    a: "No. Swift's shared ledger is infrastructure for moving regulated tokenized value between banks. Its first live use, announced 9 July 2026, uses bank-issued tokenized deposits, and final settlement still completes through existing systems. Seventeen banks are preparing to pilot live transactions. Swift says the choice of token belongs to commercial and central banks, not to Swift."
  - q: "Does the Swift payments scheme make stablecoins unnecessary?"
    a: "Not for every flow. The scheme raises the floor on bank-to-bank retail payments in the corridors and banks that join it. Stablecoins still settle 24/7 on public blockchains, don't depend on the sender's bank being a scheme member, and let a business hold dollars before paying out. Many teams will use both, picking per corridor."
  - q: "How fast are Swift payments in 2026?"
    a: "Swift says 75% of payments over its network reach the receiving bank within 10 minutes, and often in seconds. Swift's own research also found that the network leg is only about 20% of the total time of an average cross-border payment. The other 80% is spent in the domestic last mile, after the payment leaves Swift."
  - q: "Can I send SWIFT payments and stablecoin payouts through one API?"
    a: "Yes. BlindPay sends international wires as SWIFT payments and collections on behalf of your customers (POBO/COBO), with UETR tracking and MT103 confirmations, and also converts USDC and USDT to local currency over Pix, SPEI, ACH, RTP, SEPA, and other rails. You pick the route per payment through the same quote and payout calls."
---

Swift made two moves that change cross-border payments in 2026. Its retail payments scheme went live in June with upfront fees, full-value delivery, and instant settlement where local rails allow. Its blockchain ledger became ready for pilots in July, using bank tokenized deposits. Neither replaces stablecoins. BlindPay already combines SWIFT (POBO/COBO) with stablecoin settlement in one API.

So the question for a payments team isn't "Swift or stablecoins." It's which corridors each one now serves better, and whether waiting for Swift's upgrades is a plan.

**Key takeaways**

- The Swift payments scheme sets rules for retail cross-border payments: upfront fees and FX, full value delivered, end-to-end tracking, and instant settlement where available. It went live in June 2026, and Swift says more than 100 banks are now involved.
- Swift's shared ledger is ready for initial use, with 17 banks preparing to pilot 24/7 cross-border payments using tokenized deposits. Final settlement still runs through existing systems.
- ISO 20022 became mandatory for cross-border payment instructions on 22 November 2025, which gives every Swift payment richer, structured data.
- Swift's own numbers show the network leg is fast. 75% of payments reach the receiving bank within 10 minutes. The domestic last mile is still where most of the time goes.
- Stablecoins still win on hours, access, and holding dollars before payout. SWIFT still wins on reach. Use each where it's strongest.

## What did Swift announce for cross-border payments?

Swift announced three things between September 2025 and September 2026: a retail payments scheme, a blockchain-based shared ledger, and the completion of the ISO 20022 migration. Here's the timeline from Swift's press releases.

| Date | Announcement | What it means |
| --- | --- | --- |
| 25 September 2025 | [New rules for retail cross-border payments](https://www.swift.com/about-us/media-centre/press-releases/swift-set-new-rules-retail-cross-border-payments-its-network-bold-move-further-ramp-speed-and-predictability) | Over 30 early-adopter banks from 17 countries commit to a scheme for consumer and small business payments |
| 29 September 2025 | [Blockchain-based shared ledger](https://www.swift.com/about-us/media-centre/press-releases/swift-add-blockchain-based-ledger-its-infrastructure-stack-groundbreaking-move-accelerate-and-scale-benefits-digital-finance-across-more-200-countries-and-territories-worldwide) | Swift and more than 30 institutions design a ledger for real-time, 24/7 cross-border payments, starting with a conceptual prototype by Consensys |
| 22 November 2025 | [ISO 20022 cutover](https://www.swift.com/about-us/media-centre/press-releases/global-financial-community-completes-switch-iso-20022-paving-way-new-levels-cross-border-payment-speed-and-innovation-around-world) | Coexistence with MT messages ends; ISO 20022 is required for all cross-border payment instructions |
| 5 March 2026 | [Scheme rollout plan](https://www.swift.com/about-us/media-centre/press-releases/swift-accelerates-transformation-consumer-payments-banks-roll-out-new-framework-retail-transactions) | More than 25 banks to go live by end of June, on corridors to 11 countries |
| 9 July 2026 | [Ledger ready for use](https://www.swift.com/about-us/media-centre/press-releases/swifts-blockchain-ledger-ready-use-17-banks-set-pioneer-tokenised-cross-border-payments-trusted-global-infrastructure) | 17 banks prepare to pilot live tokenized deposit payments |
| 28 September 2026 | [Pay-by-alias initiative](https://www.swift.com/about-us/media-centre/press-releases/swift-and-its-community-innovate-bring-ease-domestic-consumer-payments-cross-border-transaction-experience) | Work to let consumers pay abroad using phone numbers or emails from systems like Pix, Bizum, and PayID |

The common thread: Swift is attacking the two complaints that pushed businesses toward stablecoins, unpredictable fees and slow, business-hours settlement.

## What is the Swift payments scheme, and what does it guarantee?

The Swift payments scheme is a rulebook that participating banks follow for retail cross-border payments. Swift's September 2025 release lists four commitments: upfront transparency on payment costs, guaranteed full value delivery, end-to-end visibility, and instant settlement where available.

Each commitment fixes a known problem:

- **Upfront fees and FX.** The sender sees the cost before paying. In March 2026, Swift's head of payments scheme said fees should be "affordable and fixed from the start."
- **Full-value delivery.** The recipient gets the amount sent, with no intermediary deductions along the way. That targets the deductions behind SHA and BEN charge codes, covered in [hidden fees in international wires](/resources/more/hidden-fees-international-wires-our-sha-ben).
- **End-to-end tracking.** Built on the UETR, the unique reference every Swift payment already carries.
- **Instant settlement where domestic infrastructure allows.** This is the important caveat. If the destination has a 24/7 instant rail and the receiving bank uses it, the last leg can be instant. If not, the old timing still applies.

The scope is retail: consumers and small businesses sending account-to-account payments. The March 2026 rollout covered corridors to Australia, Bangladesh, Canada, China, Germany, India, Pakistan, Spain, Thailand, the UK, and the US. By 28 September 2026, Swift said the framework had launched in June and involved more than 100 banks.

Two things the scheme doesn't change. It works only when both ends use participating banks. And it still runs on bank business processes at each end, including compliance checks, which is where much of the delay lives.

## What is Swift's blockchain ledger, and is it a stablecoin?

Swift's ledger is a shared, blockchain-based log of transactions between banks, and it isn't a stablecoin. It moves tokenized value between participating banks, and Swift leaves the choice of token to commercial and central banks.

The first live use, announced 9 July 2026, is cross-border payments with **tokenized deposits**: bank deposits represented as tokens on each bank's own ledger. Swift's ledger orchestrates them so banks can move funds for customers overnight and on weekends, "before completing final settlement through existing systems."

That last clause is the key difference from a stablecoin. A USDC transfer on a public chain is final when the block finalizes. On Swift's ledger, the tokenized movement is followed by settlement in the existing bank system. [Onchain settlement vs bank settlement](/resources/more/onchain-settlement-vs-bank-settlement) explains why where finality sits changes the risk.

Seventeen banks from six continents are preparing to pilot live transactions in a controlled go-live phase. It's real, and it's early. A fintech can't sign up for it. It reaches you only if your bank is one of the participants and offers it to you.

## How fast is Swift now, and where does the time go?

Swift says 75% of payments over its network reach the receiving bank within 10 minutes, and often in seconds. Its own research, published with the September 2025 scheme announcement, found that the Swift leg is only about 20% of an average cross-border payment's total time. The other 80% is spent in the last mile, after the payment leaves the Swift network.

That split explains why the scheme focuses on the receiving side. It also explains why "reached the receiving bank" isn't the same as "money in the recipient's account." [Why are cross-border payments slow?](/resources/more/why-are-cross-border-payments-slow) walks through where those hours go: cut-offs, compliance repairs, and the last bank.

For reference, the G20 targets set by the [Financial Stability Board](https://www.fsb.org/work-of-the-fsb/financial-innovation-and-structural-change/cross-border-payments/g20-targets-for-enhancing-cross-border-payments-2/) ask that by end-2027, 75% of retail cross-border payments make funds available to the recipient within one hour, with a global average retail cost of no more than 1% and no corridor above 3%. The measure is funds available to the recipient, not arrival at the bank.

## How do Swift's upgrades compare with stablecoins?

Swift's upgrades make bank-to-bank payments more predictable inside participating banks; stablecoins settle 24/7 for anyone with a provider and a local off-ramp. BlindPay sits across both, so it leads the table.

| | BlindPay (stablecoins, local rails, and SWIFT in one API) | Swift payments scheme | Swift shared ledger | Generic stablecoin transfer |
| --- | --- | --- | --- | --- |
| Status in October 2026 | Live | Live since June 2026 in initial corridors | Pilots with 17 banks | Live |
| Who can use it | Businesses onboarded through KYC or KYB | Customers of participating banks, retail and SME | Participating banks | Anyone with a wallet; businesses need a ramp |
| Settlement asset | USDC or USDT, then local currency | Commercial bank money | Bank tokenized deposits | USDC, USDT, or other stablecoins |
| Hours | Stablecoin leg 24/7; payout follows each rail's hours (Pix and SPEI 24/7) | Bank hours, instant last leg where available | 24/7 movement, final settlement in existing systems | 24/7 |
| Fee visibility | Every quote shows the market rate, the rate after fees, and the flat fee | Upfront fees and FX by rule | Not yet published | Network fee visible; ramp fees vary |
| Full value delivered | Recipient amount fixed in the quote | Guaranteed by rule | Not yet published | Yes on-chain; off-ramp may deduct |
| Bank wire reach | SWIFT (POBO/COBO) with UETR and MT103, plus local rails | Participating corridors | Participating banks | None without a ramp |

Where Swift is strongest: reach. Swift's network connects 11,500 institutions in more than 200 countries and territories, per its own releases. No stablecoin off-ramp network comes close to that, and for many destinations a wire is still the only route. [Stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments) covers that trade-off in depth.

Where stablecoins are strongest: they don't wait for both banks to join a scheme. A business can hold dollars as USDC, convert at a quoted rate, and pay out over a 24/7 local rail at 2 a.m. on a Sunday in corridors where one exists.

## Should you wait for Swift instead of adding stablecoin rails?

No, not if you have a corridor problem today. The Swift scheme is live in a set of corridors and banks, and its ledger is in pilot. Waiting means betting that your banks and your recipients' banks join, on a timeline you don't control.

A practical way to decide, per corridor:

1. **List your top corridors by volume.** Note the destination rail, for example Pix in Brazil or SPEI in Mexico, and whether it runs 24/7. [Which countries have instant payment systems?](/resources/more/instant-payment-systems-by-country) has the reference.
2. **Ask your bank two questions.** Is it a participant in the Swift payments scheme? Is the corridor covered for your payment type? Retail and SME flows are in scope; larger B2B payments may not be.
3. **Compare the all-in cost.** Use the full-value commitment as the benchmark. Then price the stablecoin route with a live quote. [How much do cross-border payments cost?](/resources/more/cross-border-payment-costs-2026) has the formula.
4. **Check the hours you need.** If payments must land on weekends or overnight, a 24/7 local rail reached through stablecoins does that today.
5. **Keep both routes.** Use SWIFT where reach matters or the recipient needs a bank wire. Use stablecoins plus local rails where speed, hours, and cost matter.

## How does BlindPay combine SWIFT and stablecoins?

BlindPay runs SWIFT and stablecoin payouts through the same quote and payout calls, so a team picks the route per payment instead of per vendor.

From the BlindPay docs:

- **SWIFT (POBO/COBO).** International wires go out as payments on behalf of your customer, with UETR tracking and MT103 confirmations. Inbound wires arrive into a customer's own virtual account as collections on behalf of ([POBO and COBO](/docs/kb/pobo-cobo)). SWIFT payouts need compliance documents before funds move, have a 100 USD minimum, and settle in up to 5 business days ([cut-off times](/docs/kb/cut-off-times)).
- **Stablecoins to local rails.** USDC and USDT convert to BRL, MXN, COP, ARS, EUR, and USD. Pix, PIX Safe, SPEI, and Transfers 3.0 settle in minutes, RTP is instant, and ACH, wire, TED, ACH Colombia, and SEPA take about 1 to 2 business days ([payment methods](/docs/kb/payment-methods)).
- **Networks.** Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, with token support by chain ([supported chains](/docs/kb/supported-chains)).
- **Transparent quotes.** Each payout quote returns the market rate (`commercial_quotation`), the rate after BlindPay's fee (`blindpay_quotation`), the flat fee, and the exact amount the recipient gets, valid for 5 minutes.
- **Compliance in the flow.** Every payment runs through a customer that has passed KYC or KYB.

Payouts funded from your own external wallet stay non-custodial. [POBO vs COBO explained](/resources/more/swift-pobo-vs-cobo-explained) covers how the on-behalf-of model works, and [What is real-time cross-border settlement?](/resources/more/what-is-real-time-cross-border-settlement) maps where each rail fits.

## What to do next

Pick your largest corridor and price it both ways this week: ask your bank whether it's covered by the Swift payments scheme, then run a stablecoin payout quote for the same amount from the [payout quickstart](/docs/quickstart-payout) on a free development instance.

---

Source: https://blindpay.com/resources/more/virtual-account-vs-wallet-address-vs-payment-link

---
title: "Virtual account vs wallet address vs payment link: how to collect in stablecoins"
seoTitle: "Virtual account vs wallet address vs payment link"
description: "Three ways to collect money that ends in stablecoins: a virtual account, a deposit wallet address, or a payment link. Compare rails, refunds, KYC, and fit."
date: "2026-10-06"
updated: "2026-10-06"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between a virtual account and a wallet address?"
    a: "A virtual account is a set of bank details, such as a routing and account number, that receives fiat transfers like ACH or wire and converts them to stablecoins. A wallet address receives stablecoins directly on a blockchain, so the payer must already hold USDC or USDT on the right network. One is for payers with bank accounts. The other is for payers with crypto."
  - q: "What is a stablecoin payment link?"
    a: "A stablecoin payment link is a URL or QR code that encodes a payment request: the recipient address, the token, the amount, and often a reference. Standards like Ethereum's EIP-681 and the Solana Pay specification define the format, so a wallet can open it and prefill the transfer. Hosted checkout pages wrap the same idea in a web page with a timer and status."
  - q: "Does the payer need crypto to pay into a virtual account?"
    a: "No. The payer sends a normal bank transfer from any bank account, using the routing and account number the virtual account provides. The provider converts the deposit into USDC or USDT and sends it to the wallet linked to the account. The payer may not know stablecoins are involved at all, which is the main reason businesses use virtual accounts."
  - q: "Which collection method is easiest to reconcile?"
    a: "A virtual account per customer is usually easiest, because every deposit into that account belongs to one payer, with no memo to match. Payment links with a unique reference come next. A shared wallet address is the hardest: many payers send to one address, and you have to match transfers by amount, time, or sender address, which breaks when two payers send the same amount."
  - q: "Can a stablecoin payment to a wallet address be refunded?"
    a: "Not by reversing it. Onchain transfers are final once confirmed, so a refund is a new transfer from the recipient back to the payer, and the recipient has to know a safe address to send it to. Bank transfers into a virtual account follow the rules of the rail, and providers may return a deposit they can't accept to the sender."
  - q: "When should a business use more than one collection method?"
    a: "When its payers differ. A marketplace may give each seller a virtual account for bank payers, show a payment link at checkout for buyers who hold USDC, and keep a deposit address for partners who settle in stablecoins. Each method ends in the same place, a stablecoin balance, so the ledger can treat them as three inputs to one account."
---

There are three common ways to collect money that ends up as stablecoins. A virtual account gives the payer bank details and converts their transfer. A wallet address takes stablecoins directly from a payer who already holds them. A payment link prefills a stablecoin transfer for a wallet. The right one depends on what your payer already has.

Teams usually pick one and force every payer through it. That works until the first customer who only has a bank account meets a checkout that only takes USDC. The three methods solve different problems, and plenty of products need two of them.

**Key takeaways**

- Start from the payer. Bank account only: virtual account. Already holds stablecoins: wallet address or payment link.
- Virtual accounts are the only one of the three where the payer never touches crypto.
- Reconciliation gets harder as accounts get more shared. One virtual account per payer is the cleanest.
- Onchain transfers can't be reversed. Plan refunds as new outbound payments.
- Payment links are a wallet UX layer on top of an address, not a separate rail.

All three sit in the collection layer of [stablecoin infrastructure](/resources/more/what-is-stablecoin-infrastructure). Below is how they differ and how to pick.

## What is a virtual account in stablecoin collection?

A stablecoin virtual account is a set of bank details issued for one customer that receives fiat transfers and automatically converts each deposit into USDC or USDT, sent to a linked wallet. The payer sees a normal bank account. The business ends up with stablecoins.

In the US, the payer uses the routing and account number to send ACH or a wire. ACH is the batch network the US uses for payroll and bill pay ([Nacha](https://www.nacha.org/content/what-is-ach)). Wires usually run over Fedwire, where payments credited to Federal Reserve master accounts are final ([Federal Reserve Financial Services](https://www.frbservices.org/financial-services/wires)). Some accounts also accept SWIFT from foreign banks.

[Stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained) covers the mechanics in depth. If you're choosing between a reusable account and per-payment instructions, see [virtual account vs one-time deposit instructions](/resources/more/virtual-account-vs-one-time-deposit-instructions).

## What is a deposit wallet address?

A deposit wallet address is a blockchain address where a payer sends stablecoins directly. No conversion happens on the way in, because the payer already holds USDC or USDT.

Three details trip people up:

1. **The network has to match.** USDC on Solana sent to an Ethereum address doesn't arrive. Tell payers the token and network, not just the address.
2. **The address can be shared or unique.** A shared address is simple to publish and hard to reconcile. A unique address per payer or per invoice fixes that, at the cost of managing more addresses.
3. **Someone controls the keys.** If the address belongs to a custodial provider, it holds the funds. If it's your own wallet, you do.

[How merchants accept stablecoin payments](/resources/more/how-merchants-accept-stablecoin-payments) walks through the merchant side of address-based collection.

## What is a stablecoin payment link?

A stablecoin payment link is a URL or QR code that encodes a payment request: recipient, token, amount, and often a reference ID. A wallet opens it and prefills the transfer, so the payer only confirms.

Two open standards define the format on major chains. Ethereum's [EIP-681](https://eips.ethereum.org/EIPS/eip-681) specifies a URL format for payment requests that opens the user's wallet with the transaction parameters filled in. The [Solana Pay specification](https://docs.solanapay.com/spec) does the same for Solana and adds optional `reference` fields that can serve as IDs before the transaction exists, which helps match a payment to an order.

Hosted checkout pages build on the same idea: a web page shows the amount, a QR code, a countdown, and a status that flips to paid when the transfer confirms. Underneath, it's still a transfer to an address.

## How do the three methods compare?

The table compares the three on what matters after launch: who can pay, how you match the money, and what happens when something goes wrong.

| Question | Virtual account | Deposit wallet address | Payment link or hosted checkout |
| --- | --- | --- | --- |
| Payer needs crypto? | No | Yes | Yes |
| What the payer uses | Bank transfer (ACH, wire, SWIFT) | Any wallet on the right network | A wallet that reads the link or QR code |
| Speed to funds | Rail-dependent: minutes to days | Seconds to minutes after confirmation | Seconds to minutes after confirmation |
| Reconciliation | Strong if one account per payer | Weak if shared, strong if unique per payer | Strong with a unique reference per request |
| Wrong-network risk | None for the payer | Real | Lower, since the link sets the network |
| Refunds | Return rules of the bank rail | New outbound transfer | New outbound transfer |
| KYC on the account holder | Yes, before issuance | Depends on provider | Depends on provider |
| Setup per payer | Account issuance and review | Address generation | One link per payment |
| Recurring payments | Yes, same details every time | Yes | Usually one link per payment |
| Best for | B2B invoices, payroll funding, payers with bank accounts | Partners and treasuries that hold stablecoins | Checkout for buyers who hold stablecoins |

Look at the "payer needs crypto?" row first. It removes one or two options for most products before anything else matters.

## Which method should you choose, in order?

Answer these questions in order and stop at the first clear answer.

1. **Do your payers hold stablecoins?** If most don't, you need a virtual account. Nothing else works for them.
2. **Do payers pay you more than once?** Recurring payers suit a virtual account or a dedicated address: the same details every time.
3. **Does each payment need to match an order?** Use a payment link with a unique reference, or one account or address per payer.
4. **Who is paying, a person at checkout or a finance team?** People at checkout want a QR code and a timer. Finance teams want bank details or an address they can save.
5. **What happens when someone sends the wrong amount or network?** Write the refund rule before launch, not after the first mistake.
6. **Who must pass KYC?** Virtual accounts verify the holder before issuance. Check what your address or link provider requires.
7. **Can your ledger handle more than one?** If yes, offer two methods and route payers by type.

## How does reconciliation differ between the three?

Reconciliation is easiest when the destination identifies the payer, and hardest when many payers share one destination.

A virtual account per customer is the cleanest case: every deposit belongs to its owner, and the provider's deposit event carries the account ID. A shared address forces matching by amount, timestamp, or sender address, and sender addresses change when payers use exchanges. Payment links sit in between, as long as each request carries a unique reference you store before the payer pays.

For the virtual account case in detail, see [virtual account reconciliation](/resources/more/virtual-account-reconciliation).

## Where do costs show up in each method?

Costs land in different places, so compare them per method rather than per provider headline.

- **Virtual accounts** often carry a monthly fee per account plus a conversion fee on each deposit. The payer may also pay their own bank's wire fee, which can shrink the amount that arrives.
- **Wallet addresses** cost the payer a network fee to send. You pay nothing on the way in unless the address belongs to a provider that charges per deposit.
- **Payment links and hosted checkout** usually charge a percentage per payment, like a card processor, plus the payer's network fee.

Run the numbers at your real payment size. A flat monthly fee is noise on large B2B deposits and a real cost on hundreds of small ones.

## What are the limits of each method?

Each method has a failure mode worth knowing before launch.

- **Virtual accounts** need KYC or KYB and a review before the account exists, so they aren't instant. Coverage is limited to the countries and rails the provider supports, and bank rails have cut-off times.
- **Wallet addresses** put network choice on the payer. A wrong-network transfer may be recoverable or lost, depending on who controls the receiving keys.
- **Payment links** depend on the payer's wallet supporting the standard. A link that opens nothing on a payer's phone is a dead end.
- **All three** end in stablecoins. If you need local currency in a bank account, you still need an off-ramp after collection.

Onchain transfers are final, so none of the crypto-in methods has a chargeback. That protects the merchant and removes a buyer protection, which matters for consumer checkout. [Are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible) explains what that means in practice.

## How does BlindPay handle collection?

BlindPay covers the first two methods through its API. It doesn't offer payment links or a hosted checkout.

**Virtual accounts.** BlindPay issues [US virtual accounts](/docs/virtual-accounts) in the customer's name with their own routing and account number. They accept ACH, wire, and SWIFT, depending on the account type, and each deposit creates a payin that settles USDC or USDT to the linked wallet. USDT settlement needs the linked wallet on Polygon, Ethereum, or Solana. The customer must have approved KYC first, then each account goes through compliance and bank review. Accounts cost $1.50 per month each. RTP deposits don't land in a virtual account; an RTP payin uses shared bank details with a memo code instead.

**Wallet addresses.** For customers who already hold stablecoins, there are two options. An external blockchain wallet is an address your customer controls, which keeps that flow non-custodial. A managed wallet (beta) is an address BlindPay creates and holds the keys for, so it's custodial.

**The other direction.** An offramp wallet is the mirror of a virtual account: a deposit address where every USDC or USDT that lands pays out automatically to a linked bank account. Payouts run over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO).

## What to do next

List your payers by type: bank account only, or already holding stablecoins. If the first group is bigger, create a customer and a test virtual account on a free development instance with the [create a virtual account](/docs/virtual-accounts-create) guide, and send your first test deposit today.

---

Source: https://blindpay.com/resources/more/build-vs-buy-automated-risk-monitoring

---
title: "Build vs. buy automated risk monitoring: a decision framework and 15 provider questions"
seoTitle: "Build vs buy risk monitoring: framework and 15 questions"
description: "Build, buy point solutions, or use an integrated provider? Compare three ways to run automated risk monitoring, who stays responsible, and 15 questions."
date: "2026-10-05"
updated: "2026-10-05"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Should a fintech build or buy automated risk monitoring?"
    a: "Most fintechs should buy, either as point solutions or inside an integrated payments and compliance provider, and build only the product-specific rules on top. Building in house makes sense when monitoring is the product, when volume and risk are unusual enough that no provider fits, or when the team already runs a mature compliance function with data engineers and model validation."
  - q: "Does outsourcing compliance transfer regulatory responsibility to the vendor?"
    a: "No. A money services business must maintain its own AML program under 31 CFR 1022.210, and OFAC sanctions liability is strict for US persons. A vendor can run checks, but the firm still answers to its regulator and its partner bank. It must be able to explain which rules run, why the thresholds sit where they do, and how alerts were decided."
  - q: "What is the difference between point solutions and an integrated compliance provider?"
    a: "Point solutions are separate vendors for KYC, sanctions screening, and transaction monitoring that the fintech connects itself. An integrated provider runs those checks inside the payment flow, so the customer profile, the screening result, and the payment decision sit in one system. Point solutions offer more control per layer; integration removes the joins the fintech would otherwise build and maintain."
  - q: "What should I ask a compliance provider before signing?"
    a: "Ask which lists are screened and how often they refresh, whether wallet addresses are covered, how the Travel Rule is handled, who can tune rules and how changes are validated, what the audit log export contains, the SLA for manual review, how failed payments are handled, and how you leave with your data. Ask for sample exports, not a demo."
  - q: "How long does it take to build transaction monitoring in house?"
    a: "The rules engine is the short part. Sanctions list feeds, wallet address analytics, case management, audit logging, rule testing, and staff to work the alerts take far longer, and each needs documentation an examiner will read. Teams starting from zero usually spend many months before the program is examination-ready, and the maintenance never stops."
  - q: "When does a human still need to review automated monitoring alerts?"
    a: "Always for decisions with legal weight: clearing a possible sanctions match, approving a high-risk customer under enhanced due diligence, deciding whether to file a suspicious activity report, and exiting a customer. Automation can score, deduplicate, gather evidence, and draft a narrative. A named person signs off on the outcome and owns the reasoning."
---

Most fintechs should buy automated risk monitoring and build only the rules specific to their product. The real choice is between point solutions (separate KYC, screening, and monitoring vendors) and an integrated payments and compliance provider. Either way, regulatory responsibility stays with the fintech, so pick the option whose logic you can explain to an examiner.

This article is general information, not legal advice.

**Key takeaways**

- There are three operating models, not two: build in house, buy point solutions, or use a provider that runs compliance inside the payment flow.
- Responsibility never transfers. Under 31 CFR 1022.210, the AML program belongs to the money services business, whoever runs the software.
- The rules engine is the cheap part of building. List feeds, wallet analytics, case management, and audit evidence are the expensive parts.
- Pick on six inputs: jurisdictions, volume, rails, team size, audit needs, and speed to market.
- Evaluate providers on what they can export and explain, not on the demo.

Automated risk monitoring covers four jobs: verifying customers, monitoring transactions, screening against sanctions lists, and working the resulting alerts. The [automated risk monitoring explainer](/resources/more/what-is-automated-risk-monitoring-fintech) takes each one apart. This guide answers a different question: who should run them.

## What are the three ways to run automated risk monitoring?

A fintech can build monitoring in house, buy point solutions and connect them, or use an integrated provider that runs the checks inside the payment flow. Each model trades control for time and maintenance.

| Option | Time to launch | Ongoing cost drivers | Control and customization | Regulatory responsibility | Best for |
| --- | --- | --- | --- | --- | --- |
| Build in house | Longest. Many months before an examination-ready program | Engineers, data feeds, analytics licenses, analysts, model validation, independent review | Full. Every rule, threshold, and model is yours | Fully yours, including every design choice | Firms where monitoring is the product, or with unusual risk no vendor covers |
| Buy point solutions | Medium. Each vendor integrates fast; the joins between them take longer | Per-check or platform fees per vendor, integration upkeep, analysts | High per layer, limited across layers | Yours. Vendors supply tools, you own the program and the joins | Teams with a compliance function that want best-of-breed per layer |
| Integrated payments and compliance provider | Shortest. Monitoring comes with the payment integration | Bundled in payment pricing, plus your own review and oversight time | Lower. You configure inside the provider's model and add your own rules on top | Yours for your program and your customers; the provider also carries its own obligations | Startups and fintechs that want to launch corridors without standing up a full stack |

Look at the "Regulatory responsibility" column. It never says "the vendor's."

## Does buying compliance transfer regulatory responsibility?

No. Buying a tool or a provider shifts who operates the checks, not who answers for them.

Three rules make that concrete:

- **FinCEN.** Under [31 CFR 1022.210](https://www.law.cornell.edu/cfr/text/31/1022.210), a money services business must have its own AML program: policies and internal controls, a designated compliance officer, training on detecting suspicious transactions, and independent review whose scope and frequency match the firm's risk. A vendor contract is an input to that program, not a substitute for it.
- **OFAC.** OFAC's [sanctions compliance guidance for the virtual currency industry](https://ofac.treasury.gov/media/913571/download?inline) states that civil penalties generally rest on a strict liability standard. A US person can be liable even without knowing or having reason to know. "Our screening vendor missed it" is not a defense.
- **FCA.** The UK [Financial Crime Guide](https://handbook.fca.org.uk/handbook/FCG/3/2.html) lists, as poor practice, threshold-based monitoring that is poorly calibrated and firms that struggle to explain why particular rules exist. A black-box vendor makes that failure likely.

The practical test: could your compliance officer explain, in writing, every rule running on your customers and why its threshold sits where it does? If the answer depends on a vendor support ticket, the program has a gap.

## How do you decide which model fits?

Answer six questions in order. The first three decide what has to be covered; the last three decide how much of it you can run yourself.

1. **Which jurisdictions?** Count the markets where customers sit and where money lands. Each one adds sanctions lists, Travel Rule thresholds, and registry checks. Two or more markets push hard toward buying.
2. **What volume, now and in 18 months?** Low volume makes per-check pricing cheap and in-house analysts affordable. High volume makes alert noise the main cost. See [how to reduce false positives](/resources/more/reduce-false-positives-transaction-monitoring) before modeling analyst headcount.
3. **Which rails?** Stablecoin transfers are final once confirmed, so checks must run before settlement. Bank rails add their own screening and data rules. Mixed rails favor a provider that monitors the whole payment, not just one leg.
4. **How big is the compliance team?** One part-time officer cannot maintain list feeds, tune rules, and work cases. Two or three people can run point solutions. A full team with data engineering can consider building.
5. **What will auditors and partners ask for?** Partner banks and examiners want case trails, rule rationale, and testing records. If you can't produce those from a vendor, you'll be building them anyway. [Audit-ready risk monitoring](/resources/more/aml-audit-readiness-risk-monitoring) lists the evidence.
6. **How fast do you need to launch?** If a corridor launch is weeks away, only the integrated model fits. Building is a multi-quarter project, not a sprint.

Most teams land on a hybrid: buy the core checks, then write product-specific rules and own the oversight.

## What does building in house actually involve?

Building means owning five systems, and the rules engine is the smallest one.

- **Data feeds.** OFAC, UN, EU, and UK lists, PEP data, and adverse media, refreshed every time a list changes. [Ongoing sanctions screening](/resources/more/ongoing-sanctions-screening-how-often-to-rescreen) covers why cadence matters.
- **Wallet analytics.** OFAC lists some wallet addresses, but its [FAQ 562](https://ofac.treasury.gov/faqs/562) says those listings are not likely to be exhaustive. Address risk needs blockchain analytics.
- **Rules and models.** The [12 red flags](/resources/more/transaction-monitoring-red-flags-stablecoin-payments) are a starting library. Each rule needs a documented rationale, test cases, and a recalibration date.
- **Travel Rule handling.** Counterparty identification, data validation, and hold or return logic. The [Travel Rule workflow](/resources/more/travel-rule-workflow-hold-return-reject) shows the decision points.
- **Case management and audit logs.** Every alert, decision, reviewer, and timestamp, retained for five years.

Then the program around it: independent review, training, and change control. The broader payments version of this question, wallets and rails included, sits in [build vs buy stablecoin payments](/resources/more/build-vs-buy-stablecoin-payments).

## What are 15 questions to ask a compliance provider?

These complement the five criteria in [how to choose a risk monitoring vendor](/resources/more/how-to-choose-automated-risk-monitoring-vendor). That page covers coverage, integration, false positives, pricing, and audit output at a high level. These questions go into operations and exit.

1. Which sanctions, PEP, and adverse media lists do you screen, and how soon after a list update does rescreening run?
2. Do you screen wallet addresses, on which chains, and against what beyond the SDN List?
3. How do you handle the Travel Rule: which thresholds, which data, and what happens when a counterparty sends incomplete data?
4. Can my team see and tune thresholds, or only request changes through support?
5. How is a rule change validated before it goes live, and is the before-and-after alert volume recorded?
6. Can I export the full audit log (inputs, checks, results, reviewer, timestamps) in a structured format, on demand?
7. Do you provide case management, or do alerts land in my own tooling?
8. What is the SLA for manual review, and what happens to the payment while it waits?
9. Where is customer data stored and processed, and under which privacy regimes?
10. How are failed or rejected payments handled: refunded to the source, held, or failed for support to resolve?
11. Is pricing published, and which checks cost extra?
12. Which regulators are you registered or licensed with, and where can I verify it?
13. What is your incident process when a screening feed or rule breaks, and how fast am I told?
14. Is the API documented publicly, with a sandbox that returns approve, review, and reject outcomes?
15. If we leave, how do we get customer records, case history, and audit logs out, and in what format?

For the payment side of the same due diligence (custody, liquidity, rails), use the [provider due diligence checklist](/resources/more/stablecoin-payments-provider-due-diligence).

## When is a human reviewer still required?

A human must decide whenever the outcome carries legal weight or ends a customer relationship. Automation prepares those cases; it does not close them.

- **Possible sanctions matches** that secondary identifiers can't clear.
- **Enhanced due diligence** for high-risk customers and jurisdictions.
- **SAR decisions.** Under [31 CFR 1022.320](https://www.law.cornell.edu/cfr/text/31/1022.320), an MSB files within 30 calendar days of initial detection, and a person owns that call.
- **Customer exits** and blocked payments.
- **Rule changes**, which a compliance officer signs off.

This matches the direction in the [Wolfsberg Group's 2025 statement](https://wolfsberg-group.org/resources/202) on monitoring innovation: new tools are fine, but they need validation and explainable outputs. Automation can score, deduplicate, gather evidence, and draft narratives, which is what [compliance agents](/resources/more/what-are-compliance-agents-in-fintech) do.

## What does this look like in practice?

Illustrative example (all numbers hypothetical): a fintech pays contractors in Brazil and Mexico in USDC, with 2,000 customers and two people in compliance.

- **Build:** list feeds, wallet analytics, a rules engine, case management, and audit logging. Two compliance staff can't maintain all of that and work cases. Launch slips by quarters.
- **Point solutions:** a KYC vendor, a screening vendor, and a monitoring vendor. Each integrates in weeks. The team then writes the join between customer profiles and alerts, and every exam question becomes a lookup across three systems.
- **Integrated provider:** KYC, screening, and monitoring run inside the payout flow. The team spends its time on oversight: reviewing held payouts, writing two product-specific rules (contractor payments above a monthly baseline, new bank accounts added within 24 hours of a payout), and testing them.

With two people and a launch date, the third option wins. With ten people and a regulator asking for model governance, the second may.

## What are the common mistakes in build vs. buy decisions?

- **Buying on the demo.** A demo shows the happy path. Ask for a sample case file and an audit export instead.
- **Accepting a black box.** If the provider can't explain why a rule fired, your compliance officer can't either. That fails the FCA's calibration test and most partner bank reviews.
- **Ignoring audit exports.** Data you can't export is evidence you can't show. Check the format before signing.
- **Underestimating in-house maintenance.** Lists change, typologies shift, and thresholds drift. Rules written at launch are wrong within a year without recalibration.
- **Treating the vendor as the compliance officer.** The vendor operates tools. Someone on your team owns the program.
- **Forgetting exit.** Five years of records must survive a vendor change.

## How does BlindPay fit the integrated model?

BlindPay is one example of the integrated model. It is registered with FinCEN as a money services business, with registrations on the [licenses page](/licenses). KYC, KYB, sanctions screening, Travel Rule compliance, and transaction monitoring run inside the API flow, before money moves. KYC Standard is automated and takes about 60 seconds; KYC Enhanced and KYB Standard are manual reviews that take 3 hours to 1 business day.

A flagged payment moves to `on_hold` and compliance reviews it, as described in [on-hold transactions](/docs/kb/on-hold-transactions). A refunded payout returns stablecoins to the wallet that funded it; a failed payout doesn't refund automatically. Plans are published on the [pricing page](/pricing). Your team still owns its program, its customers, and its oversight, and the 15 questions above apply to BlindPay the same way they apply to anyone else.

## What to do next

Answer the six framework questions on one page, then send the 15 provider questions to two or three candidates, including any payment provider already in your stack. Ask each for a sample audit export and case file. The provider that sends real artifacts within a day is usually the one whose product does the work.

## Sources and further reading

- [31 CFR 1022.210, AML programs for money services businesses](https://www.law.cornell.edu/cfr/text/31/1022.210)
- [31 CFR 1022.320, suspicious activity reports by money services businesses](https://www.law.cornell.edu/cfr/text/31/1022.320)
- [OFAC, Sanctions Compliance Guidance for the Virtual Currency Industry](https://ofac.treasury.gov/media/913571/download?inline)
- [OFAC FAQ 562, digital currency addresses on the SDN List](https://ofac.treasury.gov/faqs/562)
- [FCA Financial Crime Guide, FCG 3.2](https://handbook.fca.org.uk/handbook/FCG/3/2.html)
- [Wolfsberg Group Statement on Effective Monitoring for Suspicious Activity, Part II](https://wolfsberg-group.org/resources/202)

*This article is general information, not legal advice.*

---

Source: https://blindpay.com/resources/more/how-stablecoin-card-issuers-make-money

---
title: "How do stablecoin card issuers make money? Interchange, FX, and program economics"
seoTitle: "How stablecoin card issuers make money"
description: "Where the revenue in a stablecoin card program comes from: interchange, FX, fees, and rewards, with an illustrative unit-economics model and the caps."
date: "2026-10-05"
updated: "2026-10-05"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do stablecoin card issuers make money?"
    a: "Mostly from interchange, the fee the merchant's side pays the issuing side on every purchase. Programs add revenue from foreign exchange fees or spreads, cardholder fees such as subscriptions or physical card charges, and sometimes income on balances where rules allow it. The stablecoin part changes the cost side more than the revenue side: funding, settlement timing, and conversion."
  - q: "How much interchange does a card program earn?"
    a: "It depends on the market, the card type, and the sponsor bank. Rain says interchange in the US is usually around 2 to 3 percent, split between the card network, the merchant's processor, and the issuer. The program manager then shares the issuer's portion with the sponsor bank and processor under its contracts. Model it per market rather than using one global rate."
  - q: "Are debit interchange fees capped?"
    a: "In some markets. In the US, Regulation II caps debit interchange for issuers with 10 billion USD or more in assets at 21 cents plus 0.05 percent of the transaction, plus a 1 cent fraud adjustment, while smaller issuers are exempt. In the EU, consumer debit is capped at 0.2 percent and credit at 0.3 percent for intra-EEA transactions. Verify the rules in each market you launch."
  - q: "Who pays for card rewards?"
    a: "Usually interchange. The issuer's share of each purchase funds cashback, points, or yield-style perks. A program that pays out more in rewards than it earns in interchange is spending its own money to acquire users. That can be a deliberate growth choice, but it has to show up in the model as a cost per active cardholder."
  - q: "Do stablecoins make card programs more profitable?"
    a: "They can lower some costs. Daily stablecoin settlement shrinks the cash a program parks to cover settlement lag, and stablecoin funding can reduce bank wire costs and delays. They also add line items: on-ramp and off-ramp conversion, network gas, and wallet operations. Whether the net is positive depends on your volume, markets, and partners, so model both sides."
  - q: "What is a program manager revenue share?"
    a: "It is the contract that splits the issuer's interchange between the sponsor bank, the issuer-processor, and the program manager that owns the customer. The program manager often receives most of the interchange net of bank and processor fees, but the terms vary by provider and volume. Ask every provider for the split in writing, including minimums and tiered rates."
---

*Reading time: about 8 minutes.*

**Summary:** Stablecoin card issuers make money the way card issuers always have: mostly from interchange, the fee the merchant's side pays the issuer on each purchase, plus FX fees, cardholder fees, and program charges. Stablecoins change the cost side more than the revenue side, through cheaper funding, faster settlement, and new conversion costs.

**Key takeaways**

- Interchange is the main revenue line. Rain says US interchange is usually around 2 to 3 percent, split three ways.
- The program manager's share depends on its contracts with the sponsor bank and processor.
- US Regulation II caps debit interchange for issuers with 10 billion USD or more in assets. The EU caps consumer debit at 0.2 percent.
- Rewards are usually paid from interchange. Rewards above interchange are customer acquisition spend.
- Stablecoin settlement lowers prefunding cost but adds conversion and wallet costs. Model both.


This guide is for founders and product leads building a business case for a card program. For the mechanics of a purchase, read [how a stablecoin-backed card works](/resources/more/what-is-stablecoin-card-issuing). For the integration path, see [how to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api).

## Where does the revenue in a card program come from?

Four places, in order of size for most programs: interchange, foreign exchange, cardholder fees, and balance income.

| Revenue line | Who pays | Typical driver | Notes |
|---|---|---|---|
| Interchange | Merchant's side, on every purchase | Spend volume and card type | Capped in some markets for debit |
| Foreign exchange | Cardholder, on cross-currency purchases | Travel and cross-border spend | Fee, spread, or both |
| Cardholder fees | Cardholder | Subscriptions, physical cards, ATM use | Easy to disclose, easy to lose users over |
| Balance income | Varies by structure | Money held in reserve accounts | Subject to rules and partner agreements |

A note on the last row. The GENIUS Act bars payment stablecoin issuers from paying interest or yield to holders. A card program is usually not the stablecoin issuer, but any income on balances depends on how the program is structured and what its partners allow. Ask counsel before you put it in a pitch deck.

## How does interchange work on a stablecoin card?

Exactly like on any other card. The merchant pays a processing fee to its acquirer, part of it goes to the network, and part goes to the issuing side as interchange.

Some terms:

- **Interchange**: the per-purchase fee paid to the card issuer, set by the network's rate tables.
- **Issuer-processor**: the company that runs authorization and processing for the issuer.
- **Program manager**: the company that designs the card product and owns the customer, often the fintech itself.
- **Sponsor bank (BIN sponsor)**: the licensed bank that legally issues the card.

Rain puts US interchange at "usually around 2-3%," split between the card network, the merchant's processor, and the issuer. The issuer's piece is then divided again under contract, between the sponsor bank, the processor, and the program manager.

The stablecoin balance behind the card doesn't change any of this. The merchant still runs a normal card transaction and gets paid in local currency. The stablecoin funding sits on the issuing side.

## Who gets which slice?

| Party | What it earns | What it pays for |
|---|---|---|
| Card network | Network fees on both sides | Messaging, rules, settlement |
| Merchant's acquirer | The merchant's processing fee, minus pass-throughs | Merchant onboarding and risk |
| Sponsor bank | A share of interchange, often plus fixed fees | Regulatory umbrella and balance sheet |
| Issuer-processor | Per-transaction and per-card fees | Authorization infrastructure |
| Program manager | Most of the remaining issuer interchange, plus its own cardholder fees | Product, users, support, rewards, compliance work |

The program manager's slice is what your business case lives on. It depends on volume tiers, minimums, and who covers fraud losses. Get it in writing for each provider you evaluate.

## How do regulatory caps change the math?

They can shrink the main revenue line by an order of magnitude, depending on the market and the bank.

**United States.** Regulation II, from the Durbin Amendment, caps debit interchange for covered issuers, meaning banks with 10 billion USD or more in assets, at "$0.21 plus 0.05 percent multiplied by the value of the transaction," plus a 1 cent fraud-prevention adjustment for eligible issuers. Issuers under 10 billion USD in assets are exempt. Many fintech debit programs work with sponsor banks below that threshold for this reason.

The Federal Reserve proposed lowering the cap in October 2023. That proposal has not been finalized, and the rule is in litigation, so check the current status before you model it.

**European Union.** The Interchange Fee Regulation (EU) 2015/751 caps consumer debit interchange at 0.2 percent and consumer credit at 0.3 percent for intra-EEA transactions.

**Everywhere else.** Rules differ. Verify for every market you launch before you commit to a reward rate.

## What does a program's unit economics look like?

Here is one active cardholder for one month. Every number is illustrative, chosen to show the shape, not to predict your program.

| Line | Illustrative assumption | Illustrative monthly amount |
|---|---|---|
| Card spend | 1,000 USD a month | n/a |
| Issuer interchange (exempt US debit) | 1.2% of spend | +12.00 USD |
| FX fee on cross-currency spend | 1% on 200 USD of foreign purchases | +2.00 USD |
| Subscription | None | 0.00 USD |
| Processor and network fees | Per transaction and per card | -1.50 USD |
| Sponsor bank share | Contracted | -2.00 USD |
| KYC and monitoring, amortized | Onboarding cost spread over 24 months | -0.40 USD |
| Rewards | 0.5% cashback | -5.00 USD |
| Funding and conversion costs | Bank-to-stablecoin and back | -0.80 USD |
| Support, disputes, statements | Amortized | -1.00 USD |
| **Contribution per active cardholder** | | **+3.30 USD** |

Two things jump out. Rewards are the largest cost. And a covered-issuer debit cap would cut the interchange line from 12 USD to about 6 USD (21 cents plus 0.05 percent plus the 1 cent fraud adjustment, on an illustrative 25 purchases of 40 USD). The contribution turns negative, at about -2.70 USD.

Also watch the denominator. Inactive cards still cost money. Programs that report revenue per issued card instead of per active card are hiding the problem.

## How do rewards get funded?

From interchange, in almost every program. The issuer's share is the budget for cashback and points.

Paying more than you earn is a legitimate growth tactic for a while. It is customer acquisition spend, so treat it like ads: set a payback period, measure it per active cardholder, and plan the date you'll step down the rate.

## What does stablecoin settlement change in the economics?

It moves costs around. Some go down, a few new ones appear.

**Down: prefunding.** Daily stablecoin settlement, including weekends, shrinks the cash a program parks to cover settlement lag. Visa says its stablecoin settlement runs seven days a week, against the traditional five-business-day window. The math is in [prefunding and collateral in card issuing](/resources/more/prefunding-and-collateral-in-card-issuing).

**Down: wire costs and delays.** A program funding its settlement wallet in stablecoins can move money outside bank hours.

**New: conversion.** Money starts in a bank account and often ends in one. Bank-to-stablecoin on the way in and stablecoin-to-bank on the way out each carry a fee or spread.

**New: wallet operations.** Gas, address screening, and reconciliation between on-chain movements and your ledger.

## How do you model your own program economics?

Seven steps, in order:

1. **Pick your markets.** Interchange caps and FX patterns change the model per country.
2. **Estimate spend per active cardholder.** Use comparable products or your own users' bank data, not optimism.
3. **Get each provider's fee schedule and revenue share in writing.** Include minimums and tiers.
4. **Price compliance per user.** KYC checks, ongoing monitoring, and sanctions screening.
5. **Set rewards last.** Rewards are the lever you can move. Interchange is not.
6. **Add funding and conversion costs.** How money enters the stablecoin balance and how it leaves.
7. **Run three scenarios.** Low activity, base, and a capped-interchange case.

## Where does BlindPay fit?

The card issuer runs the card; BlindPay moves money into and out of the stablecoin balance behind it. That's the funding and conversion line in the model above.

On the way in, [BlindPay virtual accounts](/virtual-accounts) give each customer a US bank account in their own name. ACH, wire, and SWIFT deposits convert into USDC or USDT and land in the linked wallet. Each account costs 1.50 USD a month. On deposits under 100 USD the BlindPay fee accrues to the monthly invoice, and on 100 USD or more it is charged at the time of the transaction.

On the way out, payouts go to local bank accounts over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), funded at send time with no pre-funding.

BlindPay combines a monthly plan with per-transaction fees that vary by rail and network and are disclosed in the live quote before execute. See [plans](/pricing), read the [payout quote docs](/docs/payout-quotes), or [talk to the team](/contact).

## What to read next

- [Prefunding and collateral in card issuing](/resources/more/prefunding-and-collateral-in-card-issuing)
- [Stablecoin card issuing platforms compared](/resources/more/stablecoin-card-issuing-platforms-compared)
- [Stablecoin card program architecture](/resources/more/stablecoin-card-program-architecture)
- [What is stablecoin card issuing?](/resources/more/what-is-stablecoin-card-issuing)

## Sources

- [Rain: The anatomy of a stablecoin card swipe](https://www.rain.xyz/resources/the-anatomy-of-a-stablecoin-card-swipe)
- [Federal Reserve: Regulation II average debit card interchange fee](https://www.federalreserve.gov/paymentsystems/regii-average-interchange-fee.htm)
- [Federal Reserve: Proposal to lower the debit interchange fee cap (October 25, 2023)](https://www.federalreserve.gov/newsevents/pressreleases/bcreg20231025a.htm)
- [EUR-Lex: Regulation (EU) 2015/751 on interchange fees](https://eur-lex.europa.eu/eli/reg/2015/751/oj/eng)
- [Visa: Visa expands stablecoin settlement in the US (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)

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

---

Source: https://blindpay.com/resources/more/how-to-launch-a-stablecoin-card-program

---
title: "How to launch a stablecoin card program: a 9-step plan and who does what"
seoTitle: "How to launch a stablecoin card program: 9-step plan"
description: "A 9-step plan to launch a stablecoin card program: market, program manager, sponsor bank and BIN, processor, custody, compliance, funding, and payouts."
date: "2026-10-05"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to launch a stablecoin card program"
  steps:
    - name: "Choose your market and users"
      text: "Pick the countries where cardholders live, consumer or corporate cards, and the payments your users make most."
    - name: "Choose an issuing platform or program manager"
      text: "Shortlist card platforms on coverage, network, settlement model, custody model, compliance split, fees, SDKs, and time to launch."
    - name: "Secure a sponsor bank and BIN"
      text: "Get the licensed issuer whose BIN the cards run on, usually through the platform, and pass its onboarding review."
    - name: "Connect the processor"
      text: "Set up real-time authorization against stablecoin balances, card controls, and dispute handling."
    - name: "Decide the wallet and custody model"
      text: "Choose a custodial ledger or self-custodial smart accounts, and just-in-time or prefunded conversion."
    - name: "Split compliance responsibilities"
      text: "Agree in writing who runs KYC, KYB, sanctions screening, transaction monitoring, and reporting."
    - name: "Set up funding and liquidity"
      text: "Decide how money enters the program, such as bank deposits that convert to stablecoins, and how settlement is funded."
    - name: "Set up payouts and cash-out"
      text: "Give users and your company a way to move stablecoins to local bank accounts for payments a card cannot make."
    - name: "Pilot and go live"
      text: "Issue cards to staff, test authorizations, partial captures, refunds, and disputes, then open to users in stages."
faq:
  - q: "How do you launch a stablecoin card program?"
    a: "Choose your market, pick an issuing platform or program manager, secure a sponsor bank and BIN, connect a processor, decide the custody model, split compliance duties in writing, set up funding and liquidity, set up payouts and cash-out, then pilot with staff before going live. Most teams use a platform rather than building each layer."
  - q: "Do I need a banking license to launch a stablecoin card?"
    a: "Usually not yourself. The card runs on a licensed bank or e-money institution's BIN, and that sponsor carries the issuing license. The firm holding or converting the stablecoin may need money transmission or crypto service licenses where users live. Your platform and counsel should confirm which entity holds each license."
  - q: "What is the difference between an issuer, a program manager, and a processor?"
    a: "The issuer, or BIN sponsor, is the licensed institution whose number the card carries. The program manager designs and operates the program under the issuer's rules. The processor approves or declines each authorization in real time and keeps card data secure. Stablecoin card platforms often bundle the program manager and processor roles."
  - q: "Which decisions are hardest to change after launch?"
    a: "The custody model and the settlement model. Moving from a custodial ledger to self-custodial smart accounts, or from fiat to USDC settlement with the network, usually means new contracts, new flows, and reissued cards. Decide both before you sign with a platform, and confirm the sponsor bank supports your choice."
  - q: "How do card users get money into and out of the program?"
    a: "Funding usually comes from stablecoin transfers or bank deposits that convert to stablecoins, for example through a virtual account. Cash-out covers payments a card can't make, such as rent or salaries, and runs as a local bank payout over rails like Pix, SPEI, ACH, or SEPA."
---

To launch a stablecoin card program, choose your market, pick an issuing platform, secure a sponsor bank and BIN, connect a processor, decide the custody model, split compliance duties, then set up funding, payouts, and a staff pilot. The card platform runs the card. Funding and local payouts are separate legs you plan alongside it.

Most launch plans stop at the card. Then the first user asks how to pay rent, and the second asks how to top up from a bank. This guide is the business plan: the roles, the order of decisions, and the two money legs a card program can't skip. For the developer view of the card API itself, see [how to issue stablecoin cards through an API](/resources/more/how-to-issue-stablecoin-cards-api).

**Key takeaways**

- A stablecoin card program has five card roles: network, issuer or BIN sponsor, program manager, processor, and the stablecoin provider.
- Visa reported more than 130 stablecoin-linked card programs in more than 50 countries as of March 31, 2026.
- Custody and settlement are the two decisions that are expensive to reverse. Make them first.
- Card platforms run merchant spend. Funding and cash-out to bank accounts need their own provider.
- Sponsor bank review usually sets the launch timeline, not engineering.

New to the product? Start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## What does it take to launch a stablecoin card program?

It takes a licensed issuer, a program manager, a processor, a stablecoin balance the card can spend from, and a compliance program that covers both the card and the stablecoin. Most companies get the first three from one platform.

Definitions you will hear in every partner call:

- **Issuer or BIN sponsor:** the licensed bank or e-money institution whose bank identification number the card carries. It holds the issuing license.
- **Program manager:** the company that designs and operates the program under the issuer's rules.
- **Processor:** the system that approves or declines each authorization in real time.
- **Just-in-time funding:** stablecoins stay in the balance until a purchase, then convert at authorization.
- **Custodial vs self-custodial:** whether a provider holds the balance or the user's own smart account does.

[Visa reported](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement) more than 130 stablecoin-linked card programs in more than 50 countries, and expects that number of programs to roughly double in 2026. Platforms that bundle the issuer, program manager, and processor are the usual route to launch.

## Where does BlindPay fit in the launch plan?

Use a card issuer for cards and BlindPay for funding and local payouts. The issuer handles authorization and merchant spend. BlindPay handles money entering the program from bank accounts and money leaving it for bank accounts.

On the funding leg, [BlindPay virtual accounts](/docs/virtual-accounts) give each customer a US account with its own routing and account number. ACH, wire, and SWIFT deposits convert to USDC or USDT and land in the linked wallet, which can be the balance the card spends from. BlindPay also collects Pix, SPEI, PSE, and Transfers 3.0 payins and delivers them as stablecoins.

On the payout leg, BlindPay converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations. A live quote locks the rate and fees before stablecoins move, there is no pre-funding, and plans are published with no volume floor. KYC, KYB, and sanctions screening run in the same API flow.

## Who does what in a stablecoin card program?

Each role has a different owner and a different regulator. Write the split down before you sign anything, because the sponsor bank will ask for it.

| Role | What it does | Typical owner |
| --- | --- | --- |
| Card network | Routes transactions, sets program and dispute rules | Visa or Mastercard |
| Issuer / BIN sponsor | Legal issuer, owns the compliance program | Bank or e-money institution, usually via the platform |
| Program manager | Onboarding, limits, support, reporting | Card platform or you |
| Processor | Authorizations, card controls, disputes | Card platform |
| Stablecoin provider | Holds, converts, or settles the stablecoin | Card platform, custodian, or user's smart account |
| Your company | Product, users, brand, first-line support | You |

Bridge, Rain, and BVNK are examples of platforms that cover several of these roles. [Bridge describes](https://www.bridge.xyz/product/cards) its offer as launching "a compliant consumer or commercial card program to users in multiple markets with a single integration." [Rain](https://www.rain.xyz/) calls itself a stablecoin payments platform for enterprise, with card programs, wallets, and scoped cards for agentic payments. [BVNK](https://www.bvnk.com/), part of Mastercard since August 3, 2026, describes linking virtual cards to stablecoin balances. [How to choose a stablecoin card issuing provider](/resources/more/how-to-choose-a-stablecoin-card-issuing-provider) has a scoring framework.

## What are the nine launch steps?

Work through them in order. Each step depends on decisions from the one before.

1. **Choose your market and users.** List the countries where cardholders live, consumer or corporate cards, and the payments users make most. A remote team in Brazil has different needs from travelers in the EEA.
2. **Choose an issuing platform or program manager.** Shortlist on coverage, network, settlement model, custody model, compliance split, fees, SDKs, and time to launch.
3. **Secure a sponsor bank and BIN.** The platform usually brings one. Expect a detailed onboarding review of your business, users, and controls.
4. **Connect the processor.** Configure authorization against stablecoin balances, card controls, and dispute flows. Test partial captures, such as hotel and fuel holds where the final amount changes.
5. **Decide the wallet and custody model.** Custodial ledger or self-custodial smart accounts, and just-in-time or prefunded conversion. [Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards) compares the funding models.
6. **Split compliance responsibilities.** Agree who runs KYC, KYB, sanctions screening, monitoring, and reporting. [Stablecoin card issuing compliance](/resources/more/stablecoin-card-issuing-compliance) lists each party's duties, and the [US](/resources/more/stablecoin-cards-united-states-regulation) and [EU](/resources/more/stablecoin-cards-europe-mica) guides cover regional rules.
7. **Set up funding and liquidity.** Decide how money enters: stablecoin transfers, bank deposits through virtual accounts, or both. Confirm how settlement with the network is funded.
8. **Set up payouts and cash-out.** Give users and your company a way to reach local bank accounts for rent, salaries, and supplier invoices.
9. **Pilot and go live.** Issue cards to staff, run real purchases, refunds, and a dispute, then open to users in stages with spending limits.

## Which decisions are hardest to change later?

Custody and settlement. Both shape your contracts, your user flows, and your liquidity, so changing either usually means a new program.

| Decision | Options | What it drives |
| --- | --- | --- |
| Custody model | Custodial ledger or self-custodial smart account | Who holds funds, recovery, failure modes |
| Settlement model | Fiat over bank rails or USDC with the network | Fiat buffer, conversion timing, bank partner fit |
| Conversion timing | Just-in-time or prefunded | User experience, exposure, load fees |
| Stablecoins supported | USDC, USDT, euro stablecoins | Card support, chains, sponsor bank comfort |

Settlement is moving fast. [Visa launched US USDC settlement](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html) on December 16, 2025, and by April 29, 2026 reported a $7 billion annualized stablecoin settlement run rate across nine blockchains. Ask your platform which model your program uses and whether it can change.

## What does the money flow look like for a user?

A user funds the card from a bank or a wallet, spends at merchants with the card, and cashes out to a bank for everything else. Three legs, often three providers.

Take a design studio in Mexico that pays contractors in Brazil and Colombia:

1. **Funding.** A US client pays the studio's invoice by ACH into a virtual account. The deposit converts to USDC in the studio's wallet.
2. **Spending.** Staff use stablecoin cards for software, travel, and equipment. The card platform authorizes each purchase against the USDC balance.
3. **Cash-out.** Contractor invoices go out as local payouts: Pix in Brazil, ACH Colombia in Colombia. Salaries in Mexico go out over SPEI.

The card covers step 2 only. Steps 1 and 3 are where most of the money moves.

## What goes wrong at launch?

The common failures are operational, not technical. Plan for them before the first card ships.

- **Bank review takes longer than expected.** Start the sponsor bank's onboarding questionnaire early.
- **No cash-out path.** Users load money, then can't pay rent. Build the payout leg before launch.
- **Shared infrastructure risk.** On August 28, 2026, a vulnerability in an outdated version of Rain's Solana contracts hit a small number of programs. [Tria reported](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/) 636 affected users and $431,945, with every affected user being refunded in full. Ask how your platform isolates programs and handles upgrades.
- **Unclear disclosures.** State who holds funds, which fees apply, and that stablecoin balances are not bank deposits.

## What is the next step?

Write the role table above for your own program, with a name in every row. Then test the funding and payout legs on a free [BlindPay development instance](/docs/quickstart-payout) with test stablecoins while your card platform runs its review.

## Sources

- [Visa: How stablecoin-linked cards are modernizing money movement (updated March 31, 2026)](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement)
- [Visa: Visa Launches Stablecoin Settlement in the United States (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- [Visa: Adding Five Blockchains for Settlement (April 29, 2026)](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html)
- [Bridge cards](https://www.bridge.xyz/product/cards)
- [Rain](https://www.rain.xyz/)
- [BVNK](https://www.bvnk.com/)
- [Mastercard completes acquisition of BVNK (August 3, 2026)](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx)
- [SpendNode: Tria details Rain card vulnerability (August 29, 2026)](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/)

---

Source: https://blindpay.com/resources/more/how-to-send-usdc-to-bank-account-mexico

---
title: "How to send USDC to a bank account in Mexico: a step-by-step guide over SPEI"
seoTitle: "How to send USDC to a bank account in Mexico over SPEI"
description: "Send USDC to a Mexican bank account: verify the recipient, quote in pesos, fund from a wallet, and confirm on SPEI. Recipient data, statuses, and failures."
date: "2026-10-05"
updated: "2026-10-05"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to send USDC to a bank account in Mexico"
  steps:
    - name: "Onboard your business"
      text: "Complete KYB with the payout provider so your company can send. Individuals sending for themselves complete KYC instead."
    - name: "Add the recipient's bank account"
      text: "Collect the beneficiary's legal name and an 18-digit CLABE, or a debit card or phone number linked to the account plus the bank's institution code. Validate the CLABE check digit before you save it."
    - name: "Request a quote in pesos"
      text: "Ask for a USDC to MXN payout quote against that bank account, choosing whether the amount is the USDC you send or the pesos the recipient gets, and who pays the fee. Execute before the quote expires."
    - name: "Fund the payout from a wallet"
      text: "Pick the network and token the quote prices, then fund from a provider-managed balance or authorize the transfer from a wallet you control."
    - name: "Execute and let SPEI settle"
      text: "Create the payout against the quote. The provider converts USDC to pesos and sends them over SPEI, which runs 24/7 and settles in seconds once the transfer is released."
    - name: "Confirm delivery"
      text: "Listen for the payout's completion webhook, store the SPEI tracking key, and use Banxico's CEP lookup if the recipient says the money never arrived."
faq:
  - q: "How long does it take to send USDC to a bank account in Mexico?"
    a: "Usually minutes. SPEI is Banco de México's real-time settlement system and runs 24/7, and Banxico's rules say a SPEI payment should not take more than 30 seconds after approval. The longer part is the step before it: receiver checks, the quote, and converting USDC to pesos. A payout held for a compliance review takes longer, whatever the rail."
  - q: "What details do I need to pay someone in Mexico?"
    a: "The beneficiary's full legal name and an account identifier. The default is the 18-digit CLABE. SPEI also accepts a 16-digit debit card number or a 10-digit mobile number linked to the account, and those two need the receiving bank's institution code. For companies, use the legal name the bank registered, not the brand name on their website."
  - q: "Can I send USDT instead of USDC to Mexico?"
    a: "Yes, if the provider accepts USDT on the network you hold it on. The recipient still gets pesos over SPEI, so the stablecoin only changes the funding leg. Check network support first: on many payout APIs, USDT runs on Ethereum, Polygon, Solana, and Tron, but not on Base or Arbitrum, while USDC is the reverse on Tron."
  - q: "What happens if the CLABE is wrong?"
    a: "If the CLABE fails its check digit, a good provider rejects it when you save the bank account. If it is valid but closed or belongs to someone else, the receiving bank can return the SPEI transfer, and Banxico's MI-SPEI service would show it as undergoing return or returned. A valid CLABE for the wrong person is the expensive case, because SPEI routes on the account number."
  - q: "Do I need the recipient's RFC to pay them over SPEI?"
    a: "Not to route the money. SPEI moves pesos on the CLABE, card, or phone number. Collect the RFC anyway when your finance team needs it for supplier invoices, contractor records, or tax filings, and keep it next to the payout record. Paying from a stablecoin balance does not change what you owe on the Mexican tax side."
  - q: "How does the recipient prove the payment arrived?"
    a: "With a CEP, the electronic payment receipt Banco de México issues from the receiving bank's confirmation. Banxico says the CEP can take up to 30 minutes to become available and can be looked up for payments from the last 45 working days. It needs the date, the tracking key or reference, both banks, the receiving account, and the amount."
---

To send USDC to a bank account in Mexico, onboard with a stablecoin payout API, add the recipient's CLABE and legal name, request a USDC to MXN quote, fund it from a wallet, and execute. The provider converts to pesos and delivers them over SPEI, which runs 24/7, so most payouts land in minutes.

That's the short version. The rest of this guide is the detail that decides whether the first payout works: what to collect from each type of recipient, what each SPEI status means, and where Mexican payouts fail.

**Key takeaways**

- SPEI is Banco de México's real-time settlement system. It has run since August 13, 2004 and operates 24/7, so weekends and holidays don't delay a peso payout.
- Collect the legal name and an 18-digit CLABE. A debit card or phone number also works, but needs the bank's institution code.
- Quote in pesos when the recipient must get an exact amount, and decide up front who pays the fee.
- SPEI routes on the account number. A valid CLABE that belongs to the wrong person is the most expensive mistake in the corridor.
- Store the SPEI tracking key with every payout. Banxico's CEP lookup turns it into a receipt anyone can check.

If you're new to the categories of APIs that do this, start with [the types of stablecoin APIs](/resources/more/types-of-stablecoin-apis). This guide assumes a payout API: one that takes stablecoins in and sends local currency out.

## What do you need before the first payout to Mexico?

You need three things before any money moves: a verified sender, a verified recipient bank account, and USDC or USDT on a network the provider accepts.

The sender side is onboarding. A business completes KYB once, an individual completes KYC. Nothing in the Mexico corridor skips this.

The recipient side is where most teams under-collect. What you need depends on who you're paying, so build the form per recipient type instead of one generic "bank details" box.

### Recipient data checklist by recipient type

| Recipient | Account identifier | Name to collect | Keep on file |
| --- | --- | --- | --- |
| Employee | CLABE | Full legal name on the account | Payroll record, RFC if finance needs it |
| Independent contractor | CLABE | Full legal name on the account | Contract and the invoice being paid |
| Supplier (company) | CLABE of the company's account | Legal company name, not the trade name | The supplier's invoice and its RFC |
| Family member (remittance) | CLABE, debit card, or phone number | Full legal name | Relationship and, if asked, source of funds |
| Your own Mexican entity | CLABE | The entity's legal name | Intercompany agreement |

Two details from that table trip teams up. First, a debit card or phone number only works with the receiving bank's institution code, so the form has to ask for the bank too. Second, the relationship matters to compliance. Payout APIs usually ask whether the account belongs to the sender, an employee, a contractor, or a supplier, and some run a name-match check only when you pay your own account.

The field-by-field anatomy of a CLABE, including the check digit math, is in [what details you need to pay someone in Brazil or Mexico](/resources/more/pix-key-cpf-clabe-payout-details). Validate it client-side. It catches typos before they become returns.

## How do you send USDC to a Mexican bank account step by step?

You add the bank account once, then quote, fund, and execute each payout against it. The field names below come from BlindPay's API ([bank accounts](/docs/bank-accounts), [payout quotes](/docs/payout-quotes), [payouts](/docs/payouts)); other providers use similar objects with different names.

1. **Add the bank account.** Create a SPEI bank account on the customer with `beneficiary_name`, `spei_protocol` (CLABE, debit card, or phone), the identifier, and `spei_institution_code` when the protocol is card or phone. Validation runs the same way on development and production, so a malformed CLABE fails in testing.
2. **Filter the bank list.** If you build a bank picker from the provider's bank-details endpoint, drop inactive banks. Some providers, BlindPay included, return them flagged `is_active: false` instead of removing them.
3. **Request a quote.** Quote against the bank account with a `network` and `token`. Set `currency_type` to `receiver` to fix the peso amount, or `sender` to fix the USDC amount. Set `cover_fees: true` if the recipient must get the full amount. Amounts are integers in minor units.
4. **Execute before the quote expires.** Here that's 5 minutes after creation. Past that, request a new one.
5. **Fund it.** From a managed wallet, pass its address and you're done. From a wallet you control, authorize first: an ERC-20 approve on EVM chains, a signed transaction on Stellar, or a token delegation on Solana.
6. **Create the payout.** One call against the quote ID. The stablecoins leave the funding wallet, convert to pesos, and go out over SPEI.
7. **Track it.** `payout.update` fires on status changes and `payout.complete` fires when the payout reaches `completed`, `failed`, or `refunded`.

Network choice is part of step 3. In this API's matrix, USDC payouts can be funded on networks including Ethereum, Polygon, Base, Arbitrum, Stellar, and Solana, and USDT on Ethereum, Polygon, Solana, and Tron. USDT isn't available on Base, Arbitrum, or Stellar, and USDC isn't on Tron. The full matrix is in [supported chains](/docs/kb/supported-chains). The recipient never sees any of this. They get pesos.

## What happens to the pesos inside SPEI?

Once the provider releases the transfer, SPEI settles it between the two banks in real time, and the receiving bank credits the account.

Banco de México runs SPEI as a [real-time settlement system on a 24/7 schedule](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html). Its [user guide](https://www.banxico.org.mx/services/interbanking-electronic-payme.html) cites Notice 17/2010: a SPEI payment should not take more than 30 seconds after approval. That's why "minutes" is a fair ETA for the whole payout, and why a Friday night payout lands like a Tuesday morning one.

Your provider's status is the first thing to check. When you need the bank-level view, Banxico's MI-SPEI service reports these states:

| SPEI status | What it means | What to do |
| --- | --- | --- |
| Being processed | SPEI received the order, money not yet deposited | Wait. This normally clears in seconds |
| Liquidated | SPEI settled it; the receiving bank can credit the account | Send the recipient the tracking key |
| Cancelled | The sending bank cancelled before the money moved | Check the payout status with your provider |
| Rejected | SPEI rejected it for errors or inconsistent data | Fix the account data, then send a new payout |
| Undergoing return | The receiving bank is sending the money back | Don't resend yet; wait for the return to finish |
| Returned | The money is back with the sender | Confirm the account details, then resend |
| Cancelled at the close | Not authorized before SPEI's close of operations | Check with your provider before resending |
| Not found | No SPEI record matches the search | Recheck the date, key, and amount you searched |

"Liquidated" is the state that matters for disputes. From there, the recipient's bank has the money, and a CEP can prove it.

## How do you prove a SPEI payment arrived?

You prove it with the CEP, the electronic payment receipt Banco de México issues from the receiving bank's confirmation.

According to Banxico, the CEP can take up to 30 minutes after the deposit to become available, and it can be looked up for SPEI payments from the last 45 working days. The lookup needs the date, the tracking key or reference, the sending and receiving banks, the receiving account, and the amount. Download it at [Banxico's CEP page](https://www.banxico.org.mx/cep/). The CEP comes as a PDF and an XML file with a digital seal, so an auditor can validate it.

Practical rule: store the tracking key on your payout record the moment you have it. A recipient who says "I didn't get it" gets a CEP link, not a support ticket. [How to track an off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) covers the same idea across every rail.

## Where do USDC payouts to Mexico fail?

Most failures come from recipient data, not from SPEI. Here are the eight that show up most, with the fix.

1. **CLABE with a bad check digit.** Fix: validate the 18th digit in the form.
2. **A 16-digit card number in the CLABE field.** Fix: a length check per protocol.
3. **Card or phone payout without the institution code.** Fix: make the bank field required for those protocols.
4. **Trade name instead of legal name.** Fix: ask for the name exactly as the bank registered it.
5. **A valid CLABE that belongs to someone else.** SPEI won't catch this. Fix: confirm new accounts with the recipient before the first large payout, for example with a small first payment.
6. **Expired quote.** Fix: quote right before execution, never from a cache.
7. **Recipient doesn't recognize the sender.** On BlindPay, SPEI payouts show BlindPay's name as the sender ([payout descriptor](/docs/kb/payout-descriptor)). Fix: tell recipients in advance and put your invoice or payroll ID in the reference.
8. **Assuming `failed` means refunded.** It doesn't. Here, `refunded` means the stablecoins went back to the funding source; `failed` does not refund automatically, so contact support.

On references: Banxico's guide says the payment description that reaches the payee runs up to 40 characters. Whatever your provider passes through, put the invoice or payroll ID at the front.

## How should different businesses run the Mexico corridor?

The steps are the same for everyone; the quote settings and records change by use case. These are illustrative scenarios, not customer stories.

| Use case | Illustrative scenario | Quote setting | Record to keep |
| --- | --- | --- | --- |
| Contractor payroll | A US startup pays 40 engineers in Guadalajara every two weeks | Fix the peso amount, sender covers fees | Contract and invoice per contractor |
| Supplier payments | An importer pays a Monterrey manufacturer a MXN invoice | Fix the peso amount to match the invoice | Supplier invoice and RFC |
| Marketplace payouts | A platform pays out weekly seller balances | Fix the USDC amount, fees from the payout | Seller ledger entry per payout |
| Remittance | An app lets US users send pesos to family | Show the peso amount before confirming | Sender KYC and relationship |

Payroll is the clearest case for fixed-receiver quotes: contractors expect a round peso number, not whatever is left after fees. [Stablecoin payroll for LATAM contractors](/resources/more/stablecoin-payroll-latam-contractors) goes deeper on that flow.

## What Mexican rules should you know about?

Mexico regulates financial technology and virtual asset activity under its 2018 Fintech Law, with Banco de México and the CNBV as the main authorities, and the SAT handles tax. Paying from a stablecoin balance doesn't change the recipient's tax treatment or your payroll and supplier obligations; it changes how the pesos get there.

The rules for converting USDC to pesos, and the stablecoin bill introduced in the Senate in May 2026, are covered in [USDC to MXN routes compared](/resources/more/usdc-to-mxn-routes-2026). Confirm your specific obligations in Mexico with qualified counsel before launching a corridor.

## How do you choose a provider for Mexico payouts?

Score each provider on eight criteria, and test the ones you can in a sandbox instead of asking.

| Criterion | What to test | Red flag |
| --- | --- | --- |
| SPEI protocols | Can you pay to CLABE, debit card, and phone? | CLABE only, with no plan for the rest |
| Validation | Does a bad CLABE fail at bank account creation? | It fails days later as a return |
| Quote control | Can you fix the peso amount and choose who pays fees? | Only sender-side amounts |
| Funding networks | Is your token supported on the network you hold it on? | One chain, or USDC only |
| Pre-funding | Do you need a peso balance parked in Mexico? | A float that grows with volume |
| Status detail | Do webhooks separate conversion from bank delivery? | One "pending" until "done" |
| Tracking reference | Do you get a reference you can take to Banxico's CEP lookup? | No rail reference exposed |
| Refund rules | What happens to the stablecoins when a payout can't complete? | No written answer |

## How does BlindPay handle Mexico payouts?

BlindPay pays out pesos over SPEI to a CLABE, debit card, or phone number, funded with USDC or USDT from a managed wallet or a wallet you control, with no pre-funded peso balance. KYC, KYB, and sanctions screening run inside the payout flow. The same API also pays out over Pix, ACH, RTP, SEPA, and SWIFT (POBO/COBO), and SDKs for Node.js, Python, Go, PHP, and Swift wrap it.

For the Brazil version of this walkthrough, see [how to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil). Then send a test payout to a CLABE on a free development instance with the [payout quickstart](/docs/quickstart-payout), and check today's rate on the [USDC to MXN page](/usdc-to-mxn).

*This article is general information, not legal or tax advice.*

---

Source: https://blindpay.com/resources/more/live-quotes-volatile-currencies-latin-america

---
title: "How live quotes handle volatile currencies: BRL, MXN, COP, and ARS"
seoTitle: "Live quotes for volatile currencies: BRL, MXN, COP, ARS"
description: "A live quote locks one payout's rate, not your budget. How BRL, MXN, COP, and ARS rates are set, and how to design payouts around moving currencies."
date: "2026-10-05"
updated: "2026-10-05"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Does a live quote protect me from currency swings?"
    a: "For one payment, inside its window, yes. A live quote locks the rate and fees until expires_at, so a move during that window doesn't change what the recipient gets. It doesn't protect the next payment, a quote you let expire, or a monthly budget. Each new quote prices the currency where it trades at that moment."
  - q: "Why is my BRL quote different from the PTAX rate?"
    a: "PTAX is a reference, not a price you can trade at right now. The Central Bank of Brazil builds it from consultations with dealers at set times during the day. Your quote is an executable price at the moment you request it, with the provider's spread and fees included, so the two will rarely match exactly."
  - q: "How does Argentina's exchange rate band affect ARS payouts?"
    a: "The peso floats inside a band set by the central bank. Since January 1, 2026, the BCRA moves the band's floor and ceiling each month at the latest monthly inflation figure from INDEC, with a two-month lag. The band limits extreme moves, but the rate inside it still changes daily, so every ARS payout needs a fresh quote."
  - q: "Should I quote in USDC or in local currency when the currency is volatile?"
    a: "Quote the side that matches the obligation. If you owe a fixed amount in reais or pesos, quote the receiver side so the local amount stays fixed and the USDC cost moves. If you have a fixed USDC budget per recipient, quote the sender side and let the local amount move. Volatility doesn't change that rule, it raises the cost of getting it wrong."
  - q: "Does a slower rail like ACH Colombia add FX risk after I execute?"
    a: "No. The conversion rate is locked by the quote when you execute the payout, and receiver_amount is the amount the bank account gets. ACH Colombia takes around one business day to arrive in BlindPay's docs, but that delay affects timing, not the rate. The FX risk sits before execution, not after it."
---

A live quote handles a volatile currency by locking one payout's rate and fees for a short window, usually 5 minutes. Moves inside the window are the provider's problem. Moves between quotes are yours. For BRL, MXN, COP, and ARS, that means a quote protects each payment, not your budget, so the payout flow has to plan for re-quotes.

Volatility doesn't break live quotes. It just makes the gaps between them more expensive.

**Key takeaways**

- A quote is a lock on one payment for one window. The next payment gets the next price.
- Each currency has an official daily reference: PTAX in Brazil, FIX in Mexico, TRM in Colombia. None is a price you can execute at right now.
- Argentina's peso floats inside a central bank band that, since January 1, 2026, moves monthly with INDEC inflation.
- Fix the side that matches the obligation: receiver side for local-currency bills, sender side for USDC budgets.
- Execution locks the rate. A slower rail delays the money, not the conversion.

## Why do volatile currencies make payout quotes harder?

Because the price you saw a minute ago is less useful. In a calm currency, a quote and the next re-quote land close together. In a moving one, the gap can be large enough that a user notices, a finance team asks, or an approved budget no longer covers the payment.

Three things widen that gap in Latin American corridors:

- **News and data releases.** Inflation prints, rate decisions, and fiscal announcements move the local currency in minutes.
- **Overnight and weekend gaps.** Some reference rates are only set on business days, while payout rails like Pix and SPEI run every day.
- **Policy regimes.** A currency in a managed band behaves differently from a free float, and the band itself can move.

The quote doesn't remove any of this. It draws a box around one payment and says: inside this box, the number is fixed. The [glossary](/resources/more/onramp-offramp-liquidity-glossary) defines the box (quote window) and the gap (re-quote delta) if you want the precise terms.

## How are BRL, MXN, COP, and ARS rates set?

Each country publishes an official daily reference, computed differently. Knowing how it's built tells you why your quote won't match it.

| Currency | Payout rail at BlindPay | Official reference | How the reference is built | Source |
| --- | --- | --- | --- | --- |
| BRL | Pix, instant | PTAX | Arithmetic mean of the rates from four daily dealer consultations, published as bulletins | [Banco Central do Brasil](https://dadosabertos.bcb.gov.br/dataset/taxas-de-cambio-todos-os-boletins-diarios) |
| MXN | SPEI, instant | FIX | Average of wholesale market quotes for settlement two banking days later, released from 12:00 on banking days | [Banco de México](https://www.banxico.org.mx/tipcamb/tipCamMIAction.do?idioma=sp) |
| COP | ACH Colombia, about 1 business day | TRM | Amount-weighted average of same-day spot dollar trades by market intermediaries, certified daily | [Superintendencia Financiera](https://www.superfinanciera.gov.co/jsp/60819) |
| ARS | Transfers 3.0, instant | Band floor and ceiling | Peso floats inside a band; since January 1, 2026, the limits move monthly at the latest INDEC monthly inflation figure (T-2) | [BCRA 2026 program](https://www.bcra.gob.ar/Pdfs/Noticias/fase-remonetizacion-2026.pdf) |

Mexico has let the peso float freely since December 22, 1994, per [Banco de México's history of exchange regimes](https://www.banxico.org.mx/mercados/d/%7BC260B142-835E-2F6B-D7BD-3C9E182BB8B9%7D.pdf). Argentina is the outlier: the BCRA says the band exists to limit extreme and abrupt moves, and because the band doesn't adjust for US inflation, the ceiling rises in real terms over time.

For the corridor-level view of each currency, see the routes guides for [BRL](/resources/more/usdc-to-brl-routes-2026), [MXN](/resources/more/usdc-to-mxn-routes-2026), [COP](/resources/more/usdc-to-cop-routes-2026), and [ARS](/resources/more/usdc-to-ars-routes-2026).

## What does a live quote protect you from, and what doesn't it?

It protects the payment you execute inside the window. Everything before the quote, after expiry, and between payments is still yours.

| Moment | Who carries the currency move | What your flow should do |
| --- | --- | --- |
| Before you request a quote | You | Request it at the last responsible moment, right before confirmation |
| Inside the quote window | The provider | Execute against the `quote_id` before `expires_at` |
| After the quote expires | You | Re-quote and compare the new numbers |
| After execution, while the rail settles | Nobody: the rate is locked | Track the payout; `receiver_amount` is what arrives |
| Between this payment and the next | You | Budget for it, and pick the right quote side |

BlindPay payout quotes expire 5 minutes after creation by default, and an expired quote is rejected, never executed at a new rate. Read `expires_at` from each response rather than hardcoding the window; the [cut-off times reference](/docs/kb/cut-off-times) lists the windows by quote type. [Who carries FX risk at each step](/resources/more/who-carries-fx-risk-stablecoin-payout) goes deeper on the hand-offs.

**Illustrative example: one re-quote in BRL.** A user requests a sender-side quote for 10,000 USDC at an effective 5.40 BRL per USDC: the recipient would get R$54,000.00. The user walks away, the quote expires, and the re-quote comes back at 5.43. Now the recipient gets 10,000 x 5.43 = R$54,300.00. The re-quote delta is (5.43 - 5.40) ÷ 5.40 = 0.56%, or about 56 basis points. Rates here are made up for the arithmetic.

Nobody lost money on the expired quote. But the user saw two different numbers, and in a fast market they'll see a third if they wait again.

## Why does your quote differ from PTAX, FIX, or TRM?

Because a reference rate is an average of the past and a quote is a price for now. They answer different questions.

- **Timing.** FIX is released from 12:00 on banking days and describes wholesale trades for settlement two days later. Your quote at 21:00 on a Saturday is priced on the market at 21:00 on a Saturday.
- **Size and market.** TRM averages wholesale spot trades between regulated intermediaries. A payout of $800 doesn't trade there.
- **Spread and fees.** A quote includes the provider's margin and fee lines. A reference rate includes neither.

The useful comparison is your quote's `commercial_quotation`, the raw market rate, against `blindpay_quotation`, the rate after BlindPay's fee. That gap is the price of the conversion. The distance from PTAX or FIX is mostly time. [Why the rate on Google differs from your quote](/resources/more/why-google-rate-differs-from-quote) covers the same mismatch for consumer rate sites.

## Should you fix the local amount or the USDC amount?

Fix whatever the obligation is written in. Volatility doesn't change the rule. It changes how much it costs to get it wrong.

- **Local-currency obligations** (a BRL invoice, an MXN salary, ARS rent): quote the receiver side. The local amount stays fixed across re-quotes and the USDC cost moves. See [how to pay an exact BRL, MXN, or EUR amount](/resources/more/pay-exact-local-amount-receiver-side-quote).
- **USDC budgets** (a marketplace balance, a fixed dollar bonus): quote the sender side. The USDC amount stays fixed and the local amount moves.

**Illustrative example: a fixed ARS obligation across two months.** A company pays a contractor a fixed 2,500,000 ARS a month. In month one the effective rate is 1,450 ARS per USDC, so the payout costs 2,500,000 ÷ 1,450 = 1,724.14 USDC. In month two the rate is 1,500, so the same pesos cost 2,500,000 ÷ 1,500 = 1,666.67 USDC, about 3.3% less. Rates are made up for the arithmetic.

Both payments were locked by their quotes. The dollar cost still changed by 57.47 USDC between them. That's budget risk, and no payout quote covers it. Teams that need dollar certainty across months write the contract in dollars and quote the sender side.

## How should a payout flow behave when the market moves fast?

Assume re-quotes are normal and design for them. A few rules hold up in every one of these currencies.

1. **Quote late.** Request the quote when the confirmation screen loads, not when the user opens the form.
2. **Show the countdown.** Count down from `expires_at`, and re-quote silently when it hits zero. Highlight the change only if the amount moved.
3. **Set a tolerance.** For approved payments, accept a re-quote within an agreed band, for example 0.5%, and send anything wider back for approval.
4. **Keep batches short.** In a long [batch run with live quotes](/resources/more/batch-stablecoin-payouts-live-quotes), early and late rows price at different moments. Fund with a buffer.
5. **Never cache a quote.** A quote that expired is gone. Its `id` can't back a payout, and its numbers are history.
6. **Track the re-quote delta per corridor.** If the ARS corridor's average delta doubles in a week, your users feel it before your dashboards do.

On the payin side, one more rule applies: MXN, COP, and ARS payin quotes on the sender side must be whole currency units, so round before you request. For how the local rails themselves behave, see [stablecoins and local rails in Latin America](/resources/more/stablecoins-local-rails-latin-america) and [Pix vs SPEI](/resources/more/pix-vs-spei).

## What to do next

Pick your most volatile corridor and log `commercial_quotation` from every quote you request for a week, with the timestamp. The spread of those numbers by hour tells you how wide your approval tolerance needs to be and when to run batches. The [payout quotes guide](/docs/payout-quotes) has the request shape.

---

Source: https://blindpay.com/resources/more/pix-vs-spei

---
title: "Pix vs SPEI: how Brazil's and Mexico's instant payment rails compare"
seoTitle: "Pix vs SPEI: Brazil and Mexico instant payments compared"
description: "Pix vs SPEI side by side: who runs each rail, how recipients are identified, hours, settlement, returns, and proof of payment for stablecoin payouts."
date: "2026-10-05"
updated: "2026-10-05"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between Pix and SPEI?"
    a: "Pix is Brazil's instant payment scheme, run by the Banco Central do Brasil and settled in reais through its SPI system. SPEI is Mexico's interbank transfer system, run by Banco de México and settled in pesos. Both run 24/7 and settle in real time. The main differences are how you address a recipient, how returns work, and how you prove a payment arrived."
  - q: "Do Pix and SPEI work on weekends and holidays?"
    a: "Yes. The Pix regulation, Resolution BCB No. 1 of 2020, defines an instant payment as a service available 24 hours a day on every day of the year. Banco de México lists SPEI's operating hours as a 24/7 scheme. Weekend payouts on either rail land like weekday ones, though compliance reviews at the payment provider can still add time."
  - q: "What do you need to pay someone over Pix vs SPEI?"
    a: "For Pix, you need a Pix key: the recipient's CPF, CNPJ, phone number, email, or a random key, which the central directory maps to a bank account. Bank code, branch, and account also work at some providers. For SPEI, you need an 18-digit CLABE, or a 16-digit debit card number or 10-digit phone number with the bank's institution code."
  - q: "Can a Pix or SPEI payment be reversed?"
    a: "Not by the sender alone. On Pix, the recipient can return a payment within 90 days, and the Central Bank's special return mechanism (MED) lets institutions return funds when fraud is suspected. On SPEI, the receiving bank returns a payment it cannot credit, for example because the account is closed. Wrong-but-valid account details usually need the recipient's cooperation on both rails."
  - q: "How do you prove a SPEI or Pix payment was received?"
    a: "For SPEI, use Banco de México's CEP, an electronic payment receipt generated from the receiving bank's credit confirmation, looked up with the tracking key, banks, account, and amount. For Pix, there is no public lookup site; the proof is the receipt from the paying institution with the Pix transaction identifier, plus the status your payment provider reports."
  - q: "Is Pix or SPEI faster for stablecoin payouts?"
    a: "Both are fast enough that the rail is rarely the bottleneck. Banco de México says a SPEI payment should take no more than 30 seconds, and Pix is defined as real time. In a stablecoin payout, the slower parts are usually the on-chain confirmation, the provider's compliance checks, and getting the recipient details right the first time."
---

Pix and SPEI are the instant payment rails of Brazil and Mexico. Pix is run by the Banco Central do Brasil and pays reais; SPEI is run by Banco de México and pays pesos. Both run 24/7 and settle in real time between institutions at the central bank. They differ in how recipients are addressed, how returns work, and how payment proof is issued.

For a company paying people in Latin America, these two rails do most of the work. If you pay out from stablecoins, they are the last leg after the conversion, and the leg the recipient actually sees.

**Key takeaways**

- Both rails run 24/7, including weekends and holidays, so a Saturday payout can land on Saturday.
- Pix addresses a recipient with a key (CPF, CNPJ, phone, email, or random key). SPEI uses an 18-digit CLABE, a debit card number, or a phone number.
- Pix has formal return rules: recipient-initiated returns within 90 days and a fraud return mechanism (MED). SPEI returns happen when the receiving bank can't credit the account.
- SPEI has a public proof of payment, the CEP from Banco de México. Pix proof comes from the institutions involved.
- In a stablecoin payout, the rail is rarely the slow part. Bad recipient data and compliance holds are.

This page compares the rails themselves. For the specific fields to collect, see [Pix keys, CPF, and CLABE payout details](/resources/more/pix-key-cpf-clabe-payout-details). For where these rails sit in the full payment stack, start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure).

## What are Pix and SPEI?

Pix is Brazil's instant payment scheme and SPEI is Mexico's interbank electronic payment system. Both are central bank infrastructure that banks and other licensed institutions plug into.

**Pix** is governed by the Pix regulation attached to [Resolution BCB No. 1 of August 12, 2020](https://www.bcb.gov.br/estabilidadefinanceira/exibenormativo?tipo=Resolu%C3%A7%C3%A3o%20BCB&numero=1). Payments settle in the SPI (Sistema de Pagamentos Instantâneos), which the regulation defines as a centralized real-time gross settlement infrastructure between participants holding an instant payments account at the Central Bank. Recipients are looked up through the DICT, the central directory that maps Pix keys to accounts.

**SPEI** (Sistema de Pagos Electrónicos Interbancarios) is administered and operated by Banco de México. [Banxico describes it](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html) as a real-time settlement system that began operating on August 13, 2004 and runs on a 24/7 scheme. Its rules are set out in Banxico's Circular 14/2017.

## How do Pix and SPEI compare side by side?

Pix and SPEI are close on speed and hours. They differ most on addressing, returns, and proof of payment.

| Feature | Pix (Brazil) | SPEI (Mexico) |
| --- | --- | --- |
| Operator | Banco Central do Brasil | Banco de México |
| Currency | BRL | MXN |
| Settlement | SPI, real-time gross settlement in central bank accounts | Real-time settlement at Banco de México |
| Hours | 24 hours a day, every day of the year | 24/7 scheme |
| Speed | Real time by definition in the regulation | Should not exceed 30 seconds, per Banxico |
| Recipient identifier | Pix key: CPF, CNPJ, phone, email, or random key | 18-digit CLABE, 16-digit debit card, or 10-digit phone |
| Recipient lookup | DICT returns the account holder before payment | CLABE check digit catches typos; no name lookup |
| Proof of payment | Receipt from the paying institution, with a transaction identifier | CEP issued from the receiving bank's confirmation |
| Tracking reference | Pix transaction identifier | Tracking key (clave de rastreo), up to 30 characters |
| Returns | Recipient can return within 90 days; MED for fraud | Receiving bank returns orders it can't credit |
| Fees between institutions | Regulation bars fees between the payer's and recipient's institutions | Banxico charges participants a fixed fee and a per-operation fee |
| QR payments | Static and dynamic Pix QR codes in the regulation | No data |

Two rows matter most for payouts. The **recipient lookup** row is why Pix keys produce fewer misdirected payments: the payer's institution sees the account holder's name before sending. The **proof of payment** row is why SPEI disputes are easier to close: anyone with the payment details can pull the CEP.

## How do you address a payment on each rail?

On Pix you address a key; on SPEI you address an account number, card, or phone.

**Pix keys** come in five types. The key resolves through the DICT to the recipient's account, so the payer never needs a bank code or branch. When a recipient has no key, many providers can pay the bank account directly using the bank code, branch, and account number.

**SPEI destinations** follow [Banxico's user guide](https://www.banxico.org.mx/services/interbanking-electronic-payme.html): an 18-digit CLABE, a 16-digit debit card number, or a 10-digit mobile phone number linked to the account. The CLABE includes a check digit, so many typos fail validation before any money moves. Card and phone destinations also need the receiving bank's institution code.

[Pix keys, CPF, and CLABE payout details](/resources/more/pix-key-cpf-clabe-payout-details) lists exactly what to collect from recipients in each country.

## How do returns work on Pix and SPEI?

Pix has a written return framework with deadlines. SPEI returns are mostly operational: the receiving bank sends back what it can't credit.

On Pix, the Central Bank's [guide to Pix returns and the MED](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Guia_MED.pdf) sets out three paths:

1. **The recipient returns it.** Any user can return all or part of a Pix credited to their account within 90 days of the original transaction, for any reason.
2. **The recipient's institution returns it.** This covers operational failures, funds blocked after a fraud notice under the MED, and a cautionary block of up to 72 hours while the institution reviews suspected fraud.
3. **A fraud claim opens a return request.** The MED lets the recipient's institution debit the account and send funds back without the recipient approving each return. Requests generally need to be opened within 80 days of the transaction.

On SPEI, a payment is returned when the receiving bank can't apply it, for example because the account is closed or the details don't match. Banxico's MI-SPEI status lookup shows the state as "undergoing return" and then "returned." The [Mexico payout guide](/resources/more/how-to-send-usdc-to-bank-account-mexico) lists every SPEI status and what to do at each one.

Neither rail lets the sender pull money back. If the account details were valid but wrong, getting money back depends on the recipient or their bank. [Are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible) covers the same question for the on-chain leg.

## How do you prove a payment arrived?

On SPEI, download the CEP. On Pix, rely on the paying institution's receipt and the transaction identifier.

The [SPEI CEP lookup](https://www.banxico.org.mx/cep/) takes the payment date, the tracking key or reference number, the sending and receiving banks, the beneficiary account, and the amount. Banco de México generates the receipt from the receiving bank's credit confirmation. The lookup runs from 09:30 to 23:00, Monday to Sunday. The tracking key is up to 30 alphanumeric characters; the reference number is up to seven digits.

Pix has no equivalent public lookup. The receipt comes from the institution that sent the payment and carries a unique transaction identifier. In a stablecoin payout, that sending institution is your provider's local partner, so ask your provider which reference it returns and where. [How to track a crypto off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) compares the references across rails.

## How does a stablecoin payout reach a Pix or SPEI account?

A stablecoin payout to Brazil or Mexico has the same shape on both rails: quote, send the stablecoins, convert, and push local currency over the rail.

1. **Register the recipient.** Collect a Pix key or a CLABE and store it with your provider, which validates the format.
2. **Get a quote.** Ask for the amount in BRL or MXN. The quote fixes the exchange rate, the fees, and the stablecoin amount for a short window.
3. **Send the stablecoins.** USDC or USDT moves from your wallet to the provider on the network you picked and confirms on-chain.
4. **Conversion.** The provider sells the stablecoins for reais or pesos at the quoted rate.
5. **The rail leg.** A licensed local institution sends the payment over Pix or SPEI. This part takes seconds.
6. **Confirmation.** The provider reports the payout as completed and gives you a reference you can hand to the recipient.

Step 5 is the shortest step. Steps 1 and 3 decide most outcomes. A wrong key or CLABE fails at the rail, and an under-confirmed on-chain transfer delays everything after it. [Stablecoin payout cut-off times, weekends, and holidays](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays) explains when non-instant parts of the flow can still stall.

## What goes wrong on each rail?

The failures look different on each rail, but most come from recipient data.

| Problem | On Pix | On SPEI | What to do |
| --- | --- | --- | --- |
| Wrong recipient | Key belongs to someone else | Valid CLABE for the wrong person | Show the resolved name before paying where possible; confirm details in writing |
| Invalid details | Key not found in the DICT | CLABE check digit fails | Validate at entry, not at payout time |
| Closed account | Institution can't credit, returns funds | Receiving bank returns the order | Get new details, then resend after the return completes |
| Fraud suspicion | Cautionary block up to 72 hours, MED return | Bank holds or returns per its own controls | Keep KYC and purpose records ready for the provider |
| Dispute "I didn't get it" | Share the transaction identifier and receipt | Share the CEP | Store the rail reference on every payout record |

## When do Pix and SPEI not fit?

Both rails are domestic, single-currency, and designed for bank accounts in one country. They don't fit every payout.

- **Recipients outside Brazil or Mexico.** Pix pays only BRL accounts in Brazil, and SPEI pays only MXN accounts in Mexico. Paying a Brazilian supplier's US dollar account needs SWIFT.
- **Very large payments with document requirements.** Some recipients or their banks want trade documents and wire-style confirmations. SWIFT with an MT103 may suit them better.
- **Recipients who need to pull funds back easily.** Neither rail has a sender-initiated chargeback. That's a feature for payees and a risk for payers.
- **Regulatory reporting.** Cross-border flows into Brazil and Mexico carry local FX and reporting rules. In Brazil, see [PSAV in Brazil explained](/resources/more/psav-brazil-explained). Check your own obligations with local counsel; this page is for information only and is not legal advice.

## How does BlindPay pay out over Pix and SPEI?

BlindPay converts USDC or USDT into reais or pesos and pays out over Pix and SPEI through one API, alongside ACH, RTP, SEPA, and SWIFT (POBO/COBO).

From the [BlindPay docs](/docs/bank-accounts) as of this article's date:

- **Pix payouts** take a `pix_key`, which can be a CPF, CNPJ, phone, email, or random key. When you have bank routing instead of a key, the PIX Safe account type uses the CPF or CNPJ, bank code, branch, and account number. Both settle instantly.
- **SPEI payouts** take a CLABE, or a debit card number or phone number with the bank's institution code. They settle instantly.
- **Collections** run the other way: Pix payins arrive in up to 5 minutes and SPEI payins in up to 10 minutes, delivered as stablecoins ([cut-off times](/docs/kb/cut-off-times)).
- **Funding** comes from stablecoins in an external wallet you control or a BlindPay managed wallet balance, at the quoted rate.
- **Statuses** move from `processing` to `completed`. A payout that ends `refunded` returns the stablecoins to the funding source; a `failed` payout isn't refunded automatically, so contact support ([payouts](/docs/payouts)).

Development instances are free. Add a Pix key or CLABE in the sandbox and run your first test payout from the [payout quickstart](/docs/quickstart-payout).

---

Source: https://blindpay.com/resources/more/verification-of-payee-instant-payments

---
title: "Verification of payee in instant payments: how rails check the recipient before money moves"
seoTitle: "Verification of payee: how instant rails check the recipient"
description: "How EU Verification of Payee, UK Confirmation of Payee, Pix, SPEI, and US payee name checks confirm the recipient before an instant payment becomes final."
date: "2026-10-05"
updated: "2026-10-05"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What is verification of payee?"
    a: "Verification of payee is a check that compares the name a sender types with the name on the receiving account before the payment is sent. The sender's bank asks the recipient's bank, gets back a result such as match, close match, or no match, and shows it to the sender. The sender then decides whether to go ahead."
  - q: "Is verification of payee mandatory in the EU?"
    a: "Yes, for euro payments covered by the Instant Payments Regulation, Regulation (EU) 2024/886. Payment providers in euro-area countries had to offer it from 9 October 2025, for both instant and regular SEPA credit transfers, free of charge to the payer. Providers in non-euro EU countries follow by 9 July 2027, according to the European Central Bank."
  - q: "Does Pix check the recipient's name?"
    a: "Pix shows the payer the name registered to the Pix key before the payment is confirmed, and the Banco Central do Brasil tells users to always check that name. It isn't a match score the way EU Verification of Payee is. If you send a Pix to the wrong person because you didn't check the name, the MED refund mechanism doesn't apply."
  - q: "Can an instant payment be reversed if I paid the wrong account?"
    a: "Usually not by the sender. Instant rails such as Pix, SPEI, RTP, FedNow, and SEPA Instant settle with finality in seconds. Some schemes have fraud recovery routes, such as Brazil's MED or the UK's APP scam reimbursement rules, but they need a confirmed fraud and they cover a sender error only in narrow cases. A wrong account is mostly fixed by asking the recipient to return the money."
  - q: "Do cross-border stablecoin payouts include a payee name check?"
    a: "It depends on the provider and the rail. The payout lands over a local rail such as Pix or SEPA, and the name check, if any, happens inside that rail and the sending institution's own process. BlindPay validates account formats and offers a SWIFT/BIC lookup, and senders should also confirm each new payee's name before the first payout."
---

Verification of payee is a check that compares the name a sender enters with the name on the receiving account before an instant payment is sent. The EU made it mandatory for euro payments on 9 October 2025, the UK has run Confirmation of Payee since 2020, and Pix shows the payer the recipient's name before confirmation. Cross-border payouts through providers such as BlindPay still need the sender to verify new payees.

The reason is simple. Real-time settlement removes the window in which a bank used to catch a mistake. Once the money lands, it's gone.

**Key takeaways**

- Instant payments settle with finality in seconds, so the name check has to happen before the payment, not after.
- The EU's Verification of Payee returns one of four results: match, close match, no match, or other. It became mandatory in the euro area on 9 October 2025, free of charge to the payer.
- The UK's Confirmation of Payee launched in 2020 and runs more than 2 million checks a day, according to Pay.UK.
- Pix shows the payer the name behind a Pix key. Brazil's MED refund route doesn't cover a payment sent to the wrong person because the sender skipped the name.
- The US has no scheme-wide name check yet. The Federal Reserve offers a rail-agnostic Payee Name Verification service, and FedNow said in April 2026 it is exploring a real-time version.

## What is verification of payee?

Verification of payee is a pre-payment check where the sender's bank asks the recipient's bank whether the name the sender typed matches the account. The answer comes back in a second or two and is shown to the sender before they confirm.

It exists because an IBAN, a CLABE, or a sort code tells you where money goes, not who owns it. Fraudsters exploit that gap. An invoice arrives with "updated bank details", the sender pays, and the money lands in an account the supplier never owned.

This type of fraud has a name: authorized push payment fraud, or APP fraud. The payer authorizes the payment themselves, so card-style chargebacks don't apply. A name check is the cheapest defense against it, because it catches the mismatch before the money moves.

## Why does a name check matter more on real-time rails?

On a real-time rail, the payment is final in seconds, so there's no overnight window to stop it. On a batch rail like ACH or a SWIFT wire, a bank sometimes catches an error or a fraud signal before settlement. Instant rails remove that buffer.

The speed is the feature, and the irrevocability is the cost. [Are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible) covers the same trade-off for on-chain transfers, where finality is also measured in seconds.

Two schemes show what happens after the fact:

- **Brazil.** The Banco Central do Brasil's [Pix security page](https://www.bcb.gov.br/estabilidadefinanceira/pix-seguranca) explains that the Mecanismo Especial de Devolução (MED), the special refund mechanism, can block and return funds in confirmed fraud cases if requested within 80 days. It lists the cases MED doesn't cover, including a Pix sent to the wrong person because the sender didn't check the name. The same page tells users to always check the beneficiary's name before confirming.
- **United Kingdom.** Since 7 October 2024, UK payment providers must reimburse in-scope victims of APP scams on Faster Payments up to £85,000 per claim, under the Payment Systems Regulator's [reimbursement rules](https://www.psr.org.uk/information-for-consumers/app-fraud-reimbursement-protections/). That puts the cost of a missed check on the banks, which is one reason they lean on Confirmation of Payee.

Recovery is slow, partial, and narrow. Prevention is the part that works.

## How does verification of payee work in the EU?

In the EU, the payer's provider sends the payee's name and IBAN to the payee's provider, which compares them with its records and returns a result before the payment is sent. The rule comes from the [Instant Payments Regulation, Regulation (EU) 2024/886](https://eur-lex.europa.eu/eli/reg/2024/886/oj).

The European Central Bank's [summary of the regulation](https://www.ecb.europa.eu/paym/integration/retail/instant_payments/html/instant_payments_regulation.en.html) lists four possible results: "match", "close match", "no match", or "other". The payer sees the result before initiating the payment. The check applies to instant payments and to regular SEPA credit transfers, and it must be free for the payer.

What each result means in practice:

| Result | What the payer sees | What the payer should do |
| --- | --- | --- |
| Match | Name and IBAN correspond | Pay |
| Close match | A small difference, and the bank shows the name it holds | Compare the names; correct the record if it's a spelling issue |
| No match | The name doesn't correspond to the account | Stop and confirm details through a separate channel |
| Other (check not possible) | The check couldn't run | Treat it like a no match until confirmed |

The deadlines, from the same ECB page:

| Requirement | Euro area | Non-euro EU countries |
| --- | --- | --- |
| Receive instant euro payments | 9 January 2025 | 9 January 2027 |
| Send instant euro payments | 9 October 2025 | 9 July 2027 |
| Verification of payee | 9 October 2025 | 9 July 2027 |

The payer keeps the final decision. A no match result doesn't block the payment. It warns, and the payer chooses. If you pay out to EU recipients, the name you send now matters as much as the IBAN. [How to off-ramp USDC to euros over SEPA](/resources/more/how-to-off-ramp-usdc-to-euros-sepa) covers which beneficiary fields to collect.

## How does Confirmation of Payee work in the UK?

The UK's Confirmation of Payee (CoP) is an account name check that runs before a payment is sent or collected, and it also checks whether the account is personal or business. [Pay.UK](https://www.wearepay.uk/what-we-do/overlay-services/confirmation-of-payee/) operates it as an API-based, peer-to-peer service with a directory of participants and no central database.

It launched in 2020, more than 300 organisations have implemented it, and it completes more than 2 million checks a day, according to Pay.UK. The Payment Systems Regulator mandated its expansion in 2024.

The results work like the EU model: match, close match with the correct name shown, or no match. The account type check matters for business payments. A supplier invoice that points to a personal account is a classic fraud signal, and CoP surfaces it.

## How does Pix show who you're paying?

Pix shows the payer the name registered to a Pix key before the payment is confirmed. A Pix key is an alias, such as a CPF, CNPJ, phone number, email, or random key, stored in the DICT, the Banco Central's directory of transactional account identifiers.

When a payer enters a key, their bank looks it up in the DICT and displays the account holder's name. The payer confirms or cancels. There's no match score. The payer compares the name themselves, which is why the Banco Central's guidance says, plainly, check the beneficiary's name before you confirm.

The DICT also carries fraud data: institutions share information on keys and accounts involved in fraud, can hold suspicious transactions for extra analysis, and can place a precautionary block, per the same Banco Central page.

The MED got broader in 2025. Resolution BCB 493, published 28 August 2025, introduced MED 2.0, which traces stolen funds beyond the first receiving account ([Banco Central MED 2.0 overview](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/MED/MED_2-0_Circuito_Pix-Dia_1.pdf)). It's still a fraud tool. A payer who typed the wrong key and didn't read the name has no MED claim.

[Pix keys, CPF, and CLABE payout details](/resources/more/pix-key-cpf-clabe-payout-details) covers which identifiers to collect for Brazil and Mexico, and [Pix vs SPEI](/resources/more/pix-vs-spei) compares the two rails.

## What does Mexico's SPEI check?

SPEI, Mexico's interbank instant payment system run by Banco de México, routes payments by CLABE, the 18-digit standardized account number with a check digit. The check digit catches most typos, but SPEI doesn't return a name match result to the payer before sending.

What SPEI offers instead is proof after the fact. Banco de México's [CEP service](https://www.banxico.org.mx/cep/) (Comprobante Electrónico de Pago) lets anyone download an electronic payment receipt using the payment's tracking key, the clave de rastreo. Banxico states that the CEP is generated from information the receiving institution provides, so it shows who the receiving bank credited.

That makes CEP useful for disputes and reconciliation, not for prevention. The prevention step on SPEI is yours: validate the CLABE check digit, confirm the account holder's name with the recipient, and keep the CEP for your records.

## What about the US?

The US has no scheme-wide payee name check that returns a match result to every sender, the way the EU and UK schemes do. What exists is bank-level tooling.

The Federal Reserve's [Payee Name Verification](https://www.frbservices.org/financial-services/multiservice-solutions/payee-name-verification/) service lets a financial institution check an intended payee's name against a routing and account number before issuing a payment. It's rail-agnostic and initially uses 12 months of historical transaction data. In an [April 2026 release](https://www.frbservices.org/news/press-releases/042326-fednow-network-intelligence-api-empowers-participants-payments-confidence), the FedNow Service said it is exploring how to enable Payee Name Verification for real-time needs.

So a US instant payment over RTP or FedNow may or may not get a name check, depending on the sending bank.

## How do the major rails compare?

The EU and UK return a structured result; Pix shows the name and leaves the comparison to the payer; SPEI and the US rely on the account number plus bank-level tools.

| Rail or region | Check before payment | Result format | Mandatory? | Recourse after a mistake |
| --- | --- | --- | --- | --- |
| SEPA Instant and SEPA credit transfers (EU) | Verification of Payee | Match, close match, no match, other | Yes, euro area since 9 October 2025 | Payer's provider liability rules; recall is not guaranteed |
| Faster Payments (UK) | Confirmation of Payee | Match, close match with name, no match | Yes for directed providers | APP reimbursement up to £85,000 for in-scope scams |
| Pix (Brazil) | Name shown from the DICT | Name displayed, payer compares | Name display is part of the flow | MED for confirmed fraud within 80 days; not for sender error |
| SPEI (Mexico) | CLABE check digit | Format check only | Check digit yes, name match no | CEP proof of who was credited; return depends on the recipient |
| RTP and FedNow (US) | Bank-level tools such as the Fed's Payee Name Verification | Varies by bank | No scheme-wide mandate | Depends on the sending bank's own policy |

## How should a sender check the recipient before a real-time payout?

Treat every new or changed payee as unverified until you confirm the name through a second channel. A five-step routine covers most of the risk:

1. **Collect the legal name exactly as the bank holds it.** For a business, that's the registered company name, not the trading name. For an EU payout, a close match on a trading name is a common false alarm.
2. **Validate the identifier's format.** Check IBAN checksums, CLABE check digits, and CPF or CNPJ digits before saving. Format errors are the easy wins.
3. **Confirm changed bank details out of band.** If a supplier emails new details, call a number you already had on file. Don't use the contact details in the email that asked for the change.
4. **Send a small first payment.** For a new payee on a high-value flow, a small test payout followed by the recipient's confirmation proves the account and the name.
5. **Keep the proof.** Store the payment reference: the end-to-end ID on Pix, the CEP on SPEI, the UETR on SWIFT. [How to track an off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) lists the reference each rail returns.

[Common stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes) covers the bank-details errors that cause most failed or misdirected payouts.

## Why don't cross-border payouts always get the same check?

Because the name check lives inside each domestic rail, and a cross-border payout reaches that rail through an intermediary. The intermediary, not the original sender, is the one talking to the domestic scheme.

On a SWIFT wire, the beneficiary name travels in the payment message, but there's no network-wide match result returned to the sender before the payment leaves. Each receiving bank applies its own rules about whether a name mismatch blocks the credit.

On a stablecoin payout that lands over Pix or SEPA, the last leg is a domestic payment sent by the provider's local institution. The sender in another country never sees a match screen.

That's why the verification work moves upstream, into how you onboard payees. [What is real-time cross-border settlement?](/resources/more/what-is-real-time-cross-border-settlement) explains where the cross-border and domestic legs split, and [Which countries have instant payment systems?](/resources/more/instant-payment-systems-by-country) lists the rails at the end of each corridor.

## How does BlindPay handle recipient details?

BlindPay validates recipient account details when you add them, before any payout runs, and pairs that with your own name confirmation for new payees.

What BlindPay does, from the [bank accounts docs](/docs/bank-accounts):

- **Format and country validation at creation.** Every bank account is checked against regex, length, and country rules, on development and production instances alike. A malformed IBAN, CLABE, or CPF fails when you save it, not when you pay.
- **Beneficiary names on the record.** PIX Safe, TED, SPEI, and SEPA accounts carry a beneficiary name field. SEPA also requires the beneficiary's legal name and address, and the IBAN's country code must match the beneficiary's country.
- **SWIFT/BIC lookup.** `GET /available/swift/{swift}` returns a bank's name, city, branch, and country for a SWIFT/BIC code, so you can prefill and confirm bank details before a SWIFT (POBO/COBO) payout.
- **Compliance in the flow.** Every payout runs through a customer that has passed KYC or KYB, with transaction screening on top.

Payouts settle over Pix, PIX Safe, TED, SPEI, ACH, RTP, wire, SEPA, Transfers 3.0, ACH Colombia, and SWIFT (POBO/COBO), listed in [payment methods](/docs/kb/payment-methods). On the instant rails, the payout is final in minutes, which is exactly why the payee check belongs before the first payout.

This article is for information only and is not legal advice.

## What to do next

Add a payee verification step to your onboarding flow before your first instant payout: legal name, validated identifier, out-of-band confirmation for changes. Then [save a bank account](/docs/bank-accounts) on a free development instance and see which fields BlindPay validates for each rail.

---

Source: https://blindpay.com/resources/more/aml-audit-readiness-risk-monitoring

---
title: "AML audit readiness: what regulators ask for and how to prove your risk monitoring works"
seoTitle: "AML audit readiness: the evidence examiners ask for"
description: "The evidence examiners expect from automated risk monitoring: a 10-item evidence table, good vs poor practice, SAR timelines, RFIs, and a 30-day plan."
date: "2026-10-04"
updated: "2026-10-04"
category: "compliance"
author: "BlindPay Team"
howto:
  name: "30-day AML audit readiness plan for automated risk monitoring"
  steps:
    - name: "Week 1: inventory"
      text: "List every control the program claims to run: the AML policy, the customer risk rating method, each monitoring rule and threshold, sanctions lists and refresh jobs, case management, SAR process, reporting, and retention. Name an owner and the artifact that proves each one."
    - name: "Week 2: gap review"
      text: "Compare the policy with what the system actually does. Flag rules with no written rationale, tuning changes with no approval, cases with no closure note, and list updates with no log. Rank gaps by risk, not by how easy they are to fix."
    - name: "Week 3: test scenarios"
      text: "Run known typologies through the system, such as split payments under a threshold or a counterparty added to a sanctions list, and confirm the right alert fires. Pull a sample of closed alerts and SAR decisions and check that each one can be reconstructed from the records alone."
    - name: "Week 4: fix and document"
      text: "Close the high-risk gaps, write the missing rule rationales, update the policy to match reality, and record every change with an approver and a date. Package the evidence in one place, indexed to the examiner's likely request list."
faq:
  - q: "What do AML examiners usually ask for first?"
    a: "The written AML policy, the risk assessment behind it, and a list of the monitoring rules with their thresholds. Then they pull a sample of alerts, cases, and SAR decisions and check whether the records match the policy. A program that can produce those documents in a day starts the exam in a much better position than one that has to rebuild them."
  - q: "How long must a money services business keep AML records?"
    a: "Five years. FinCEN's general rule in 31 CFR 1010.430 requires records kept under the Bank Secrecy Act to be retained for five years, and the MSB SAR rule requires a copy of each SAR and its supporting documentation to be kept for five years from the filing date. Retrievable matters as much as retained: an examiner will ask for specific files."
  - q: "When does a money services business have to file a SAR?"
    a: "A US money services business files a suspicious activity report when a transaction involves or aggregates at least USD 2,000 and it knows, suspects, or has reason to suspect the activity is suspicious under 31 CFR 1022.320. The report is due no later than 30 calendar days after the date of initial detection. Other countries set their own thresholds and deadlines."
  - q: "Do you have to document a decision not to file a SAR?"
    a: "Not under US rules. FinCEN's October 2025 SAR FAQs say a financial institution is not required to document a decision not to file, though FinCEN encourages it, and a short, concise statement usually suffices. Most programs record one anyway, because it is the only way to show an examiner why a closed alert was closed."
  - q: "What is independent testing in an AML program?"
    a: "It is a review of whether the AML program is adequate and working, done by someone other than the compliance officer who runs it. For money services businesses, 31 CFR 1022.210 requires it and says its scope and frequency must match the risk of the services offered. It can be internal staff or an outside firm, as long as the reviewer is independent."
  - q: "How should a fintech prepare for a partner bank compliance review?"
    a: "Treat it like an exam. Have the policy, risk assessment, rule inventory, tuning log, independent test report, sample case files, SAR statistics, and sanctions list logs ready in one indexed folder. Partner banks focus on whether your controls cover the flows they carry for you, so map each control to a product and corridor."
---

Regulators expect proof that automated risk monitoring fits your risks and actually works. In practice that means a written AML policy, a customer risk rating method, a documented reason for every rule and threshold, tuning records, independent testing, timestamped case trails, SAR decision records, sanctions list update logs, management reporting, and records kept for five years.

This article is general information, not legal advice. Exam scope differs by regulator and license, so confirm yours with counsel.

**Key takeaways**

- Examiners test whether the system matches the policy, not whether the policy reads well.
- Every rule needs a written rationale tied to a risk you identified. "The vendor set it" is not a rationale.
- A case file should let a stranger reconstruct the decision: alert, evidence, reviewer, reason, date.
- US money services businesses file SARs within 30 calendar days of initial detection and keep records for five years.
- Independent testing is a legal requirement for MSBs, scoped to risk, and run by someone other than the compliance officer.
- Thirty focused days can close most documentation gaps before an exam or a partner bank review.

## What do regulators expect from an automated risk monitoring program?

They expect a program that is risk based, documented, tested, and able to show its own work. Automation doesn't change the standard. It changes the evidence, because every decision now leaves a record.

The global baseline is FATF Recommendation 1, the risk-based approach: identify and assess your money laundering and terrorist financing risks, then apply controls proportionate to them. FATF Recommendation 20 adds prompt reporting of suspicious transactions. The [automated risk monitoring explainer](/resources/more/what-is-automated-risk-monitoring-fintech) covers the components that sit under those obligations.

For a US money services business (MSB), the requirement is concrete. [31 CFR 1022.210](https://www.law.cornell.edu/cfr/text/31/1022.210) sets four minimum pillars for the AML program:

1. **Policies, procedures, and internal controls**, covering customer identification, filing reports, keeping records, and responding to law enforcement.
2. **A designated compliance officer** who owns day-to-day compliance.
3. **Training** for the right staff, including how to detect suspicious transactions.
4. **Independent review**, with scope and frequency matched to the risk of the services offered. The reviewer can be internal, but can't be the compliance officer.

FinCEN and the IRS publish the [Bank Secrecy Act/AML Examination Manual for Money Services Businesses](https://www.fincen.gov/sites/default/files/shared/MSB_Exam_Manual.pdf). It dates from 2008, but the method holds: scope the risk, read the program, test transactions against it.

## Why do vendor default rules fail an exam?

Because a default rule was tuned for someone else's customers. When an examiner asks why a velocity rule fires at five transfers a day for a freelancer segment, the answer has to come from your risk assessment, not from a vendor's setup guide.

FinCEN said this directly in its [October 2025 SAR FAQs](https://www.fincen.gov/system/files/2025-10/SAR-FAQs-October-2025.pdf): monitoring parameters should be commensurate with the money laundering and terrorist financing risk of the specific institution, considering its products, locations, and customers. The UK's [FCA Financial Crime Guide](https://handbook.fca.org.uk/handbook/FCG/3/2.html) lists, as poor practice, threshold-based systems that are poorly calibrated, where the firm struggles to explain why a particular rule exists.

So the default isn't the problem. The undocumented default is. The [12 red flags rule library](/resources/more/transaction-monitoring-red-flags-stablecoin-payments) is a useful starting point for that inventory.

## What evidence do examiners ask for?

Examiners ask for artifacts that prove each control exists, runs, and gets reviewed. The table below covers the ten items that come up most in reviews of automated monitoring.

| Evidence item | What examiners look for | Example artifact | Owner |
| --- | --- | --- | --- |
| Written AML policy | Approved, current, and matching what the system does | Policy with version history and approval date | Compliance officer |
| Customer risk rating methodology | Clear factors, how ratings change, who can override | Methodology document plus rating distribution | Compliance |
| Rule and threshold rationale | Each rule tied to a risk and a customer segment | Rule inventory with typology, threshold, rationale | Compliance with engineering |
| Calibration and tuning records | Changes tested before release and approved | Change log with before and after alert counts | Compliance with engineering |
| Independent testing results | Scope matched to risk, findings tracked to closure | Review report and remediation tracker | Independent reviewer |
| Alert to closure case trails | Timestamps, reviewer, evidence, and a reason | Case export for a sample period | Compliance analysts |
| SAR decision records | Filed on time, consistent reasoning | SAR log with detection, decision, and filing dates | Compliance officer |
| Sanctions list update logs | Lists loaded promptly and rescreening ran | List version log and rescreen job output | Engineering with compliance |
| Management information and board reporting | Leadership sees volumes, backlog, SARs, findings | Monthly report pack and meeting minutes | Compliance officer |
| Record retention | Five years, and retrievable on request | Retention policy plus a retrieval test | Operations |

Two rows go missing most. Sanctions list logs, because list refreshes run as a background job nobody watches (the [ongoing sanctions screening guide](/resources/more/ongoing-sanctions-screening-how-often-to-rescreen) covers what to log). And tuning records, because rule changes ship like ordinary code. Route both through one approval step.

## What does good practice look like compared with poor practice?

Good practice shows the program understands its own output. The table below is drawn from the FCA Financial Crime Guide's good and poor practice examples on monitoring, paraphrased.

| Area | Good practice | Poor practice |
| --- | --- | --- |
| Monitoring design | Looks at customer behavior as a whole, at several levels of aggregation | Single-transaction thresholds used where they don't fit the risk |
| Rule calibration | The firm can explain the rationale for each rule | Rules are poorly calibrated and their rationale is unclear |
| New approaches | New monitoring methods are piloted and tested before replacing old ones | Systems are swapped without comparing alert quality |
| Control framework | Management oversees performance and resolves issues | The control framework around automated monitoring is weak |
| Customer explanations | Staff test explanations against evidence | Staff accept a customer's explanation at face value |
| Use of results | Monitoring results show whether due diligence is still adequate | Little evidence that unusual transactions reach the compliance officer |

One more contrast that isn't from the FCA guide, but that examiners everywhere probe: a customer risk rating that refreshes on triggers (new corridor, volume jump, ownership change) versus a rating set once at onboarding and never touched. The second is a snapshot, not a control.

## How do SAR timelines work, and what happens when a deadline slips?

Under [31 CFR 1022.320](https://www.law.cornell.edu/cfr/text/31/1022.320), a US MSB must report suspicious transactions that involve or aggregate at least USD 2,000, no later than 30 calendar days after initial detection. It keeps the SAR and supporting documents for five years from filing. Timelines differ in other jurisdictions, so check the local rule for each license.

The 30-day clock is where programs get caught. Examiners compare three dates in every sampled case: when the alert fired, when someone decided it was suspicious, and when the SAR was filed. Long unexplained gaps between them are findings even if the filing itself was "on time."

FinCEN's October 2025 FAQs clarified two points that many programs over-engineered:

- **Continuing activity.** Earlier guidance suggested reviewing and filing on continuing activity every 90 days, with a deadline 120 days after the previous SAR. FinCEN now says that cadence isn't required; risk-based procedures can govern it.
- **No-SAR decisions.** Documenting a decision not to file is encouraged, not required. A short statement usually suffices.

When an internal deadline slips, escalate it, don't hide it:

1. Flag any case past its internal review target automatically, before it nears the filing deadline.
2. Escalate to the compliance officer with the case age and the blocker.
3. File as soon as the decision is made, and record why the review took longer.
4. Never backdate a detection or decision date. A late filing with an honest record is a finding; a falsified date is a much bigger problem.
5. Report late cases in the monthly management pack, with the root cause.

## What is a 30-day readiness plan?

A 30-day plan turns "we think we're ready" into an indexed evidence folder. Run it before a scheduled exam, a partner bank review, or a funding round's compliance diligence.

1. **Week 1: inventory.** List every control the policy claims, its owner, and the artifact that proves it. Use the evidence table above as the index.
2. **Week 2: gap review.** Compare the policy with system behavior. Flag rules with no rationale, tuning changes with no approval, cases with no closure note, and list refreshes with no log.
3. **Week 3: test scenarios.** Run known typologies through the system and confirm the right alerts fire. Pull a sample of closed alerts and rebuild each decision from the records alone. The [false positive tuning guide](/resources/more/reduce-false-positives-transaction-monitoring) explains how to test below-the-line cases.
4. **Week 4: fix and document.** Close high-risk gaps first, update the policy to match reality, and log every change with an approver and a date.

**Illustrative example.** A fintech pulls 40 closed alerts from the last quarter as a mock exam sample. Six have no closure reason, three were closed by the analyst who also tuned the rule, and one SAR shows 41 days between alert and filing with no note. That's ten findings from one sample, and all ten are documentation gaps a regulator would find in the first week. The fix took two weeks: a mandatory closure reason field, a separation rule for tuning and review, and an aging alert on open cases. These numbers are illustrative, not drawn from a real program.

## How do you respond to a compliance request for information?

Answer completely, once, with documents rather than assertions. A request for information (RFI) from a regulator, partner bank, or payment provider usually covers a customer or a transaction, and a partial answer invites a second round.

Prepare these before you need them:

- The customer's verified identity or business file, including beneficial owners.
- Transaction history for the period in question, with counterparties.
- The relationship between sender and receiver and the purpose of the payment.
- Source of funds evidence where the amount or pattern calls for it.
- Your own case notes, if the activity already raised an alert.

Response windows are set by whoever asks, and they vary from hours to weeks. BlindPay, for example, gives partners 27 days to answer a customer KYC or KYB request for information before the customer is automatically rejected. The window is printed on the request. Read it on day one, not day twenty. Travel Rule data gaps follow their own hold and return logic, covered in the [travel rule workflow guide](/resources/more/travel-rule-workflow-hold-return-reject).

## What are the common mistakes in AML audit readiness?

The common mistakes are records that don't explain decisions and controls that nobody re-checks.

- **Gaps in case notes.** "Closed, no concern" without the evidence reviewed tells an examiner nothing.
- **No validation after rule changes.** A threshold edit that ships without a before and after comparison is an untested control.
- **No board or management reporting.** If leadership never sees alert volumes, backlog, and SAR counts, the program has no oversight on record.
- **A policy nobody has reviewed.** A policy that still describes last year's products is evidence the program and the business drifted apart.
- **Unjustified risk rating overrides.** Staff able to lower a customer's risk rating without a written reason and a second approver is one of the first things examiners test.
- **Same person tunes and reviews.** Separation between whoever writes the rules and whoever checks them is basic independence.

## How does BlindPay support audit readiness?

BlindPay is registered with FinCEN as a money services business and lists its registrations on the [licenses page](/licenses). KYC, KYB, sanctions screening, travel rule compliance, and transaction monitoring run inside the API before money moves, so each customer and payment carries a status rather than a decision buried in email.

For partners, that means the evidence trail starts in the data. Customers move through documented statuses such as `verifying`, `approved`, `compliance_request`, and `rejected`, described in the [KYC reference](/docs/kb/kyc). RFIs can be handled through the [RFI API](/docs/learn/rfi), which returns the deadline as `expires_at`. Flagged payments land on hold for manual review, as described in [on-hold transactions](/docs/kb/on-hold-transactions). Your own AML program remains yours to document; these records make that easier to evidence.

## What to do next

Pull 25 closed alerts from last month and try to rebuild each decision from the records alone. Every case you can't rebuild is a finding waiting for an examiner. Start the 30-day plan with those.

## Sources and further reading

- [31 CFR 1022.210: AML programs for money services businesses](https://www.law.cornell.edu/cfr/text/31/1022.210)
- [31 CFR 1022.320: SAR reporting by money services businesses](https://www.law.cornell.edu/cfr/text/31/1022.320)
- [FinCEN: SAR frequently asked questions, October 2025](https://www.fincen.gov/system/files/2025-10/SAR-FAQs-October-2025.pdf)
- [FinCEN and IRS: BSA/AML Examination Manual for Money Services Businesses](https://www.fincen.gov/sites/default/files/shared/MSB_Exam_Manual.pdf)
- [FATF Recommendations](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Fatf-recommendations.html)
- [FCA Financial Crime Guide, FCG 3.2](https://handbook.fca.org.uk/handbook/FCG/3/2.html)

*This article is general information, not legal advice.*

---

Source: https://blindpay.com/resources/more/batch-stablecoin-payouts-live-quotes

---
title: "How to run batch payouts with live quotes: one quote per payout, expiry, and rate drift"
seoTitle: "Batch stablecoin payouts with live quotes: how to run them"
description: "How to pay 100+ recipients from USDC with live quotes: quote and execute per payout, size the funding, handle expiry and retries, and track the batch."
date: "2026-10-04"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Can I use one quote for several payouts in a batch?"
    a: "No. At BlindPay a quote_id backs exactly one payout, and a second payout against the same quote fails. A batch of 120 recipients needs 120 quotes. Each quote locks its own rate, fees, and receiver amount for its own window, which is what lets every recipient see a firm number."
  - q: "Should I request every quote in a batch before executing any of them?"
    a: "Only for very small batches. Payout quotes expire 5 minutes after creation by default, so a batch that quotes everything first and executes later will hit expired quotes. Pipeline it instead: quote one payout, execute it, then move to the next, or run a few of those pairs in parallel."
  - q: "How do I avoid paying someone twice if a request times out mid-batch?"
    a: "Send an Idempotency-Key header on every payout call and keep the exact request body for retries. At BlindPay, a retry with the same key and byte-identical body replays the original response instead of creating a second payout. A different body under the same key returns 422 idempotency_key_payload_mismatch. Keys are kept for 24 hours."
  - q: "Why did the last payouts in my batch cost more USDC than the first ones?"
    a: "Because each payout was quoted at a different moment. If you fix the local amount and the currency weakens against the dollar during the run, later quotes need slightly less USDC; if it strengthens, they need more. Over a long run that drift adds up, so fund the batch with a buffer and keep runs short."
  - q: "How do I know when every payout in a batch has landed?"
    a: "Track each payout id through webhooks. At BlindPay, payout.complete fires when a payout is confirmed at the destination or refunded, and payout.update fires on intermediate steps, including reaching failed. A batch is done when every payout id has a terminal status: completed, failed, or refunded."
howto:
  name: "How to run a batch of stablecoin payouts with live quotes"
  steps:
    - name: "Validate the batch file"
      text: "Check every row has an approved bank account, a positive amount in minor units, and the quote side you intend: receiver for fixed local amounts, sender for fixed USDC amounts."
    - name: "Size and fund the source wallet"
      text: "Estimate total USDC from one indicative quote, add a buffer for rate drift and fees, and fund the wallet before the run starts."
    - name: "Quote and execute each payout as a pair"
      text: "For each row, request a payout quote, authorize the quoted amount if the wallet needs it, and execute the payout with the quote_id before expires_at."
    - name: "Retry safely"
      text: "Send an Idempotency-Key per payout and reuse the same key and byte-identical body on retries. Re-quote any row whose quote expired."
    - name: "Track every payout to a terminal status"
      text: "Listen for payout.update and payout.complete webhooks and mark each row completed, failed, or refunded."
    - name: "Close the batch"
      text: "Reconcile quoted receiver amounts against the batch file, report the USDC actually spent, and requeue failed rows after fixing their cause."
---

To run a batch of payouts with live quotes, treat each payout as its own quote-then-execute pair. A quote backs exactly one payout and expires after 5 minutes by default, so a batch of 120 recipients is 120 quotes, each executed right after it's created. Fund the wallet first, send an idempotency key per payout, and track each one to a terminal status.

The batch is a loop. What makes it production-grade is everything around the loop.

**Key takeaways**

- One `quote_id`, one payout. A second payout against the same quote fails.
- Don't quote the whole batch up front. Quotes expire in 5 minutes by default; pipeline quote and execute per row.
- Rows quoted later get later rates. Fund with a buffer for drift across the run.
- An `Idempotency-Key` per payout turns a timeout retry into a replay instead of a double payment.
- A batch is finished when every payout id has a terminal status, not when the loop ends.

## Why can't one quote cover a whole batch?

Because a quote is a price for one conversion to one bank account. It names one `bank_account_id`, one amount, and one fee calculation, and it backs one payout.

That is a feature. Every recipient in the batch gets a firm number: the `receiver_amount` on their quote is what lands. A single blended rate for 120 people would make each recipient's amount an estimate until the batch finished.

It also means the batch is only as good as its slowest row. If row 87 sits in a queue for six minutes, its quote expires, and you re-quote it. Nothing executes at a stale rate. The [glossary](/resources/more/onramp-offramp-liquidity-glossary) defines quote window, re-quote, and binding quote if you need the vocabulary.

## How should you structure a batch run?

Pipeline it: quote, authorize if needed, execute, next row. Three patterns show up in practice, and only one holds up at size.

| Pattern | How it works | Expiry risk | Rate exposure | When it fits |
| --- | --- | --- | --- | --- |
| Quote and execute per row | Each row gets its own quote, executed within seconds | Low | Each row priced at its own moment | Any batch size. The default. |
| Approve on an estimate, then quote per row | Finance approves totals from one indicative quote, with a tolerance; the run quotes and executes each row | Low | Bounded by the approved tolerance | Batches that need sign-off before money moves |
| Quote everything, then execute everything | All quotes first, all payouts after | High once the batch passes a few minutes | Locked per row, but many will expire | Tiny batches only |

The second pattern is how most payroll teams run. Someone approves "about 97,800 USDC, plus or minus 1%" in the morning. The run quotes each row live. If the total drifts past the tolerance, the run pauses and asks again.

## How much USDC should you fund before the run?

Enough for the total at current rates, plus a buffer for drift and fees. You won't know the exact total until the last row is quoted, because every row is priced at its own moment.

**Illustrative example.** A company pays 120 contractors in Mexico over SPEI, each a fixed $15,000.00 MXN, quoted on the receiver side. The numbers below are made up for the arithmetic, not BlindPay pricing.

- Batch total: 120 x 15,000 = $1,800,000.00 MXN.
- Effective rate on the first quote: 18.4075 MXN per USDC.
- USDC for the batch at that rate: 1,800,000 ÷ 18.4075 = 97,786.23 USDC.
- Suppose the peso strengthens 0.3% during a long run, so the effective rate falls to 18.3523. Each row then needs 15,000 ÷ 18.3523 = 817.34 USDC instead of 814.89.
- If every row priced at the later rate, the batch would need 1,800,000 ÷ 18.3523 = 98,080.47 USDC. That's 294.24 USDC more than the first estimate.

A 0.5% to 1% buffer covers a move like that. Anything left stays in your wallet. Short runs shrink the problem: the less time between the first and last quote, the less room for drift. For how big that float should be month to month, see [no pre-funding in a stablecoin API](/resources/more/no-pre-funding-stablecoin-payouts).

## How do you authorize funds for each payout?

It depends on where the USDC sits. The payout endpoint is the same either way; what changes is the step before it.

- **External EVM wallet.** Each quote returns a `contract` payload. You call `approve` on the token contract for that quote's exact amount, then execute with `quote_id` and `sender_wallet_address`. That's one on-chain approval per row, so 120 rows means 120 approvals and their gas. The [EVM payout guide](/docs/payout-evm) has the full script.
- **Managed wallet.** No client-side signing. You pass the wallet address as `sender_wallet_address` and execute. BlindPay-managed wallets are in beta and custodial, so this path trades the approval step for BlindPay holding the balance.
- **Solana and Stellar.** Each has its own signing step per payout: a token delegation on Solana, an authorize-and-sign XDR on Stellar.

For large recurring batches, the per-row approval cost on EVM is worth pricing in. [Who pays gas fees](/resources/more/who-pays-gas-fees-stablecoin-payments) breaks it down by network.

## How do you make retries safe?

Send an `Idempotency-Key` header on every payout call, one key per row, and resend the byte-identical body on retry. That's the whole defense against double payments when a request times out.

BlindPay's [idempotency rules](/docs/learn/idempotency) are specific:

| Retry situation | Response |
| --- | --- |
| Same key, same body, original finished | Original response replayed with `Idempotency-Replayed: true`. No second payout. |
| Same key, different body | `422` `idempotency_key_payload_mismatch` |
| Same key, original still running | `409` `idempotency_key_in_flight` with `Retry-After` |
| Original returned `5xx` | Key released, so the retry runs fresh |

Two practical rules. Derive the key from the batch and row, for example `batch-2026-10-04-row-087`, so a restarted job reuses it. And serialize the body once and keep the bytes: re-serializing JSON with a different key order counts as a different body. The IETF's [Idempotency-Key header draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/) describes the same pattern across APIs, and the [idempotency keys explainer](/resources/more/stablecoin-api-idempotency-keys) covers it in more depth.

If a row's quote expired before the retry, the retry should request a new quote first. A new quote means a new payout body, so give it a new key.

## How do you track a batch to the end?

By payout id, through webhooks. The loop ending tells you every request was sent, not that every peso landed.

BlindPay fires `payout.new` when a payout is created and its source funds are captured, `payout.update` on intermediate steps (including reaching `failed`), and `payout.complete` when a payout is confirmed at the destination or refunded. The [webhook events reference](/docs/learn/webhooks-events) lists them.

Keep a row-level status table and close the batch only when every row is terminal:

| Row status | Means | Action |
| --- | --- | --- |
| `quoted` | Quote created, not executed | Execute before `expires_at` or re-quote |
| `processing` | Payout created | Wait for webhooks |
| `completed` | Funds landed | Mark paid |
| `failed` | Payout didn't complete | Fix the cause, requeue as a new row |
| `refunded` | Stablecoins returned instead of paid out | Check the bank details, requeue |

On Pix and other non-USD local rails, a payout that can't be delivered after the stablecoins are collected is refunded automatically to the quote's refund wallet, or to the sending wallet when none is set. Recipients in Mexico can also check a SPEI transfer through Banco de México's [CEP lookup](https://www.banxico.org.mx/cep/), which helps when a contractor asks where their money is. More on the states in [stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained).

## What should you test before the first real batch?

Run the whole loop on a development instance with test bank accounts and USDB, BlindPay's test stablecoin. Payouts there are free.

Test the unhappy paths on purpose: let one quote expire, retry one payout with the same idempotency key, and kill the job halfway and restart it. Development instances are capped at roughly 100 requests per minute, so pace a large test batch or you'll see `429` with a `Retry-After` header. The [sandbox vs production guide](/docs/learn/sandbox-vs-production) lists what else differs.

Since SPEI runs around the clock per [Banco de México](https://www.banxico.org.mx/services/interbanking-electronic-payme.html), a Mexico batch doesn't have to wait for a business day. For a single exact-amount payout, start with [paying an exact BRL, MXN, or EUR amount](/resources/more/pay-exact-local-amount-receiver-side-quote), and for marketplace-style runs see [marketplace payouts in Latin America](/resources/more/marketplace-stablecoin-payouts-latam).

## What to do next

Take last month's payout file, pick ten rows, and run them through a development instance with the quote-and-execute loop, one idempotency key per row. Then read the [payouts reference](/docs/payouts) for the status lifecycle before you scale it to the full batch.

---

Source: https://blindpay.com/resources/more/blockchain-payment-use-cases

---
title: "7 real-world blockchain payment use cases: payroll, remittances, B2B, and more"
seoTitle: "7 blockchain payment use cases: payroll, B2B, remittances"
description: "Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts."
date: "2026-10-04"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are the main use cases for blockchain payments?"
    a: "Seven stand out: cross-border contractor payroll, remittances, B2B supplier payments, marketplace and creator payouts, treasury moves outside banking hours, paying invoices and bills from stablecoin balances, and payout infrastructure for fintechs. They share one trait: money crosses a border or a currency, where bank rails are slowest and most expensive."
  - q: "What is the biggest use case for stablecoin payments?"
    a: "Business-to-business payments. McKinsey and Artemis Analytics estimated real-world stablecoin payments at about $390 billion in 2025, and B2B transactions made up about $226 billion of that. Global payroll and remittances added about $90 billion. Most headline stablecoin volume is trading, not payments."
  - q: "Can companies pay employees and contractors in stablecoins?"
    a: "Companies commonly pay international contractors through stablecoin rails, either in local currency through an off-ramp or in USDC to the contractor's wallet. Paying employees is harder, because payroll tax, withholding, and labor rules in most countries expect local currency through payroll systems. Check local rules before paying salaries in stablecoins."
  - q: "Are stablecoins good for remittances?"
    a: "For many corridors, yes. The World Bank put the global average cost of sending $200 at 6.36% in the third quarter of 2025. Stablecoin routes cut the correspondent and FX costs behind that figure. The limit is the last mile: the recipient needs a licensed off-ramp and a local rail to receive cash."
  - q: "Do customers or suppliers need a crypto wallet?"
    a: "No, in most business setups. The provider converts stablecoins to local currency and pays a normal bank account, so the supplier, contractor, or seller sees a bank deposit. A wallet is only needed when the recipient chooses to receive and hold stablecoins directly."
  - q: "Where should a business start with blockchain payments?"
    a: "Start with the cross-border payment you make most often, to a country with a fast local rail like Pix or SPEI. Price it against what actually arrives by wire today, run a handful of real payments, and expand corridor by corridor. Domestic payments on instant rails rarely benefit."
---

Blockchain payments clearly beat traditional rails in seven places: cross-border contractor payroll, remittances, B2B supplier payments, marketplace and creator payouts, treasury moves outside banking hours, paying bills from stablecoin balances, and payout infrastructure for fintechs. What they share is a border or a currency in the middle, which is where correspondent banking is slowest and most expensive.

Real-world volume backs this up, at a smaller scale than headlines suggest. McKinsey and Artemis Analytics [estimated](https://www.mckinsey.com/industries/financial-services/our-insights/stablecoins-in-payments-what-the-raw-transaction-numbers-miss) actual stablecoin payments at about $390 billion in 2025, roughly 0.02% of global payments. Business-to-business payments were about $226 billion of it, and global payroll and remittances about $90 billion. The rest of the trillions you see quoted is mostly trading.

Each use case below follows the same shape: the problem, how blockchain payments fix it, a realistic three-step flow, and one honest limit.

## 1. How do blockchain payments help with cross-border payroll?

**The problem.** A US company paying 40 contractors across Latin America sends 40 wires, each with its own fee, FX markup, and two-to-five-day wait. Contractors lose a chunk of every invoice and can't predict when it lands.

**How blockchain payments fix it.** The company funds once in dollars, and each contractor is paid in local currency over the local instant rail, or in USDC if they ask for it.

**The flow.**
1. The company funds the payroll run by ACH or wire, or from a USDC balance.
2. The provider converts and quotes each payout, locking the rate.
3. Contractors receive reais over [Pix](https://www.bcb.gov.br/en/financialstability/pix_en), pesos over SPEI, or USDC, usually within minutes.

**The limit.** This fits contractors, not employees. Salaried staff need payroll tax and withholding in their own country, which a stablecoin rail doesn't handle. [Stablecoin payroll for LatAm contractors](/resources/more/stablecoin-payroll-latam-contractors) goes deeper.

## 2. Are blockchain payments useful for remittances?

**The problem.** The World Bank's [Remittance Prices Worldwide report](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) put the global average cost of sending $200 at 6.36% in the third quarter of 2025, more than double the 3% target for 2030.

**How blockchain payments fix it.** A remittance company swaps its correspondent and pre-funded accounts for a stablecoin leg, cutting the hops that drive cost.

**The flow.**
1. The sender pays the remittance app in local currency.
2. The app converts to a dollar stablecoin and moves it on-chain in seconds.
3. The receiving side off-ramps into local currency and pays the family's bank account.

**The limit.** The last mile decides everything. Without a licensed off-ramp and a local payout rail in the receiving country, the money ends up in a wallet the family may not be able to spend.

## 3. How do businesses use blockchain payments for B2B supplier payments?

**The problem.** Importers and exporters pay suppliers by SWIFT wire, which can pass through intermediary banks that each take a fee, works only in banking hours, and leaves the supplier guessing what will arrive.

**How blockchain payments fix it.** The buyer pays a quoted amount, and the supplier receives local currency over its domestic rail, often the same day.

**The flow.**
1. The buyer requests a quote for the invoice amount in the supplier's currency.
2. The buyer funds in dollars or stablecoins, and the stablecoin settles across.
3. The supplier gets paid in its own currency, with a payment reference for reconciliation.

**The limit.** Some suppliers, banks, or customs processes still require a SWIFT confirmation. A provider that pays out over SWIFT covers those, but a raw stablecoin transfer doesn't. [Stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments) compares the two in detail.

## 4. How do marketplaces and creator platforms use blockchain payments?

**The problem.** A marketplace with sellers in five countries needs local bank accounts or pre-funded balances in each, and pays out weekly because daily wires cost too much.

**How blockchain payments fix it.** The platform holds one dollar balance and pays sellers in their currency whenever it wants, without pre-funding each country.

**The flow.**
1. The marketplace collects from buyers and holds the balance in dollars or USDC.
2. It triggers a payout per seller through one API.
3. Sellers get paid over Pix, SPEI, or the local rail, often minutes later.

**The limit.** Every seller is a party the provider must verify. High-volume platforms need fast KYC and KYB, and they shouldn't route sellers' funds through their own account unseen. [Marketplace payouts in Latin America](/resources/more/marketplace-stablecoin-payouts-latam) covers the setup.

## 5. Can blockchain payments move treasury and liquidity 24/7?

**The problem.** A company's cash sits in one country while a bill comes due in another, and banks don't move it on Friday night, weekends, or holidays.

**How blockchain payments fix it.** Stablecoin transfers settle at any hour, so treasury can move dollars between entities or providers on a Sunday. The U.S. Faster Payments Council's [July 2026 report](https://fasterpaymentscouncil.org/userfiles/2080/files/CBPWG_DAWG_Stablecoins%20as%20a%20Cross-Border%20Payment%20Method2_07-22-2026%20Final.pdf) names this 24/7 settlement as a way to reduce settlement risk and improve working capital.

**The flow.**
1. Treasury converts dollars to USDC, or holds a USDC balance.
2. It moves the USDC to the wallet of the entity that needs it, settling in seconds to minutes.
3. That entity uses it or converts it into local currency.

**The limit.** The bank legs still run on banking schedules. Converting back to fiat on a weekend depends on your provider and the local rail. Holding stablecoins also raises accounting questions, and [liquidity risk in global payouts](/resources/more/liquidity-risk-global-payouts) covers the trade-offs.

## 6. Can you pay invoices and bills directly from stablecoins?

**The problem.** A business or fintech user holds dollars on-chain but owes bills in local currency: a supplier invoice in the US, a boleto or utility bill in Brazil. Paying means converting by hand, then paying, then matching the payment to the bill.

**How blockchain payments fix it.** A bill-pay API registers the bill, prices it, and pays it over the right rail straight from the stablecoin balance.

**The flow.**
1. Register the bill: the invoice and the vendor's bank details, or the boleto or Pix code.
2. Quote it. The provider prices the stablecoin side so the bill is paid in full.
3. Pay it. The vendor gets an ACH, wire, boleto, or Pix payment.

**The limit.** Bills follow their rail's rules. Boletos clear only on Brazilian banking days, and their amount can change with interest. [How to pay invoices with stablecoins through an API](/resources/more/how-to-pay-invoices-with-stablecoins-api) walks through the full flow.

## 7. How do fintechs and PSPs use blockchain payments as payout infrastructure?

**The problem.** A fintech or payment service provider wants to offer payouts to many countries, but building banking relationships, FX, and licenses in each one takes years.

**How blockchain payments fix it.** A stablecoin payments API gives it one integration for many corridors, with the conversion and local payout handled by a licensed provider.

**The flow.**
1. The fintech onboards its customers through the provider's KYC and KYB.
2. It funds payouts in dollars or stablecoins.
3. The provider pays recipients in local currency, and webhooks update the fintech's ledger.

**The limit.** The fintech still owns its own product's licensing questions, and it must register each customer with the provider rather than pooling them. [Direct vs indirect stablecoin exchange](/resources/more/direct-vs-indirect-stablecoin-exchange) covers who carries which compliance duty.

## How do the use cases compare?

| Use case | Typical corridor | Volume fit | Key requirement |
| --- | --- | --- | --- |
| Contractor payroll | US to Brazil, Mexico, Colombia, Argentina | Many small, recurring payouts | Fast KYC per contractor, local instant rails |
| Remittances | US and Europe to Latin America and Asia | High count, low ticket | Licensed off-ramp at the receiving end |
| B2B supplier payments | US to Latin America, Europe to Latin America | Fewer, larger payments | SWIFT option for suppliers that need it |
| Marketplace payouts | One platform to sellers in many countries | High count, frequent | No pre-funding per country, KYB per seller |
| Treasury 24/7 | Between entities, any corridor | Large, irregular | Accounting policy for stablecoin balances |
| Bill pay from stablecoins | Stablecoin balance to US invoices, Brazilian boletos and Pix | Medium count | Rail rules per bill type |
| Fintech payout infrastructure | Many corridors through one API | Scales with the fintech | Clear compliance split, no nesting |

## How do you choose where to start?

1. **List your cross-border payments by corridor.** Count them and total them for the last quarter.
2. **Drop the corridors that won't benefit.** Domestic payments on instant rails and countries with no licensed off-ramp stay where they are. [When not to use blockchain payments](/resources/more/when-not-to-use-blockchain-payments) lists the cases.
3. **Price the top corridor both ways.** Compare what actually arrived by wire with a live stablecoin quote for the same amount.
4. **Run a small pilot.** Send ten real payments, check arrival times and reconciliation, then expand.

## How does BlindPay handle these use cases?

[BlindPay](/global-payments) is a stablecoin payments API that covers the payout side of all seven. Payouts go out over Pix, SPEI, Transfers (Argentina), ACH COP (Colombia), ACH, wire, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding, funded from bank transfers or from USDC and USDT. Payables, launched in August 2026, pays US invoices, boletos, utility bills, and Pix codes straight from stablecoins.

KYC and KYB run inside the API, so marketplaces and fintechs register each customer instead of pooling them. [Virtual accounts](/virtual-accounts) give US customers their own account numbers for funding.

## What to do next

Take step 1 of the decision guide today: export last quarter's cross-border payments and group them by corridor. The top line is your pilot. For the basics behind all seven use cases, start with [what blockchain payments are](/resources/more/what-are-blockchain-payments), and keep the [blockchain payments glossary](/resources/more/blockchain-payments-glossary) open while you read provider docs.

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

---

Source: https://blindpay.com/resources/more/pay-suppliers-brazil-mexico-from-us-bank-account

---
title: "How a US company pays suppliers in Brazil and Mexico from a US bank account"
seoTitle: "Pay Brazil and Mexico suppliers from a US bank account"
description: "Three ways to pay suppliers in Brazil and Mexico from dollars in a US bank account: an international wire, a fintech transfer, or USD to Pix or SPEI."
date: "2026-10-04"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to pay a supplier in Brazil or Mexico from a US bank account with BlindPay"
  steps:
    - name: "Onboard your company"
      text: "Create your company as a customer and complete KYB, including formation documents, ownership, and proof of address. KYB Standard is reviewed in 3 hours to 1 business day."
    - name: "Choose how dollars come in"
      text: "Send USD by ACH or domestic wire against a payin quote with a memo code, or request a US virtual account in your company's name for recurring deposits."
    - name: "Receive stablecoins"
      text: "BlindPay converts the deposit to USDC or USDT and delivers it to your wallet. ACH and wire deposits can take up to 5 business days to arrive."
    - name: "Add the supplier's bank details"
      text: "Register a Pix key or Brazilian bank routing for Brazil, or an 18-digit CLABE for Mexico, with the recipient relationship set to vendor or supplier."
    - name: "Create a payout quote"
      text: "Quote the invoice amount in reais or pesos. The quote shows the market rate, the rate after fees, and the exact amount the supplier receives, and expires in 5 minutes."
    - name: "Execute the payout and send remittance advice"
      text: "Execute the payout before the quote expires. Pix and SPEI land in minutes. Email the supplier the invoice number, since the statement shows BlindPay's name."
faq:
  - q: "What is the cheapest way to pay a supplier in Brazil from the US?"
    a: "Usually the route with the smallest FX spread and no correspondent fees, which means converting once and paying out over Pix. An international wire adds your bank's outgoing fee, possible intermediary deductions, and the FX margin of whichever bank converts. A stablecoin route shows the market rate and the rate after fees in one quote, so the gap is visible before you pay."
  - q: "How long does it take to pay a Mexican supplier over SPEI from a US bank?"
    a: "The SPEI leg settles in minutes, at any hour. The slow part is getting dollars in: ACH and wire deposits into BlindPay can take up to 5 business days to arrive, and a new virtual account takes several business days to approve. Companies with recurring payables often keep a stablecoin balance so each supplier payment is a quote and a payout."
  - q: "Do I need a crypto wallet to pay suppliers this way?"
    a: "Yes, a wallet sits between the two legs. BlindPay delivers converted dollars as USDC or USDT to a wallet, then pays out from it. That can be an external wallet your company controls, which keeps the payout non-custodial, or a BlindPay managed wallet (in beta), where BlindPay holds the balance and no signing is needed."
  - q: "What does the supplier see on their bank statement?"
    a: "For Pix and SPEI payouts, the statement shows BlindPay's name as the sender, according to BlindPay's payout descriptor docs. That means the supplier can't match the payment to your company from the statement alone. Send the invoice number and amount by email or through your accounts payable tool when you pay."
  - q: "Can the supplier receive US dollars instead of reais or pesos?"
    a: "Yes, through SWIFT. BlindPay pays out USD over SWIFT (POBO/COBO) to 100+ countries, tracked by UETR with MT103 confirmations, and SWIFT payouts to third parties need compliance documents such as an invoice before they release. It takes up to 5 business days, so use it when the supplier asks for dollars, not as the default."
---

A US company can pay suppliers in Brazil and Mexico from a US bank account in three ways: an international wire, a fintech transfer, or a stablecoin route that turns dollars into reais over Pix or pesos over SPEI. With BlindPay, USD arrives by ACH or wire, converts to USDC, and pays out over Pix or SPEI in minutes, with every fee shown in the quote.

This guide starts where most finance teams actually start: dollars in a US business checking account and an invoice in reais or pesos. If you already hold USDC, [how to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) is the shorter path.

**Key takeaways**

- Pix and SPEI settle in minutes, 24/7. The slow step is getting dollars into the payment provider, which takes 1 to 5 business days by ACH or wire.
- A wire's cost is spread across your bank's fee, intermediary deductions, and an FX margin you rarely see. A stablecoin quote puts the market rate and the rate after fees side by side.
- Collect the right details up front: a Pix key or bank routing for Brazil, an 18-digit CLABE for Mexico.
- Pix and SPEI statements show BlindPay's name, not yours, so send remittance advice with every payment.
- KYB on your company comes first. Budget days, not minutes, for onboarding and for a virtual account if you want one.

## What are the options for paying a supplier in Brazil or Mexico?

There are three: send an international wire from your US bank, use a fintech that converts and pays out locally, or convert dollars to a stablecoin and pay out over Pix or SPEI. Each moves the money between countries differently.

1. **International wire (SWIFT).** Your bank sends dollars through one or more correspondent banks to the supplier's bank, and someone along the chain converts to reais or pesos. Familiar, slow, and the FX rate is set by whichever bank converts.
2. **Fintech transfer.** A money transfer company collects your dollars in the US and pays the supplier from its own local balance in Brazil or Mexico. Faster than a wire, and the provider funds those local balances in advance.
3. **Stablecoin route.** Dollars convert to USDC, the USDC settles on a blockchain, and a local institution pays the supplier in reais over Pix or pesos over SPEI. No correspondent chain and no pre-funded local balance on your side.

For context on price levels, the World Bank's [Remittance Prices Worldwide, Issue 54](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) put the average cost of sending $200 from the US at 5.04% in Q3 2025, and banks were the costliest type of provider at 14.99%. Those are consumer remittance figures, not B2B invoices, but the cost layers are the same ones a supplier payment runs through. [What cross-border payments cost in 2026](/resources/more/cross-border-payment-costs-2026) has the corridor detail.

## How do the routes compare?

The stablecoin route is the fastest to the supplier once dollars are in, and the only one of the three that shows the market rate next to your rate in every quote. A wire still wins when the supplier needs dollars.

| Route | How money crosses the border | Supplier receives | Time once funded | Cost visibility | Pre-funding |
| --- | --- | --- | --- | --- | --- |
| BlindPay: USD in, Pix or SPEI out | USD to USDC, on-chain settlement, local payout | BRL over Pix or MXN over SPEI | Minutes, 24/7 | Market rate, rate after fees, flat fee, and amount received in each quote | None; each payout is funded when you send it |
| International wire from a US bank | Correspondent banking chain | BRL, MXN, or USD, depending on who converts | Up to 5 business days | Outgoing fee known; intermediary deductions and FX margin often not | None for you; correspondents hold balances |
| Fintech transfer | Provider pays from its own local balance | BRL or MXN, usually over a local rail | Often same day | Depends on the provider; ask for the rate before fees | None for you; the provider pre-funds |

BlindPay also sends SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations, for suppliers who want dollars. [POBO vs COBO explained](/resources/more/swift-pobo-vs-cobo-explained) covers how those payments are made on your behalf.

## How does the stablecoin route work from a US bank account?

It runs in two legs: dollars in and reais or pesos out, with USDC in a wallet in between. Each leg has its own quote.

**Leg 1: dollars in.** You have two ways to send USD from your US bank, both covered in the [payins docs](/docs/payins):

- **A payin quote with a memo code.** Create an ACH or wire payin, and BlindPay returns bank details plus a `memo_code` to put on the transfer. Good for occasional payments. ACH and wire payins can take up to 5 business days to arrive, and payins without a virtual account are capped at $500,000 per transaction.
- **A US virtual account.** A dedicated routing and account number in your company's name that takes ACH, wire, and SWIFT deposits and converts each one to USDC or USDT in your linked wallet. It costs $1.50 per month per account, and goes through compliance review and then bank review before approval ([virtual accounts](/docs/virtual-accounts)). Better for recurring payables. [How to accept bank transfers and settle in stablecoins](/resources/more/accept-bank-transfers-settle-in-stablecoins) walks through it.

A third option, `ach_pull`, pulls the dollars from a bank account you connect through Plaid, with a flat $1.00 fee per pull.

**Leg 2: reais or pesos out.** From the wallet, you create a [payout quote](/docs/payout-quotes) against the supplier's bank account and execute it. Per the [payment methods docs](/docs/kb/payment-methods), Pix, PIX Safe, and SPEI settle in minutes. TED, Brazil's wire-style rail, takes about 1 business day.

Both instant rails run around the clock. The Banco Central do Brasil describes [Pix](https://www.bcb.gov.br/en/financialstability/pix_en) as available 24 hours a day, every day, with funds available to the recipient in a few seconds. Banco de México runs [SPEI](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html) on a 24/7 schedule and has operated it since August 13, 2004. [Instant payment systems by country](/resources/more/instant-payment-systems-by-country) compares them with the US and European rails.

The wallet in the middle is either an external wallet your company controls, which keeps the payout non-custodial, or a BlindPay managed wallet (beta), where BlindPay custodies the balance and you skip on-chain signing ([payout with managed wallet](/docs/payout-managed-wallet)).

## What does the supplier need to give you?

For Brazil, a Pix key or full bank routing. For Mexico, an 18-digit CLABE and the beneficiary's name. Get them before the invoice is due, not on the day.

| Country | Rail | Details to collect |
| --- | --- | --- |
| Brazil | Pix | Pix key: CPF, CNPJ, phone, email, or random key |
| Brazil | PIX Safe | Beneficiary name, CPF or CNPJ, bank ISPB code, branch, account number with check digit, account type |
| Brazil | TED | Same as PIX Safe, with the bank's COMPE code instead of ISPB |
| Mexico | SPEI | 18-digit CLABE and beneficiary name |

Field-level rules are in the [bank accounts docs](/docs/bank-accounts). [Pix keys, CPF, and CLABE explained](/resources/more/pix-key-cpf-clabe-payout-details) covers what each identifier is and how to validate it.

When you add the supplier, set `recipient_relationship` to `vendor_or_supplier`. It records why you're paying this account, and it tells BlindPay the account belongs to a third party rather than your own company.

## What documents should a supplier payment carry?

An invoice, at minimum, kept in your own records and ready to attach. What the rail requires depends on the rail.

- **Pix and SPEI payouts** never wait for documents. You can still attach an invoice to the payout for BlindPay's compliance team while it's processing or after it completes ([payout quotes](/docs/payout-quotes)).
- **SWIFT payouts to a third party** go `on_hold` after creation until the required compliance documents are submitted and approved. Payments to your own account don't need them.
- **Your own onboarding** needs KYB documents: formation documents, an ownership structure naming each beneficial owner, and proof of address ([KYB documents](/docs/kb/kyb-documents)). A virtual account adds source of funds and source of wealth, backed by statements, tax returns, or contracts and invoices.

One practical gap: the supplier's statement for a Pix or SPEI payout shows BlindPay's name as the sender, per the [payout descriptor docs](/docs/kb/payout-descriptor). Send remittance advice (invoice number, amount, date) by email or from your accounts payable tool so the supplier can match it.

## How do you read the quote on a R$54,000 invoice?

The quote does the math, so the job is to read it. The numbers below are made up to show the arithmetic. They are not a BlindPay rate.

Assumptions:

- The invoice is R$54,000, and the supplier must receive exactly that.
- You quote with `currency_type: "receiver"` (the amount is in reais) and `cover_fees: true` (fees are added on top, so the supplier gets the full amount).
- The quote returns a market rate (`commercial_quotation`) of 5.400 BRL per USDC and a rate after BlindPay's fee (`blindpay_quotation`) of 5.373.

The math:

1. **At the market rate**, R$54,000 costs 54,000 / 5.400 = 10,000.00 USDC.
2. **At the rate after fees**, it costs 54,000 / 5.373 = 10,050.25 USDC.
3. **The difference** is 50.25 USDC, or about 0.50% of the payment. Add any `flat_fee` the quote shows, and you have the all-in cost of the payout leg.

The payin leg (USD to USDC) has its own quote with its own fees, so price both legs. [How to calculate FX spread](/resources/more/how-to-calculate-fx-spread) runs the same check against any provider's quote, including a bank wire, so you can compare like for like.

## What compliance checks apply?

Your company is checked once at onboarding, and each payment is screened as it runs. Both sides of the corridor have their own rules too.

- **KYB on your company.** KYB Standard is reviewed manually in 3 hours to 1 business day ([cut-off times and onboarding SLAs](/docs/kb/cut-off-times)). Nothing moves before it clears.
- **Screening on every payment.** Payments are screened in real time. A payin or payout can be held for review, for example on a first withdrawal or an amount that's large for your history, and a hold can take up to 30 days to resolve.
- **Supplier-side rules.** The supplier receives a domestic Pix or SPEI credit in local currency. How they book and declare it is a question for their accountant in Brazil or Mexico.
- **US records.** Keep invoices, contracts, and payment confirmations together. They answer most questions from auditors and from the provider.

This is for information only and is not legal advice. Rules differ by country and by the type of supplier.

## How do you pay a supplier in Brazil or Mexico with BlindPay?

Six steps, and only the first one is slow.

1. **Onboard your company.** Create the customer and complete KYB.
2. **Choose how dollars come in.** A payin quote with a memo code for one-off payments, or a US virtual account for recurring ones.
3. **Receive stablecoins.** The deposit converts to USDC or USDT and lands in your wallet.
4. **Add the supplier's bank details.** A Pix key or Brazilian bank routing, or a CLABE, with `recipient_relationship` set to `vendor_or_supplier`.
5. **Create a payout quote.** Quote the invoice amount in BRL or MXN, check the market rate against the rate after fees, and confirm within 5 minutes.
6. **Execute the payout and send remittance advice.** Pix and SPEI land in minutes. Track the payout until `completed`, then email the supplier the invoice reference.

Paying the same suppliers every month? Many teams keep a USDC balance sized to a week or two of payables. Then step 2 happens in the background, and each supplier payment is just steps 5 and 6.

## When is a wire still the right choice?

When the supplier invoices in dollars, holds a dollar account, or banks in a country without a local rail you can reach. A wire is also simpler for a one-off payment where speed doesn't matter and your bank already knows the supplier.

For Brazil and Mexico specifically, the local rails cover almost every business account, so the wire is the exception. [USDC to BRL routes](/resources/more/usdc-to-brl-routes-2026) and [USDC to MXN routes](/resources/more/usdc-to-mxn-routes-2026) compare the providers and rules on each corridor, and the [hub on real-time cross-border settlement](/resources/more/what-is-real-time-cross-border-settlement) explains why the leg between countries sets the speed.

## What to do next

Pick one supplier in Brazil or Mexico and price their next invoice both ways: your bank's wire quote against a BlindPay payout quote. Start with the [payout quickstart](/docs/quickstart-payout) on a free development instance.

---

Source: https://blindpay.com/resources/more/prefunding-and-collateral-in-card-issuing

---
title: "What is prefunding in card issuing, and how do stablecoins reduce it?"
seoTitle: "Prefunding in card issuing: how stablecoins reduce it"
description: "Why card programs park cash before anyone spends, how weekends and holidays inflate the buffer, and how daily stablecoin settlement shrinks it."
date: "2026-10-04"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is prefunding in card issuing?"
    a: "Prefunding is money a card program deposits ahead of time so its issuing bank can pay the card network for purchases before the program has collected that money. It usually sits in a pooled account at the sponsor bank. The size of the deposit follows the settlement lag: the more days between a purchase and the moment the program is made whole, the more cash has to wait."
  - q: "How do stablecoins reduce prefunding for card programs?"
    a: "Stablecoin settlement lets a program pay the network every day, including weekends and holidays, instead of on bank business days only. Visa says its stablecoin settlement runs seven days a week, against the traditional five-business-day window. A shorter and more regular gap between spend and settlement means the program parks fewer days of spending in reserve."
  - q: "What is the difference between prefunding and collateral?"
    a: "Prefunding covers timing: it pays for purchases that have not settled yet. Collateral covers risk: it is a reserve the sponsor bank or network requires in case the program fails, runs negative balances, or loses disputes. Stablecoin settlement shrinks the timing buffer directly. The risk reserve depends on the bank's view of the program, so treat any collateral reduction as something to negotiate."
  - q: "How many days of spending does a card program keep in reserve?"
    a: "It depends on the settlement schedule and the partner bank. Rain says fiat-settled programs typically keep three to five days of projected spending volume in reserve, because network settlement takes about two business days and weekends and holidays stretch the gap. Programs that settle daily in stablecoins can size the buffer closer to one day plus a safety margin."
  - q: "Does a merchant need to accept stablecoins for this to work?"
    a: "No. The merchant is paid in local currency by its acquirer, exactly as with any card. Stablecoin settlement happens between the issuing side and the card network. The merchant, the terminal, and the authorization message stay the same, which is why a program can switch its settlement method without asking anything of merchants."
  - q: "Is prefunding the same as a cardholder's balance?"
    a: "No. The cardholder balance is the money each user can spend. Prefunding is the program's own money, parked at the sponsor bank so settlement can be paid on time. A program can have healthy cardholder balances and still run short at settlement if its prefunded account is too small for a weekend spike."
---

*Reading time: about 8 minutes.*

**Summary:** Prefunding is cash a card program parks at its issuing bank before cardholders spend, so the bank can pay the card network on settlement day. Its size follows the settlement lag. Fiat programs often hold several days of spending. Daily stablecoin settlement, including weekends, shrinks that buffer to roughly one day plus margin.

**Key takeaways**

- Prefunding pays for the gap between a purchase and the moment the program collects the money behind it.
- Rain says fiat-settled programs typically keep three to five days of projected spending in reserve.
- Visa's stablecoin settlement runs seven days a week, against a traditional five-business-day window.
- Collateral is a separate risk reserve. Stablecoin settlement shrinks the timing buffer, not automatically the risk reserve.
- Size your buffer from the longest non-settlement gap, not the average day.


This guide is for founders and finance leads running, or about to run, a card program. If you are new to how a purchase moves through the system, start with [how a stablecoin-backed card works](/resources/more/what-is-stablecoin-card-issuing). For the integration path, see [how to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api).

## What is prefunding in card issuing?

Prefunding is the program's own money, deposited in advance so settlement never waits on collection. It usually lives in a pooled account at the sponsor bank, often called an FBO ("for benefit of") account.

A few terms first:

- **Settlement**: the actual money movement from the issuing side to the card network, and from the network to the merchant's acquirer.
- **BIN sponsor**: the licensed bank that owns the card number range and is legally the issuer.
- **Prefunding**: cash the program deposits so the sponsor bank can pay settlement on time.
- **Collateral**: a reserve the bank or network requires to cover program risk.

Visa put the rule plainly in September 2026: "Every card program has to fund its daily settlement obligation before it collects from cardholders." The question is never whether to fund settlement. It's how many days of it you fund ahead.

## Why does settlement lag create a funding gap?

Because authorization is instant and settlement is not. A purchase is approved in seconds, but the money only moves days later, and the bank pays the network before the program is made whole.

Rain describes the fiat version: settlement with the card network "typically takes two business days," and the program keeps a pre-funded account at the issuing bank. Visa calls the traditional window "five-business day," meaning settlement happens on bank days only.

That second part is what inflates the buffer. Cardholders spend on Saturday. Banks settle on Monday. A Friday before a public holiday turns a two-day gap into four or five.

The result is a buffer sized for the worst stretch of the calendar, not the average day.

## How much money sits idle?

More than most teams expect. Here is a worked example. Every number below is illustrative.

A program's cardholders spend 1,000,000 USD a day (illustrative). The program follows the range Rain describes and holds four days of projected spending in reserve.

| Item | Illustrative value |
|---|---|
| Average daily spend | 1,000,000 USD |
| Days held in reserve | 4 |
| Prefunded balance | 4,000,000 USD |
| Holiday-weekend spike (1.5x spend for 5 days) | 7,500,000 USD peak need |
| Opportunity cost at an illustrative 4% yield on 4,000,000 USD | 160,000 USD a year |

Now the same program settles daily, including weekends, and keeps one day plus a 50% margin:

| Item | Illustrative value |
|---|---|
| Days held in reserve | 1.5 |
| Prefunded balance | 1,500,000 USD |
| Holiday spike | Covered by the daily cycle, no five-day stack |
| Opportunity cost at the same illustrative 4% | 60,000 USD a year |

The 2,500,000 USD difference is cash the program can use elsewhere. For an early-stage company, that's often the gap between launching in a second market and waiting a quarter.

## How does daily stablecoin settlement shrink the buffer?

It removes the calendar from the equation. If the program pays the network every day, weekends and holidays stop stacking up.

The dated record:

- **December 16, 2025.** Visa launched USDC settlement in the US with Cross River Bank and Lead Bank over Solana. Participants "settle seven days a week instead of the traditional five-business day window."
- **June 3, 2026.** Mastercard announced plans to add intraday, weekend, and holiday card settlement, including on-chain settlement with regulated stablecoins. First participants are "expected," so treat it as a rollout, not a finished product.
- **September 8, 2026.** Visa said many stablecoin-linked programs settle every day, including weekends and holidays.

Rain says it settles with the network in stablecoins every day, including weekends and holidays, so its partners don't have to pre-fund several days of spending. Visa also notes that Rain has used a stablecoin credit facility (Credit Coop) to fund daily settlement since August 2023, which is another way to cover the gap: borrow against it instead of parking cash.

The network-level background is in [stablecoin settlement at the network level](/resources/more/what-is-stablecoin-card-issuing#stablecoin-settlement-at-the-network-level).

### Traditional vs stablecoin-settled prefunding

| | Fiat-settled program | Stablecoin-settled program |
|---|---|---|
| Settlement days | Bank business days | Every day, including weekends and holidays (where the network supports it) |
| Typical buffer | Three to five days of spend (per Rain) | About one day plus a margin |
| Weekend and holiday effect | Gaps stack, buffer sized for the longest one | Gaps disappear |
| Where the buffer sits | Pooled account at the sponsor bank | Stablecoin balance, often USDC |
| Top-up method | Bank wire or ACH, on bank hours | On-chain transfer, any hour |
| Merchant experience | Paid in local currency | Paid in local currency, unchanged |

## What is the difference between prefunding and collateral?

Prefunding covers timing. Collateral covers risk. They are often lumped together because both are cash the program can't spend, but they shrink for different reasons.

A sponsor bank sets collateral based on what could go wrong: the program fails, cardholders run negative balances, disputes go against the program, or fraud spikes. That reserve depends on the program's history, volume, and risk profile.

Faster settlement cuts the timing buffer directly. It can help a collateral conversation, because there is less unsettled exposure at any moment, but the bank decides. Go in with data: daily settled volume, dispute rates, negative-balance history.

## How do you size a prefunding buffer?

Start from the worst gap in your calendar, then add margin. Seven steps:

1. **Measure average daily settled spend.** Use cleared amounts, not authorizations, since authorizations include holds that never settle.
2. **Find your peak day.** Payday, Black Friday, a travel season. Use the highest day in the last 12 months, or a forecast if you are new.
3. **Count the longest non-settlement gap.** For a fiat program, that is usually a weekend plus a public holiday. For a daily stablecoin program, it is one day.
4. **Multiply peak daily spend by that gap.** This is the floor.
5. **Add a margin for refunds, disputes, and incremental authorizations.** Hotel and fuel purchases can clear above the authorized amount.
6. **Set top-up triggers.** Refill at a fixed threshold, not when the balance is already short.
7. **Review monthly.** Spend grows faster than finance teams update buffers.

If you also fund cardholder balances just in time from their own wallets, the cardholder side changes, but the program still owes daily settlement. The buffer is still yours to size.

## What happens when the buffer runs short?

The sponsor bank still pays the network, then comes to you. Depending on the agreement, that means a margin call, a paused program, or authorizations declined until the account is topped up. Declines at the register are the most visible failure a card program can have.

That's why top-up speed matters as much as buffer size. A buffer that can only be refilled by a bank wire on business days has to be bigger than one you can refill on a Sunday.

## Where does BlindPay fit?

Two places, both outside the card itself. The card issuer runs the card; BlindPay moves money into and out of the stablecoin balance behind it.

First, topping up. [BlindPay virtual accounts](/virtual-accounts) give a customer a real US bank account in their own name. ACH, wire, and SWIFT deposits convert automatically into USDC or USDT and land in the wallet linked at creation. A program can feed its settlement wallet that way without a separate exchange step. The account model is in [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained).

Second, cashing out. BlindPay payouts are funded at send time from the customer's wallet, with no pre-funded balance per country. Local payouts over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) don't add a second liquidity pot next to your card buffer.

Read the [virtual accounts docs](/docs/virtual-accounts) or [talk to the team](/contact).

## What to read next

- [What is stablecoin card issuing?](/resources/more/what-is-stablecoin-card-issuing)
- [How to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api)
- [Why stablecoin payouts don't need pre-funding](/resources/more/no-pre-funding-stablecoin-payouts)
- [BIN sponsor vs. issuer-processor vs. program manager](/resources/more/bin-sponsor-vs-issuer-processor-vs-program-manager)

## Sources

- [Visa: Visa expands stablecoin settlement in the US (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- [Visa: Financing stablecoin-linked card programs (September 8, 2026)](https://www.visa.com/en-us/thought-leadership/innovation/financing-stablecoin-linked-card-programs)
- [Mastercard: Mastercard expands settlement capabilities to include stablecoin (June 3, 2026)](https://www.mastercard.com/us/en/news-and-trends/press/2026/june/mastercard-expands-settlement-capabilities-to-include-stablecoin.html)
- [Rain: Fiat vs stablecoin cards](https://www.rain.xyz/resources/fiat-vs-stablecoin-cards)
- [Rain: The anatomy of a stablecoin card swipe](https://www.rain.xyz/resources/the-anatomy-of-a-stablecoin-card-swipe)

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

---

Source: https://blindpay.com/resources/more/stablecoin-cards-united-states-regulation

---
title: "Stablecoin cards in the United States: the GENIUS Act, sponsor banks, and Visa USDC settlement"
seoTitle: "Stablecoin cards in the US: GENIUS Act and sponsor banks"
description: "How US stablecoin cards are structured and regulated: sponsor bank, program manager, processor, the GENIUS Act, Visa USDC settlement, FDIC coverage, tax."
date: "2026-10-04"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Are stablecoin cards legal in the United States?"
    a: "Yes. US stablecoin cards run on the same structure as other prepaid and debit programs: a sponsor bank issues the card, a program manager runs it, and a processor approves transactions. The GENIUS Act, signed July 18, 2025, adds a federal framework for payment stablecoins themselves. Availability still depends on each provider and the states it serves."
  - q: "What is a sponsor bank for a stablecoin card?"
    a: "A sponsor bank is the chartered bank whose bank identification number the card runs on. It is the legal issuer, owns the compliance program, and answers to its bank regulator for every card on its BIN. Stablecoin card platforms and program managers operate under the sponsor bank's rules and oversight."
  - q: "Does Visa settle stablecoin card transactions in USDC?"
    a: "For some US partners, yes. On December 16, 2025, Visa launched USDC settlement in the US, with Cross River Bank and Lead Bank as initial participants settling over Solana, and broader availability planned through 2026. By April 29, 2026, Visa reported a $7 billion annualized stablecoin settlement run rate across nine blockchains."
  - q: "Is money on a stablecoin card FDIC insured?"
    a: "Generally no. The FDIC's crypto fact sheet says deposit insurance does not apply to crypto assets and does not protect against the failure of non-bank entities, including crypto custodians and exchanges. A stablecoin balance behind a card is not a bank deposit, even if a bank issues the card itself."
  - q: "Is buying something with a stablecoin card taxable in the US?"
    a: "It can be. The IRS treats digital assets as property, not currency, and lists exchanging them for property, goods, or services as a disposal that must be reported. Dollar stablecoins usually produce little or no gain, but each purchase can still need a record. This is not tax advice."
---

A US stablecoin card runs on the same structure as any prepaid or debit card: a sponsor bank issues it, a program manager runs it, and a processor approves each purchase. The GENIUS Act, signed July 18, 2025, adds federal rules for payment stablecoins. Visa now lets some US partners settle card activity in USDC.

That gives builders two separate rulebooks. Banking and card rules apply to the card. Stablecoin and money-transmission rules apply to the balance behind it. Users mostly feel the difference in two places: deposit insurance and taxes.

*This page is general information, not legal or tax advice.*

**Key takeaways**

- The sponsor bank is the legal issuer and owns the compliance program for every card on its BIN.
- The GENIUS Act became Public Law 119-27 on July 18, 2025, and sets a federal framework for payment stablecoin issuers.
- Visa launched US USDC settlement on December 16, 2025 with Cross River Bank and Lead Bank, and reported a $7 billion annualized settlement run rate across nine blockchains by April 29, 2026.
- The FDIC says deposit insurance does not apply to crypto assets, including stablecoin balances behind a card.
- The IRS treats spending digital assets on goods and services as a disposal you report.

For how stablecoin cards work in general, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Who does what in a US stablecoin card program?

Four parties run a US card program, and a fifth handles the stablecoin. The sponsor bank carries the most regulatory weight because every card runs on its BIN.

Quick definitions:

- **Sponsor bank (BIN sponsor):** the chartered bank that issues the card and is responsible for it to regulators and the network.
- **Program manager:** the company that designs and operates the program under the sponsor bank's policies.
- **Processor:** the system that receives authorization requests and approves or declines them in real time.
- **Stablecoin provider:** the firm that holds, converts, or transfers the stablecoin balance, licensed for money transmission where required.

| Party | Main job | Who oversees it |
| --- | --- | --- |
| Card network (Visa, Mastercard) | Routes transactions, sets program and dispute rules | Its own rules, enforced on members |
| Sponsor bank | Legal issuer, owns the compliance program | Federal or state bank regulator |
| Program manager | Onboarding, limits, support, reporting | The sponsor bank, by contract |
| Processor | Authorizations, card controls, audit logs | The sponsor bank and network |
| Stablecoin provider | Holds or converts the stablecoin | Money transmission and stablecoin rules |

In a self-custodial program, the stablecoin stays in the user's own smart account, so the last row changes. The card side does not. [Stablecoin card issuing compliance](/resources/more/stablecoin-card-issuing-compliance) lists each party's duties in more detail.

## What does the GENIUS Act change for stablecoin cards?

The GENIUS Act creates a federal framework for payment stablecoins and the companies that issue them. It does not create a new card license. Card programs keep running under banking and network rules.

President Trump signed the act on July 18, 2025, and it became [Public Law 119-27](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm). The [White House fact sheet](https://www.whitehouse.gov/fact-sheets/2025/07/fact-sheet-president-donald-j-trump-signs-genius-act-into-law/) summarizes what the law covers.

For a card program, the practical effect is on which stablecoins the balance can hold. A sponsor bank will ask which stablecoin the program spends from and who issued it, and the federal framework gives both sides a common reference point for that question. The [GENIUS Act explained for businesses](/resources/more/genius-act-for-businesses) covers issuer rules, and [what the GENIUS Act means for USDT](/resources/more/genius-act-usdt-foreign-stablecoin-issuers) covers foreign-issued stablecoins.

## How does Visa's USDC settlement work in the US?

Visa now lets some US issuers settle card activity with Visa in USDC instead of converting to dollars first. The cardholder and the merchant see no difference. The change is in how the issuer pays the network.

On [December 16, 2025](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html), Visa launched stablecoin settlement in the United States. Cross River Bank and Lead Bank were the initial banking participants, settling with Visa in USDC over Solana, and Visa said broader US availability was planned through 2026. At the time, Visa reported a $3.5 billion annualized stablecoin settlement run rate as of November 30, 2025.

By [April 29, 2026](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), the settlement pilot supported nine blockchains and had reached a $7 billion annualized run rate, up 50% from the prior quarter. That is settlement volume, not card spend. Do not add it to card volume figures.

The step-by-step path of one purchase, from authorization to merchant payout, is in [how stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle).

## Is a stablecoin card balance FDIC insured?

Generally no. The card may be issued by an FDIC-insured bank, but the stablecoin balance behind it is not a bank deposit.

The [FDIC's crypto fact sheet](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html) says deposit insurance does not apply to crypto assets and does not protect against the default, insolvency, or bankruptcy of non-bank entities, including crypto custodians and exchanges. Read the program terms to see who holds your stablecoins and what happens if that company fails. [Are stablecoin cards safe?](/resources/more/are-stablecoin-cards-safe) walks through the risks.

## How are US stablecoin card purchases taxed?

The IRS treats digital assets as property, so spending them can be a reportable disposal. Dollar stablecoins usually produce tiny gains, but each purchase may still need a record.

The [IRS digital assets page](https://www.irs.gov/filing/digital-assets) says digital assets are property, not currency, and lists exchanging them "for property, goods or services in any amount" among the transactions covered. Form 1040, 1040-SR, and 1040-NR each ask a yes or no question about digital assets. Some exchange-linked cards, such as the [Coinbase Card](https://www.coinbase.com/card), spend from a Coinbase balance and convert at the time of purchase, which is the disposal point. [Are stablecoin card purchases taxable?](/resources/more/are-stablecoin-card-purchases-taxable) has a record-keeping checklist.

## Which compliance rules apply to a US program?

Card rules require identifying every cardholder, and stablecoin transfers add sanctions and Travel Rule duties. Both apply at once.

- **Customer identification:** the sponsor bank's program requires verifying each cardholder before a card is issued, and each business in a corporate program.
- **Travel Rule:** [31 CFR 1010.410(f)](https://www.law.cornell.edu/cfr/text/31/1010.410) requires transmittal information for transfers of $3,000 or more. [The Travel Rule for stablecoin off-ramps](/resources/more/travel-rule-stablecoin-off-ramps) explains how it works on stablecoin flows.
- **Sanctions:** OFAC's [guidance for the virtual currency industry](https://home.treasury.gov/system/files/126/virtual_currency_guidance_brochure.pdf) sets out how firms in the space should build a sanctions compliance program, including screening.
- **Licensing:** firms holding or transmitting stablecoins may need money transmitter licenses by state. [MSB vs money transmitter license vs VASP vs EMI](/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi) sorts out which applies.

## What changes for users versus builders?

For users, little changes at the checkout. For builders, the choices are about settlement, custody, and the bank partner.

| Topic | What it means for users | What it means for builders |
| --- | --- | --- |
| GENIUS Act | Clearer rules for the stablecoins behind the card | Pick stablecoins that a sponsor bank will accept |
| Visa USDC settlement | Nothing visible at checkout | Less fiat buffer if your issuer supports it |
| FDIC coverage | Stablecoin balance is not insured | Disclose this clearly in terms and onboarding |
| Taxes | Purchases can be reportable disposals | Give users exportable transaction history |
| Compliance | ID checks before the card is issued | Agree who runs KYC, sanctions, and monitoring |

## How do ACH and RTP payouts fit next to a US card program?

A card pays merchants. Rent, payroll, and transfers to a user's own bank need ACH, RTP, or wire. A US program that only offers a card leaves those payments unsolved.

BlindPay is the payout and funding layer for that gap. It converts USDC and USDT into dollars and pays out over ACH, RTP, and domestic wire, with RTP settling instantly and ACH in about 1 to 2 business days, per its [payment methods reference](/docs/kb/payment-methods). The same API pays out over Pix, SPEI, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations.

On the funding side, [US virtual accounts](/docs/virtual-accounts) give each customer a routing and account number. ACH, wire, and SWIFT deposits convert to USDC or USDT and land in the linked wallet. A live quote locks the rate and fees before stablecoins move, payouts need no pre-funding, and KYC, KYB, and sanctions screening run in the same API flow.

## How do you get a US card program ready to launch?

Lock in the bank partner and the money flows before you design the card. Most delays come from bank review, not engineering.

1. **Pick the custody model.** Custodial ledger or self-custodial smart account.
2. **Choose a platform and sponsor bank.** [How to choose a stablecoin card issuing provider](/resources/more/how-to-choose-a-stablecoin-card-issuing-provider) has an evaluation framework.
3. **Agree on settlement.** Fiat or USDC, and how much buffer the bank wants.
4. **Split compliance in writing.** KYC, KYB, sanctions, monitoring, and reporting.
5. **Plan funding and payouts.** How dollars come in, and how users reach a bank account.
6. **Write clear disclosures.** FDIC status, fees, and tax records.

## What is the next step?

Map the payments your users make outside the card, then test them. Create a free [BlindPay development instance](/docs/quickstart-payout) to run ACH and RTP payouts and virtual account deposits with test stablecoins while your card program goes through bank review.

## Sources

- [GovInfo: Public Law 119-27, GENIUS Act (July 18, 2025)](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm)
- [White House: GENIUS Act fact sheet (July 18, 2025)](https://www.whitehouse.gov/fact-sheets/2025/07/fact-sheet-president-donald-j-trump-signs-genius-act-into-law/)
- [Visa: Visa Launches Stablecoin Settlement in the United States (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- [Visa: Adding Five Blockchains for Settlement (April 29, 2026)](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html)
- [FDIC: What the public needs to know about deposit insurance and crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html)
- [IRS: Digital assets](https://www.irs.gov/filing/digital-assets)
- [31 CFR 1010.410, recordkeeping and Travel Rule](https://www.law.cornell.edu/cfr/text/31/1010.410)
- [OFAC: Sanctions compliance guidance for the virtual currency industry (October 2021)](https://home.treasury.gov/system/files/126/virtual_currency_guidance_brochure.pdf)
- [Coinbase Card](https://www.coinbase.com/card)

---

Source: https://blindpay.com/resources/more/virtual-account-vs-one-time-deposit-instructions

---
title: "Virtual accounts vs one-time deposit instructions: how to collect bank transfers as stablecoins"
seoTitle: "Virtual account vs one-time deposit instructions"
description: "One-time deposit instructions suit occasional payers and local rails. Virtual accounts suit repeat US payers. How each matches deposits and when to switch."
date: "2026-10-04"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are one-time deposit instructions in a stablecoin on-ramp?"
    a: "One-time deposit instructions are payment details generated for a single pay-in: a bank account plus a reference code, a Pix code, a CLABE, or a payment link. The payer uses them once, for one amount, and the provider matches the deposit to that pay-in. They need no account setup, which makes them the quickest way to accept a bank transfer and settle it in stablecoins."
  - q: "What is the difference between a virtual account and deposit instructions?"
    a: "A virtual account is a standing bank account number assigned to one customer, reusable for every deposit. Deposit instructions are created per payment and expire with it. The account number identifies the customer on its own, while instructions rely on a reference code or a unique payment code that the payer has to carry through their bank correctly."
  - q: "When should I switch a customer from deposit instructions to a virtual account?"
    a: "Switch when the same payer sends recurring transfers, when references keep going missing, when payers pay from accounting systems that reuse old details, or when you need foreign senders to pay over SWIFT. Keep one-time instructions for occasional payers, for amounts tied to a specific quote, and for local rails outside the US where virtual accounts are not offered."
  - q: "Why do bank transfers lose their reference codes?"
    a: "Reference fields are short and handled differently by every bank app. An ACH addenda record carries 80 characters of free text, and many consumer apps expose less. Payers type codes into the wrong field, reuse old templates, or drop the code entirely. A deposit without its code lands in the right account but can't be tied to the right pay-in automatically."
  - q: "Can virtual accounts receive Pix or SPEI?"
    a: "Virtual accounts are usually tied to one country's banking system. BlindPay's virtual accounts are US accounts that receive ACH, wire, and SWIFT. Brazilian, Mexican, Argentine, and Colombian collections use per-payment instructions instead: a Pix code, a CLABE, an account number for Transfers 3.0, or a PSE payment link."
  - q: "Do one-time deposit instructions expire?"
    a: "Usually yes, in two layers. The quote behind them expires quickly, often within minutes, so the pay-in must be created in that window. Then the pay-in waits for the money for a set period that depends on the rail: minutes for instant rails like Pix or SPEI, and days for ACH and wire. After that the pay-in is marked failed or cleaned up."
---

Use one-time deposit instructions when a payer sends money occasionally, for a specific amount, or over a local rail like Pix or SPEI. Use a virtual account when the same payer sends US bank transfers again and again. Instructions need no setup but depend on a reference code. A virtual account's number identifies the customer by itself.

**Key takeaways**

- Both models turn a bank transfer into stablecoins in a wallet. They differ in how the deposit gets matched to a customer.
- One-time instructions are created per payment: bank details plus a reference code, a Pix code, a CLABE, or a payment link.
- A virtual account is a standing account number per customer. No reference to forget, but it needs KYC, review, and a monthly fee.
- The most common failure in the one-time model is a missing or mangled reference. An ACH addenda field holds 80 characters, and payers lose codes far shorter than that.
- Outside the US, per-payment instructions are often the only option, because Pix, SPEI, and similar rails already carry their own unique payment identifiers.

## What are one-time deposit instructions?

One-time deposit instructions are payment details generated for a single pay-in, used once, for one amount.

The flow on a typical stablecoin on-ramp looks like this:

1. You request a quote for the amount, the payment method, and the destination wallet.
2. You create the pay-in from that quote.
3. The provider returns instructions for that pay-in.
4. You show them to the payer, who sends the transfer.
5. The provider spots the deposit, matches it to the pay-in, converts it, and sends stablecoins to the wallet.

What "instructions" means depends on the rail. For a US transfer into a shared collection account, it's the account details plus a reference code the payer must include. For Pix, it's a payment code. For SPEI, it's a CLABE. For bank redirect rails such as PSE in Colombia, it's a payment link.

The [crypto on-ramp API integration guide](/resources/more/how-to-integrate-a-crypto-on-ramp-api) walks through the quote and pay-in calls in detail.

## What is a virtual account?

A virtual account is a bank account number assigned to one customer that receives every deposit for that customer, with no reference needed.

The payer sends money to it like any other bank account. Each deposit creates its own pay-in record, gets converted, and lands in the wallet linked to the account. The account number is the matching key, so the payer can leave the memo blank, pay from a parent company, or send an unexpected amount, and the money still reaches the right customer.

The trade-off is setup. A virtual account belongs to a verified customer, goes through compliance and bank review, and usually carries a monthly fee. The full lifecycle is in [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained).

## How do the two models compare?

One-time instructions win on setup and flexibility. Virtual accounts win on matching and repeat payments.

| | One-time deposit instructions | Virtual account |
| --- | --- | --- |
| Reusable | No, one pay-in each | Yes, every deposit |
| Matching key | Reference code or rail payment code | The receiving account number |
| Setup before first payment | A quote and a pay-in, seconds | KYC or KYB, then compliance and bank review |
| Ongoing cost | Per-transaction fees only | Per-transaction fees plus a monthly account fee |
| Amount | Fixed by the quote | Any amount the payer sends |
| Payer experience | New details each time | Same details forever, saved as a payee |
| Main failure mode | Missing or wrong reference | Payer sends to an old or closed account |
| Rails | US transfers and local rails (Pix, SPEI, and others) | Usually one country's rails |
| Best for | Occasional payers, quoted amounts, local rails | Repeat payers, B2B invoices, foreign senders |

Read the "Main failure mode" row twice. It's the reason most teams start with instructions and move their busiest payers to accounts.

## Why do references go missing?

Reference codes travel through fields that were never built to carry them reliably.

On ACH, free text rides in the addenda record's Payment Related Information field. Nacha's [ACH file details](https://achdevguide.nacha.org/ach-file-details) describe it as an optional freeform field of 80 characters. Optional is the problem. Many bank apps hide it, shorten it, or put it on a second screen.

Wires got better structure when the Fedwire Funds Service [moved to ISO 20022 on July 14, 2025](https://www.frbservices.org/news/communications/061825-fedwire-iso-go). Better message formats don't help when a person types the code into the beneficiary name field.

The patterns repeat:

- An accounts payable team saves your bank details as a template and reuses last month's code.
- The payer's bank truncates the memo.
- Someone pays two invoices in one transfer with one code.
- A parent company pays on behalf of a subsidiary and uses its own reference.

A deposit without its code lands in the right bank account with nothing tying it to a pay-in. Someone then has to work out who paid. [Why crypto on-ramp deposits fail](/resources/more/why-crypto-on-ramp-deposits-fail) covers that failure and six others.

## Why do local rails work well with one-time instructions?

Instant rails like Pix and SPEI are built around unique payment identifiers, so the reference problem mostly disappears.

Pix is the clearest case. The Central Bank of Brazil's [Pix initiation standards manual](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf) defines a transaction identifier, the txid, of 26 to 35 characters for dynamic QR codes. It exists so the receiver can reconcile each payment against the charge it belongs to. The payer scans or pastes the code. Nobody types a reference.

That's why per-payment instructions are the default for collections in Latin America. The payer's bank carries the identifier for you. [How to on-ramp BRL, MXN, ARS, and COP](/resources/more/how-to-on-ramp-local-currency-latin-america) covers the four local rails.

## When should you use each model?

Pick by payer behavior first, then by rail.

Use one-time deposit instructions when:

- The payer pays once or rarely, like a consumer topping up a wallet.
- The amount is tied to a specific quote or invoice and should not vary.
- The rail is Pix, SPEI, or another local system with built-in payment codes.
- You need to accept money today, before a customer finishes account review.

Use a virtual account when:

- The same payer sends transfers every week or month.
- Payers pay from accounting systems that reuse saved bank details.
- Amounts vary, like B2B invoices, marketplace seller funding, or payroll funding.
- Foreign senders need to pay over SWIFT.
- Finance wants the account number itself to be the customer ID in the ledger.

Many products run both. New customers start on instructions on day one, then get a virtual account once review clears.

## What should you check before choosing?

Run this checklist against your payers and your provider before you commit to either model. It's what decides how much manual matching you'll do.

| Check | One-time instructions | Virtual account |
| --- | --- | --- |
| How does the payer see the matching key? | Shown with every payment. Is it hard to miss? | Saved once as a payee |
| What happens to a deposit with no reference? | Ask the provider for the exact path: hold, manual match, or return | Not applicable, the account number matches it |
| How long does a pay-in wait for money? | Minutes on instant rails, days on ACH and wire | No quote window, deposits create pay-ins as they arrive |
| Is there a per-transaction cap? | Ask. Shared collection accounts can carry their own cap on top of customer limits | Customer limits from the verification tier apply |
| Which rails are covered? | Check each local rail separately | Usually domestic rails plus wire and SWIFT |
| What's the setup time? | None beyond the quote | Hours to business days for review |
| What's the monthly cost? | None | A fixed fee per account |
| Which webhook confirms the deposit? | The pay-in completion event | The same event, one per deposit |

The ledger side, from webhooks to partial payments, is in [how virtual accounts automate reconciliation](/resources/more/virtual-account-reconciliation).

## How does BlindPay handle both models?

BlindPay supports both, and picks automatically for US transfers. A pay-in quote locks the method, amount, fee split, and destination for 5 minutes, and the pay-in created from it returns the instructions for that rail: a `memo_code` with bank details for ACH and wire, a `pix_code` for Pix, a CLABE for SPEI, an account number for Transfers 3.0, or a payment link for PSE.

When a customer has an approved virtual account, BlindPay shows that account's own details for ACH and wire and ignores the memo code. Two exceptions: RTP pay-ins always use the memo-code path, and SWIFT pay-ins require an approved virtual account. Pay-ins without a virtual account on ACH or wire are also capped at $500,000 per transaction. BlindPay's US virtual accounts cost $1.50 per month per account. The [payins docs](/docs/payins) and [cut-off times](/docs/kb/cut-off-times) have the details.

For how pay-in APIs sit next to issuer, wallet, and payout APIs, see the [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis).

## What to do next

Pull last quarter's deposits and count how many arrived without a usable reference, by payer. Move the top repeat payers to virtual accounts first, and keep one-time instructions for everyone else and for every local rail.

---

Source: https://blindpay.com/resources/more/who-pays-gas-fees-stablecoin-payments

---
title: "Who pays gas fees in stablecoin payments?"
seoTitle: "Who pays gas fees in stablecoin payments?"
description: "Who pays network fees in each stablecoin payment flow, how gas works on Ethereum, Solana, Tron, Stellar, and Arc, and how to compare it across providers."
date: "2026-10-04"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Who pays the gas fee on a stablecoin transfer?"
    a: "The account that submits the transaction pays it, in the chain's fee token. On Ethereum that is ETH, on Solana SOL, on Tron TRX or staked resources, and on Stellar XLM. When a provider submits the transfer for you, the provider pays the gas and recovers the cost through its own fees. When you sign from your own wallet, you pay."
  - q: "Can you pay gas fees in USDC?"
    a: "On most chains, not directly, because gas is paid in the native token. There are two exceptions to look for. Some chains, such as Arc, use USDC as the native gas token. On EVM chains, an ERC-4337 paymaster contract can let users pay fees in an ERC-20 token or have a third party sponsor the fee entirely. Both need support from your wallet or provider."
  - q: "Do you pay gas if a stablecoin transaction fails?"
    a: "Usually yes. Ethereum's documentation says the fee is paid whether a transaction succeeds or fails, because validators still did the work of processing it. Other chains behave similarly for transactions that reach the network. This is why a failed approval or a reverted transfer still costs money, and why providers retry carefully instead of resubmitting blindly."
  - q: "Why do stablecoin providers charge different fees per blockchain?"
    a: "Because moving tokens costs different amounts on each chain, and providers pass some of that through. A transfer on Ethereum mainnet costs more in gas than one on a layer 2 network or Solana, and Tron transfers burn TRX unless the sender has staked resources. Providers price this as a flat fee per network, a minimum amount, or inside the spread."
  - q: "Do gas fees matter for large stablecoin payments?"
    a: "Much less than for small ones. Gas is mostly a fixed cost per transaction, so it does not grow with the amount sent. A fee of a few cents is noise on a 10,000 dollar supplier payment and a real percentage on a 20 dollar payout. Model gas per payout at your typical payout size, not as a percentage of volume."
  - q: "What is a paymaster in stablecoin payments?"
    a: "A paymaster is a smart contract defined in ERC-4337 that agrees to pay for a transaction instead of the sender. It lets an app sponsor its users' gas or accept fees in an ERC-20 token like USDC. It applies to smart contract accounts on EVM chains, so it does not help on Tron, Stellar, or Solana, which handle fee sponsorship differently."
---

In a stablecoin payment, gas is paid by whoever submits the onchain transaction, in that chain's fee token. If you sign from your own wallet, you pay. If a provider moves the funds, the provider pays and recovers it in its pricing. Gas is a fixed cost per transaction, so it matters most on small payouts.

That's the whole rule. The rest of this page is about where it bites: which step you sign, which token each chain wants, and how gas shows up on a quote when you never see it as a line item.

**Key takeaways**

- Gas follows the signer. Every signed transaction costs the signer a network fee.
- Each chain charges in its own token: ETH, SOL, TRX, XLM, POL, or USDC on Arc.
- Failed transactions still pay gas on Ethereum, so retries cost money.
- Gas is per transaction, not per dollar. A small payout feels it; a large one barely does.
- Providers fold gas into a flat fee per network, a minimum, or the spread. Compare all-in cost per payout.

Gas is one layer in a bigger stack. For the full picture, start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure).

## What is a gas fee in a stablecoin payment?

A gas fee is the network fee paid to the validators who process a blockchain transaction. A stablecoin transfer is a call to a token contract, so it pays gas like any other transaction, in the chain's fee token rather than in the stablecoin.

On Ethereum, [the fee is gas used times the base fee plus a priority fee](https://ethereum.org/en/developers/docs/gas/), paid in ETH. The base fee is burned and the priority fee is a tip to the validator. A plain ETH transfer uses 21,000 units of gas; a token transfer uses more, because it runs contract code.

One detail matters for operations: Ethereum charges the fee "regardless of whether a transaction succeeds or fails." A reverted approval still costs money.

If you want the full signing, broadcast, and confirmation sequence, see [what happens onchain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment).

## Who pays gas in each stablecoin payment flow?

The signer pays. So the useful question is which party signs a transaction at each step.

| Flow | Who signs onchain | Who pays gas | How the cost reaches you |
| --- | --- | --- | --- |
| Payout funded from your own wallet | You (approval, delegation, or transfer) | You, on what you sign | Directly, in the chain's fee token |
| Payout funded from a provider-held balance | The provider | The provider | Inside the provider's fee or spread |
| Bank transfer in, stablecoins delivered to a wallet | The provider | The provider | Inside the on-ramp fee or spread |
| Stablecoins sent to a deposit address that auto-converts | The sender, then the provider | Sender on the deposit, provider after | Sender pays directly; the rest is in the provider's fee |
| Stablecoins sent wallet to wallet | The sender | The sender | Directly |

If nobody on your side ever signs, you never pay gas directly. You still pay it, in the price. [Whether you need a wallet at all](/resources/more/do-you-need-a-crypto-wallet-for-stablecoin-payments) is the same question seen from the custody side.

## How does gas work on each stablecoin network?

Each chain has its own fee token and its own pricing model. The table sticks to what each network's own documentation says, as of October 2026.

| Network | Fee paid in | How the fee is set | Who pays by default |
| --- | --- | --- | --- |
| Ethereum | ETH | Gas used × (base fee + priority fee); base fee burned | Sender |
| Base, Arbitrum | ETH | Layer 2 execution fee plus a share of layer 1 data cost | Sender |
| Polygon PoS | POL | Gas used × gas price | Sender |
| Arc | USDC | USDC is the native gas token | Sender |
| Solana | SOL | 5,000 lamports per signature, plus an optional priority fee | The transaction's fee payer |
| Tron | TRX, or staked Bandwidth and Energy | Resources consumed; TRX burned when stake runs short | Sender |
| Stellar | XLM | At least 100 stroops per operation | Source account, unless a fee-bump says otherwise |

A few details worth knowing:

- **Solana.** Its [fee documentation](https://solana.com/docs/core/fees) sets a base fee of 5,000 lamports per signature, split 50% burned and 50% to the validator. Priority fees go fully to the validator.
- **Tron.** Tron meters [Bandwidth and Energy](https://developers.tron.network/docs/resource-model) instead of gas. Each account gets up to 600 free Bandwidth per rolling 24 hours, but Energy, which smart contract calls like a USDT transfer consume, has no free quota. Without staked TRX or delegated Energy, the network burns TRX from the sender.
- **Stellar.** The [minimum fee is 100 stroops per operation](https://developers.stellar.org/docs/learn/fundamentals/fees-resource-limits-metering), and a stroop is one ten-millionth of an XLM. Fees come from the source account unless a fee-bump transaction names another payer.
- **Arc.** BlindPay's [supported chains reference](/docs/kb/supported-chains) notes that Arc uses USDC as its native gas token, so a sender holding only USDC can still pay its own fee.

Which chain is cheapest to move value on is a separate decision with more inputs than gas. [The best network to off-ramp stablecoins](/resources/more/best-network-to-off-ramp-stablecoins) covers that trade-off.

## Can someone else pay the gas for you?

Yes. Fee sponsorship exists on most chains, but each does it differently.

1. **ERC-4337 paymasters (EVM chains).** [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) defines a paymaster as "a helper contract that agrees to pay for the transaction, instead of the sender itself." It lets an app sponsor its users' gas or accept fees in an ERC-20 token. It works with smart contract accounts, not plain key-based accounts.
2. **Fee-bump transactions (Stellar).** A second account wraps the transaction and pays the fee.
3. **Separate fee payer (Solana).** The fee payer on a transaction doesn't have to be the token owner.
4. **Delegated Energy (Tron).** An account with staked TRX can delegate Energy to another account, so the sender doesn't burn TRX.
5. **Provider-submitted transfers (any chain).** The simplest form. The provider holds the funds, signs the transfer, and pays gas itself.

Sponsorship moves the cost; it doesn't remove it. Somebody budgets for it.

## Why do gas fees matter more for small payouts?

Gas is a cost per transaction. It doesn't scale with the amount, so its share of the payment shrinks as the payment grows.

Here's a worked example. The numbers are hypothetical, chosen to show the math, and describe no real network on any particular day.

Assume a gas cost of $0.40 per payout on some chain.

| Payout size | Gas as % of payout |
| --- | --- |
| $20 | 2.00% |
| $200 | 0.20% |
| $2,000 | 0.02% |
| $20,000 | 0.002% |

A marketplace paying thousands of small creator payouts feels gas. A treasury paying a few large invoices barely notices it. If your payouts are small, batch them where the product allows it, pick a cheaper network, or prefer a provider that prices network costs as a flat amount you can model.

[Stablecoin payment fees vs card processing fees](/resources/more/stablecoin-payment-fees-vs-card-processing-fees) puts the full cost stack next to cards, and [stablecoin off-ramp fees explained](/resources/more/stablecoin-off-ramp-fees-explained) breaks down the conversion side.

## How do you compare gas costs between stablecoin providers?

You rarely see gas as its own line. Compare what lands, not what's listed.

1. **Fix the route.** Same corridor, same token, same network, same amount.
2. **Ask which steps you sign.** Every step you sign is gas you pay on top of the quote.
3. **Ask how network costs are priced.** A flat fee per network, a minimum, or inside the spread.
4. **Request the all-in amount.** Amount sent versus amount received, at your real payout size.
5. **Ask what happens on a failed transaction.** Who absorbs gas on a revert or a retry.
6. **Run it at two sizes.** Your median payout and your smallest common payout.

The provider with the lowest percentage fee can lose on small payouts once a flat network fee lands. [Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) covers how to read the rest of the quote.

## What are the limits of this guide?

Gas markets move. Base fees on Ethereum rise and fall with demand, Solana priority fees spike during congestion, and Tron's resource prices are chain parameters that can change. Treat any per-transaction number as a snapshot. This page doesn't cover gas on bridging, swaps, or cross-chain transfers, which add their own fees, and it doesn't cover Tempo's fee model.

## How does BlindPay handle gas fees?

On BlindPay, who pays gas depends on where the stablecoins come from.

**Payouts from your own wallet.** You sign one authorization and pay gas on it. On EVM chains that's an ERC-20 `approve` letting BlindPay pull the quoted amount, so the sending wallet needs a little of the chain's gas token ([payout with EVM](/docs/payout-evm)). On Solana, the sender signs a token delegation. On Stellar, which has no allowance mechanism, the sender signs and submits a payment to BlindPay's treasury address, so the sender's account pays the Stellar fee ([payout with Stellar](/docs/payout-stellar)).

**Payouts from a managed wallet.** No approval, no signed transaction, no gas on your side. BlindPay custodies the balance and moves it directly. Managed wallets are in beta.

**Payins and virtual accounts.** BlindPay delivers the stablecoins to the destination wallet. If a delivery transaction gets replaced during a gas spike, BlindPay resolves the transaction that actually landed.

**Offramp wallets.** The sender pays gas to deposit. After that, BlindPay converts and pays out, charging a fixed [additional fee per chain](/docs/offramp-wallets): 15 USDT on Tron, 1 USDC on Ethereum, 0.50 USDC on Solana, and none on Polygon, Base, Arbitrum, Tempo, or Arc.

**Pricing.** The [fee schedule endpoint](/docs/learn/billing) returns the flat and percentage payout and payin fee for each blockchain network on your instance, and every quote shows the sender amount, receiver amount, and fees before you execute. `cover_fees` decides whether fees come out of what the recipient receives or are added to what the sender sends. Transfers also report a `gas_fee` on each tracked step.

Recipients get local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), and BlindPay settles across nine networks: Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron.

Want to see what gas does to your payout size? Pull your instance's fee schedule, then quote the same payout on two networks and compare the receiver amounts.

---

Source: https://blindpay.com/resources/more/brazil-self-custody-wallet-declaration

---
title: "Brazil's self-custody wallet rule: COAF reporting for transfers of US$10,000 or more"
seoTitle: "Brazil self-custody wallet rule: COAF reporting explained"
description: "Since October 1, 2026, Brazil requires reports to COAF on transfers of US$10,000+ to or from self-custodied wallets. What counts, who reports, what to do."
date: "2026-10-03"
updated: "2026-10-03"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What is Brazil's self-custody wallet reporting rule?"
    a: "It is an amendment to Circular 3.978, the Central Bank of Brazil's anti-money laundering rule. Since October 1, 2026, institutions authorized by the Central Bank must report to COAF every transfer of virtual assets to or from a self-custodied wallet worth US$10,000 or more. Resolution 588 introduced it on September 23, 2026, and Resolution 591 replaced it a week later with the same threshold."
  - q: "Is self-custody banned or restricted in Brazil?"
    a: "No. Brazilians can still hold stablecoins and other virtual assets in wallets they control, and can still move them to and from regulated providers. The rule adds a report to COAF above US$10,000. A separate rule, Resolution 584, adds a 24-hour precautionary hold on some large outgoing transfers to self-custodied wallets from January 1, 2027."
  - q: "When do the first reports have to be filed?"
    a: "Normally, a report under Article 49 of Circular 3.978 is due by the next business day after the transfer. Resolution 591 made an exception for the start: transfers made between October 1 and December 31, 2026 are reported on the first business day of January 2027. The obligation to identify and record those transfers still applies from October 1."
  - q: "Does a wallet at an exchange count as self-custodied?"
    a: "No. A wallet is self-custodied when the owner alone controls the private key and can move funds without a virtual asset service provider taking part. A deposit address at an exchange, or a wallet held by a custodian or another payment provider, is not self-custodied, because a third party can move the funds without the owner's approval."
  - q: "Does the rule apply to companies outside Brazil?"
    a: "The reporting duty sits with institutions authorized by the Central Bank of Brazil. A foreign company paying Brazilian contractors or collecting from Brazilian customers through a regulated provider usually does not file the report itself. It does feel the rule, because its provider has to ask whether each Brazilian customer's external wallet is self-custodied and may need more data on large transfers."
  - q: "What happens if a wallet's self-custody status is answered wrong?"
    a: "A wrong answer means transfers that should be reported may be missed, or transfers that should not be reported get filed. Providers usually treat the answer as a compliance record and lock it once saved. On BlindPay, a saved answer cannot be changed through the dashboard or the API; support corrects it on request with the wallet ID."
howto:
  name: "How to declare whether a Brazilian customer's wallet is self-custodied"
  steps:
    - name: "Find the affected customers"
      text: "List every customer whose country is Brazil. Individuals and businesses are both in scope. Customers in other countries are not."
    - name: "List their external wallets without an answer"
      text: "Pull each Brazilian customer's external blockchain wallets and keep the ones where the self-custody field is still empty. Provider-managed wallets are out of scope."
    - name: "Ask the customer one question"
      text: "Ask whether a third party can move funds out of the wallet without the customer's approval. If no one can, the wallet is self-custodied."
    - name: "Save the answer once"
      text: "Record yes or no on each existing wallet in the dashboard or through the API. Treat the answer as final, because it drives regulatory reporting."
    - name: "Send the field on every new wallet"
      text: "Include the self-custody answer when adding any new wallet for a Brazilian customer, so the request does not fail once the field becomes required."
---

Brazil now requires a report to COAF, its financial intelligence unit, for every transfer of virtual assets worth US$10,000 or more to or from a self-custodied wallet. The rule took effect on October 1, 2026. Self-custody is not banned. Providers must know which wallets are self-custodied, so expect to be asked.

This article is general information, not legal advice. Confirm how the rules apply to your business with qualified Brazilian counsel.

**Key takeaways**

- The rule amends Article 49 of Circular 3.978, the Central Bank's AML rule. It is an automatic report triggered by amount, not a suspicious activity report.
- The threshold is US$10,000 or the equivalent, per transfer, in either direction: into a self-custodied wallet or out of one.
- Resolution 588 (September 23, 2026) created the rule. Resolution 591 (September 30, 2026) replaced it, kept the threshold, and moved reports for October to December 2026 to the first business day of January 2027.
- A wallet counts as self-custodied when the owner alone holds the private key. Exchange deposit addresses and custodian wallets don't count.
- A second rule follows: from January 1, 2027, Resolution 584 adds a 24-hour precautionary hold on large outgoing transfers to self-custodied wallets.

## What does Brazil's self-custody wallet rule require?

Brazil's rule requires institutions authorized by the Central Bank to report to COAF every transfer of virtual assets to or from a self-custodied wallet worth US$10,000 or more.

The text is short. [Resolution BCB 591](https://www.bcb.gov.br/estabilidadefinanceira/exibenormativo?tipo=Resolu%C3%A7%C3%A3o%20BCB&numero=591) adds a fifth item to the list of operations that Article 49 of [Circular 3.978](https://www.bcb.gov.br/estabilidadefinanceira/exibenormativo?tipo=Circular&numero=3978) says must always be reported. The other four are large cash operations: deposits, withdrawals, and payments in cash of R$50,000 or more, and foreign exchange with physical currency of US$10,000 or more.

That neighbor list tells you how the Central Bank sees self-custody. It treats a large transfer to a wallet nobody else controls the way it treats a large cash withdrawal: money leaving the part of the system where a regulated institution can see where it goes next.

Three details matter in practice:

- **It's automatic.** The report is triggered by the amount and the wallet type. Nobody has to suspect anything.
- **It runs both ways.** Stablecoins sent from a provider to a self-custodied wallet count. So do stablecoins arriving from one.
- **It's silent.** Article 50 of Circular 3.978 says these reports are made without telling the people involved. Your customer won't get a notice for each one.

## How did Resolutions 588 and 591 get here?

The Central Bank issued the rule twice in one week, and only the second version is in force.

| Date | Rule | What it did |
| --- | --- | --- |
| November 10, 2025 | Resolution BCB 521 | Defined a self-custodied wallet and required providers to identify its owner |
| August 7, 2026 | Resolution BCB 584 | Added a 24-hour precautionary hold on some transfers to self-custodied wallets, effective January 1, 2027 |
| September 23, 2026 | Resolution BCB 588 | Added the US$10,000 self-custody report to Circular 3.978, effective October 1, 2026 |
| September 30, 2026 | Resolution BCB 591 | Revoked 588, restated the same rule, and deferred reports for October to December 2026 to January 2027 |
| October 1, 2026 | Reporting rule in force | Transfers from this date are in scope |
| First business day of January 2027 | First filing date | Reports for the October to December 2026 transfers are due |

After January 2027, the normal deadline applies again. Article 49 reports are due by the next business day after the operation.

Two things to take from the deferral. First, the transfers are in scope now, so providers have to identify and record them from October 1 even though nothing is filed until January. Second, many documents written in late September still cite Resolution 588. The rule is the same, but the citation is to a revoked resolution.

## What counts as a self-custodied wallet?

A self-custodied wallet is one whose owner holds the private key and can move funds without a virtual asset service provider taking part. That's the definition in [Resolution BCB 521](https://www.bcb.gov.br/estabilidadefinanceira/exibenormativo?tipo=Resolu%C3%A7%C3%A3o%20BCB&numero=521), Brazil's rule for virtual asset transfers and foreign exchange.

| Self-custodied | Not self-custodied |
| --- | --- |
| A browser or mobile wallet app where the user holds the seed phrase | A deposit address at an exchange |
| A hardware wallet | A wallet held by a custodian or regulated custody provider |
| A multisig or smart-account wallet the customer controls | A wallet at another payment provider that holds the keys |

The test that works in a support conversation is one question: "Can a third party move funds out of this wallet without your approval?" If the answer is no, the wallet is self-custodied.

Smart accounts and multisigs trip people up. If the customer's own keys control the wallet, it's self-custodied, even when the wallet is a smart contract. If a service provider holds a key that can move funds alone, it isn't.

The broader trade-offs between these models are in [custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets).

## Who files the report, and who has to change something?

The report is filed by institutions authorized by the Central Bank of Brazil. Since the [PSAV regime](/resources/more/psav-brazil-explained) took effect, that group includes licensed virtual asset service providers.

Everyone else in the chain changes something, even if they never touch COAF:

| Who | What changes |
| --- | --- |
| Brazilian individuals and businesses with their own wallets | They get asked, once per wallet, whether they control it. Large transfers to or from those wallets are reported |
| Fintechs and platforms whose Brazilian users connect external wallets | Your onboarding flow needs the self-custody question, and your provider will need the answer per wallet |
| Foreign companies paying Brazilian contractors in stablecoins | If contractors receive to wallets they control, those wallets fall in scope through the provider's records |
| Companies paying Brazil in reais over Pix | No wallet sits on the Brazilian side of a Pix payout, so this rule doesn't apply to that leg |

That last row matters for the most common corridor. If a US company sends USDC to a provider that pays out reais over Pix, the recipient never touches a wallet. The [USDC to Brazil payout guide](/resources/more/how-to-send-usdc-to-bank-account-brazil) walks through that flow.

## What changes from January 2027 under Resolution 584?

From January 1, 2027, [Resolution BCB 584](https://www.bcb.gov.br/estabilidadefinanceira/exibenormativo?tipo=Resolu%C3%A7%C3%A3o%20BCB&numero=584) requires a 24-hour precautionary hold on some outgoing transfers to self-custodied wallets, and to virtual asset businesses set up abroad.

The hold counts 24 hours from when the funds arrived at the provider. It applies to transfers above US$10,000, measured per operation or as the customer's total for the day, and to smaller ones the provider's risk policy flags. Stablecoins are explicitly included.

The hold is not a freeze. The customer must be told it was applied, why, and for how long. The provider can release early with a documented, reasoned decision. At the end, it either releases the transfer or rejects it.

For product teams, this is the bigger change. The October rule adds a report nobody sees. The January rule adds a day of latency to a large withdrawal unless the provider releases it early. Build that into the timing you show users.

## How should a business prepare?

Collect the self-custody answer once per wallet, store it as a compliance record, and plan for the January hold.

1. **Map where Brazilian wallets enter your product.** Onboarding, withdrawal settings, payout destinations. Every place a Brazilian user adds an external address needs the question.
2. **Ask in plain language.** Use the third-party question above, not "is this self-custodied?" Most users don't know the term.
3. **Store the answer next to the address.** Keep who answered and when. Treat it as final, and route corrections through a reviewed process, not a settings toggle.
4. **Backfill existing wallets.** Find every Brazilian user's saved wallet without an answer and ask before the field becomes mandatory with your provider.
5. **Update customer-facing copy.** Say plainly that large transfers to or from personal wallets are reported to Brazilian authorities under Central Bank rules. Don't promise anything about specific reports, since those are silent by law.
6. **Model the January hold.** For outgoing transfers above US$10,000 to personal wallets, show "up to 24 hours" instead of "minutes" from January 1, 2027.
7. **Check your other wallet controls.** Self-custody status overlaps with [Travel Rule checks](/resources/more/travel-rule-stablecoin-off-ramps) on unhosted wallets. One wallet record can serve both.

## How does BlindPay handle the self-custody declaration?

BlindPay asks for the answer on each external blockchain wallet added for a customer whose country is Brazil, individuals and businesses alike. Managed wallets, which BlindPay creates and custodies, are out of scope, and the field is optional for customers in other countries.

Two dates apply:

- **October 1, 2026:** the `is_self_custody` field on blockchain wallets and the matching dashboard question became available. Requests without it still succeed.
- **October 10, 2026:** the field becomes required for Brazilian customers. Adding a wallet without it fails with `400 self_custody_required`.

Existing wallets without an answer return `is_self_custody: null` and keep working. Each one can be answered once, in the dashboard or with a `PATCH` on the wallet, and a second attempt returns `409 self_custody_already_set`. The [self-custody wallets guide](/docs/kb/self-custody-wallets) in BlindPay's docs has the requests and errors.

New to how wallets, payouts, and on-ramps fit together? The [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis) guide maps who holds the funds in each model.

## What to do next

List your Brazilian customers' external wallets today, ask the one-question test for each, and save the answers before October 10. Then put "up to 24 hours" on large outgoing transfers to personal wallets in your January 2027 release notes.

---

Source: https://blindpay.com/resources/more/how-to-calculate-fx-spread

---
title: "How to calculate FX spread on an international payment (with worked examples)"
seoTitle: "How to calculate FX spread: formula and worked examples"
description: "FX spread % = (mid rate - offered rate) / mid rate x 100. Here is how to get the mid rate, fix the quote direction, and price the spread in dollars."
date: "2026-10-03"
updated: "2026-10-03"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to calculate the FX spread on an international payment"
  steps:
    - name: "Capture the mid-market rate at the moment of the quote"
      text: "Take the mid-market rate from a live source at the same time the provider quotes you. A rate from yesterday's fixing or a weekend screen will make the spread look bigger or smaller than it is."
    - name: "Put both rates in the same direction"
      text: "Express the mid rate and the offered rate as units you receive per unit you send, for example BRL per USD. If one is quoted the other way round, invert it before comparing."
    - name: "Compute the spread and convert it to money"
      text: "Spread % = (mid rate - offered rate) / mid rate x 100. Multiply the spread % by the amount you send to get the cost in your own currency, then add any separate fees for the all-in cost."
faq:
  - q: "What is the formula for FX spread?"
    a: "When you sell one currency to receive another, spread % = (mid-market rate - offered rate) / mid-market rate x 100, with both rates written as units received per unit sent. A mid rate of 5.40 BRL per USD and an offered rate of 5.346 gives a 1.0% spread. On $5,000, that is $50 before any separate fee."
  - q: "Where can I find the mid-market exchange rate?"
    a: "Live data feeds and market screens show a real-time mid rate. Official reference rates are slower but public: the ECB publishes euro reference rates around 16:00 CET on working days, Banxico releases the FIX from 12:00 on banking days, and Brazil's central bank sets PTAX from four dealer surveys between 10:00 and 13:10 Brasília time."
  - q: "Is a zero-fee transfer free?"
    a: "Rarely. A provider that charges no fee usually earns its margin in the exchange rate instead. Compare the amount the recipient gets with the amount sent multiplied by the mid rate. A zero-fee quote with a 2% spread costs more than a quote with a $30 fee and a 0.5% spread on a $10,000 payment."
  - q: "Why does the spread change when I invert the quote?"
    a: "Because a percentage measured against a different base gives a slightly different number. A 1.00% spread on BRL per USD becomes about 1.01% when you express both rates as USD per BRL. The money lost is the same. Pick one direction, units received per unit sent, and use it for every provider you compare."
  - q: "How do I see the spread in a BlindPay quote?"
    a: "Every BlindPay quote returns commercial_quotation, the raw market rate, next to blindpay_quotation, the rate net of BlindPay's fee. The gap between them is BlindPay's FX margin. The flat_fee and partner_fee_amount fields list the separate fees, and receiver_amount shows what lands in the bank account."
  - q: "Should I use the central bank reference rate as the mid-market rate?"
    a: "Use it as a sanity check, not as the exact benchmark. Reference rates such as PTAX and the Banxico FIX are calculated once a day from earlier market data, so the live market can move away from them within hours. For a quote you are about to accept, compare against a live mid rate taken at the same minute."
---

The FX spread is the gap between the mid-market exchange rate and the rate a provider gives you. Spread % = (mid rate - offered rate) / mid rate x 100. On a $5,000 payment, a 1.0% spread costs $50 before any listed fee. BlindPay quotes show the market rate and the rate after fees side by side, so the spread is visible before you confirm.

The math is easy. Getting it right is not, because most mistakes happen before the formula: a stale mid rate, a quote written upside down, or a fee taken out before conversion.

**Key takeaways**

- Spread % = (mid - offered) / mid x 100, with both rates written as units received per unit sent.
- Money cost = spread % x amount sent. A 1.0% spread on $5,000 is $50.
- The cleanest all-in check: 1 - (amount received / (amount sent x mid rate)). It catches spread and fees in one number.
- Central bank reference rates (PTAX, Banxico FIX, ECB) are useful sanity checks but are not live mid rates.
- A "no fee" quote usually prices its margin into the rate. Compare amounts received, not fee lines.

## What is an FX spread?

An FX spread is the difference between the mid-market rate and the rate you actually get, usually expressed as a percentage of the mid rate. It is how most providers earn money on a currency conversion.

The **mid-market rate** is the midpoint between the price at which banks are buying a currency and the price at which they are selling it in the wholesale market. Nobody trades at exactly that rate, which is why it works as a neutral yardstick.

The **offered rate** (also called the final rate or customer rate) is what the provider applies to your payment. The gap between the two is the **spread**, sometimes called the markup or margin. A separate **fee** is anything charged on top, such as a flat $25 or a percentage of the amount.

For the wider cost picture, including correspondent fees and receiving bank charges, see [hidden fees in international wires](/resources/more/hidden-fees-international-wires-our-sha-ben) and [how much cross-border payments cost in 2026](/resources/more/cross-border-payment-costs-2026).

## What is the formula for FX spread?

When you sell one currency to receive another, spread % = (mid rate - offered rate) / mid rate x 100. Both rates must be in the same direction: units of the currency you receive per one unit of the currency you send.

Direction is where most calculations go wrong. Three cases:

- **Selling USD to pay in BRL.** Rates are quoted as BRL per USD. You get fewer reais than mid, so the offered rate is lower: spread = (mid - offered) / mid.
- **Buying USD with BRL.** Rates are still quoted as BRL per USD, but now you pay more reais than mid for each dollar: spread = (offered - mid) / mid.
- **Inverted quotes.** Some providers quote USD per BRL (0.1852) instead of BRL per USD (5.40). Invert one of them before comparing, or you will subtract numbers that mean different things.

One rule handles all three: convert everything to "how much do I receive for one unit I send", then cost % = 1 - (offered / mid). Inverting changes the percentage a little because the base changes. A 1.00% spread measured in BRL per USD shows up as about 1.01% in USD per BRL. The money lost is identical, so pick one convention and stick to it.

## How do you calculate FX spread in 3 steps?

Take a live mid rate, align the direction, then compute the percentage and convert it to money. Here it is on a $5,000 payment from USD to BRL.

Assumptions (illustrative, not a live quote or a BlindPay price): mid-market rate 5.4000 BRL per USD, offered rate 5.3460 BRL per USD, no separate fee.

1. **Capture the mid rate at the same moment.** Take the mid from a live source at the minute you request the quote: 5.4000. A rate from yesterday's fixing would distort everything that follows.
2. **Align the direction.** Both rates are already BRL per USD, the currency you receive per unit you send. Nothing to invert.
3. **Compute the spread and the money.** (5.4000 - 5.3460) / 5.4000 = 0.0100, so 1.00%. Multiply by the amount sent: 1.00% x $5,000 = $50.

Check it from the recipient's side. At mid, $5,000 buys R$27,000. At 5.3460, it buys R$26,730. The R$270 gap, divided by the 5.40 mid rate, is $50. Same answer, which is the point: if the two methods disagree, one of your inputs is wrong.

## Where do you get the mid-market rate?

A live market data feed gives you a real-time mid rate. Official reference rates are free and public but are set once a day, so treat them as a check on the live number rather than a replacement for it.

| Source | Who publishes it | When it is set | Best use |
| --- | --- | --- | --- |
| Live mid from a market data feed or trading screen | Data vendors, banks, FX platforms | Continuously during market hours | Benchmarking a quote you are about to accept |
| WM/Reuters benchmark rates | LSEG | Daily fixings, the best known around 4pm London | Month-end valuation, accounting, contracts that reference it |
| [ECB euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) | European Central Bank | Around 16:00 CET on working days, except TARGET closing days | EUR sanity checks; the ECB says the rates are for information only and discourages using them for transactions |
| [Banxico FIX](https://www.banxico.org.mx/tipcamb/tipCamMIAction.do?idioma=sp) | Banco de México | Released from 12:00 on banking days, from an average of wholesale market quotes for settlement two banking days later; published in the Diario Oficial the next banking day | USD/MXN reference for contracts and peso-denominated obligations |
| [PTAX](https://www.bcb.gov.br/conteudo/relatorioinflacao/EstudosEspeciais/EE042_A_taxa_de_cambio_de_referencia_Ptax.pdf) | Banco Central do Brasil | Four dealer surveys at random times inside 10:00-10:10, 11:00-11:10, 12:00-12:10 and 13:00-13:10 Brasília time | USD/BRL reference for contracts, tax, and accounting |

Two things to know about reference rates. First, they lag. PTAX is built from surveys that end around 13:10 in Brasília, so by late afternoon the live market can sit well away from it. Second, they are not quotes. Nobody will deal with you at PTAX or the FIX, so a provider quoting a little away from them is not necessarily overcharging.

For stablecoin routes there is one more wrinkle. USDC and USDT trade close to one dollar, but not at exactly one dollar every second. When the quote is in USDC per BRL, compare against the USD mid and accept that a few hundredths of a percent may come from the token, not the provider.

## How do you compare a "no fee" quote with a quote that charges a fee?

Use the all-in formula: cost % = 1 - (amount received / (amount sent x mid rate)). It folds spread and fees into one number, whatever the provider calls them.

Assumptions (illustrative): $10,000 USD to MXN, mid-market rate 18.50 MXN per USD, so $10,000 is worth MXN 185,000 at mid.

| | Quote A: "no fee" | Quote B: fee plus tighter rate |
| --- | --- | --- |
| Fee | $0 | $30, deducted before conversion |
| Offered rate | 18.13 MXN per USD | 18.40 MXN per USD |
| Spread on the rate | 2.00% | 0.54% |
| Amount converted | $10,000 | $9,970 |
| Recipient gets | MXN 181,300 | MXN 183,448 |
| Shortfall vs mid (MXN 185,000) | MXN 3,700 | MXN 1,552 |
| All-in cost | 2.00%, about $200 | 0.84%, about $84 |

Quote A looks free and costs more than twice as much. That is why fee lines alone tell you very little.

Note the order of operations in Quote B. The $30 is taken before conversion, so the recipient loses the fee at the offered rate, not at mid. Some providers deduct fees from the local currency after conversion instead. The all-in formula doesn't care which. It only looks at what arrives.

The [crypto on-ramp fees guide](/resources/more/crypto-on-ramp-fees-explained) runs the same kind of comparison for the payin side, and [stablecoin FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes) covers the cost that appears after you accept, when the rate you get drifts from the rate you were shown.

## What mistakes make a spread calculation wrong?

Most wrong answers come from bad inputs, not bad arithmetic. Five to check before you trust the number:

1. **Stale mid rate.** Comparing a 3pm quote with the morning's PTAX or a Friday close makes any provider look good or bad depending on how the market moved.
2. **Weekend rates.** FX markets largely pause from Friday evening to Sunday evening. Quotes given over the weekend can carry a wider spread to cover the risk of Monday's open, and a Friday mid is a weak benchmark for them.
3. **Mixed directions.** Subtracting a USD per BRL rate from a BRL per USD rate produces nonsense. Align first.
4. **Ignoring fees taken from the principal.** Intermediary banks on a SWIFT payment can deduct charges in transit, so the recipient gets less than the quote suggested. That is a cost even though it never appears as a rate.
5. **Comparing indicative rates.** A rate on a website is not a quote. Only a firm quote with an expiry time tells you what you will pay. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers what a firm quote locks.

## How do you read the spread in a BlindPay quote?

Every BlindPay quote shows both rates and every fee line, so you can compute the spread without a separate data feed. The fields come straight from the [payout quote response](/docs/payout-quotes).

| Field | What it is | How to use it |
| --- | --- | --- |
| `commercial_quotation` | The raw market exchange rate | Your market benchmark for this quote |
| `blindpay_quotation` | The rate net of BlindPay's fee | The offered rate in the spread formula |
| `flat_fee` | The flat-fee component | Add it to the all-in cost |
| `partner_fee_amount` | Your own markup, if you passed a `partner_fee_id` | The margin your platform adds for its users ([partner fees](/docs/learn/partner-fees)) |
| `sender_amount` / `receiver_amount` | Amount sent and amount received, in minor units | The inputs to the all-in formula |
| `expires_at` | Quote expiry in epoch milliseconds, 5 minutes by default | The window in which the numbers hold |

So BlindPay's FX margin on a quote = (`commercial_quotation` - `blindpay_quotation`) / `commercial_quotation`. To check the market rate itself, compare `commercial_quotation` with a live mid rate from your own source at the same minute.

For example, a quote with `commercial_quotation` 5.40 and `blindpay_quotation` 5.373 carries a 0.5% FX margin (illustrative numbers). Add `flat_fee` and any `partner_fee_amount`, and the all-in cost falls out of `receiver_amount`.

BlindPay quotes use real-time rates and lock rate and fees for the quote's lifetime, so the spread you calculate is the spread you get if you execute before `expires_at`. Payouts settle over Pix and SPEI in minutes, and over ACH, SEPA, and SWIFT (POBO/COBO) on the rail's schedule ([cut-off times](/docs/kb/cut-off-times)). There is no pre-funding: the quote is funded when you execute it.

Plans are published on the [pricing page](/pricing). Per-transaction costs show up in each quote rather than in a rate card, which is why the fields above matter.

## What to do next

Pull one real quote for your main corridor, take a live mid rate at the same minute, and run both formulas: spread % on the rate, then the all-in cost % on the amount received. If you are building on BlindPay, create a test quote from the [payout quickstart](/docs/quickstart-payout) and compute the margin from `commercial_quotation` and `blindpay_quotation`. Then read [what real-time cross-border settlement is](/resources/more/what-is-real-time-cross-border-settlement) to see where the rate fits in the rest of the payment.

---

Source: https://blindpay.com/resources/more/how-to-pay-invoices-with-stablecoins-api

---
title: "How to pay invoices, boletos, and Pix codes with stablecoins through an API"
seoTitle: "How to pay invoices and boletos with stablecoins via API"
description: "Register the bill, quote it, pay it from USDC or USDT, and track two webhook streams. A developer guide to stablecoin bill pay, boleto gotchas included."
date: "2026-10-03"
updated: "2026-10-03"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to pay a bill from stablecoins through an API"
  steps:
    - name: "Verify the customer"
      text: "Onboard the business that owes the bill with KYB, or the individual with KYC, and wait for approval before registering anything."
    - name: "Register the bill"
      text: "Send the boleto barcode, the Pix copy-and-paste code, or the invoice with the vendor's bank details and line items. Save the payable ID it returns."
    - name: "Quote the bill"
      text: "Request a quote for the payable instead of an amount. The provider prices the stablecoin side so the bill is paid in full, and the quote expires in minutes."
    - name: "Authorize and execute the payout"
      text: "Approve the stablecoin pull from your wallet if you fund from an external wallet, then execute the payout against the quote before it expires."
    - name: "Track both webhook streams"
      text: "Listen for payable events for the bill's state and payout events for the payment attempt, and correlate them by ID so one paid bill isn't counted twice."
    - name: "Reconcile and retry"
      text: "Match each completed payable to the invoice in your books. If an attempt fails or is refunded, quote the same payable again instead of registering it twice."
faq:
  - q: "Can you pay an invoice with stablecoins if the vendor doesn't accept crypto?"
    a: "Yes. A stablecoin bill-pay API converts USDC or USDT into the vendor's currency and pays the bill over a normal rail, such as ACH or wire in the US or a boleto or Pix payment in Brazil. The vendor receives an ordinary bank payment and never sees the stablecoin."
  - q: "What is a payable in a payments API?"
    a: "A payable is a bill you register before paying it: an invoice, a boleto, or a Pix code. Unlike a regular payout, where you choose the amount, a payable carries its own amount from the line items or from what the payment rail resolves. You pay it by quoting the payable and executing the payout."
  - q: "Can a boleto amount change after you register it?"
    a: "Yes. A boleto's amount is resolved again when you quote it, and it can move because of fines, interest, or an early-payment discount. Two quotes on different days can return different amounts. Always pay against a fresh quote instead of a cached figure."
  - q: "When do boleto payments clear?"
    a: "Boletos clear on Brazilian banking days between 06:30 and 18:30 BRT, and bills above R$250,000 must be paid by 14:30 BRT to clear the same day. A boleto quoted outside that window is paid the next banking day. Pix payments run 24/7."
  - q: "What happens if a stablecoin bill payment fails?"
    a: "The bill goes back to a payable state and the attempt's failure reason stays on the payout. Don't register the bill again, since the same code would be rejected as a duplicate. Quote the same payable again and pay it. A refunded attempt returns the stablecoins to the funding wallet."
  - q: "Which stablecoins and networks can pay a bill?"
    a: "On BlindPay, payables are paid from USDC or USDT on EVM networks today, from an external wallet or a managed wallet. Code payables, such as boletos and Pix codes, are in Brazilian reais. Invoice payables to a US bank account are in US dollars over ACH or wire."
---

To pay a bill from stablecoins through an API, register the bill (an invoice with the vendor's bank details, a boleto barcode, or a Pix code), request a quote for it, then execute a payout from USDC or USDT. The provider converts the stablecoins and pays the bill over the vendor's normal rail. Track the bill and the payment as two separate objects, and retry by re-quoting, never by registering twice.

This guide is for engineering and product teams adding bill pay or accounts payable to a stablecoin product. It covers the general pattern first, then the exact flow, with BlindPay's Payables API as the worked example.

## Why pay bills from stablecoins instead of sending a payout?

A regular stablecoin payout answers "send this much to this account." A bill is different. Its amount, beneficiary, and due date are set by someone else, and for some bill types they change over time. Treating a bill as a plain payout means your code has to parse the bill, compute what's owed, and hope it didn't move.

A bill-pay API flips that. You register the bill, the provider resolves what it can from the payment rail, and the amount comes from the bill, not from you. That matters for three groups:

- **Businesses that hold stablecoin balances** and want to pay suppliers, rent, or taxes without converting manually first.
- **Fintechs and wallets** that want to offer "pay a bill" to customers who keep dollars on-chain.
- **Cross-border teams** paying Brazilian boletos or US vendor invoices from a dollar stablecoin treasury.

There's also a reconciliation reason. The U.S. Faster Payments Council's [July 2026 report](https://fasterpaymentscouncil.org/userfiles/2080/files/CBPWG_DAWG_Stablecoins%20as%20a%20Cross-Border%20Payment%20Method2_07-22-2026%20Final.pdf) points out that stablecoins don't carry trade information on their own, so an overlay is needed to link a payment to its invoice. A payable is that overlay: one object that ties the bill, the line items, and the payment together.

## Which bills can you pay with stablecoins?

| Bill type | What you send | Currency | Paid over | Where the amount comes from |
| --- | --- | --- | --- | --- |
| US vendor invoice | Vendor's bank details, line items, taxes, discount | USD | ACH or wire | Your line items, plus taxes, minus discount |
| Boleto | The 47-digit linha digitável or 44-digit barcode | BRL | Boleto clearing | Resolved from the rail at registration, and again at quote time |
| Utility or tax bill (arrecadação) | The 48-digit code or 44-digit barcode starting with 8 | BRL | Bill clearing | Encoded in the barcode, no interest |
| Pix code with a fixed amount | The Pix copy-and-paste payload | BRL | Pix | Embedded in the code |
| Pix code without an amount | The Pix payload plus line items | BRL | Pix | Your line items |

Pix is the Banco Central do Brasil's [instant payment system](https://www.bcb.gov.br/en/financialstability/pix_en) and runs 24/7. Boletos are Brazil's bank payment slips, used for everything from supplier invoices to school fees, and they clear only on banking days. US invoices travel over ACH, governed by [Nacha](https://www.nacha.org/content/ach-network), or by wire.

## How do you pay a bill from stablecoins, step by step?

1. **Verify the customer.** The business that owes the bill goes through KYB, or the individual through KYC. Nothing is registered until it's approved.
2. **Register the bill.** One call, whatever the type. You get back a payable ID and the resolved details: beneficiary, current amount, due date.
3. **Quote the payable.** Ask for a quote with the payable ID, the network, and the token. Don't send an amount. The quote prices the stablecoin side so the bill is paid in full, with the sender covering fees.
4. **Authorize and execute.** From an external EVM wallet, approve the ERC-20 pull for the quoted amount, then execute the payout. From a managed wallet, skip the approval.
5. **Track two webhook streams.** Payable events describe the bill. Payout events describe the payment attempt, including compliance holds and failure reasons.
6. **Reconcile and retry.** Mark the invoice paid on the payable's completion event. If an attempt fails or is refunded, the bill returns to draft: quote it again.

Here's an illustrative version of steps 2 and 3 on BlindPay's API, registering a boleto and quoting it:

```bash
# 2. Register the boleto
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/payables \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_id": "re_000000000000",
    "currency": "BRL",
    "boleto_barcode": "34191790010104351004791020150008191070026000"
  }'

# 3. Quote it by payable ID, with no amount
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/quotes \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "payable_id": "pb_000000000000",
    "network": "base",
    "token": "USDC"
  }'
```

The full request and response shapes, including invoice registration with line items, are in the [Payables docs](/docs/payables).

## What makes boletos different?

Boletos are the bill type that breaks naive integrations. Four rules to build around:

- **The amount moves.** A boleto's amount is resolved again at quote time. Fines, interest, or a discount for paying early can change it. Quote an overdue boleto on two different days and you can get two amounts. Never pay from a cached figure.
- **The quote can update the bill.** Quoting re-resolves the due date and, if it was empty, the beneficiary. A read right after quoting can show different details than registration did.
- **Boletos clear in a window.** Brazilian banking days only, 06:30 to 18:30 BRT, or 14:30 BRT for bills above R$250,000. A boleto quoted outside that window is paid the next banking day.
- **Late bills get rejected.** If the next available payment day falls after the due date, the quote fails with `payable_boleto_would_be_overdue` instead of paying late.

Pix codes and US invoices don't have these problems. Their amount is fixed at registration, and Pix runs at any hour.

## How do statuses and webhooks work for a paid bill?

A payable has four statuses, and they describe the bill, not the attempt:

| Status | Meaning |
| --- | --- |
| `draft` | Registered and quotable. A failed or refunded attempt returns the bill here |
| `processing` | A payout is executing it, including during a compliance hold |
| `completed` | Paid. Terminal |
| `canceled` | A draft that was deleted. The code can be registered again |

The payment attempt lives on the payout, with its own `payout.new`, `payout.update`, and `payout.complete` events. The bill emits `payable.new`, `payable.update`, and `payable.complete`. One paid bill produces both a `payable.complete` and a `payout.complete`. Correlate them through `payable_id` and `payout_id`, and count the payment once. [Stablecoin API webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation) covers signature checks and deduplication.

## What are the common mistakes?

- **Registering the same code twice.** The second call fails with `duplicate_payable`. To retry, quote the existing payable.
- **Sending an amount with the quote.** A payable quote takes its amount from the bill. Don't send `request_amount`.
- **Letting the quote expire.** Quotes last 5 minutes. Execute promptly, or request a new quote for the same payable.
- **Paying from an unsupported network.** Payables are EVM-only today. A Stellar or Solana quote is refused with `payable_network_not_supported`.
- **Forgetting the minimum.** A bill must be worth at least 10.00 USD on the paying side, and a bill near that floor can fail later if the rate moves.
- **Double counting.** Booking both the payable and the payout completion as payments.

## How does BlindPay handle bill pay?

[BlindPay](/global-payments) launched Payables in August 2026. It pays invoices to US bank accounts over ACH or wire, boletos, utility and tax bills, and Pix codes, from USDC or USDT on EVM networks, using the same quote-and-payout flow as any other BlindPay payout. Invoice payables can attach the original PDF, and the dashboard can prefill an invoice by reading it with AI. Every bill passes the same KYC, KYB, and sanctions checks as the rest of the API.

To build accounts payable on top of it, the [invoice payables prompt](/prompts/integrate-invoice-payables) gives a coding agent the full integration spec. The [cut-off times reference](/docs/kb/cut-off-times) lists the boleto windows.

## What to do next

Pick the bill type your users pay most often and run it end to end on a development instance: register it, quote it, pay it, and watch both webhook streams. Then try a failed attempt and confirm your code re-quotes instead of re-registering. For the full context on how stablecoin payments move, see [what blockchain payments are](/resources/more/what-are-blockchain-payments), and for when a bill is better paid over a plain domestic rail, [when not to use blockchain payments](/resources/more/when-not-to-use-blockchain-payments).

---

Source: https://blindpay.com/resources/more/onchain-settlement-vs-bank-settlement

---
title: "Onchain settlement vs bank settlement: RTGS, ACH, cards, and blockchain finality compared"
seoTitle: "Onchain settlement vs bank settlement, compared"
description: "How onchain settlement compares with Fedwire, Pix, ACH, and card settlement: settlement asset, hours, finality, reversibility, and where payout risk sits."
date: "2026-10-03"
updated: "2026-10-03"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between onchain settlement and bank settlement?"
    a: "Bank settlement moves central bank or commercial bank money between accounts held at a central bank or a bank, inside operating hours set by the system. Onchain settlement updates a token balance on a public blockchain, around the clock, and becomes final when the network's consensus says so. The other big difference is the asset: a stablecoin is a claim on its issuer, not central bank money."
  - q: "Is a stablecoin transfer final?"
    a: "It becomes final once the blockchain reaches finality for the block that contains it. On chains with deterministic finality that happens within seconds, after which the transfer can't be undone by the protocol. On Ethereum a block is finalized when checkpoints collect votes from two-thirds of staked ETH. Before finality, a transfer is likely but not guaranteed, so payment providers wait for it."
  - q: "What is real-time gross settlement?"
    a: "Real-time gross settlement (RTGS) settles each payment individually, in full, as soon as it's processed, instead of grouping payments and settling net amounts later. Fedwire Funds in the US and the SPI behind Pix in Brazil are both RTGS systems run by central banks. Each payment is final when it settles, which removes the credit exposure that batch systems carry between submission and settlement."
  - q: "Why does a stablecoin payout still take time if the blockchain settles in seconds?"
    a: "Because a payout to a bank account has two legs. The onchain leg settles in seconds to minutes depending on the chain. The fiat leg runs on the destination rail, with its own hours, cut-offs, and compliance checks. Pix and SPEI pay out in minutes at any hour, while ACH takes one to three business days and SWIFT can take up to five."
  - q: "Can a settled onchain payment be reversed?"
    a: "Not by the protocol. Once a transfer is final, the only way back is a new transfer from the recipient. Two exceptions sit outside the protocol: a stablecoin issuer can block an address so the tokens can't move, and a payment provider can return funds it hasn't yet paid out. Neither undoes the original transfer; they act on what happens next."
  - q: "Is card settlement the same as card authorization?"
    a: "No. Authorization is the real-time approval at checkout. Settlement is the later movement of money from the card issuer to the merchant's bank, after clearing, usually in batches. Even after settlement, a card payment can be pulled back through a chargeback. That is the main contrast with onchain settlement and RTGS systems, where a settled payment stays settled."
---

Onchain settlement updates a stablecoin balance on a blockchain, at any hour, and becomes final when the network's consensus says so. Bank settlement moves central bank or bank money between accounts, inside each system's operating hours, either one payment at a time (RTGS) or in batches (ACH). The models differ in asset, hours, and reversibility.

That difference matters most in a payout that uses both. A stablecoin payout to a bank account settles twice: once onchain, once on the local rail. Each leg has its own finality point and its own way of going wrong.

**Key takeaways**

- Settlement is the moment money actually changes hands. Finality is the moment it can't be undone.
- Fedwire Funds and Brazil's SPI (behind Pix) are real-time gross settlement systems in central bank money. ACH settles in batches. Cards settle days later and stay reversible through chargebacks.
- Onchain settlement runs 24/7 and settles in a token that is a claim on its issuer, not in central bank money.
- Some chains reach finality deterministically in seconds; others are probabilistic first and final later.
- In a stablecoin payout, the fiat leg usually decides total time and most of the failure modes.

New to the stack as a whole? Start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure). This page zooms in on the settlement layer.

## What does settlement mean in a payment?

Settlement is the step where the payer's account is debited and the payee's account is credited in the settlement asset, discharging the obligation between them. It comes after clearing, which is the exchange and checking of payment instructions.

Three questions describe any settlement model:

1. **What is the settlement asset?** Central bank money (reserves at the central bank), commercial bank money (a deposit at a bank), or a token on a blockchain.
2. **Gross or batched?** Each payment settled on its own, or many payments collected and settled together at set times.
3. **When is it final?** The point after which the payment can't be revoked by the system's rules.

Finality is the one people mix up most. A payment can show as "sent" long before it's final, and a "settled" card payment can still come back. The [SLA and finality explainer](/resources/more/stablecoin-api-sla-settlement-finality) shows how that gap turns into support tickets.

## How do the main bank settlement models work?

Bank payments settle in one of three broad ways: real-time gross settlement at a central bank, batch settlement at scheduled windows, or delayed settlement behind a card network. Correspondent banking adds a fourth pattern for cross-border wires.

**Real-time gross settlement (RTGS).** Each payment settles individually as it's processed. The Federal Reserve describes [Fedwire Funds](https://www.federalreserve.gov/paymentsystems/fedfunds_about.htm) as a real-time gross settlement system whose transfers are "immediate, final, and irrevocable once processed." Its business day runs from 9:00 p.m. ET on the preceding calendar day to 7:00 p.m. ET, on weekdays that aren't holidays.

Brazil's Pix runs on the SPI, the central bank's instant payment system. The Banco Central do Brasil's [disclosure on the SPI](https://www.bcb.gov.br/content/estabilidadefinanceira/sistemapagamentosinstantaneos_docs/principios_infraestruturas_mercado_financeiro.pdf) says it is a centralized real-time gross settlement infrastructure that settles exclusively in central bank money, on a final, irrevocable, and unconditional basis, 24 hours a day, 7 days a week, including holidays. It only settles against available balance in the paying participant's account, so there's no credit extended along the way.

In the US, the [FedNow Service](https://www.federalreserve.gov/paymentsystems/fednow_about.htm) went live on July 20, 2023, and is built for uninterrupted 24x7x365 processing with interbank clearing and settlement in near real time.

**Batch settlement (ACH).** Banks exchange [batches of credit and debit transfers](https://www.federalreserve.gov/paymentsystems/fedach_about.htm), and the operator settles them by crediting and debiting the banks' settlement accounts at scheduled times. That's efficient for volume. It also means time passes between sending and settling, and payments can come back as returns afterward.

**Card settlement.** Authorization happens at checkout in seconds. Clearing and settlement to the merchant's bank happen later, usually in batches. Even after settlement, the cardholder's bank can claw a payment back through a chargeback.

**Correspondent banking (SWIFT).** A cross-border wire is a chain of messages and account movements between banks that hold accounts with each other. Each hop settles on its own books, in its own hours. [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) walks through those hops.

## How does onchain settlement work?

Onchain settlement happens when a block containing the transfer is added to the chain and that block reaches finality. For a stablecoin, the token contract's ledger debits the sender's address and credits the recipient's address in the same state change.

There is no operator calendar. Blocks are produced around the clock, so a stablecoin transfer settles on a Sunday the same way it does on a Tuesday.

The settlement asset is the difference people miss. Fedwire and the SPI settle in central bank money. A stablecoin transfer settles in a token that is a claim on its issuer, backed by the issuer's reserves. That's why issuer quality, reserve rules, and [depeg risk](/resources/more/stablecoin-depeg-risk-payments) belong in any settlement discussion about stablecoins, even when the chain itself works perfectly.

## What is the difference between probabilistic and deterministic finality?

Probabilistic finality means a transfer gets harder to reverse with every block built on top of it, without ever reaching a single "now it's final" moment from that mechanism alone. Deterministic finality means the protocol marks a block as final at a specific point, and after that the protocol won't revert it.

Most networks used for payments today combine a fast, likely-final state with a later, guaranteed-final one. Two examples from primary docs:

- **Ethereum.** Time is divided into [12-second slots and 32-slot epochs](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/). The first block of each epoch is a checkpoint. When a pair of checkpoints gets votes from at least two-thirds of staked ETH, the newer one is justified and the older one is finalized. A transfer is visible in seconds and final once its checkpoint is finalized.
- **Solana.** Its [RPC commitment levels](https://solana.com/docs/rpc) spell out the stages. `processed` is the node's latest view and can still be rolled back. `confirmed` means more than two-thirds of the network's active stake has voted for the block. `finalized` is the strongest confirmation state the network uses.

A payment provider picks which of those stages it waits for before treating funds as received. Waiting longer is safer and slower. Per-chain finality times, confirmation counts, and fees are compared in [the best network to off-ramp stablecoins](/resources/more/best-network-to-off-ramp-stablecoins).

## How do onchain and bank settlement compare side by side?

Onchain settlement wins on hours and on speed to finality for most chains. Bank RTGS wins on the settlement asset. Batch and card systems trade speed for cost and leave a reversal window open.

| Property | Fedwire Funds (RTGS) | Pix via SPI (RTGS) | ACH (batch) | Card networks | Onchain stablecoin |
| --- | --- | --- | --- | --- | --- |
| Settlement asset | Central bank money | Central bank money | Central bank money between banks | Bank money, after clearing | Issuer-backed token |
| Hours | Weekday business day, 9:00 p.m. to 7:00 p.m. ET | 24/7, including holidays | Scheduled windows on business days | Settlement on business days | 24/7 |
| Gross or batched | Gross, one by one | Gross, one by one | Batched | Batched | Gross, per transfer in a block |
| When final | Once processed | Once settled | After settlement, with returns possible | Open to chargebacks after settlement | When the block reaches finality |
| Typical reversal path | None by the system | None by the system | Returns | Chargebacks | None by the protocol; issuer can block an address |
| Who operates it | Federal Reserve | Banco Central do Brasil | ACH operators | Card networks and acquirers | Network validators |

One row deserves a footnote. "None by the system" doesn't mean nobody can ever recover money. It means recovery takes a new, separate payment, agreed or ordered, rather than an undo. The same is true onchain, as [are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible) explains.

## Where does settlement risk sit in a stablecoin payout?

In a stablecoin payout to a bank account, the onchain leg carries finality and address risk, and the fiat leg carries timing, return, and compliance risk. Knowing which leg you're on tells you what can still go wrong.

A typical payout runs in this order:

1. **Quote.** The amount, rate, and fees are fixed for a short window. Nothing has settled.
2. **Onchain transfer.** The stablecoin moves from the sender's wallet. Risk: wrong network or address, an issuer block on either address, or waiting on finality.
3. **Onchain finality.** The transfer can no longer be reverted by the chain. From here the stablecoin leg is settled.
4. **Compliance review.** Screening and, on some rails, a review step before fiat goes out. Risk: a hold or a request for information.
5. **Fiat send.** The local currency goes out on the destination rail. Risk: cut-offs, holidays, and rail hours.
6. **Fiat settlement.** The recipient's bank is credited. On RTGS rails like Pix this is final at once. On ACH, a return can still arrive later.

The practical point: steps 2 and 3 take seconds to minutes on most payment chains. Steps 4 to 6 decide whether the payout lands in five minutes or five business days. [Stablecoin payout settlement times](/resources/more/stablecoin-payout-settlement-times) lists the per-rail numbers, and [cut-off times, weekends, and holidays](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays) covers the calendar side.

## When is bank settlement still the better fit?

Onchain settlement isn't automatically the right choice. Bank settlement is often better when:

- **Both sides are domestic and already on a fast rail.** A Pix-to-Pix or FedNow payment settles in central bank money without any conversion.
- **You need central bank money as the settlement asset.** Some treasury and regulatory setups require it.
- **The recipient can't or won't hold tokens.** Every stablecoin payout still needs a fiat leg to reach a bank account.
- **Your controls assume a reversal window.** Card-style dispute flows don't exist onchain, so consumer refund logic has to be built separately.
- **The amount is small and the corridor is cheap already.** Conversion costs can outweigh the speed gain.

Settlement speed also isn't the same as availability. Funds can be final onchain and still sit in review before the fiat leg goes out.

## How does BlindPay sequence the two legs?

BlindPay settles the stablecoin leg first and the fiat leg second, and its payout statuses show which leg a payout is on. Payouts start from USDC or USDT on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, or Tron, per the [supported chains](/docs/kb/supported-chains) reference, and go out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO).

According to the [payouts docs](/docs/payouts), a payout starts in `processing` while the stablecoins are pulled from the funding source and the fiat transfer is in flight. ACH, wire, and RTP payouts pass through `on_hold` as a standard step for compliance review after the crypto is collected, and all SWIFT payouts start there. `completed` means the fiat landed in the recipient's bank account. `refunded` means the stablecoins were returned to the funding source instead of being converted. A payout that ends `failed` does not automatically refund.

On the fiat side, the [cut-off times reference](/docs/kb/cut-off-times) lists the network windows: ACH settles in 1 to 3 business days with a 9:00 PM ET cut-off, Same-Day ACH settles the same business day with a 3:00 PM ET cut-off, and international SWIFT takes up to 5 business days. Instant rails such as Pix and SPEI settle in minutes. There's no pre-funding: the stablecoins are the funding.

## What to do next

Map your own payout flow onto the six steps above and write down, for each one, the status you'll show and what you'll do if it fails. Then check which finality stage your provider waits for on each chain you plan to use.

## Sources and further reading

- [Federal Reserve: Fedwire Funds Service](https://www.federalreserve.gov/paymentsystems/fedfunds_about.htm)
- [Federal Reserve: FedNow Service](https://www.federalreserve.gov/paymentsystems/fednow_about.htm)
- [Federal Reserve: FedACH services](https://www.federalreserve.gov/paymentsystems/fedach_about.htm)
- [Banco Central do Brasil: SPI disclosure under the Principles for Financial Market Infrastructures (PDF, Portuguese)](https://www.bcb.gov.br/content/estabilidadefinanceira/sistemapagamentosinstantaneos_docs/principios_infraestruturas_mercado_financeiro.pdf)
- [ethereum.org: Proof-of-stake and finality](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/)
- [Solana docs: RPC commitment levels](https://solana.com/docs/rpc)

---

Source: https://blindpay.com/resources/more/pay-exact-local-amount-receiver-side-quote

---
title: "How to pay an exact BRL, MXN, or EUR amount from USDC: receiver-side quotes explained"
seoTitle: "Pay an exact BRL, MXN, or EUR amount from USDC"
description: "Fix what the recipient gets, not what you send. How receiver-side quotes and cover_fees land exact amounts over Pix, SPEI, and SEPA, with worked examples."
date: "2026-10-03"
updated: "2026-10-03"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do I make sure my recipient gets an exact amount in local currency?"
    a: "Quote on the receiver side. Set currency_type to receiver, put the local amount in request_amount in minor units, and set cover_fees to true so fees are added to the stablecoins you send. The quote returns the sender_amount that delivers that amount. Execute against the quote id before expires_at and the recipient gets the quoted receiver_amount."
  - q: "What does cover_fees do on a receiver-side quote?"
    a: "It decides who absorbs the fee. With cover_fees set to true, the fee is added on top of the stablecoin amount you send, so the recipient gets the full amount. With cover_fees set to false, BlindPay's docs describe the fee as deducted from the fiat the recipient receives. Either way, read receiver_amount on the response before you show or promise a number."
  - q: "Is there a minimum for a receiver-side EUR quote?"
    a: "Yes. A SEPA payout quoted by the EUR amount the receiver should get needs at least 10 EUR, and a SEPA quote by USDC amount needs at least 11 USDC. Below that, the quote fails with sepa_minimum_is_10_eur or sepa_minimum_is_11_usdc. International SWIFT payouts need at least 100 USD requested. Other rails have no minimum beyond the fee itself."
  - q: "What happens to the exact amount if the quote expires?"
    a: "Nothing moves. An expired quote is rejected, not executed at a new rate. Request a new receiver-side quote with the same local amount. The receiver amount stays fixed, and the sender_amount changes to the new rate. Show the new USDC figure, get confirmation if your flow needs it, and execute against the new quote id."
  - q: "Can I fix the BRL amount and let the recipient pay the fees?"
    a: "You can request the quote with currency_type set to receiver and cover_fees set to false, but then the fee comes out of what the recipient gets, so the delivered BRL can sit below the amount you typed. If the obligation is an invoice or a salary with a fixed number, use cover_fees set to true instead."
howto:
  name: "How to pay an exact local-currency amount from USDC with a receiver-side quote"
  steps:
    - name: "Add and approve the recipient's bank account"
      text: "Create a bank account for the recipient with the rail's details: a Pix key for Brazil, a CLABE for Mexico, or an IBAN and BIC for SEPA. Wait for status approved."
    - name: "Request a receiver-side quote"
      text: "Call POST /v1/instances/{instance_id}/quotes with bank_account_id, currency_type receiver, request_amount in local minor units, cover_fees true, network, and token."
    - name: "Show the stablecoin cost and a countdown"
      text: "Display sender_amount as the USDC needed and count down from expires_at, which is in epoch milliseconds."
    - name: "Authorize exactly the quoted amount"
      text: "For an external EVM wallet, call approve on the token contract with the contract payload from the quote. Managed wallets skip this step."
    - name: "Execute the payout before expiry"
      text: "Call POST /v1/instances/{instance_id}/payouts/evm with quote_id and sender_wallet_address. If the quote expired, request a new one with the same local amount."
    - name: "Reconcile against the obligation"
      text: "Match receiver_amount on the quote to the invoice or salary line, store the quote id with the payout id, and close the item when the payout completes."
---

To pay an exact BRL, MXN, or EUR amount from USDC, request a receiver-side quote: set `currency_type` to `receiver`, put the local amount in `request_amount`, and set `cover_fees` to `true`. The quote returns the USDC `sender_amount` that delivers that exact amount, locked until `expires_at`. Execute before then and the number lands.

That is the whole trick. The rest of this guide is the detail that makes it work on Pix, SPEI, and SEPA without surprises.

**Key takeaways**

- Fix the side that matters to the business. A BRL invoice is a BRL number, so quote the BRL side and let the USDC float.
- `currency_type: "receiver"` plus `cover_fees: true` is the pairing for "recipient gets exactly X." With `cover_fees: false`, the fee comes out of the recipient's amount.
- Amounts are integers in minor units: R$27,000.00 is `2700000`. No floats.
- On re-quote, the local amount stays fixed and only the USDC cost moves.
- SEPA has a receiver-side minimum of 10 EUR, and SEPA quotes can expire sooner than 5 minutes. Read `expires_at`.

## When should you fix the receiver amount instead of the send amount?

Fix the receiver amount when the obligation is written in local currency. Fix the send amount when the budget is written in dollars. The quote can do either; your job is to pick the side that matches the contract.

The [quotes explainer](/resources/more/stablecoin-api-quotes-explained) covers what `currency_type` and `cover_fees` mean. This is about which combination fits which job.

| Use case | Obligation is in | Quote side | `cover_fees` | Why |
| --- | --- | --- | --- | --- |
| Supplier invoice in Brazil | BRL | `receiver` | `true` | The invoice says R$27,000.00. Anything less is a short payment. |
| Contractor salary in Mexico | MXN | `receiver` | `true` | The contract fixes pesos. The company absorbs the fee. |
| Rent or tuition in the euro area | EUR | `receiver` | `true` | The bill is in euros and must clear in full. |
| Marketplace seller payout | USD balance | `sender` | `false` | The seller earned a USD balance and gets the net in local currency. |
| Treasury sweep to a local account | USDC on hand | `sender` | `false` | You move a USDC amount and accept the local result. |

A rule of thumb: if someone will check the local number against a document, quote the local number.

## How does a receiver-side quote work?

You tell BlindPay the fiat amount the bank account must receive. BlindPay prices the conversion at request time and returns how much stablecoin the funding wallet must send, plus every fee line, locked for the quote's window.

The request goes to `POST /v1/instances/{instance_id}/quotes`:

```json
{
  "bank_account_id": "ba_000000000000",
  "currency_type": "receiver",
  "cover_fees": true,
  "request_amount": 2700000,
  "network": "polygon",
  "token": "USDC"
}
```

The response carries `id`, `expires_at` (epoch milliseconds), `commercial_quotation` (the market rate), `blindpay_quotation` (the rate net of BlindPay's fee), `sender_amount`, `receiver_amount`, and the fee fields. The [payout quotes reference](/docs/payout-quotes) lists every field.

Two details catch teams the first time.

- **Minor units.** `request_amount` is an integer. R$27,000.00 is `2700000`, and $35,000.00 MXN is `3500000`. Convert once, at the edge of your system.
- **The direction flips on payins.** On a payout quote, `receiver` means the fiat side. On a payin quote, `receiver` means the stablecoin side. A shared helper that ignores this quotes the wrong side.

## What does an exact-amount payout look like in each currency?

The same request shape works across rails. What changes is the bank account behind `bank_account_id` and a couple of rail rules.

| | Brazil | Mexico | SEPA zone |
| --- | --- | --- | --- |
| Rail | Pix | SPEI | SEPA |
| Recipient detail | Pix key (CPF, CNPJ, phone, email, or random key) | 18-digit CLABE | IBAN and BIC, plus beneficiary name and address |
| Receiver-side minimum | Fee only | Fee only | 10 EUR (11 USDC on the sender side) |
| Quote window | 5 minutes by default | 5 minutes by default | Can be shorter than 5 minutes |
| Estimated arrival in BlindPay's docs | Instant | Instant | About 1 business day |

Pix and SPEI both run around the clock. The [Central Bank of Brazil](https://www.bcb.gov.br/en/financialstability/pix_en) operates Pix as an instant payment system, and [Banco de México](https://www.banxico.org.mx/services/interbanking-electronic-payme.html) operates SPEI around the clock. SEPA is the euro area's common framework for euro transfers, described by the [European Central Bank](https://www.ecb.europa.eu/paym/integration/retail/sepa/html/index.en.html).

For which details each rail needs, see [Pix keys, CPF, and CLABE explained](/resources/more/pix-key-cpf-clabe-payout-details) and the [SEPA off-ramp guide](/resources/more/how-to-off-ramp-usdc-to-euros-sepa).

## How much USDC does an exact amount cost?

The quote tells you. You never compute `sender_amount` yourself. But you should know how to read it, so you can check the cost against the market.

**Illustrative example.** These rates are made up for the arithmetic. They are not BlindPay pricing.

| | Brazil invoice | Mexico salary | Euro rent |
| --- | --- | --- | --- |
| Receiver amount (fixed) | R$27,000.00 | $35,000.00 MXN | €2,500.00 |
| Market rate (`commercial_quotation`) | 5.40 BRL per USDC | 18.50 MXN per USDC | 0.8600 EUR per USDC |
| `sender_amount` returned | 5,025.13 USDC | 1,901.40 USDC | 2,921.58 USDC |
| Effective rate (receiver ÷ sender) | 5.3730 | 18.4075 | 0.8557 |
| USDC needed at the market rate | 5,000.00 | 1,891.89 | 2,906.98 |
| All-in cost vs market | 25.13 USDC (50 bps) | 9.51 USDC (50 bps) | 14.61 USDC (50 bps) |

The math for Brazil: 27,000 ÷ 5,025.13 = 5.3730 BRL per USDC delivered. At the market rate, 27,000 ÷ 5.40 = 5,000.00 USDC. The difference, 25.13 USDC, is everything you paid: spread plus fees. As a share: (5.40 - 5.373) ÷ 5.40 = 0.50%, or 50 basis points.

That one number is the honest comparison between providers. Ask each for a receiver-side quote of the same amount at the same moment, then compare `sender_amount`. For the spread side of that math, see [how to calculate FX spread](/resources/more/how-to-calculate-fx-spread).

## What changes when the quote expires?

Only the USDC side. The local amount is what you asked for, so a new quote keeps it and reprices the stablecoin.

Payout quotes expire 5 minutes after creation by default, and SEPA quotes can be shorter because the rail's own deadline can be tighter. An expired quote is rejected. Nothing executes at a new rate behind your back.

So the re-quote loop for an exact amount is simple:

1. Request a new receiver-side quote with the same `request_amount`.
2. Compare the new `sender_amount` with the old one.
3. If your flow needs approval for changes, show the new USDC figure. If not, execute.

The local number never changes in that loop, which is why finance teams like receiver-side quotes for payables. The risk that moves is yours to see before you send. [Who carries FX risk at each step](/resources/more/who-carries-fx-risk-stablecoin-payout) walks through who holds the rate between quote, execution, and settlement.

## What goes wrong with exact-amount payouts?

Most failures are setup mistakes, not rate problems.

- **Wrong side.** Quoting `sender` with a BRL number in `request_amount` sends 27,000 USDC. Test both sides in development before you ship.
- **`cover_fees: false` on a fixed obligation.** The fee comes out of the recipient's amount, and the invoice is short. Use `true` when the number must land in full.
- **Floats.** `27000.00` is rejected. Send `2700000`.
- **Hardcoded 5 minutes.** SEPA quotes can be shorter. Count down from `expires_at` and divide by 1,000 if your library wants seconds.
- **Reusing a quote.** A `quote_id` backs one payout. The second payout against it fails.
- **Under the minimum.** A €8 SEPA payout quoted by EUR amount fails with `sepa_minimum_is_10_eur`.

The [stablecoin payout mistakes guide](/resources/more/stablecoin-payout-mistakes) covers the rest, from wrong networks to bad bank details.

## How do you reconcile exact-amount payouts?

Store the quote with the payout. The quote's `receiver_amount` is the number your obligation should match, and the payout id is what your webhooks report on.

A minimal record per payment:

| Field | Source | Use |
| --- | --- | --- |
| Invoice or payroll line id | Your system | What the payment settles |
| `quote.id` | Quote response | Proof of the locked rate and fees |
| `receiver_amount` | Quote response | Must equal the obligation, in minor units |
| `sender_amount` | Quote response | USDC cost for your ledger |
| `payout.id` | Payout response | Joins webhook events to the obligation |
| Final status | Webhooks | Close the item on completion |

If `receiver_amount` doesn't equal the invoice amount, stop before executing. That check catches the wrong side, the wrong `cover_fees`, and a typo in minor units, all at once.

For contractor runs, the [stablecoin payroll guide for Latin America](/resources/more/stablecoin-payroll-latam-contractors) shows where this fits in a monthly cycle, and the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary) defines every term used here.

## What to do next

Open a free development instance, add a test bank account, and request two quotes for the same local amount: one with `cover_fees: true`, one with `false`. Compare `receiver_amount` on both. Then follow the [payout quotes guide](/docs/payout-quotes) to execute against the one that lands the exact number.

---

Source: https://blindpay.com/resources/more/reduce-false-positives-transaction-monitoring

---
title: "How to reduce false positives in transaction monitoring without missing real risk"
seoTitle: "How to reduce false positives in AML transaction monitoring"
description: "Cut AML alert noise without losing real cases: a 7-step tuning process, the levers that work, the metrics to watch, and what automation should never close."
date: "2026-10-03"
updated: "2026-10-03"
category: "compliance"
author: "BlindPay Team"
howto:
  name: "How to reduce false positives in automated transaction monitoring"
  steps:
    - name: "Baseline the current metrics"
      text: "Pull at least three months of alerts and record, per rule, the alert volume, false positive rate, alert-to-case rate, SAR conversion rate, time to close, and backlog age. Tuning without a baseline can't be defended."
    - name: "Segment customers by risk and behavior"
      text: "Group customers by risk rating and by expected activity, such as payroll platforms, marketplaces, and remittance businesses, so each segment gets thresholds that fit its normal pattern."
    - name: "Set thresholds from data"
      text: "Replace vendor defaults with thresholds derived from each segment's own distribution of amounts, counts, and velocity, and write down why each value was chosen."
    - name: "Add secondary identifiers"
      text: "Require date of birth, country, registration number, or wallet address to agree before a screening hit becomes an alert, so name-only matches stop reaching analysts."
    - name: "Rank alerts by risk score"
      text: "Combine customer risk, rule severity, amount, and counterparty exposure into one score, and work the queue from the top so high-risk alerts never wait behind noise."
    - name: "Run below-the-line testing"
      text: "Sample activity just under each changed threshold and review it as if it had alerted. If real suspicious activity appears in the sample, the threshold went too far."
    - name: "Document and schedule recalibration"
      text: "Record every change with its rationale, test results, and approver, and set a recalibration date proportionate to risk, plus triggers such as a new product or corridor."
faq:
  - q: "What is a good false positive rate for AML transaction monitoring?"
    a: "There is no regulatory target. False positive rates are high across the industry because rules are built to over-catch, so the useful question is whether the rate is falling while real cases still surface. Track it per rule, not program-wide. A rule that has produced zero cases in a year needs a documented review, not a quiet deletion."
  - q: "What is below-the-line testing?"
    a: "Below-the-line testing samples activity that falls just under a rule's threshold and reviews it as if it had alerted. If the sample contains suspicious activity, the threshold is too high. If it contains nothing over several cycles, there is room to raise it. It is the standard evidence that a tuning change reduced noise without hiding real risk."
  - q: "Can automation close AML alerts without a human?"
    a: "Yes, for narrow, explainable patterns that a documented rule can clear, such as a sanctions name hit where date of birth and country both differ from the listed person. Possible true matches, wallet exposure to sanctioned addresses, and anything that could lead to a SAR need a human decision. Every auto-close should log the rule, the data used, and the version."
  - q: "What is SAR conversion rate?"
    a: "SAR conversion rate is the share of alerts, or of escalated cases, that end in a suspicious activity report. It measures how much of the monitoring output is useful to law enforcement. A very low rate usually means noisy rules. A sudden jump can mean the opposite problem: thresholds raised so far that only obvious cases still alert."
  - q: "How often should transaction monitoring rules be recalibrated?"
    a: "At a set interval written into the AML policy and proportionate to risk, with higher-risk rules reviewed more often. Recalibrate sooner when something changes: a new product, corridor, customer segment, or a jump in volume. FinCEN expects monitoring parameters to match the institution's risk, so a schedule written into the AML policy is easier to defend than ad hoc changes."
  - q: "Does reducing alerts increase regulatory risk?"
    a: "Only if it is done without evidence. Cutting alerts by raising thresholds blindly can hide real activity, which examiners treat as a control failure. Cutting them by segmenting customers, adding secondary identifiers, and deduplicating, with below-the-line testing and a written rationale, usually improves the program. The UK FCA lists poorly calibrated, unexplained rules as poor practice."
---

To reduce false positives in AML transaction monitoring, segment customers by risk and behavior, set thresholds from your own data, add secondary identifiers to screening matches, deduplicate alerts, and rank them by risk score. Then prove nothing real was lost with below-the-line testing, and document every change. Fewer alerts is the result, not the goal.

This article is general information, not legal advice. It assumes a monitoring program already exists; if you are still mapping the parts, start with [what automated risk monitoring is](/resources/more/what-is-automated-risk-monitoring-fintech).

**Key takeaways**

- A false positive is an alert that review closes as not suspicious. Most programs produce far more of these than real cases.
- High alert volume is a control weakness, not a safety margin. Real cases wait in the same queue as the noise.
- Tune with data, per customer segment, and test below the line before and after every change.
- Automation can close narrow, explainable patterns. Possible true matches and SAR decisions stay with people.
- Keep the rationale, the test results, and the approver for every change. That record is what an examiner reads.

## What counts as a false positive in risk monitoring?

A false positive is an alert that a reviewer closes because the activity turned out to be normal. A true positive is an alert that review confirms as suspicious or as a real sanctions match.

| Term | Definition | What it tells you |
| --- | --- | --- |
| False positive | An alert closed after review as not suspicious | How much analyst time goes to noise |
| True positive | An alert confirmed as suspicious activity or a real list match | Whether the rule catches what it was built for |
| Alert-to-case rate | Share of alerts escalated into a full investigation case | How often an alert needs more than a first look |
| SAR conversion rate | Share of alerts, or of cases, that end in a suspicious activity report (SAR) | How much monitoring output is useful to law enforcement |

Measure each one per rule and per segment. A program-wide rate hides the two rules that make most of the noise.

## Why is high alert volume a control weakness?

High alert volume is a weakness because analysts can't give every alert real attention, so real cases get the same rushed review as the noise. It also signals that the rules don't fit the business, which is what regulators look for first.

The UK Financial Conduct Authority (FCA) says this directly in its [Financial Crime Guide](https://handbook.fca.org.uk/handbook/FCG/3/2.html). Section FCG 3.2.5A lists, as poor practice, a weak control framework around automated monitoring, threshold-based rules used where they don't suit the activity, and poorly calibrated rule systems where the firm struggles to explain why a particular rule exists. Good practice in the same section includes a holistic view of customer behavior and monitoring at several levels of aggregation.

The Wolfsberg Group, an association of global banks that publishes financial crime standards, made the same point from the reporting side. Its [2024 Statement on Effective Monitoring for Suspicious Activity](https://wolfsberg-group.org/resources/168) argues that the growing volume of SARs isn't producing a proportionate gain in effective outcomes, and pushes programs toward outcomes over volume. The [2025 Part II statement](https://wolfsberg-group.org/resources/202) covers moving to newer approaches responsibly: validate the change, balance model risk against financial crime risk, and keep the system explainable.

In the US, FinCEN's [October 2025 SAR FAQs](https://www.fincen.gov/system/files/2025-10/SAR-FAQs-October-2025.pdf) say monitoring parameters should be commensurate with the institution's money laundering and terrorist financing risk. The same FAQs clarify that a transaction near the USD 10,000 currency transaction report threshold is not, by itself, enough to require a SAR. A rule that alerts on proximity alone and nothing else will mostly generate noise.

So the regulators agree. A noisy program is not a cautious program. It is an uncalibrated one.

## How do you tune transaction monitoring in 7 steps?

Tune in a fixed order: measure, segment, set thresholds, add identifiers, rank, test, document. Skipping the first or the last two steps is how tuning turns into a finding.

1. **Baseline current metrics.** Pull at least three months of alerts. For each rule, record volume, false positive rate, alert-to-case rate, SAR conversion rate, time to close, and backlog age.
2. **Segment customers by risk and behavior.** A payroll platform, a marketplace, and a remittance business have different normal activity. Group them by risk rating and expected pattern.
3. **Set thresholds from data.** Replace vendor defaults with values drawn from each segment's own distribution of amounts, counts, and velocity. Write down why each value was chosen.
4. **Add secondary identifiers.** A name hit alone shouldn't reach an analyst. Require date of birth, country, registration number, or wallet address to agree first.
5. **Rank alerts by risk score.** Combine customer risk, rule severity, amount, and counterparty exposure into one score, and work the queue from the top.
6. **Run below-the-line testing.** Sample activity just under each changed threshold and review it as if it had alerted. If real suspicious activity shows up, the change went too far.
7. **Document and schedule recalibration.** Record each change with its rationale, test results, and approver. Set the next review date, plus triggers like a new product, corridor, or segment.

The rule library itself is in [12 transaction monitoring red flags for stablecoin payments](/resources/more/transaction-monitoring-red-flags-stablecoin-payments).

## Which tuning levers cut false positives, and what do they risk?

Six levers do most of the work: segmentation, peer group baselines, secondary identifier matching, deduplication, risk-based prioritization, and auto-close rules. Each one cuts noise and each one can hide something if applied without evidence.

| Lever | What changes | Benefit | Risk to manage | Evidence to keep |
| --- | --- | --- | --- | --- |
| Customer segmentation | Thresholds differ by segment instead of one value for everyone | Rules stop firing on normal activity for high-volume segments | A bad actor placed in a lenient segment | Segment definitions and the assignment logic |
| Peer group baselines | A customer is compared to similar customers, not to a fixed number | Catches outliers that a flat threshold misses | Peer groups drift as the business grows | Peer group membership and refresh dates |
| Secondary identifier matching | Screening hits need date of birth, country, or ID to agree | Name-only sanctions noise drops sharply | Missing data on the record lets a real match through | Match logic and how missing fields are handled |
| Alert deduplication | Several rules firing on the same activity become one alert | Analysts review each event once | Merged alerts lose the detail of which rules fired | The rule list attached to each merged alert |
| Risk-based prioritization | Alerts are scored and worked highest first | High-risk alerts don't wait behind noise | Low-score alerts age out unreviewed | Score inputs, weights, and backlog age by band |
| Auto-close rules | Narrow, explainable patterns close without a person | Analyst time goes to real decisions | A rule broader than intended clears true matches | Rule text, version, and a sampled QA of closures |

Name matching drives most screening noise; cadence and matching choices are in [ongoing sanctions screening: how often to rescreen](/resources/more/ongoing-sanctions-screening-how-often-to-rescreen).

## What does tuning look like on 1,000 alerts a week?

Illustrative example: every number in this section is made up to show the mechanics, not drawn from any real program.

A payments company produces 1,000 alerts a week. 600 come from sanctions name screening and 400 from transaction rules.

**Deduplication.** Of the 400 transaction alerts, many are the same activity firing two or three rules (velocity, round amounts, and new counterparty, for one burst of payouts). Merging alerts on the same customer and time window turns 400 alerts into 250 events to review.

**Secondary identifiers.** Of the 600 screening alerts, most are common names where the listed person has a different date of birth and nationality. A documented rule closes hits where both identifiers are present and both disagree. That leaves 150 screening alerts where an identifier matches or is missing.

**Result.** Weekly reviews fall from 1,000 to 400. Say review still escalates 12 cases and 3 end in a SAR. SAR conversion moves from 0.3 percent of alerts to 0.75 percent, with the same cases found.

That last clause is the point. The team then samples the 450 screening closures and runs below-the-line tests on the merged transaction alerts. If the samples are clean for several cycles, the change holds. If one sample turns up a real case, the auto-close rule gets narrowed.

## What metrics show whether tuning is working?

Track six numbers per rule and per segment, every week: alert volume, false positive rate, backlog age, time to close, alert-to-case rate, and SAR conversion rate. Trends matter more than levels.

What warning signs look like:

- **False positives stay high on a rule that never produces a case.** The rule doesn't fit the business. Review it with evidence; don't delete it quietly.
- **Backlog age keeps rising.** Alerts are piling up faster than people can review them. Real cases are now waiting.
- **Time to close drops sharply with no tuning change.** Analysts may be clearing alerts without reading them. FCA guidance flags staff who always accept a customer's explanation at face value as poor practice.
- **SAR conversion jumps after a threshold increase.** The change may have removed the borderline cases along with the noise. Check the below-the-line sample.
- **Volume collapses for one segment.** Data may have stopped flowing to the rule. A silent feed failure looks exactly like successful tuning.

Report these monthly to the AML program owner. Tuning nobody above the analyst saw is hard to defend.

## What should automation close, and where must a human decide?

Automation should close alerts that a written rule can explain with data on the record. People should decide anything where the outcome is a judgment, a report, or a blocked payment.

Reasonable to auto-close, with logging:

- Screening hits where date of birth and country both disagree with the listed person.
- Duplicate alerts on an event already under review.
- Known, documented patterns, such as a customer's scheduled payroll run that matches its declared activity and history.

Keep with a person:

- Possible true sanctions matches, including partial identifier matches and missing data.
- Wallet addresses with direct or close exposure to sanctioned or illicit addresses.
- Any alert that could lead to a SAR, an account exit, or a held payment.
- Cases where Travel Rule data is missing or doesn't validate, which the [Travel Rule workflow guide](/resources/more/travel-rule-workflow-hold-return-reject) treats as a hold decision.

[Compliance agents](/resources/more/what-are-compliance-agents-in-fintech) can gather evidence and draft the narrative, but the decision stays with a named person.

## What are the common mistakes when tuning alerts?

The most common mistake is treating alert volume as the target. The others follow from it.

- **Tuning only to reduce volume.** If the goal is fewer alerts, raising every threshold works. It also blinds the program.
- **No documented rationale.** A threshold nobody can explain is the poor practice the FCA describes. Write the reason when you set the value.
- **Changing rules without testing.** Every change needs a before and after comparison and a below-the-line sample.
- **Vendor tuning with no internal understanding.** A vendor can calibrate rules, but the firm answers for them. Someone in house must be able to explain each one.
- **One threshold for every customer.** Flat thresholds fire constantly on high-volume customers and miss outliers among small ones.
- **No recalibration date.** Rules tuned once drift as products and customers change.

Picking a vendor that exposes tuning and keeps a tuning history is covered in the [risk monitoring vendor guide](/resources/more/how-to-choose-automated-risk-monitoring-vendor).

## How does BlindPay handle flagged transactions?

BlindPay runs transaction monitoring inside the payment flow, before money moves. A flagged payin or payout moves to `on_hold`, and the compliance team reviews it manually to determine whether it is a false positive.

If the flag can't be cleared internally, BlindPay sends a request for information asking about the relationship between the sender and the customer, the purpose of the transaction, and its expected outcome. If that request isn't answered within 24 hours, the transaction may be refunded to the sender. The process is described in [on-hold transactions](/docs/kb/on-hold-transactions).

## What to do next

Pull last quarter's alerts and compute the false positive rate per rule. Pick the two noisiest rules, segment their customers, and set new thresholds from data. Run a below-the-line sample before switching anything off, and write down the result. Then set the date for the next review.

## Sources and further reading

- FCA, [Financial Crime Guide, FCG 3.2](https://handbook.fca.org.uk/handbook/FCG/3/2.html), including transaction monitoring good and poor practice.
- Wolfsberg Group, [Statement on Effective Monitoring for Suspicious Activity, Part I (2024)](https://wolfsberg-group.org/resources/168).
- Wolfsberg Group, [Statement on Effective Monitoring for Suspicious Activity, Part II (2025)](https://wolfsberg-group.org/resources/202).
- FinCEN, [Frequently asked questions on SAR requirements (October 2025)](https://www.fincen.gov/system/files/2025-10/SAR-FAQs-October-2025.pdf).
- FinCEN, [31 CFR 1022.320, SAR requirements for money services businesses](https://www.law.cornell.edu/cfr/text/31/1022.320).

*This article is general information, not legal advice.*

---

Source: https://blindpay.com/resources/more/stablecoin-cards-europe-mica

---
title: "Stablecoin cards in Europe: MiCA, euro stablecoins, and what licensing means for cardholders and card programs"
seoTitle: "Stablecoin cards in Europe: MiCA and licensing"
description: "How MiCA applies to stablecoin cards in Europe: who needs authorization, how to check a provider on the ESMA register, euro vs dollar stablecoins, SEPA."
date: "2026-10-03"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Is a stablecoin card regulated under MiCA?"
    a: "Partly. MiCA, Regulation (EU) 2023/1114, covers the stablecoin and the crypto-asset service provider that holds or converts it. The card itself is issued by a bank or e-money institution under card and payment rules. A European stablecoin card program usually sits under both regimes at once, so check each layer separately."
  - q: "How do I check if a crypto card provider is licensed in the EU?"
    a: "Find the legal entity named in the card terms, then look it up in ESMA's interim MiCA register, which ESMA publishes as downloadable CSV files. Check the authorizing country and the services listed. For the card issuer, check the bank or e-money institution on its home regulator's public register."
  - q: "When did MiCA start applying?"
    a: "MiCA's stablecoin titles, covering asset-referenced tokens and e-money tokens, applied from June 30, 2024. The rest of the regulation, including authorization of crypto-asset service providers, applied from December 30, 2024. Member states could allow transitional periods for firms already operating under national regimes, so check the provider's status on the register."
  - q: "Are euro stablecoins popular on cards?"
    a: "Less than they were. a16z crypto, citing Paymentscan data in August 2026, reported that EURe made up about 88% of tracked card volume in early 2024 and about 2% by mid-2026, while USDC carried about 58% and USDT about 26%. Dollar stablecoins now dominate tracked card spend."
  - q: "Is spending stablecoins with a card taxable in Europe?"
    a: "Often, yes, but rules vary by country. NGIBANK's 2026 overview says Germany taxes gains on crypto held under one year, Spain applies savings income rates from 19% up to 30%, and the Netherlands taxes crypto as part of wealth. Euro stablecoins keep gains near zero but still need records. This is not tax advice."
---

A stablecoin card in Europe sits under two sets of rules. MiCA, Regulation (EU) 2023/1114, governs the stablecoin and the crypto-asset service provider that holds or converts it. The card is issued by a bank or e-money institution under payment rules. Before you sign up or launch, check both layers on a public register.

Most confusion about "MiCA-compliant cards" comes from treating the card as one product. It is at least two: a crypto service that holds and converts the stablecoin, and a payment card that spends euros at the merchant. Each one has its own license, its own regulator, and its own register entry.

*This page is general information, not legal or tax advice.*

**Key takeaways**

- MiCA's stablecoin titles applied from June 30, 2024, and the rest, including crypto-asset service provider (CASP) authorization, from December 30, 2024.
- ESMA publishes an interim MiCA register as CSV files. Use it to check the legal entity behind a card, not the brand name.
- The card itself is issued by a bank or e-money institution, which you check on its home regulator's register.
- Dollar stablecoins now dominate tracked card spend: a16z crypto reported EURe fell from about 88% of volume in early 2024 to about 2% by mid-2026.
- For euros that need to reach a bank account rather than a merchant, a SEPA payout is the right tool, not a card.

For how a stablecoin card works in general, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## What is MiCA, in plain terms?

MiCA is the EU's Markets in Crypto-Assets Regulation, Regulation (EU) 2023/1114. It sets one rulebook across all member states for issuing stablecoins and for providing crypto services such as custody, exchange, and transfer.

Three definitions cover most of what a cardholder needs:

- **E-money token (EMT):** a stablecoin that references one official currency, such as a euro or dollar stablecoin.
- **Asset-referenced token (ART):** a token that references a basket of assets or currencies.
- **Crypto-asset service provider (CASP):** a firm authorized under MiCA to provide crypto services, such as holding your stablecoins or exchanging them for euros.

MiCA's stablecoin titles applied from June 30, 2024. The rest of the regulation applied from December 30, 2024. A CASP authorized in one member state can then offer services across the EU. The [MiCA stablecoin rules explainer](/resources/more/mica-stablecoin-rules-explained) covers issuer obligations in more depth, and the [GENIUS Act and MiCA timeline](/resources/more/genius-act-timeline-key-dates) lists the key dates side by side with the US.

## How does MiCA apply to a stablecoin card?

MiCA applies to the crypto side of the program: the stablecoin you hold and the firm that holds or converts it. The card side runs under the payment and e-money rules that apply to any card in the EU.

| Layer | What it does | Rules that apply | Where to check it |
| --- | --- | --- | --- |
| Stablecoin | The token on your balance | MiCA stablecoin titles | Issuer's white paper and register entry |
| Crypto service provider | Holds, exchanges, or transfers the stablecoin | MiCA CASP authorization | ESMA interim MiCA register |
| Card issuer | Issues the card on its BIN, pays the network | Card and e-money or banking rules | Home regulator's public register |
| Card network | Routes and settles the transaction | Visa or Mastercard rules | The card itself |
| Merchant | Gets paid in euros | Normal acquiring rules | Not your concern as a cardholder |

A self-custodial card changes one row. When the stablecoin stays in your own smart account, as with Gnosis Pay's Safe accounts, no provider holds it for you. The card issuer and the identity checks still apply. [Custodial vs self-custodial stablecoin cards](/resources/more/custodial-vs-self-custodial-stablecoin-cards) explains the difference.

## How do you verify a provider's license?

Look up the legal entity, not the brand. The entity name is in the card terms or the app's legal page, and that is the name the register lists.

1. **Find the legal entity.** Open the card terms and note the company that holds your stablecoins and the company that issues the card. They are often different.
2. **Check the crypto side on ESMA.** Download the CSV files from [ESMA's interim MiCA register](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica) and search for the entity. Note the home country and the services it is authorized for.
3. **Check the card issuer.** Find the bank or e-money institution on its home regulator's public register.
4. **Match the services.** Custody and exchange should both appear if the provider holds and converts your stablecoins.
5. **Read the safeguarding section.** The terms should say where client funds are held and how they are separated from the company's own money.
6. **Note transitional status.** Some firms operated under national regimes during a transition period. If an entity is missing from the register, ask the provider which status it relies on and until when.

A provider that cannot name its legal entities quickly is a warning sign. The [VASP explainer](/resources/more/what-is-a-vasp) covers what registration means outside the EU.

## What should a licensed provider tell you?

A licensed provider should make it easy to find who holds your funds, how they are protected, and what you pay. If any of those take more than a few clicks, ask before you load money.

Ask for these in writing:

- **Legal entities:** the CASP, the card issuer, and the country of each.
- **Safeguarding:** where client stablecoins and euros sit, and whether they are separated from company assets.
- **Fees:** conversion spread, FX markup on non-euro spend, ATM fees, and any load or inactivity fees.
- **Which stablecoins:** which tokens the card spends from and on which chains.
- **Complaints and exit:** how to complain, and how to withdraw everything if you leave.

Fees deserve their own check. NGIBANK's [2026 guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide) says FX markup is commonly 1.5% to 3% on crypto cards, versus 0% to 1% on good fintech debit cards. Coin Bureau's 2026 roundup lists Gnosis Pay, an EEA and UK focused card, with no added FX markup beyond the Visa rate. [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) shows how to compute the all-in cost.

## Should a European cardholder use a euro or dollar stablecoin?

Use a euro stablecoin if you spend and earn in euros and want no exchange-rate exposure. Use a dollar stablecoin if you hold dollars on purpose and accept a conversion on each euro purchase.

The market has moved toward dollars. a16z crypto, [citing Paymentscan data](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend) on August 7, 2026, reported that EURe was about 88% of tracked card volume in early 2024 and about 2% by mid-2026. USDC carried about 58% and USDT about 26%.

| Question | Euro stablecoin (for example EURC or EURe) | Dollar stablecoin (USDC, USDT) |
| --- | --- | --- |
| FX on a euro purchase | None | Conversion each time |
| Exposure | Euro only | EUR/USD rate moves |
| Card support | Fewer programs | Most programs |
| Best for | Euro earners spending in euros | People holding dollars on purpose |

[Which stablecoin is best for card spending](/resources/more/best-stablecoin-for-card-spending) compares the tokens on reserves, chains, and card support.

## How is card spending taxed in the EU?

Spending crypto with a card is often a taxable disposal, but each country decides how. Euro stablecoins keep gains close to zero for euro spenders, though you still need records.

NGIBANK's [2026 tax overview](https://www.ngibank.com/en/blog/crypto-taxes-europe-basics) gives three different approaches:

- **Germany** taxes gains on crypto disposed of within one year of purchase.
- **Spain** taxes gains as savings income at progressive rates from 19% up to 30%.
- **The Netherlands** treats crypto as part of your wealth and taxes holdings rather than each disposal.

Export your card history regularly and keep the rate used for each conversion. [Are stablecoin card purchases taxable?](/resources/more/are-stablecoin-card-purchases-taxable) has a record-keeping checklist. This is not tax advice; confirm with a local adviser.

## When is a SEPA payout the better tool than a card?

Use a card when the payee is a merchant that takes Visa or Mastercard. Use a SEPA transfer when the payee needs euros in a bank account: rent, salaries, supplier invoices, or your own account.

Cards are built for merchant purchases. Landlords, many suppliers, and tax authorities want a bank transfer to an IBAN. For a company or app holding stablecoins, converting to euros and paying out over SEPA reaches those payees directly. The [USDC to euros over SEPA guide](/resources/more/how-to-off-ramp-usdc-to-euros-sepa) covers networks, IBAN details, and timing.

## Where does BlindPay fit for European card programs?

BlindPay is the payout and collection layer next to a card program. The card issuer handles merchant spend. BlindPay handles euros that need to reach a bank account, plus payouts in other currencies.

BlindPay converts USDC into euros and pays out over SEPA to bank accounts in about 40 countries in the SEPA zone, including the EU, Switzerland, Norway, and the United Kingdom, per its [payment methods reference](/docs/kb/payment-methods). SEPA payouts take about 1 to 2 business days. The same API pays out over Pix, SPEI, ACH, RTP, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations, and runs KYC, KYB, and sanctions screening in the flow.

A live quote locks the rate and fees before the stablecoins move, and payouts need no pre-funding. For payouts from a wallet you control, BlindPay acts as a non-custodial processor: you authorize the exact amount, and if a payout cannot be delivered after the stablecoins are collected, they are refunded to the quote's refund wallet or the sending wallet.

## What is the next step?

If you are a cardholder, look up both legal entities behind your card on the ESMA register and the issuer's home register this week. If you run a card program, map which payments your users make outside the card, then test SEPA payouts on a free [BlindPay development instance](/docs/quickstart-payout).

## Sources

- [EUR-Lex: Regulation (EU) 2023/1114 on markets in crypto-assets (MiCA)](https://eur-lex.europa.eu/eli/reg/2023/1114/oj/eng)
- [ESMA: Markets in Crypto-Assets Regulation and interim MiCA register](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica)
- [a16z crypto: payment card stablecoin spend charts (August 7, 2026)](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend)
- [NGIBANK: crypto debit card guide (March 3, 2026)](https://www.ngibank.com/en/blog/crypto-debit-card-guide)
- [NGIBANK: crypto taxes in Europe (May 26, 2026)](https://www.ngibank.com/en/blog/crypto-taxes-europe-basics)
- [Coin Bureau: best crypto debit cards (updated March 11, 2026)](https://coinbureau.com/analysis/best-crypto-debit-cards)
- [Gnosis Pay](https://gnosispay.com/)

---

Source: https://blindpay.com/blog/circle-ventures-investment

---
title: "BlindPay Expands Global Stablecoin Payment Infrastructure with Circle Ventures"
seoTitle: "BlindPay announces investment from Circle Ventures"
description: "BlindPay (YC W25) announces an investment from Circle Ventures to accelerate its USDC-powered infrastructure and connect the world's payment systems through one API."
date: "2026-10-02"
categories: ["company"]
authors:
  - bernardoSimonassi
thumbnail: "/images/blog/circle-ventures.png"
isBlog: true
faq:
  - q: "Did Circle Ventures invest in BlindPay?"
    a: "Yes. Circle Ventures, the corporate venture arm of Circle Internet Group, Inc. (NYSE: CRCL), invested in BlindPay to accelerate the development of its global stablecoin payment infrastructure."
  - q: "What will BlindPay do with the Circle Ventures investment?"
    a: "BlindPay will use it to grow its network of partners, including financial institutions and digital platforms, into a global network of fast, secure, and affordable transfers powered by stablecoins such as USDC, and to connect more countries and financial products through a single API."
  - q: "Why does BlindPay believe stablecoins democratize global finance?"
    a: "Every country solved domestic payments, but nobody solved the connection between them. Stablecoins are a shared settlement layer that makes national payment systems interoperable in real time, so any financial product in one currency can be offered to anyone, anywhere."
  - q: "Who are BlindPay's investors?"
    a: "BlindPay is backed by Y Combinator, YouTube co-founder Jawed Karim, Circle, Bitso, and 468 Capital, among others."
  - q: "Do BlindPay customers need to hold USDC or manage a wallet?"
    a: "No. BlindPay uses USDC as the settlement layer underneath a normal payments API. Customers send and receive local currency over the rails they already use and never have to pick a chain or manage a private key."
---

![BlindPay and Circle Ventures](/images/blog/circle-ventures.png)

BlindPay, the [Y Combinator-backed](https://www.ycombinator.com/companies/blindpay) stablecoin API for global payments, has announced an investment from [Circle Ventures](https://www.circle.com/circle-ventures), the corporate venture arm of Circle Internet Group, Inc. (NYSE: CRCL). The investment accelerates the development of our stablecoin infrastructure for businesses and platforms that move money across borders.

With this momentum, BlindPay aims to grow its network of partners, including financial institutions and digital platforms, into a global network of fast, secure, and affordable transfers powered by stablecoins such as [USDC](/resources/more/what-is-usdc).

> "Stablecoins are not just faster or cheaper. They are the only technology that democratizes global finance. Circle Ventures' support helps us move faster toward a world where any company, in any country, can offer financial services that were never possible before, without ever having to think about the blockchain underneath."
>
> Bernardo Simonassi, CEO and founder of BlindPay

## Why are stablecoins the connection between payment systems?

Every country solved domestic payments. Pix works brilliantly, but it stops at Brazil's border. UPI stops at India's. SPEI stops at Mexico's. ACH stops at the United States'. Nobody solved the connection between them.

Stablecoins are that connection: a shared settlement layer that makes these systems interoperable in real time. And the shift is no longer theoretical. Stablecoin on-chain volume [surpassed the ACH network in February 2026](https://www.forbes.com/sites/digital-assets/2026/07/19/stablecoin-on-chain-volume-reaching-7-trillion-surpassing-ach-network/), and traditional software and financial companies have already started building on them.

The argument is not speed or price. It is architecture. Every defect of traditional cross-border rails maps to a structural advantage of stablecoin settlement:

| Traditional cross-border rails | Stablecoin infrastructure |
| ------------------------------ | ------------------------- |
| Correspondent banks, clearing systems, and FX providers in the chain | Direct digital settlement with fewer intermediaries |
| Capital trapped in pre-funded nostro and vostro accounts | Liquidity managed digitally, far less trapped capital |
| Liquidity split by jurisdiction | One common settlement asset across markets |
| Banking hours, weekends, and holidays | Settlement 24/7 |
| Multiple ledgers and manual exception handling | One programmable transaction record |

Trapped capital and weekend-dead settlement are CFO problems, not crypto problems. We go deeper on this in [stablecoin APIs vs traditional cross-border rails](/resources/more/stablecoin-api-vs-traditional-cross-border-rails).

## What does democratizing global finance actually mean?

Payments are only the first layer. Once countries share a settlement layer, every financial product tied to every currency becomes distributable everywhere at the same time: treasury, payments, cards, credit, investments.

The world we imagine is a single API that offers government treasury bonds from one country to someone on the other side of the world, sells US stock options to someone in the Philippines, issues stablecoin cards to someone in Bolivia, and lets a bank in Singapore lend to someone in Greece.

That sounds impossible today. A few years ago, so did USD virtual accounts powered by stablecoins, cards linked to stablecoin balances, and earning yield just by holding a digital dollar. All of those exist now. The next step is connecting not two countries, but 10, 50, and 100 of them to the same system.

## Why should the blockchain be invisible?

Investors spent billions trying to migrate the world on-chain, and it didn't work. Around [70% of users drop off during crypto wallet onboarding](https://stripe.com/en-it/resources/more/crypto-onboarding-best-practices). Your friends and family will never be convinced to download a crypto wallet, and they will never care about smart contracts or branded blockchains.

They don't need to. Customers don't want to see how money was moved, they want to know it arrived. They don't care where yield comes from, they care about the rate and the risk. They don't care who the card issuer is, they care about the benefits.

That is why we build BlindPay so the blockchain disappears. A business calls a REST API, opens a [virtual account](https://blindpay.com/virtual-accounts), and pays out in local currency. It never picks a chain, holds a private key, or pre-funds a foreign bank account. We wrote more about this in [stablecoin for the ordinary](/blog/stablecoin-for-the-ordinary).

Early adopters are already here. The real question is: who is taking care of the other 99% of companies worldwide that have never touched stablecoins? A healthcare provider, a construction company, or a school moving money across borders should get the benefits without learning a single word of crypto jargon.

## Why does USDC fit as the backbone?

For stablecoins to become invisible infrastructure, the settlement asset underneath has to be one that banks, regulators, and finance teams already trust. USDC is fully reserved, redeemable one to one for U.S. dollars, and supported by regulated institutions around the world, which makes it a natural default for the dollar leg of a global payment network.

Having Circle Ventures as an investor aligns us even more closely with the ecosystem our customers already rely on.

## What comes next?

With Circle Ventures' support, we will keep investing in three areas:

1. **More countries.** Connecting more domestic payment systems to the same API, so a customer integrates once and reaches the world.
2. **More products.** Going beyond payments into the financial services stablecoins make global from day one.
3. **Better infrastructure.** Faster settlement, deeper liquidity, [compliance](https://blindpay.com/compliance) that delivers the same experience across jurisdictions, and developer tooling like our [CLI](/blog/cli), [MCP server](/blog/mcp), and [agent skills](/blog/agent-skills).

This is not a short-term game. It will take more than a decade, and that is exactly why we are excited. Thank you to the Circle Ventures team for backing us, and to every customer and partner building with us.

## About BlindPay

[BlindPay](https://blindpay.com/) is a stablecoin API that allows companies to send and receive money globally through virtual accounts, using fiat currencies, stablecoins, and multiple blockchains. By handling regulatory complexities, BlindPay helps businesses navigate fragmented financial systems and enables fast and affordable global payments. Founded in 2024, the company is backed by leading investors including Y Combinator, YouTube co-founder Jawed Karim, Circle, Bitso, and 468 Capital.

If you are building something that needs to move money across borders, [explore our global payments API](https://blindpay.com/global-payments) or [talk to our team](https://blindpay.com/contact).

---

Source: https://blindpay.com/changelog/2026-10-02-mcp-tracking-tools-removed

---
title: 'MCP server drops the public tracking tools and describes the rails tools'
description: 'Three MCP tools that could not succeed from an MCP client are removed in favor of their authenticated equivalents, and the rails and bank details tools now describe what they return.'
date: 2026-10-02
category: Product Update
categoryType: update
contributors:
  - rafaelThayto
isChangelog: true
---

The BlindPay MCP server no longer lists the three public tracking tools, and two tools that had one-word descriptions now explain themselves.

<!--more-->

## Removed tools

`GetV1EPayoutsById`, `GetV1EPayinsById` and `GetV1ETransfersById` wrapped the `/v1/e/` endpoints behind BlindPay's shareable tracking pages. Those endpoints only answer requests from the tracking pages themselves, so a call from an MCP client always failed. Use the authenticated tools instead, which return the same payout, payin or transfer:

| Removed | Use instead |
| --- | --- |
| `GetV1EPayoutsById` | `GetV1InstancesPayoutsById` |
| `GetV1EPayinsById` | `GetV1InstancesPayinsById` |
| `GetV1ETransfersById` | `GetV1InstancesTransfersById` |

MCP clients pick up the change on their next `tools/list`.

## Better descriptions

`GetV1AvailableRails` and `GetV1AvailableBankDetails` now describe what they return and how they fit together: list the rails first, then pass a rail's `value` to bank details to get the fields, validation patterns and picklists a bank account needs for that rail.

---

Source: https://blindpay.com/resources/more/are-blockchain-payments-legal

---
title: "Are blockchain payments legal? Rules in the US, EU, UK, Brazil, and Mexico"
seoTitle: "Are blockchain payments legal? US, EU, UK, Brazil, Mexico"
description: "Blockchain payments are legal for businesses in the US, EU, UK, Brazil, and Mexico, under different rules. What each country regulates, as of October 2026."
date: "2026-10-02"
updated: "2026-10-02"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Are blockchain payments legal for businesses?"
    a: "Yes, in the US, the EU, the UK, Brazil, and Mexico. None of them bans a business from paying or getting paid through stablecoins. What each regulates is the companies in the middle: stablecoin issuers, exchanges, and the providers that convert and move funds. Those need licenses or registrations, and they run KYC, AML, and sanctions checks on you."
  - q: "Do I need a license to use stablecoins for business payments?"
    a: "Usually not, if you only send and receive through a licensed provider for your own business. Licensing kicks in when you move money for other people, exchange virtual assets as a business, or hold them in custody for customers. That line differs by country, so check with counsel if your product touches other people's funds."
  - q: "Is it legal to pay suppliers in Mexico with stablecoins?"
    a: "Yes. Mexico has no stablecoin ban for businesses. The Fintech Law of 2018 governs virtual assets in financial institutions, and Banxico's Circular 4/2019 stops banks and fintech institutions from offering them to customers. Exchanging virtual assets professionally is a reportable activity under the anti-money laundering law. Most businesses pay Mexican suppliers in pesos over SPEI through a provider."
  - q: "How does Brazil treat stablecoin payments?"
    a: "Brazil regulates virtual asset providers under Law 14.478/2022 and Central Bank Resolutions 519, 520, and 521, in force since February 2, 2026. Resolution 521 treats international payments with virtual assets, and the purchase or sale of stablecoins referenced in a foreign currency, as foreign exchange operations, so they follow FX rules."
  - q: "When does the UK stablecoin regime start?"
    a: "The FCA published its final rules for stablecoin issuance in policy statement PS26/10 on June 30, 2026. The new cryptoasset regime starts on October 25, 2027, and the application window for firms opened on September 30, 2026. Until then, crypto businesses register with the FCA for anti-money laundering purposes."
  - q: "Does the travel rule apply to stablecoin payments?"
    a: "Yes, between regulated providers, with different thresholds. The EU applies it to every crypto transfer with no minimum, the US at USD 3,000 under the Bank Secrecy Act, and the UK to all transfers with less data below EUR 1,000. Brazil is phasing it in through February 2028. Your provider handles it."
---

Yes. Blockchain payments are legal for businesses in the US, the EU, the UK, Brazil, and Mexico. None of these countries stops a company from paying or getting paid through stablecoins. What they regulate is the middle: stablecoin issuers, exchanges, and the providers that convert and move the money. Those firms need licenses and run KYC, AML, and sanctions checks on everyone they serve.

So the practical question isn't "is it legal," it's "is my provider licensed where my money moves, and what do I still own?" This page answers it country by country. If you're new to how these payments work, start with [what blockchain payments are](/resources/more/what-are-blockchain-payments).

*This article summarizes the rules as of October 2, 2026. It is general information, not legal advice. Rules change; confirm your own obligations with counsel.*

## How do the rules compare by country?

| | United States | European Union | United Kingdom | Brazil | Mexico |
| --- | --- | --- | --- | --- | --- |
| Main framework | GENIUS Act (2025), plus FinCEN and state money transmission rules | MiCA, Regulation (EU) 2023/1114 | FSMA cryptoasset regime; AML registration with the FCA today | Law 14.478/2022 and BCB Resolutions 519, 520, 521 | Fintech Law (2018), Banxico Circular 4/2019, anti-money laundering law (LFPIORPI) |
| Stablecoin issuer rules | Core rules take effect January 18, 2027 | In force since June 30, 2024 | Final rules June 2026; regime starts October 25, 2027 | Covered by the virtual asset regime | No stablecoin-specific law |
| Who needs a license | Issuers; money transmitters register with FinCEN and hold state licenses | Issuers (as EMIs or banks) and crypto-asset service providers | Cryptoasset businesses register with the FCA now; authorization under the new regime | Virtual asset service providers (PSAV) | Banks and fintech institutions need Banxico approval, limited to internal operations |
| Travel rule | USD 3,000 | Every transfer | Every transfer, reduced data below EUR 1,000 | Resolution 520, phased in through February 2, 2028 | No crypto travel rule; exchange activity is reportable to the UIF |
| What a business using a provider does | Gives accurate KYB data, follows OFAC sanctions | Uses an authorized CASP, uses MiCA-compliant stablecoins | Uses an FCA-registered firm | Uses an authorized provider; cross-border flows follow FX rules | Pays and gets paid in pesos through a provider, usually over SPEI |

The rest of the page explains each column.

## Are blockchain payments legal in the United States?

Yes. The [GENIUS Act](https://www.congress.gov/bill/119th-congress/senate-bill/1582/text), signed on July 18, 2025, is the federal law for payment stablecoins. It requires issuers to be licensed, to hold 1:1 reserves in cash and short-term Treasuries, and to publish monthly reserve reports, and it bans them from paying holders interest. Its core rules take effect on January 18, 2027, and from July 18, 2028, platforms may only offer stablecoins from permitted issuers to people in the US.

A business that pays and gets paid through a provider doesn't need a GENIUS license. Two other layers still apply. Companies that move money for others are money transmitters: they register with FinCEN as a money services business and hold state licenses. And every US person follows OFAC sanctions. The [GENIUS Act explained for businesses](/resources/more/genius-act-for-businesses) covers the rule-making timeline in detail.

## Are blockchain payments legal in the European Union?

Yes. [MiCA](https://eur-lex.europa.eu/eli/reg/2023/1114/oj), the Markets in Crypto-Assets regulation, has applied to stablecoins since June 30, 2024 and to crypto-asset service providers since December 30, 2024. A euro or dollar stablecoin is an e-money token, which only a licensed credit institution or electronic money institution can issue. Exchanges, custodians, and transfer providers need authorization as crypto-asset service providers.

The Transfer of Funds Regulation applies the travel rule to every crypto transfer between providers, with no minimum, since December 30, 2024. For a business, the practical effects are two: use an authorized provider, and expect it to offer only MiCA-compliant stablecoins. [MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) goes deeper.

## Are blockchain payments legal in the United Kingdom?

Yes. Today, firms that exchange or hold cryptoassets for customers in the UK must register with the Financial Conduct Authority under the money laundering regulations, and they apply the travel rule to all transfers.

A full regime is on the way. On June 30, 2026, the FCA published its [final rules for the new cryptoasset regime](https://www.fca.org.uk/publications/policy-statements/cryptoasset-regime), including policy statement PS26/10 on issuing UK stablecoins: backing assets, redemption, safeguarding, and disclosures. The application window opened on September 30, 2026 and closes on February 28, 2027, and the regime starts on October 25, 2027. The government has also proposed moving payments that use UK-issued stablecoins into a future payments regime rather than treating them as crypto trading. For businesses using a provider, the rule of thumb holds: work with an FCA-registered firm now, and ask it about its authorization plan.

## Are blockchain payments legal in Brazil?

Yes. [Law 14.478/2022](https://www.planalto.gov.br/ccivil_03/_ato2019-2022/2022/lei/L14478.htm) set the legal framework for virtual asset service providers, and the Banco Central do Brasil published Resolutions 519, 520, and 521 on November 10, 2025. They took effect on February 2, 2026 and require providers serving Brazilians to be authorized as PSAVs, wherever they're based.

The detail that matters for cross-border payments: Resolution 521 brings international payments and transfers with virtual assets, and the purchase or sale of stablecoins referenced in a foreign currency, inside Brazil's foreign exchange rules. A dollar stablecoin payment into Brazil is treated like an FX operation, with the reporting that comes with it. Resolution 520 also brings in the travel rule, phased in until full compliance on February 2, 2028. Pix payouts require the receiver's name and CPF or CNPJ to match the account. [PSAV in Brazil explained](/resources/more/psav-brazil-explained) covers who needs authorization.

## Are blockchain payments legal in Mexico?

Yes, for businesses, with one big limit on banks. Mexico's Fintech Law of March 2018 defines virtual assets and leaves their regulation to the Banco de México. Banxico's Circular 4/2019, published on March 8, 2019, lets banks and fintech institutions use virtual assets only in internal operations, with prior approval, and not offer them to customers.

Outside the banking system, exchanging virtual assets as a business is a "vulnerable activity" under the federal anti-money laundering law (LFPIORPI). Firms that do it identify their customers and report operations above set thresholds to the financial intelligence unit. A July 2025 reform lowered those thresholds and extended record-keeping to 10 years. Mexico has no stablecoin-specific law. In practice, Mexican suppliers and contractors get paid in pesos over SPEI, and the stablecoin conversion happens at a provider.

## What do you still own when you use a provider?

In every country above, the provider carries most of the regulated work. Your side is short, and it doesn't go away.

1. **Give accurate onboarding data.** Company documents, beneficial owners, and the people who'll use the account. Bad data is the most common reason a payment gets held.
2. **Know what your product does with other people's money.** If you collect or pay out funds for your customers, you may need your own license. Get an opinion from counsel.
3. **Don't nest.** Register each of your customers with the provider instead of running their money through your own account.
4. **Keep a payment purpose for every transfer.** Invoices, contracts, and payroll records answer most requests for information.
5. **Follow sanctions rules yourself.** Don't pay anyone you know to be sanctioned, whatever the provider's screening says.
6. **Answer requests quickly.** A flagged payment waits on you.
7. **Keep records.** Mexico's reform now expects 10 years for reportable activities. Keep at least what your own regulator and auditor require.
8. **Re-check every year.** The UK and US regimes both change in 2027.

## How does BlindPay handle this?

[BlindPay](/global-payments) is registered with FinCEN as a Money Services Business (NMLS #2745309) and publishes its license status by country on its [licenses page](/licenses). KYC, KYB, sanctions screening, and travel rule checks run inside the API before money moves, so a business using BlindPay doesn't build them from scratch.

Payouts land in local currency over Pix in Brazil, SPEI in Mexico, ACH, wire, and RTP in the US, SEPA in Europe, and SWIFT (POBO/COBO) elsewhere. The customer requirements per country are in the [KYC reference](/docs/kb/kyc), and the countries BlindPay serves, by risk tier, are in the [supported countries list](/docs/kb/supported-countries).

## What to do next

List the countries your money leaves from and lands in. For each one, ask your provider two questions: which license or registration covers it there, and who runs the travel rule. Then check your own product against step 2 above. For the bigger picture of how the rules compare, see the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026), and for who carries compliance in each payment model, [direct vs indirect stablecoin exchange](/resources/more/direct-vs-indirect-stablecoin-exchange).

*This article is for general information only and is not legal advice.*

---

Source: https://blindpay.com/resources/more/bin-sponsor-vs-issuer-processor-vs-program-manager

---
title: "BIN sponsor vs. issuer-processor vs. program manager: who does what in a card program"
seoTitle: "BIN sponsor vs. issuer-processor vs. program manager"
description: "The three roles behind every card program, stablecoin cards included: what each one does, who carries liability, and what to ask a provider."
date: "2026-10-02"
updated: "2026-10-02"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a BIN sponsor?"
    a: "A BIN sponsor is the licensed bank that owns the Bank Identification Number range a card is issued from and lends its regulatory license and card network membership to a program. The sponsor bank is the legal issuer, approves the program, oversees its compliance, and carries the regulatory responsibility for every card on its BIN. Bridge's prepaid Visa card, for example, is issued by Lead Bank."
  - q: "What does an issuer-processor do?"
    a: "An issuer-processor runs the technology that makes a card work: it receives authorization requests from the network, applies controls, asks the program for an approve or decline decision, stores card data under PCI DSS, and produces clearing and settlement files. It is the real-time engine between the network and the program, and its uptime decides whether a card works at the terminal."
  - q: "What is a program manager in card issuing?"
    a: "A program manager designs and runs the card product: who gets cards, limits, rewards, the app, support, and the customer relationship. It usually runs first-line compliance such as cardholder KYC under the sponsor bank's oversight. Bridge describes its prepaid Visa card as managed by Bridge Ventures, LLC, which is the program manager role in that structure."
  - q: "Who is liable when something goes wrong in a card program?"
    a: "Regulatory responsibility sits with the BIN sponsor, because the bank is the legal issuer. Contracts then push operational liability down: the program manager usually owns fraud losses, chargebacks it cannot win, and compliance failures in its own onboarding, while the issuer-processor owns outages and processing errors. Read the program agreement, because liability allocation varies by contract."
  - q: "Can one company be BIN sponsor, processor, and program manager?"
    a: "A bank can hold all three, but most fintech programs split them. Many card providers bundle the processor and program manager roles and partner with a sponsor bank. Some go further: Rain says it holds principal memberships with Visa and Mastercard, which means it connects to the networks directly. Ask each provider which roles it holds itself and which it subcontracts."
  - q: "What should I ask a card provider about its roles?"
    a: "Ask who the sponsor bank is and whether you can name it publicly, whether the provider holds network membership directly or through the sponsor, who processes authorizations and where, who owns PCI scope, who approves your program and changes to it, and how fraud losses and chargebacks are allocated. The answers tell you where your program can break."
---

*Reading time: about 8 minutes.*

**Summary:** A BIN sponsor is the licensed bank that legally issues the card. An issuer-processor is the technology that authorizes and processes each transaction. A program manager designs the card product and owns the customer. Stablecoin cards use the same three roles; only the funding and settlement layer changes.

**Key takeaways**

- Every Visa or Mastercard program has a BIN sponsor, an issuer-processor, and a program manager, even when one company bundles two of them.
- The BIN sponsor carries regulatory responsibility for every card on its BIN. That is why it approves your program.
- The issuer-processor is the real-time engine: authorization, card data, clearing files.
- The program manager owns the product, the cardholder, and usually first-line compliance.
- Stablecoins change where the money comes from and how it settles, not who holds these roles.


If you are planning a program, the three roles decide your contracts, your compliance load, and who you call at 2 a.m. when cards decline. This guide defines each one, shows who carries liability, and lists the questions to ask a provider. For the full build, see the [guide to issuing cards with stablecoins](/resources/more/how-to-issue-stablecoin-cards-api).

## What is a BIN sponsor?

A BIN sponsor is the bank that owns the card numbers. It lends its license and network membership to your program and stays the legal issuer of every card.

A **BIN** (Bank Identification Number, now often called an IIN) is the first six to eight digits of a card number. Networks assign BIN ranges to member institutions. A **BIN sponsor** is a member bank that lets a non-bank program issue cards from its range. The bank approves the program, sets its limits, reviews its compliance, and answers to regulators for it.

A concrete example from a stablecoin program: Bridge's learn page says its prepaid debit Visa card "is issued by Lead Bank and managed by Bridge Ventures, LLC." Lead Bank is the sponsor and legal issuer. Bridge also states plainly that "Bridge is not a bank."

## What is an issuer-processor?

An issuer-processor is the system that answers the network when a card is used. It receives the authorization request, runs controls, gets a decision, and produces the records that clearing and settlement need.

When a cardholder taps, the network routes the **authorization** request (the real-time approve or decline question) to the issuer's processor. The processor checks card status, limits, and merchant category rules, and in most modern programs forwards the request to the program for a final decision. Stripe Issuing works this way: per Stripe's docs, if it does not receive your approve or decline within 2 seconds, the authorization is approved or declined based on your timeout settings.

The processor also stores card numbers, which puts it in PCI DSS scope. PCI DSS v4.0.1 is the active version of the card data security standard.

## What is a program manager?

The program manager is the company the cardholder thinks of as "the card." It designs the product and runs the customer relationship, under the sponsor bank's rules.

The program manager decides who gets a card, what limits and rewards look like, how the app works, and how support runs. It usually performs first-line compliance: cardholder KYC (Know Your Customer identity checks), sanctions screening, and transaction monitoring, all under policies the sponsor bank approves. In the Bridge example above, Bridge Ventures, LLC is named as the manager of the card.

If you are a fintech launching a card, you are often a program manager yourself, or a sub-program under a provider that is.

## Who does what: responsibilities and liability

The sponsor carries regulatory responsibility, the processor carries technical responsibility, and the program manager carries product and first-line compliance responsibility.

| | BIN sponsor | Issuer-processor | Program manager |
|---|---|---|---|
| Who it usually is | A licensed bank with network membership | A processing company, sometimes the card provider itself | The fintech or card provider that runs the product |
| Core job | Legal issuer; owns the BIN; approves the program | Authorization, card data, clearing and settlement files | Product design, cardholder relationship, operations |
| Regulatory responsibility | Primary: answers to bank regulators for every card | Indirect, through contracts and PCI DSS | Delegated: runs the compliance program the sponsor approves |
| Typical liability by contract | Retains regulatory risk; pushes losses down | Outages and processing errors | Fraud losses, unrecovered chargebacks, onboarding failures |
| Touches money | Holds program funds or settlement accounts | Calculates positions; usually does not hold funds | Funds the program; in stablecoin models, the stablecoin balance |
| What changes with stablecoins | May settle with the network in USDC where supported | Reads balances from a ledger or on-chain approval | Holds or pulls USDC or USDT instead of a bank balance |

Liability allocation is contractual and varies. Treat the last two rows as the common pattern, not a rule.

## How do providers combine these roles?

Most card platforms bundle the processor and program manager roles and partner with a sponsor bank. A few hold network membership directly.

Three published examples:

- **Bridge.** Card issued by Lead Bank, managed by Bridge Ventures, LLC, per Bridge's learn page. Through Bridge's partnership with Lead Bank, Visa says these transactions can be settled on-chain with Visa.
- **Rain.** Rain says it is a Visa Principal Member and a Mastercard Principal Member. **Principal membership** means connecting to the network as a member, rather than reaching it only through a sponsor's membership. Rain also says it settles card transactions with the networks daily using stablecoins.
- **Stripe Issuing with Bridge.** Stripe's docs say an implementation expert manages requirements "across our BIN sponsor, networks, and other partners." Cards and spend webhooks run on Stripe's API; customers, KYC, and the cards endorsement run on Bridge.

Combining roles is not good or bad by itself. It changes who you negotiate with and who you escalate to. A deeper provider comparison is in [stablecoin card issuing platforms compared](/resources/more/stablecoin-card-issuing-platforms-compared).

## How does a single swipe touch each role?

Each role acts once per transaction, in order. Here is one stablecoin card purchase:

1. The cardholder taps at a merchant. The merchant's acquirer sends the request over Visa or Mastercard.
2. The network routes it to the issuer-processor for the BIN.
3. The processor checks card status and controls, then asks the program manager's system for a decision.
4. The program manager checks the cardholder's USDC balance in its ledger, or the on-chain approval in a non-custodial model, and places a hold.
5. The processor returns the approval to the network. No money has moved yet.
6. At clearing, the processor produces the final amounts. At settlement, the BIN sponsor's side pays the network, in fiat or in USDC where the network supports it.
7. The program manager funds that settlement from the stablecoin balance and posts it to its ledger.

The full sequence with timing is in [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Which questions should you ask a card provider?

Ask which roles it holds itself, which it subcontracts, and who you deal with when each one fails.

1. Who is the BIN sponsor, and can we name the bank on our cards and in our terms?
2. Do you hold network membership directly, or through the sponsor?
3. Who runs authorization processing, and what is the timeout behavior?
4. Who is in PCI DSS scope for card numbers, and how are card details shown to cardholders?
5. Who approves our program, and who approves changes like new countries or card types?
6. Which compliance checks do you run, and which must we run?
7. How are fraud losses, chargebacks, and negative balances allocated?
8. How does settlement work: fiat, stablecoins, or both, and how often?
9. What happens to our cards if the sponsor relationship ends?

Question 9 is the one teams skip. Sponsor banks do exit programs. Know the migration plan before you sign. A fuller list is in the [platform comparison and buyer checklist](/resources/more/stablecoin-card-issuing-platforms-compared).

## Where does BlindPay fit?

BlindPay sits beside these three roles as the money movement layer. The sponsor, processor, and program manager run the card; BlindPay moves money into and out of the stablecoin balance behind it.

On the funding side, BlindPay [virtual accounts](/virtual-accounts) give each verified customer a US bank account in their own name. ACH, wire, and SWIFT deposits convert into USDC or USDT and arrive in the wallet linked to the account. Pix, SPEI, Transfers 3.0, and PSE payins do the same from Latin American bank accounts.

On the payout side, BlindPay converts USDC or USDT to local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT. Every payment flows through a customer that passed KYC or KYB, and BlindPay is registered with FinCEN as a Money Services Business.

Read the [payouts docs](/docs/payouts) or [talk to the team](/contact).

## What to read next

- [What is stablecoin card issuing?](/resources/more/what-is-stablecoin-card-issuing)
- [How to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api)
- [Stablecoin card issuing platforms compared](/resources/more/stablecoin-card-issuing-platforms-compared)
- [Compliance for stablecoin card issuing](/resources/more/stablecoin-card-issuing-compliance)

## Sources

- [Bridge: global card issuance with stablecoins explained](https://bridge.xyz/learn/stablecoin-payments-global-card-issuance)
- [Visa: Bridge-enabled stablecoin-linked cards live in 18 countries (March 3, 2026)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.22206.html)
- [Rain: homepage, network membership and daily stablecoin settlement](https://www.rain.xyz)
- [Stripe docs: issue stablecoin-backed cards with Bridge](https://docs.stripe.com/issuing/bridge-stablecoin-cards)
- [Stripe docs: real-time authorizations](https://docs.stripe.com/issuing/controls/real-time-authorizations)
- [PCI Security Standards Council: PCI DSS v4.0.1](https://blog.pcisecuritystandards.org/just-published-pci-dss-v4-0-1)

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

---

Source: https://blindpay.com/resources/more/genius-act-usdt-foreign-stablecoin-issuers

---
title: "What the GENIUS Act means for USDT and other foreign-issued stablecoins"
seoTitle: "GENIUS Act and USDT: rules for foreign stablecoin issuers"
description: "Can USDT stay available in the US under the GENIUS Act? The foreign issuer path, the 2027 and 2028 deadlines, and what payment companies should ask now."
date: "2026-10-02"
updated: "2026-10-02"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Will USDT be banned in the US under the GENIUS Act?"
    a: "Not automatically. USDT is issued by a foreign issuer, so from July 18, 2028 US platforms can offer it to people in the US only if Treasury finds the issuer's home regime comparable and the issuer registers with the OCC. If that never happens, platforms must stop offering it to US persons. Holding it in a self-custody wallet or sending it peer to peer is exempt."
  - q: "What is the difference between USDT and USAT?"
    a: "They are separate tokens. USAT launched on January 27, 2026 and is issued by Anchorage Digital Bank, N.A., a federally chartered bank under OCC oversight, to fit the US framework. USDT is issued by Tether outside the US, so the GENIUS Act treats it as a foreign-issued payment stablecoin. One doesn't convert into the other automatically on any chain."
  - q: "What changes on January 18, 2027 for foreign-issued stablecoins?"
    a: "From the effective date, a digital asset service provider may not offer, sell, or make available in the US a stablecoin from a foreign issuer unless that issuer has the technological capability to comply, and will comply, with lawful orders, such as freezes. Treasury's August 2026 proposal lets platforms rely on the issuer's representation, but only after reasonable due diligence."
  - q: "How does a foreign stablecoin issuer qualify under the GENIUS Act?"
    a: "Section 18 sets four conditions. Treasury must find its home regime comparable to the US one, the issuer must register with the OCC, it must hold enough reserves at a US financial institution to meet US customers' liquidity needs, and its home country can't be under full US economic sanctions or flagged for primary money laundering concern."
  - q: "Do payment companies outside the US need to care about the GENIUS Act?"
    a: "Yes, if they serve people in the US. The offer and sale rules have extraterritorial effect when the buyer is located in the US. Treasury's proposal says a provider isn't offering to US persons if it reasonably believes the customer is outside the US, has controls to keep US persons out, and doesn't market to them. Flows with no US customers sit mostly outside these rules."
  - q: "Is USDT a cash equivalent for accounting under the GENIUS Act?"
    a: "Section 3(g) says a payment stablecoin not issued by a permitted payment stablecoin issuer shall not be treated as cash or a cash equivalent for accounting purposes. A foreign issuer is, by definition, not a permitted issuer. If your finance team books USDT balances as cash equivalents, ask your auditor how they read this before the Act takes effect."
---

Under the GENIUS Act, USDT is a foreign-issued payment stablecoin. From January 18, 2027, US platforms can only make it available if its issuer can and will comply with US lawful orders. From July 18, 2028, they can only offer it to people in the US if Treasury finds the issuer's home regime comparable and the issuer registers with the OCC.

That path exists in the statute, but nobody has walked it yet. So the real question for a payments team is what happens to your USDT flows in each scenario.

*This article summarizes the law and Treasury's proposed rules as of October 2, 2026. It is general information, not legal advice. Confirm your obligations with qualified counsel.*

**Key takeaways**

- The GENIUS Act treats any stablecoin issued outside the US by a non-permitted issuer as foreign-issued. That covers USDT.
- Two dates matter. January 18, 2027 brings the lawful-order test. July 18, 2028 brings the permitted-issuer test for offers to people in the US.
- Section 18 is the foreign issuer path: a comparability finding, OCC registration, US reserves, and a clean sanctions profile.
- Tether runs a separate US token, USAT, issued by a federally chartered bank. It is not USDT.
- Self-custody wallets and peer-to-peer transfers are exempt. Platforms and payment providers serving US persons are not.

For the wider law, the [GENIUS Act explained for businesses](/resources/more/genius-act-for-businesses) covers reserves, yield, and the full rulemaking timeline. This page zooms in on the foreign issuer rules. To see which kind of provider sits where in a payment flow, start with the [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis).

## Is USDT a foreign payment stablecoin under the GENIUS Act?

Yes. Section 2(12) of the [GENIUS Act](https://www.congress.gov/bill/119th-congress/senate-bill/1582/text) defines a foreign payment stablecoin issuer as one organized or domiciled outside the US (or in a US territory) that is not a permitted payment stablecoin issuer.

Tether says it [moved to El Salvador](https://tether.io/news/tether-licensed-in-el-salvador-strengthening-focus-on-emerging-markets-and-innovation/) after obtaining licenses there. USDT is not issued by a US bank subsidiary, a federal nonbank issuer, or a state-approved issuer. That puts it squarely in the foreign category.

Tether's answer for the US market is a second token. [Anchorage Digital and Tether introduced USA₮ (USAT)](https://www.anchorage.com/insights/anchorage-digital-tether-introduce-usat) on January 27, 2026. Anchorage Digital Bank, N.A. issues it under the oversight of the Office of the Comptroller of the Currency. USAT and USDT are different contracts with different issuers. A balance in one isn't a balance in the other.

## What are the two GENIUS Act deadlines for foreign-issued stablecoins?

The Act has two separate prohibitions, and they start on different dates. Treasury spells this out in its [August 18, 2026 proposal](https://www.federalregister.gov/documents/2026/08/18/2026-16796/genius-act-regulations-on-payment-stablecoin-issuance-offer-and-sale), with comments due October 19, 2026.

| Date | Rule | Who it binds | What it means for USDT |
| --- | --- | --- | --- |
| January 18, 2027 | Section 3(b)(2): no offering, selling, or making available in the US a foreign-issued stablecoin unless the issuer can and will comply with lawful orders | Digital asset service providers | Platforms need a basis to believe Tether can freeze and comply on a US order |
| July 18, 2028 | Section 3(b)(1): no offering or selling to a person in the US unless the stablecoin comes from a permitted issuer or a foreign issuer that meets section 18 | Digital asset service providers | USDT stays available to US persons only if Tether qualifies under section 18 |
| Any time after a designation | Section 8: Treasury can designate a noncompliant foreign issuer and ban secondary trading of its token in the US | Digital asset service providers | A separate enforcement track, independent of the 2028 date |

On the first rule, the proposal lets a platform rely on the issuer's own representation that it can and will comply with lawful orders. Two conditions apply. The platform must do reasonable due diligence on that representation, and it can't rely on it if it knows or should know the claim is false.

The full GENIUS timeline, including the January 18, 2027 effective date, is in the [business guide](/resources/more/genius-act-for-businesses).

## How can a foreign issuer qualify under section 18?

A foreign issuer escapes the section 3 prohibitions only if all four section 18(a) conditions hold:

1. **Comparable regime.** Its home regulator runs a stablecoin regime that Treasury determines is comparable to the GENIUS Act, in particular the reserve and redemption rules in section 4(a).
2. **OCC registration.** The issuer registers with the Comptroller of the Currency.
3. **US reserves.** It holds reserves at a US financial institution sufficient to meet US customers' liquidity demands, unless a reciprocal arrangement says otherwise.
4. **Clean jurisdiction.** Its home country isn't under a full US economic sanctions program or designated a jurisdiction of primary money laundering concern.

The process has its own clock:

- Treasury can make a comparability finding only on a recommendation from each other member of the Stablecoin Certification Review Committee, and must publish its justification in the Federal Register first.
- Once a foreign issuer or regulator files a substantially complete request, Treasury must decide within 210 days.
- An OCC registration is deemed approved 30 days after filing, unless the OCC rejects it in writing.
- Treasury keeps a public list of comparable countries, and the OCC keeps a public list of approved foreign issuer registrations.
- If Treasury later rescinds a comparability finding, platforms get 90 days before offering that issuer's token breaks the law.

Treasury may also sign reciprocal arrangements with comparable jurisdictions, and the Act says it should complete them within two years of enactment. We found no published comparability determination as of October 2, 2026. Check Treasury's list before you assume one exists.

## What happens if a foreign issuer won't comply with a US order?

Section 8 gives Treasury a faster lever than the 2028 deadline. It can designate a foreign issuer as noncompliant, and the token loses US secondary trading.

The sequence:

1. Treasury identifies a foreign issuer whose token trades in the US and that won't comply with a lawful order.
2. Within 30 days, Treasury may designate it noncompliant and notify it in writing.
3. If the issuer doesn't comply within 30 days of the notice, Treasury publishes the determination and a prohibition on facilitating secondary trading in the Federal Register.
4. The trading ban takes effect 30 days after that notice.

Penalties are steep. A platform that knowingly keeps facilitating trading faces up to $100,000 per violation per day. A foreign issuer that keeps offering the token after the determination faces up to $1,000,000 per violation per day. Treasury can grant waivers, for example if a ban would hurt the US financial system or the issuer is taking real steps to fix the problem.

## What does this mean for companies that move USDT?

It depends on whether you serve people in the US and whether you act as a platform or use one.

The Act's rules bind digital asset service providers: firms that, for compensation, exchange digital assets for money or other digital assets, transfer them to third parties, or custody them, for people in the US. Exchanges, custodians, and most payout providers fit that description. A company that just pays its suppliers through such a provider is a customer, not the regulated party. [Which license a stablecoin flow needs](/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi) covers the separate money transmission question.

Section 3(h) also exempts three cases: direct transfers between two individuals with no intermediary, an individual moving funds between their own US and foreign accounts at the same parent company, and transactions through software or hardware wallets that keep the individual's own custody.

| Your situation | Exposure | What to plan |
| --- | --- | --- |
| US company paying LatAm contractors, funded from USDT | Your provider must still be allowed to accept USDT from you after 2028 | Ask the provider; keep a USDC route ready |
| US company holding a USDT treasury balance | Off-ramp and exchange access in the US may narrow after 2028; accounting treatment may change | Plan a conversion path and ask your auditor about section 3(g) |
| Non-US fintech with no US customers, paying out in LatAm | Mostly outside the offer and sale rules if controls keep US persons out | Document location controls; watch section 8 designations |
| US platform collecting USDT from US customers | Directly in scope from January 18, 2027 | Run due diligence on the issuer's lawful-order capability now |

One line in the statute deserves a finance team's attention. Section 3(g) says a payment stablecoin not issued by a permitted issuer shall not be treated as cash or a cash equivalent for accounting purposes. A foreign issuer is, by definition, not permitted. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares how the two issuers report reserves today.

## What should you ask your providers before 2027?

Use this checklist with every exchange, custodian, and payout provider that touches USDT for you:

1. Which stablecoins will you support for US customers after January 18, 2027, and after July 18, 2028?
2. How do you confirm a foreign issuer can comply with lawful orders, and what due diligence backs that?
3. Do you treat our flows as offers or sales to a person in the US? Why?
4. What location controls do you run to keep US persons out of non-US flows?
5. If a token loses US eligibility, how much notice will we get, and what is the conversion path?
6. Which networks will you keep for each token?
7. Do you support USAT, USDC, or other permitted-issuer tokens as a fallback?
8. Who bears the cost if a balance must be converted on short notice?

Treat it as an addendum to [30 due diligence questions for a stablecoin payments provider](/resources/more/stablecoin-payments-provider-due-diligence). Ask for answers in writing.

## What is still uncertain?

Several pieces are open as of October 2, 2026:

- **Final rules.** Treasury's section 3 proposal is still in its comment period, and agencies missed the July 18, 2026 statutory deadline for final rules.
- **Comparability.** We found no published comparability finding for any country, and the process for requesting one is new.
- **Tether's plans for USDT.** Tether launched USAT for the US. We found no section 18 registration for USDT as of this writing.
- **Other regimes.** In the EU, USDT already lost ground under MiCA. [MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) covers why.

## How does BlindPay fit?

BlindPay is a payout and conversion layer, not a stablecoin issuer. It converts USDC and USDT into local currency and pays out over Pix, SPEI, ACH, and SWIFT (POBO/COBO), with KYC, KYB, and sanctions screening inside the payment flow. USDT payouts run on Ethereum, Polygon, Tempo, Solana, and Tron, per the [supported chains reference](/docs/kb/supported-chains).

Both tokens go through the same payout quote, with the token set per request, so a team that keeps a USDC route ready doesn't need a second integration.

Start with question 1 this week. Send it to every provider that holds or moves USDT for you, and write down who answers in writing.

---

Source: https://blindpay.com/resources/more/how-to-choose-a-stablecoin-card-issuing-provider

---
title: "How to choose a stablecoin card issuing provider: an 8-point framework and a neutral look at Bridge, Rain, BVNK, and Gnosis Pay"
seoTitle: "How to choose a stablecoin card issuing provider"
description: "An 8-point framework for choosing a stablecoin card issuing provider, a neutral look at Bridge, Rain, BVNK, and Gnosis Pay, and the payout layer beside it."
date: "2026-10-02"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the best stablecoin card issuing provider?"
    a: "There is no single best provider. The right one depends on your markets, the card network you need, whether you want custodial or self-custodial balances, who owns compliance, and how fast you need to launch. Score Bridge, Rain, BVNK, Gnosis Pay, and others on the same criteria, then run a pilot before you sign."
  - q: "What is the difference between a card issuer and a program manager?"
    a: "The issuer is the licensed bank or e-money institution whose BIN the card runs on, and it carries the regulatory responsibility. The program manager designs and runs the card program under the issuer's rules: onboarding, limits, support, and reporting. Most stablecoin card platforms act as program manager and bring a sponsor bank with them."
  - q: "Should I build my own stablecoin card stack or buy one?"
    a: "Buy, unless cards are your core product and you already have a sponsor bank relationship, a processor contract, and a compliance team. Building means negotiating a BIN, integrating a processor, writing authorization logic against stablecoin balances, and passing network certification. A platform compresses that into an integration measured in weeks."
  - q: "Does Mastercard own BVNK now?"
    a: "Yes. Mastercard announced the acquisition of BVNK on March 17, 2026, reported at up to $1.8 billion including up to $300 million contingent, and completed it on August 3, 2026. BVNK's site describes linking virtual cards to stablecoin balances and rewards on balances. Check its current product terms directly before you plan around them."
  - q: "Which provider handles payouts to local bank accounts next to a card program?"
    a: "A card platform pays merchants through the card network. Paying rent, salaries, or suppliers in local currency needs a payout provider. BlindPay converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), and runs next to whichever card issuer you choose."
---

Choose a stablecoin card issuing provider on eight criteria: market coverage, card network, settlement model, custody model, compliance ownership, fee transparency, SDK quality, and time to launch. Bridge, Rain, BVNK, and Gnosis Pay package these differently. The issuer runs the card. A separate payout layer, such as BlindPay, can handle funding and local cash-out.

That split matters because a card only covers one job: paying merchants that accept Visa or Mastercard. The money still has to arrive in the program, and users still need to reach a bank account for rent, payroll, and invoices. This guide covers how to evaluate the card side honestly, and where the other legs go.

**Key takeaways**

- Compare providers on the same eight criteria, scored against your markets and users, not on a feature list.
- Visa reported more than 130 stablecoin-linked card programs in more than 50 countries as of March 31, 2026, so most teams buy a platform rather than build.
- Settlement model and custody model are the two choices that are hardest to change after launch.
- The August 28, 2026 Rain-managed Solana contract incident is a reminder to ask how a provider isolates programs on shared contracts.
- Pair the issuer with a payout provider for the funding and cash-out legs instead of forcing the card to do everything.

For the basics of the product itself, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## What does a stablecoin card issuing provider actually do?

A stablecoin card issuing provider lets you put a Visa or Mastercard card in your users' hands that spends from a stablecoin balance. It bundles the licensed issuer, the processor, and the program tooling into one integration.

A few terms come up in every vendor call:

- **Issuer (or BIN sponsor):** the licensed bank or e-money institution whose bank identification number the card runs on. It carries the regulatory responsibility.
- **Program manager:** the company that designs and operates the card program under the issuer's rules. Most stablecoin card platforms play this role.
- **Processor:** the system that receives each authorization request from the network and approves or declines it in real time.
- **Settlement model:** how the program pays the network for card spend, in fiat over bank rails or directly in a stablecoin such as USDC.
- **Custody model:** who controls the stablecoin balance the card spends from: the provider (custodial) or the user's own smart account (self-custodial).

The step-by-step flow of a single purchase is covered in [how stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle).

## Should you build a card stack or buy one?

Buy, unless cards are your core product and you already have a sponsor bank, a processor contract, and a compliance team. Building the stack yourself takes months of negotiation and certification before the first card ships.

The market has moved toward platforms. [Visa reported](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement) more than 130 stablecoin-linked card programs across more than 50 countries, and expects the number of programs to roughly double in 2026. A platform that bundles issuer, processor, and program tooling is the shorter path to joining them.

Building makes sense when you need control that no platform offers, such as a custom authorization rule set or a settlement arrangement only your bank partner supports. The [developer guide to issuing stablecoin cards through an API](/resources/more/how-to-issue-stablecoin-cards-api) lists what a card issuing API has to expose if you go that way.

## Which criteria should you use to compare providers?

Use the same eight criteria for every provider and score each one against your own markets and users. A provider that is strong in Latin America can be the wrong pick for an EEA consumer card.

| Criterion | What to ask | Why it matters |
| --- | --- | --- |
| Market coverage | Which countries can cardholders live in today, and which are planned? | A card you can't offer in your main market is a non-starter |
| Card network | Visa, Mastercard, or both? Physical and virtual cards? | Network rules and acceptance follow from this |
| Settlement model | Does the program settle with the network in fiat, or in USDC? | Changes your liquidity needs and conversion timing |
| Custody model | Custodial ledger or self-custodial smart account? | Decides who holds funds and what fails if the provider fails |
| Compliance ownership | Who runs KYC, KYB, sanctions screening, and monitoring? | You need a clear split before a bank partner signs off |
| Fee transparency | Interchange share, per-card fees, FX and conversion spread | "No fee" claims often sit in the spread |
| SDK and API quality | Sandbox, webhooks, card controls, dispute endpoints | Sets your engineering cost for years |
| Time to launch | Weeks or months to first live card, and what blocks it | Usually gated by the sponsor bank, not the API |

Two of these are hard to reverse. Moving from custodial to self-custodial balances, or from fiat to USDC settlement, usually means a new program, new contracts, and reissued cards. Decide those first. [Custodial vs self-custodial stablecoin cards](/resources/more/custodial-vs-self-custodial-stablecoin-cards) walks through the custody trade-off in detail.

## Where does BlindPay fit next to a card issuer?

The cleanest stack uses the issuer for cards and BlindPay for funding and local payouts. The card provider handles authorization and merchant spend. BlindPay handles money coming into the program and money leaving it for a bank account.

On the funding side, [BlindPay virtual accounts](/docs/virtual-accounts) give each customer a US account with its own routing and account number. Each ACH, wire, or SWIFT deposit converts to USDC or USDT and lands in the wallet linked to the account, which can be the wallet the card spends from.

On the payout side, BlindPay converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations. A live quote locks the rate and fees before the stablecoins move, there is no pre-funding, and plans are published with no volume floor. That covers the payments a card can't make: rent, salaries, supplier invoices, and transfers to a user's own bank.

## How do Bridge, Rain, BVNK, and Gnosis Pay compare?

Each of the four describes its card offering differently, and each has had notable news in 2025 and 2026. The table sticks to what each company says publicly and what has been reported, with links in the sources list.

| Provider | How it describes the card offering | Notable public fact |
| --- | --- | --- |
| Bridge (a Stripe company) | "Launch a compliant consumer or commercial card program to users in multiple markets with a single integration," with users spending stablecoin balances | Visa partnership announced April 30, 2025, starting with Argentina, Colombia, Ecuador, Mexico, Peru, and Chile |
| Rain | "Stablecoin payments platform for enterprise," covering card programs, wallets, and scoped cards for agentic payments | August 28, 2026 vulnerability in an outdated version of its Solana contracts affecting a small number of programs; affected users reported repaid |
| BVNK | Enterprise stablecoin payments, including linking virtual cards to stablecoin balances and rewards on balances | Mastercard completed its acquisition of BVNK on August 3, 2026 |
| Gnosis Pay | Card programs on Safe smart accounts with self-custody and spending allowances | June 1, 2026 exploit of its Delay and Roles modules; its post-mortem says Gnosis absorbed the losses and restored all user funds |

Read the table as a starting point, not a ranking. Bridge's Visa partnership signals strength in Latin America. BVNK now sits inside a card network. Rain positions around enterprise programs and agent use cases. Gnosis Pay is the reference design for self-custodial spend. For how BlindPay compares on the payout job, see the [Bridge](/compare/bridge) and [BVNK](/compare/bvnk) comparison pages.

## What should you ask about the settlement model?

Ask whether the program settles with the card network in fiat or directly in USDC, and who converts. The answer decides how much fiat liquidity the program has to hold and when stablecoins are sold.

In the traditional model, the program converts stablecoins to fiat and settles with the network over bank rails. In the newer model, the issuer settles with the network in USDC. [Visa launched USDC settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html) on December 16, 2025, with Cross River Bank and Lead Bank as initial banking participants, settling over Solana. By [April 29, 2026](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), Visa's settlement pilot supported nine blockchains and a $7 billion annualized settlement run rate. That is settlement activity, not card spend.

Questions for the provider:

- Which settlement model does my program use today, and can it change later?
- Which chains and stablecoins does settlement support?
- How much fiat buffer do you require, and who funds it?

## How should you weigh shared-infrastructure risk?

Ask how the provider isolates one program from another on shared smart contracts and shared ledgers. A flaw in shared infrastructure can hit many programs at once, even when each program is run well.

The Rain incident shows the pattern. On August 28, 2026, unauthorized withdrawals hit card balances held in a Rain-managed Solana contract. Rain described "a vulnerability impacting a small number of programs using an outdated version of our Solana contracts." [Tria reported](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/) 636 affected users and $431,945, with every affected user being refunded in full. [Avici reported](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/) $500,859 across 1,685 users, refunded in full plus 10% cashback. Self-custodial wallets were reported unaffected.

The useful questions are about process, not blame:

- Are program balances held in separate contracts or one shared contract?
- How are contract upgrades rolled out across programs, and how fast?
- Who reimburses users after an incident, and in what time frame?

[Are stablecoin cards safe?](/resources/more/are-stablecoin-cards-safe) covers the full risk list for users.

## How do you run the evaluation step by step?

Run a short, structured process: write requirements, shortlist on hard constraints, score on the eight criteria, then pilot. Most teams can do this in four to six weeks.

1. **Write your requirements.** List target countries, card types, expected monthly spend, custody preference, and who your users are.
2. **Filter on hard constraints.** Drop any provider that can't issue in your main market or on your required network.
3. **Send the same questionnaire to each.** Use the eight criteria above. The [stablecoin API RFP template](/resources/more/stablecoin-api-rfp-template) has a scoring format you can adapt.
4. **Check compliance ownership in writing.** Confirm who runs KYC, KYB, sanctions screening, and monitoring. [Stablecoin card issuing compliance](/resources/more/stablecoin-card-issuing-compliance) lists the duties by party.
5. **Model the full cost.** Include card fees, conversion spread, FX markup, and the cost of funding and cash-out legs.
6. **Plan the funding and payout legs.** Decide how money enters the program and how users or your company reach bank accounts.
7. **Pilot with real cards.** Issue to staff, test authorizations, partial captures, refunds, and a dispute before you sign a long contract.

## Which stack fits which company?

Match the stack to the job your users actually need done. A card alone rarely covers it.

- **A wallet or neobank in Latin America:** a card platform with Latin American coverage, plus local payouts over Pix and SPEI for transfers to bank accounts.
- **A self-custody wallet in the EEA:** a self-custodial card program, plus SEPA payouts for users who want euros in a bank.
- **A company paying a global team:** expense cards for small spend, plus local payouts for salaries and invoices.
- **An enterprise already holding balances with a platform:** keep the card there, and route local-currency payouts to a payout provider where coverage is stronger.

## What is the next step?

Shortlist two or three card providers on the eight criteria, then design the funding and payout legs before you sign. Create a free [BlindPay development instance](/docs/quickstart-payout) to test virtual account deposits and Pix, SPEI, ACH, or SEPA payouts with test stablecoins while your card pilot runs.

## Sources

- [Visa: How stablecoin-linked cards are modernizing money movement (updated March 31, 2026)](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement)
- [Visa: Visa Launches Stablecoin Settlement in the United States (December 16, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)
- [Visa: Adding Five Blockchains for Settlement (April 29, 2026)](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html)
- [Visa and Bridge partnership (April 30, 2025)](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html)
- [Bridge cards](https://www.bridge.xyz/product/cards)
- [Rain](https://www.rain.xyz/)
- [Rain statement on the Solana contract vulnerability](https://x.com/raincards/status/2093435073081053518)
- [BVNK](https://www.bvnk.com/)
- [Mastercard completes acquisition of BVNK (August 3, 2026)](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx)
- [The Block: Mastercard to acquire BVNK for up to $1.8 billion](https://www.theblock.co/post/393898/mastercard-to-acquire-stablecoin-infrastructure-firm-bvnk-for-up-to-1-8-billion)
- [Gnosis Pay](https://gnosispay.com/)
- [Gnosis Pay post-mortem](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit)
- [SpendNode: Tria details Rain card vulnerability (August 29, 2026)](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/)
- [SpendNode: Avici completes refunds (August 30, 2026)](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/)

---

Source: https://blindpay.com/resources/more/how-wallet-screening-works-stablecoin-payments

---
title: "How wallet screening works in stablecoin payments: exposure, risk scores, and frozen addresses"
seoTitle: "How wallet screening works in stablecoin payments"
description: "How wallet screening works: OFAC-listed addresses, direct and indirect exposure, risk scores, issuer freezes, and what to do when an address is flagged."
date: "2026-10-02"
updated: "2026-10-02"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What is wallet screening in stablecoin payments?"
    a: "Wallet screening checks a blockchain address before or after funds move, against sanctions lists and against blockchain analytics data. The list check catches addresses that regulators have published. The analytics check scores how close the address sits to sanctioned parties, mixers, scams, or stolen funds in the transaction graph. Most programs run both, because published address lists are incomplete."
  - q: "What is the difference between direct and indirect exposure?"
    a: "Direct exposure means the address sent funds to, or received funds from, a risky address in a single transfer. Indirect exposure means the funds passed through one or more intermediate addresses on the way. Direct exposure to a sanctioned address is a strong signal. Indirect exposure weakens with each hop and with the share of funds involved, so most programs set thresholds for both."
  - q: "Can you stop someone from sending stablecoins to your address?"
    a: "No. Anyone can send tokens to any public address, so inbound screening happens after the transfer lands, not before. What a business controls is what it does next: whether it credits the funds, holds them for review, returns them, or blocks and reports them. That is why the inbound rule has to be written down before the first unexpected deposit arrives."
  - q: "Can Circle or Tether freeze stablecoins in a wallet?"
    a: "Yes. Circle's published access denial policy says a blocked address can no longer send or receive USDC, and the USDC it holds cannot move onchain. Circle blocks addresses to comply with laws, regulations, or legal orders. Tether's terms reserve the right to blacklist addresses holding USDT and to bar transactions involving sanctioned persons. A frozen balance stays frozen until the issuer reverses the block."
  - q: "What should happen when a wallet address matches the OFAC list?"
    a: "Stop the outbound payment, and do not release inbound funds. OFAC's guidance on blocking digital currency says a US person holding blocked virtual currency must deny all parties access to it and report it to OFAC within 10 business days, then annually. Escalate to the compliance officer, keep the full record, and get counsel involved before anyone touches the funds."
  - q: "How often should wallet addresses be rescreened?"
    a: "Screen every address before each outbound transfer, not only when it was first added. A wallet that was clean at registration can be listed, or receive funds from a listed address, later. Rescreen stored addresses when sanctions lists or analytics data change, and treat a new high-risk score on a saved address like a new alert, with a review and a decision on record."
---

Wallet screening checks a blockchain address against sanctions lists and blockchain analytics before funds go to it, and after funds arrive from it. The list check catches addresses regulators have published. The analytics check scores how close an address sits to sanctioned parties or illicit activity, which matters because published lists are incomplete.

A wallet address is a new kind of counterparty. It carries its own history, it can belong to someone other than your customer, and once tokens move to it they don't come back on request. Screening is how a payments team decides, before money moves, whether it should.

This article is for information only and is not legal advice.

**Key takeaways**

- Screen the address, not only the customer. A verified customer can still send to, or receive from, a sanctioned or high-risk address.
- OFAC publishes some digital currency addresses on the SDN List, and says itself that those listings are not likely to be exhaustive.
- Blockchain analytics fills the gap by scoring direct and indirect exposure to risky addresses. Hops and thresholds are a policy choice.
- You can't refuse an inbound onchain transfer. Write the rule for what happens to funds that land from a flagged address before it happens.
- USDC and USDT issuers can block addresses. A frozen balance stays stuck until the issuer lifts the block.

If you're mapping where screening fits in the wider payment system, start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure). Wallet screening is one control inside its compliance layer.

## What is wallet screening?

Wallet screening is the check a payments team runs on a blockchain address before it sends funds to that address or accepts funds from it. It has two parts, and they answer different questions.

**List screening** asks: is this exact address on a sanctions list? It's a lookup. Either the address appears in a published entry or it doesn't.

**Exposure screening** asks: how close is this address to risky activity? It uses blockchain analytics, which clusters addresses that likely belong to the same entity and labels clusters by type (exchange, mixer, scam, darknet market, sanctioned entity). The tool then traces where an address's funds came from and went to, and returns a risk score.

Customer screening, covered in [ongoing sanctions screening](/resources/more/ongoing-sanctions-screening-how-often-to-rescreen), checks names. Wallet screening checks identifiers that names can't reach. Both feed the same alert queue.

## Which wallet addresses appear on sanctions lists?

The US Treasury's Office of Foreign Assets Control (OFAC) adds digital currency addresses to some entries on the Specially Designated Nationals (SDN) List. OFAC [first did this on November 28, 2018](https://ofac.treasury.gov/recent-actions/20181128), for two individuals tied to Iran.

The listings are useful and incomplete at the same time. OFAC's [FAQ 562](https://ofac.treasury.gov/faqs/562) says its digital currency address listings are "not likely to be exhaustive." The same answer says that anyone who identifies an address they believe belongs to or is associated with an SDN, and who holds property in it, should block it and report it to OFAC.

Two practical consequences follow:

1. **An address not on the list can still be prohibited.** If you know or have reason to know a wallet belongs to a listed person, the absence of the address from the SDN entry doesn't help you.
2. **One entity often controls many addresses.** A sanctioned party can open new addresses in seconds. List screening catches the ones already published; exposure screening is how the rest get caught.

## How does blockchain analytics score a wallet?

Blockchain analytics scores a wallet by tracing its transaction history and measuring how much of its activity touches labeled risky entities. The output is usually a score or a risk tier, plus the categories behind it.

The scoring rests on two kinds of exposure:

| Exposure type | What it means | Example | How strong a signal |
| --- | --- | --- | --- |
| Direct exposure | The address transacted with a risky address in one transfer | Received USDT straight from a sanctioned address | Strong. Usually triggers review or a block |
| Indirect exposure, one hop | Funds passed through one intermediate address | Sanctioned address to an unlabeled wallet to your counterparty | Moderate. Depends on amount and timing |
| Indirect exposure, several hops | Funds passed through two or more addresses | Mixer output routed through a chain of fresh wallets | Weaker with each hop, unless the pattern looks deliberate |
| Ownership attribution | The address is clustered with an entity that is itself risky | An address controlled by a listed exchange | Strong. Treat like direct exposure |
| No exposure found | No labeled risky activity in the traced history | New wallet, or one only used with regulated exchanges | Clean for now. Not a guarantee |

Two settings decide how noisy this gets. The **hop limit** sets how far back the trace goes. The **threshold** sets what share or amount of exposure counts. Set them too wide and every wallet that ever touched an exchange looks risky. Set them too narrow and layering through a few fresh wallets walks right past you.

Neither setting has an industry standard number. Write down what you chose and why, and tune it the way you'd tune any monitoring rule. The [transaction monitoring red flags](/resources/more/transaction-monitoring-red-flags-stablecoin-payments) list shows how the same rule-tuning discipline works for amounts and velocity.

## When should you screen: before or after the transfer?

Screen outbound transfers before they're signed, and screen inbound transfers as soon as they land. The timing differs because blockchains let anyone send to any address, but nobody can pull a confirmed transfer back.

**Outbound (pre-transaction).** You control the send. Screen the destination address, and the customer behind it, before the transaction is broadcast. A match stops the payment. Nothing has moved yet, so nothing needs unwinding.

**Inbound (post-transaction).** You don't control the send. A stranger can push tokens to your deposit address at any time, including from a sanctioned wallet. Screening happens on arrival, and the decision is about the funds you now hold: credit them, hold them for review, return them, or block and report them.

**Stored addresses (periodic).** A wallet that passed at registration can be listed later, or start receiving from risky sources. Rescreen saved addresses when lists or analytics data change, and before each outbound payment, not only once.

The inbound case is where programs get caught out. A small deposit from a listed address (sometimes called dusting) can land in a clean customer's wallet without their involvement. Your policy should say whether that triggers a block, a review, or just a note on file, and the answer can depend on amount and direct versus indirect exposure.

## What can a stablecoin issuer freeze?

Stablecoin issuers can block addresses at the token contract level, which freezes every unit of their token held by that address. This is a separate control from your own screening, and it can hit you even when you did everything right.

**Circle (USDC).** Circle's [Stablecoin Access Denial Policy](https://6778953.fs1.hubspotusercontent-na1.net/hubfs/6778953/Blog%20Posts/Circle%20Stablecoin%20Access%20Denial%20Policy_pdf.pdf) says that when an address is denied access, it can no longer send or receive Circle's stablecoin, and all of the stablecoin it controls is blocked onchain. Circle says it blocks addresses to comply with a law, regulation, or legal order, may block in response to urgent law enforcement or sanctions-related government requests, and may reverse a block once the authority confirms the obligation has lifted. The [USDC terms](https://www.circle.com/legal/usdc-terms) reserve the same right.

**Tether (USDT).** Tether's [terms of service](https://tether.to/en/legal/) reserve the right to blacklist any address holding Tether tokens for suspected prohibited uses, to freeze tokens, and to bar transactions to or from sanctioned persons.

What this means in a payment flow:

- **A frozen counterparty can't receive.** A payout to a blocked address fails onchain. Screening first saves you the failed transaction and the alert.
- **Funds received from a soon-to-be-frozen address aren't affected by that freeze.** The block applies to the address, not to tokens that already left it. Your own screening still decides whether you accept them.
- **Your own address can be frozen.** If an issuer blocks an address you control, the balance sits there until the block is reversed. Keep operating balances spread across addresses you can explain to an issuer, and keep records that show where funds came from.

How issuers decide is also part of the [depeg and issuer risk](/resources/more/stablecoin-depeg-risk-payments) picture for any payment flow that holds stablecoins.

## What should happen when an address is flagged?

When an address is flagged, stop the money first and decide second. The workflow below works for both list matches and high exposure scores, with the outcome changing by severity.

1. **Freeze the flow, not the customer.** Put the payout on hold before broadcast, or keep inbound funds uncredited. Don't tell the counterparty why.
2. **Confirm the match.** For a list hit, compare the exact address and network to the SDN entry. For an analytics score, open the trace and look at the actual hops and amounts.
3. **Check the customer side.** Is the address registered to a verified customer? Does the activity fit the customer's stated business? Pull the KYC or [KYB](/resources/more/what-is-kyb) file.
4. **Ask, if the risk is indirect.** A request for information on the relationship and purpose of the payment often clears a one-hop exposure in a day.
5. **Decide and record it.** Clear, return, reject, or block. Write who decided, why, and what evidence they used.
6. **Block and report confirmed sanctions matches.** OFAC's [FAQ 646](https://ofac.treasury.gov/faqs/646) says a US person holding virtual currency that must be blocked has to deny all parties access to it, isn't required to convert it to fiat, and must report it to OFAC within 10 business days and annually after that.
7. **Feed the result back.** Add the address to an internal deny list, or note a cleared false positive so the same trace doesn't re-alert next week.

Steps 4 and 5 mirror how [Travel Rule exceptions are handled](/resources/more/travel-rule-workflow-hold-return-reject): hold, ask, then decide with a written reason.

## What are the limits of wallet screening?

Wallet screening reduces risk. It doesn't remove it, and a few limits are worth stating plainly.

- **Lists lag.** An address is listed after the activity, not before. Screening on day one says nothing about day ninety.
- **Attribution is probabilistic.** Clustering and labels are a vendor's model of who controls what. They can be wrong in both directions.
- **Fresh wallets look clean.** A brand-new address has no history, so it scores low even when its owner is not. Customer due diligence carries that case.
- **Cross-chain hops break traces.** Bridges and swaps can split a trail across networks, and not every tool follows every chain equally well.
- **Unhosted wallets have no counterparty provider.** There's nobody to send Travel Rule data to or ask for records, so the customer relationship has to carry the evidence.

None of this is a reason to skip screening. It's a reason to pair it with identity checks, monitoring, and a clear hold-and-review process.

## How does BlindPay handle wallet risk?

BlindPay runs KYC, KYB, sanctions screening, and transaction monitoring inside the API flow, before money moves. Customers are verified before their first transaction, and entities or individuals on OFAC, EU, UN, or other sanctions lists are not supported, per the [prohibited activities list](/docs/kb/prohibited-activities).

External wallets are registered per customer as [blockchain wallets](/docs/blockchain-wallets). On EVM networks, the customer can sign a message and BlindPay recovers the address from the signature, so the address is proven to be under the customer's control instead of pasted in. These wallets are non-custodial: BlindPay never holds their keys and cannot access, freeze, or recover funds in them. For Brazilian customers, each external wallet is also declared as self-custodied or not, as explained in [self-custody wallets](/docs/kb/self-custody-wallets).

A sanctions or watchlist screening match is one of the documented [compliance hold triggers](/docs/kb/cut-off-times). The payin or payout moves to `on_hold`, and the compliance team reviews it. If the flag can't be cleared internally, BlindPay sends a request for information about the parties and the purpose of the payment, and an unanswered request may lead to a refund to the sender after 24 hours, as described in [on-hold transactions](/docs/kb/on-hold-transactions). A hold can last up to 30 days; a timeout without a decision fails the transaction. If prohibited activity is identified, funds may be frozen pending investigation.

Payouts run over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) from USDC or USDT on supported networks, with these checks applied to each one.

## What to do next

Write your inbound rule first: what happens to funds that arrive from a listed address, a high-score address, and a one-hop exposure. Then set your hop limit and threshold, and test both on a sample of real deposits before you turn on automatic blocks.

## Sources and further reading

- [OFAC recent actions, November 28, 2018: first digital currency addresses on the SDN List](https://ofac.treasury.gov/recent-actions/20181128)
- [OFAC FAQ 562: digital currency information on the SDN List](https://ofac.treasury.gov/faqs/562)
- [OFAC FAQ 646: how to block digital currency](https://ofac.treasury.gov/faqs/646)
- [Circle Stablecoin Access Denial Policy (PDF)](https://6778953.fs1.hubspotusercontent-na1.net/hubfs/6778953/Blog%20Posts/Circle%20Stablecoin%20Access%20Denial%20Policy_pdf.pdf)
- [Circle USDC terms](https://www.circle.com/legal/usdc-terms)
- [Tether terms of service](https://tether.to/en/legal/)

---

Source: https://blindpay.com/resources/more/instant-payment-systems-by-country

---
title: "Which countries have instant payment systems? A 2026 reference table"
seoTitle: "Instant payment systems by country: 2026 reference table"
description: "Pix, SPEI, RTP, FedNow, SEPA Instant, Faster Payments, UPI, Bre-B, and more: who runs each instant payment system, when it launched, its hours, and limits."
date: "2026-10-02"
updated: "2026-10-02"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Which countries have instant payment systems?"
    a: "Most large economies now run one. Brazil has Pix, Mexico has SPEI, the US has RTP and FedNow, the euro area has SEPA Instant, the UK has Faster Payments, India has UPI, Argentina has Transfers 3.0, Colombia has Bre-B, and Singapore has PayNow. The BIS counts more than 70 countries where domestic payments arrive in seconds at near-zero cost."
  - q: "What is the fastest payment rail for a cross-border payout?"
    a: "The fastest payout ends on the recipient's domestic instant rail, such as Pix in Brazil or SPEI in Mexico, because those settle in seconds at any hour. The slow part of a cross-border payment is usually the leg between countries, not the last rail. A stablecoin leg plus a local instant rail avoids the correspondent chain behind a SWIFT wire."
  - q: "Are instant payment systems open 24/7?"
    a: "The major ones are. Pix, SPEI, RTP, FedNow, SEPA Instant, UK Faster Payments, PayNow, and Bre-B all state round-the-clock operation on their operators' sites. Batch rails such as ACH, domestic wire, and SWIFT still run on business days with daily cut-offs, which is where weekend delays come from."
  - q: "Can you send money across borders on an instant payment system?"
    a: "Only where two systems are linked. Singapore's PayNow is linked to Thailand's PromptPay, India's UPI, and Malaysia's DuitNow, and the BIS Project Nexus design is being taken live by Nexus Global Payments. Most corridors, including the US to Latin America, still need another leg such as a wire or a stablecoin between the two domestic rails."
  - q: "Which instant payment rails does BlindPay pay out on?"
    a: "BlindPay pays out in minutes over RTP in the US, Pix and PIX Safe in Brazil, SPEI in Mexico, and Transfers 3.0 in Argentina. The same payout API also covers ACH, domestic wire, TED, ACH Colombia, SEPA, and SWIFT (POBO/COBO), which reaches recipients in 100+ countries. Each payout starts with a quote showing the rate, fees, and exact amount received."
---

Instant payment systems now run in most large economies: Pix in Brazil, SPEI in Mexico, RTP and FedNow in the US, SEPA Instant in the euro area, Faster Payments in the UK, UPI in India, Transfers 3.0 in Argentina, and Bre-B in Colombia. Each settles in seconds, around the clock. BlindPay pays out over Pix, SPEI, RTP, and Transfers 3.0.

The table below is the reference. Every launch date, hour, and limit comes from the operator or central bank page linked next to it. Where an operator doesn't publish a figure, the cell says so instead of guessing.

**Key takeaways**

- All ten systems below run around the clock and credit the recipient in seconds or close to it. The BIS counts more than 70 countries where domestic payments work this way.
- Limits vary a lot: RTP and FedNow allow $10 million per payment, UK Faster Payments up to £1 million at scheme level, and Pix leaves maximums to each bank.
- Instant rails are domestic. Linking two of them across a border is still rare, so most cross-border payouts need a separate leg between countries.
- The fastest cross-border payout ends on the recipient's instant rail. The cheapest one avoids correspondent hops and wide FX spreads before it gets there.
- BlindPay pays out over Pix, SPEI, RTP, and Transfers 3.0 in minutes, and over ACH, TED, ACH Colombia, SEPA, and SWIFT (POBO/COBO) on business-day timelines.

## What is an instant payment system?

An instant payment system is a domestic network that moves money between bank or payment accounts in seconds, makes the funds usable right away, and runs every hour of every day.

Three things separate it from older rails:

- **Speed.** The recipient's bank credits the account within seconds, not at the end of a batch.
- **Hours.** No cut-off times, weekends, or bank holidays. A Pix sent at 3 a.m. on a Sunday lands at 3 a.m. on a Sunday.
- **Finality.** Most schemes treat a completed payment as final. The Banco Central do Brasil, for example, describes Pix transactions as [irrevocable once started](https://www.bcb.gov.br/en/financialstability/pix_en).

Batch rails such as ACH, domestic wire, and SWIFT work differently. They process on business days, with daily cut-offs, and can take one to five business days end to end. [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) walks through where those days go.

## Which countries have instant payment systems?

Brazil, Mexico, the US, the euro area, the UK, India, Argentina, Colombia, and Singapore all run one, along with dozens of other countries. Here is the reference table.

| System | Country or region | Operator | Launched | Hours | Typical speed | Per-payment limit |
| --- | --- | --- | --- | --- | --- | --- |
| Pix | Brazil | Banco Central do Brasil | November 16, 2020 | 24/7, every day of the year | A few seconds | No scheme minimum; each bank sets maximums per payer |
| SPEI | Mexico | Banco de México | August 13, 2004 | 24/7 | Real-time settlement | Not published as a scheme cap |
| RTP | United States | The Clearing House | 2017 | 24/7/365 | Instant, final settlement | $10 million |
| FedNow | United States | Federal Reserve | July 20, 2023 | Any time of day, any day of the year | Instant | $10 million (from November 2025) |
| SEPA Instant (SCT Inst) | SEPA countries | European Payments Council scheme | November 2017 | 24/7/365 | Under 10 seconds | Set in a separate EPC document |
| Faster Payment System | United Kingdom | Pay.UK | 2008 | Day and night, 365 days a year | Real time | Up to £1 million (banks set their own) |
| UPI | India | National Payments Corporation of India | April 11, 2016 (pilot) | Built on IMPS, a 24x7x365 service | Real time | Not covered here |
| Transfers 3.0 | Argentina | Rules set by the Banco Central de la República Argentina | December 7, 2020 (phase 1) | 24 hours a day, every day | Immediate | Not covered here |
| Bre-B | Colombia | Banco de la República | September 23, 2025 | 24/7/365 | Instant | Not covered here |
| PayNow | Singapore | Association of Banks in Singapore, over FAST | July 10, 2017 | 24/7, 365 days | Instant | Not covered here |

Sources, row by row: [Banco Central do Brasil on Pix](https://www.bcb.gov.br/en/financialstability/pix_en), [Banco de México on SPEI](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html), [The Clearing House on RTP](https://www.theclearinghouse.org/payment-systems/rtp), the Federal Reserve's [FedNow launch release](https://www.federalreserve.gov/newsevents/pressreleases/other20230720a.htm) and [September 2025 limit increase](https://frbservices.org/news/press-releases/090525-fednow-transaction-limit-increase), the [European Payments Council on SCT Inst](https://www.europeanpaymentscouncil.eu/what-we-do/sepa-instant-credit-transfer), [Pay.UK on Faster Payments](https://www.wearepay.uk/what-we-do/payment-systems/faster-payment-system/), [NPCI's UPI launch release](https://www.npci.org.in/PDF/npci/press-releases/2016/UPI_Launch_Press_Release_April_11_2016.pdf), [BCRA Communication A 7153](https://www.bcra.gob.ar/archivos/Pdfs/comytexord/A7153.pdf), [Banco de la República on Bre-B](https://www.banrep.gov.co/en/news/bre-b-continues-progress), and [ABS on PayNow](https://www.abs.org.sg/paynow).

A few notes the table can't hold:

- **RTP and FedNow** both allow $10 million per payment. RTP got there first, and the Federal Reserve announced FedNow's increase from $1 million to $10 million on September 9, 2025, effective November 2025. Banks can still set lower limits for their own customers.
- **SEPA Instant** gives the whole chain a nine-second budget under the 2025 rulebook, inside the ten-second ceiling set by EU law.
- **Transfers 3.0** is the name for Argentina's framework of interoperable immediate transfers, set by BCRA Communication A 7153 of October 30, 2020. Phase 1 went live on December 7, 2020.
- **Bre-B** started full interoperability on September 23, 2025, with a controlled phase before opening to all users on October 6, 2025.

## What did the EU Instant Payments Regulation change?

It made instant euro transfers mandatory for most payment providers. Regulation (EU) 2024/886, the [Instant Payments Regulation](https://eur-lex.europa.eu/eli/reg/2024/886/oj), amended the SEPA Regulation and entered into force in April 2024.

The dates that matter, per the [European Payments Council](https://www.europeanpaymentscouncil.eu/what-we-do/sepa-instant-credit-transfer):

1. **January 9, 2025.** Euro-area banks had to be able to receive instant credit transfers.
2. **October 9, 2025.** Euro-area banks had to be able to send them, along with the other obligations that took effect that day, including payee verification.
3. **Later dates.** Payment institutions, e-money institutions, and providers in non-euro EEA countries follow on a later schedule.

For a business paying into Europe, the effect is simple. Almost every euro account can now receive an instant transfer. Whether the payment actually arrives in seconds depends on whether the sender's provider uses SCT Inst or standard SEPA, which settles on business days.

## Are instant payment systems connected across borders?

A few are, most aren't. Each system above is domestic, so a payment from the US to Brazil can't ride Pix the whole way.

Two linking models exist today:

- **Bilateral links.** The Association of Banks in Singapore lists [PayNow linkages](https://www.abs.org.sg/paynow) with Thailand's PromptPay, India's UPI, and Malaysia's DuitNow. Each link is its own project between two countries.
- **Multilateral hubs.** The BIS Innovation Hub's [Project Nexus](https://www.bis.org/about/bisih/topics/fmis/nexus.htm) designed a standard way to connect many instant systems at once. In 2025, the central banks of India, Indonesia, Malaysia, the Philippines, Singapore, and Thailand formed Nexus Global Payments to take it live, and the BIS handed the project over.

None of these links reach the corridors most Latin American payouts use. A US company paying a supplier in São Paulo still needs a leg between the two countries. That leg is either a correspondent banking chain (a SWIFT wire) or a stablecoin that settles on a blockchain and is converted to reais before the Pix leg. The [hub page on real-time cross-border settlement](/resources/more/what-is-real-time-cross-border-settlement) explains how those two legs fit together.

## Which rail is fastest, and which is cheapest?

For the final leg, a domestic instant rail is both. For the whole cross-border payment, speed and cost depend on what happens before the money reaches that rail.

Speed comes down to the slowest step. If the leg between countries takes three business days, a Pix that lands in two seconds doesn't help much. [Stablecoin payout settlement times](/resources/more/stablecoin-payout-settlement-times) shows how a stablecoin leg plus a local rail compares by country.

Cost works the same way. The Banco Central do Brasil says Pix carries [no fees for people](https://www.bcb.gov.br/en/financialstability/pix_en) and low cost for businesses, and ABS says PayNow is free to retail customers. The expensive parts sit upstream: correspondent fees and the FX spread. [What cross-border payments cost in 2026](/resources/more/cross-border-payment-costs-2026) breaks those down by corridor.

A quick decision guide for payouts:

| Recipient's country | Fastest rail to land on | Where BlindPay pays out |
| --- | --- | --- |
| Brazil | Pix | Pix or PIX Safe in minutes; TED in about 1 business day |
| Mexico | SPEI | SPEI in minutes |
| United States | RTP or FedNow | RTP (instant); ACH and domestic wire on business days |
| Argentina | Transfers 3.0 | Transfers 3.0 in minutes |
| Colombia | Bre-B | ACH Colombia, about 1 business day |
| Euro area | SEPA Instant | Standard SEPA, about 1 to 2 business days |
| Anywhere else | Domestic instant rail, if reachable | SWIFT (POBO/COBO), up to 5 business days |

## How do you choose the rail for each payout?

Start from where the recipient banks and what they can receive, then pick the fastest rail that covers it. Here is the order most payment teams use:

1. **Check the recipient's country and currency.** That narrows the options to one or two domestic rails.
2. **Check what details you hold.** Pix needs a Pix key or bank routing, SPEI needs an 18-digit CLABE, RTP needs an RTP-eligible routing number. [The details you need to pay someone in Brazil or Mexico](/resources/more/pix-key-cpf-clabe-payout-details) lists them.
3. **Check timing.** If the payment must land tonight or on a weekend, only an instant rail works. [Stablecoin payout cut-off times on weekends and holidays](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays) covers the batch rails.
4. **Check the amount.** Large payments can hit per-bank limits on instant rails, even where the scheme cap is high.
5. **Fall back to SWIFT** where no local rail reaches the recipient, or where the recipient needs dollars in their account.

## How does BlindPay route payouts across instant and batch rails?

BlindPay puts eleven bank rails behind one payout API. You create a quote against the recipient's bank account, and the account type decides the rail.

| BlindPay payout rail | Country | Settlement |
| --- | --- | --- |
| Pix and PIX Safe | Brazil | Minutes, 24/7 |
| SPEI | Mexico | Minutes, 24/7 |
| RTP | United States | Instant, across 4,000+ US banks |
| Transfers 3.0 | Argentina | Minutes |
| ACH, domestic wire | United States | Same day to 1 to 3 business days, with daily cut-offs |
| TED | Brazil | About 1 business day |
| ACH Colombia | Colombia | About 1 business day |
| SEPA | Euro area and SEPA countries | About 1 to 2 business days |
| SWIFT (POBO/COBO) | 100+ countries | Up to 5 business days, tracked by UETR with MT103 confirmations |

Those windows come from the [payment methods](/docs/kb/payment-methods) and [cut-off times](/docs/kb/cut-off-times) docs. They are rail windows; very high volume can stretch any of them.

How a payout runs:

- **Funding at send time.** The stablecoins (USDC or USDT) come from a wallet when you execute the payout, so there is no pre-funded balance sitting in each country.
- **A quote first.** Each [payout quote](/docs/payout-quotes) shows the market rate (`commercial_quotation`), the rate after BlindPay's fee (`blindpay_quotation`), the flat fee, and the exact amount the recipient receives. It expires after 5 minutes by default.
- **Compliance in the flow.** Every payout runs through a customer who has passed KYC or KYB, with transaction screening on every payment.

## What to do next

Map your recipients by country, then match each to the fastest rail in the table above. To see a quote with real rates for Pix, SPEI, or RTP, create a free development instance and run the [payout quickstart](/docs/quickstart-payout).

---

Source: https://blindpay.com/resources/more/rfq-pricing-stablecoin-fx-explained

---
title: "What is RFQ (request for quote) in stablecoin FX, and how does it relate to payouts?"
seoTitle: "What is RFQ in stablecoin FX? Request for quote explained"
description: "RFQ is a pricing model where a taker asks approved liquidity providers for executable quotes and takes the best. How it works in stablecoin FX and payouts."
date: "2026-10-02"
updated: "2026-10-02"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is RFQ in FX?"
    a: "RFQ, or request for quote, is a way of pricing a trade on demand. A taker sends the pair and amount it wants to trade, a set of approved liquidity providers (makers) reply with executable quotes, and the best one is selected. It suits large or less common trades, where a price for that exact size is worth more than a screen rate."
  - q: "How does Circle StableFX work?"
    a: "StableFX is Circle's stablecoin FX engine built on the Arc network. A taker requests a quote for a supported stablecoin pair, such as USDC and EURC, approved makers respond, and the execution engine picks the best price. The taker accepts by creating a trade, and settlement happens onchain through an escrow contract on Arc, so both sides settle or neither does."
  - q: "How fast is an RFQ quote on StableFX?"
    a: "Circle's technical guide says the response time from RFQ submission to quote response is less than 500 milliseconds. Settlement follows a chosen tenor: instant gives a 30-minute settlement window from trade creation, hourly gives 1 hour, and daily gives 1 day. Quote requests below the minimum trade amount of 10 USDC fail."
  - q: "Is RFQ better than a streaming FX price?"
    a: "It depends on size. A streaming price is a continuous rate a dealer is willing to trade, good for small and frequent tickets. RFQ asks several makers to price your exact trade, which tends to help on large or unusual sizes because competition happens at that size. For either model, check whether the price is firm and whether the maker can apply last look."
  - q: "Can a stablecoin FX trade pay a bank account in Brazil?"
    a: "A stablecoin FX trade settles into a wallet as another stablecoin. To put reais in a Brazilian bank account, the next step is an off-ramp that converts the stablecoin into BRL and pays it over a local rail. BlindPay does that step: it quotes USDC to BRL with a binding rate and pays the account over Pix."
---

RFQ (request for quote) is a pricing model where a taker asks a set of approved liquidity providers for executable quotes on one specific trade, and the best quote is selected. In stablecoin FX, Circle's StableFX uses offchain RFQ with onchain settlement on Arc. An RFQ trade swaps one stablecoin for another; paying a local bank account is a separate step.

That separation matters when you design a treasury or payout flow. RFQ answers "what is the best price for this stablecoin pair, right now, at this size?" It does not answer "how do reais land in a supplier's account in São Paulo?"

**Key takeaways**

- RFQ: a taker asks, approved makers answer with executable quotes, the best price wins.
- StableFX, per Circle's docs: quote responses in under 500 ms, settlement tenors of instant (30 minutes), hourly, and daily, escrow settlement on Arc.
- RFQ competition is worth real money at size: on 100,000 USDC, a 0.0007 gap between the best and worst maker is 70 EURC (illustrative).
- A stablecoin pair trade ends in a wallet. A local bank payout needs an off-ramp quote on a named rail such as Pix or SPEI.
- Use each for its job. Many treasuries need both.

## What is RFQ?

RFQ is on-demand pricing. Instead of trading against a rate that is already on a screen, the taker describes the trade and asks for prices.

Three roles make it work:

- **Taker:** the party that wants to trade, for example a fintech, an exchange, or a corporate treasury.
- **Maker:** an approved liquidity provider that answers with a price it will honor.
- **Execution venue:** the system that sends out the request, collects and ranks the answers, and records the trade.

The key word is executable. An RFQ answer is not an estimate. If the taker accepts inside the quote's life, the maker trades at that price. The FX Global Code, the conduct code for wholesale FX, asks market participants to [make clear whether the prices they provide are firm or merely indicative](https://www.globalfxc.org/fx_global_code.htm).

RFQ is common in over-the-counter markets, which is most of FX. The BIS measured global FX trading at [$9.6 trillion per day in April 2025](https://www.bis.org/press/p250930.htm), most of it priced bilaterally between dealers and clients. The [market maker explainer](/resources/more/what-is-a-market-maker-stablecoin-payments) covers who sits on the other side.

## How does an RFQ trade work, step by step?

Six steps, from question to settlement.

1. **Request.** The taker sends the pair, the amount (on the sell side or the buy side), and when it wants to settle.
2. **Distribution.** The venue forwards the request to approved makers.
3. **Responses.** Each maker returns an executable quote with an expiry.
4. **Ranking.** The venue selects the best price and returns it to the taker.
5. **Acceptance.** The taker accepts, which creates the trade and locks the rate.
6. **Settlement.** Both legs are delivered. With an escrow contract, both settle or neither does.

Step 6 is where FX has historically lost money. The BIS estimated that [$2.2 trillion of daily FX turnover was still exposed to settlement risk](https://www.bis.org/publ/qtrpdf/r_qt2212i.htm) in April 2022, meaning one side could be paid while the other was not. [Herstatt risk explained](/resources/more/herstatt-risk-fx-settlement-risk) covers why.

## How does Circle's StableFX use RFQ?

StableFX is a public Circle product. The facts below come from [Circle's StableFX overview](https://developers.circle.com/stablefx) and its [technical guide](https://developers.circle.com/stablefx/concepts/technical-guide), both accessed October 2026.

| Topic | What Circle's docs say |
| --- | --- |
| What it is | An institutional-grade stablecoin FX engine built on Arc that combines RFQ execution with onchain settlement |
| Who it is for | A permissioned platform for financial institutions, including payment service providers, fintechs, crypto OTC desks, and prime brokers |
| Pairs | USDC and EURC, alongside partner stablecoins in other currencies |
| Quote request | The taker sets the sell amount or the buy amount, plus a settlement tenor |
| Quote speed | Less than 500 ms from RFQ submission to quote response; the engine takes the best priced maker quote |
| Tenors | Instant (settlement window of 30 minutes from trade creation), hourly (1 hour), daily (1 day) |
| Minimum | Requests below 10 USDC fail |
| Acceptance | Creating a trade needs the quote ID and an idempotency key; the rate is then locked until the trade expires, settles, or is breached |
| Signatures | Maker and taker have a 10-minute window to submit signatures, or the trade expires |
| Settlement | An escrow contract on Arc pulls both legs and delivers them, so both sides settle or neither does |

Two details are worth noticing. The quote is fast, but settlement has a window measured in minutes to a day, chosen by the tenor. And the escrow model attacks exactly the step-6 risk above.

## How is RFQ different from streaming prices, order books, and pools?

Each model forms a price differently and leaks your size to different people.

| Model | How the price forms | Who sees your size | Good for | Watch for |
| --- | --- | --- | --- | --- |
| RFQ | Makers price your exact request | The makers you ask | Large or unusual trades | Quote expiry, last look |
| Streaming price | A dealer publishes a continuous executable rate | No one until you trade | Small, frequent tickets | Size tiers, last look |
| Order book | Resting orders are matched | Everyone, through the book | Liquid pairs | Price impact across levels |
| Onchain pool (AMM) | A formula over pool reserves | Everyone, onchain | Liquid onchain pairs | Price impact grows with size |

Last look deserves a sentence. The FX Global Code defines it in Principle 17 as a final opportunity for the quoting party to accept or reject a trade request against its quoted price, and requires disclosure. Whatever the model, ask whether a quote you accept can still be rejected.

Pools and off-ramp inventory are different kinds of depth. [Onchain liquidity vs off-ramp liquidity](/resources/more/onchain-liquidity-vs-offramp-liquidity) explains why a deep pool says little about a BRL payout.

## Is an RFQ quote the same as a payout quote?

No. They price different conversions and end in different places.

| Question | BlindPay local payouts | StableFX-style stablecoin FX |
| --- | --- | --- |
| What is converted | A stablecoin into local currency | One stablecoin into another, such as USDC into EURC |
| Where the money ends up | A recipient's bank account over Pix, SPEI, ACH, SEPA, or SWIFT (POBO/COBO) | A wallet on Arc |
| How the price forms | One binding quote per payout, showing `commercial_quotation` and `blindpay_quotation` | Competing maker quotes, best price selected |
| Quote lifetime | 5 minutes by default, read from `expires_at` | Quote expiry, then a 30-minute to 1-day settlement tenor |
| Settlement | Stablecoins pulled at execution, fiat delivered on the local rail | Escrowed onchain delivery of both stablecoins |
| Who can use it | Businesses on published plans | Permissioned financial institutions |

A BlindPay [payout quote](/docs/payout-quotes) locks the rate, fees, and `receiver_amount` for one bank payout. Pix and SPEI deliver in minutes, ACH and SEPA in about one to two business days, and SWIFT in up to five.

## Which one should you use?

Use the job, not the technology, to decide.

- **Choose BlindPay when the recipient needs money in a local bank account.** One quote prices the stablecoin to local currency conversion, and one call pays it over the named rail.
- **Choose an RFQ stablecoin FX venue when you need to change which stablecoin you hold**, at institutional size, and you can operate wallets on its network.
- **Use both when a treasury holds positions in several stablecoins and pays out locally.** Rebalance stablecoin pairs on the FX venue, then pay recipients through BlindPay. Arc is one of the networks BlindPay accepts USDC on for payouts, per [supported chains](/docs/kb/supported-chains).

[Direct vs indirect stablecoin exchange](/resources/more/direct-vs-indirect-stablecoin-exchange) covers the related question of whether to route a currency pair through the dollar.

**Illustrative example.** A treasury needs two things done today.

*Job 1, rebalance:* convert 100,000 USDC into EURC. Three makers respond with 0.8598, 0.8601, and 0.8605 EURC per USDC. The best quote gives 100,000 x 0.8605 = 86,050 EURC before fees. The worst would have given 85,980. Competition at that size was worth 70 EURC.

*Job 2, pay a supplier in Brazil:* the supplier is owed R$53,700. A BlindPay payout quote with a `blindpay_quotation` of 5.37 BRL per USDC needs 53,700 / 5.37 = 10,000 USDC, before any flat fee. The reais arrive over Pix in minutes.

Neither job can stand in for the other. All rates above are illustrative.

## How should you evaluate either kind of quote?

Ask the same five questions of an FX venue and a payout provider.

1. Is the quote firm, and for how long?
2. Can the price be rejected or changed after I accept?
3. What exactly settles, where, and when?
4. Are fees shown as separate lines or inside the rate?
5. What happens to my funds if settlement fails?

For payout quotes, the [quote-ladder depth test](/resources/more/test-offramp-liquidity-depth) shows whether the rate holds at size, and [OTC vs standard quotes](/resources/more/otc-quote-vs-standard-quote) covers the large-ticket on-ramp case. Terms are defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary). If your payouts start from stablecoins on several chains, [which network to off-ramp from](/resources/more/best-network-to-off-ramp-stablecoins) covers fees and finality by chain.

*How we know: StableFX facts come from Circle's developer documentation, linked above and accessed October 2026. BlindPay facts come from the [payout quotes](/docs/payout-quotes) and [supported chains](/docs/kb/supported-chains) documentation.*

## What to do next

If your job is paying bank accounts, request one payout quote from the [payout quotes docs](/docs/payout-quotes) for your main corridor and compare its `receiver_amount` with what you pay today.

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

---

Source: https://blindpay.com/resources/more/travel-rule-workflow-hold-return-reject

---
title: "The Travel Rule in an automated workflow: what to collect, when to hold, when to return"
seoTitle: "Travel Rule workflow: when to hold, return, or reject"
description: "How to automate Travel Rule compliance for stablecoin transfers: what data to collect, the checks before release, and when to hold, reject, or return."
date: "2026-10-02"
updated: "2026-10-02"
category: "compliance"
author: "BlindPay Team"
howto:
  name: "How to automate Travel Rule compliance for stablecoin transfers"
  steps:
    - name: "Identify the counterparty"
      text: "Decide whether the other side of the transfer is a virtual asset service provider (VASP) or a self-hosted wallet, and if it is a VASP, which one and whether it can exchange Travel Rule data."
    - name: "Collect and validate the data"
      text: "Pull originator data from the KYC or KYB record, take beneficiary data at request time, and validate it: required fields present, formats valid, and for inbound transfers the beneficiary name matched to your own customer."
    - name: "Screen every party"
      text: "Screen the originator, the beneficiary, both wallet addresses, and the counterparty VASP against sanctions lists before anything moves."
    - name: "Exchange data or verify ownership"
      text: "Send the data to the counterparty VASP and wait for its acknowledgement. For a self-hosted wallet, verify ownership where the rule requires it, such as EU transfers above EUR 1,000."
    - name: "Release or hold"
      text: "Release the transfer only when validation passes, screening is clear, and the counterparty has confirmed. Otherwise hold it with a recorded reason and apply the matching action from your decision table."
    - name: "Log the decision"
      text: "Store the data sent and received, the counterparty, the screening results, the decision, timestamps, and who or what made the call, so the case can be rebuilt for an examiner."
faq:
  - q: "How do you automate Travel Rule compliance for stablecoin transfers?"
    a: "Put the check in front of settlement. The system identifies whether the counterparty is a VASP or a self-hosted wallet, collects and validates originator and beneficiary data, screens both parties and both addresses against sanctions lists, exchanges data with the counterparty, then releases or holds the transfer. Missing data triggers a predefined action, and every step is logged with a timestamp."
  - q: "Should funds be released before Travel Rule data is validated?"
    a: "No. A confirmed stablecoin transfer is final, so a problem found after release can only be reported, not fixed. A strong design keeps funds in place until the Travel Rule data is validated, sanctions screening is complete, and the counterparty has acknowledged the message. Clean transfers pass these checks in seconds, so the delay lands only on the cases that need it."
  - q: "What happens if an inbound transfer arrives without Travel Rule data?"
    a: "The funds have already arrived, so you can't reject them the way you can stop an outbound transfer. The usual approach is to hold the credit to your customer, request the missing data from the originating VASP, and return the funds to the originating address if the data doesn't arrive within the window your written policy sets. Log every request and reply."
  - q: "Does the Travel Rule apply to self-hosted wallets?"
    a: "Differently. A self-hosted wallet has no provider to exchange data with, so you collect and keep the information about your own customer instead. Some regimes go further: under EU Regulation 2023/1113, a crypto-asset service provider must verify that a self-hosted address is owned or controlled by its customer for transfers above EUR 1,000."
  - q: "What is the sunrise issue in the Travel Rule?"
    a: "It's the gap created when countries implement the Travel Rule at different times. A provider in a country with the rule still has to comply when its counterparty sits in a country without it, and that counterparty may not be able to send or receive data. Providers handle it with a written, risk-based policy: enhanced scrutiny, lower limits, or declining the transfer."
  - q: "How often should a Travel Rule workflow be tested?"
    a: "On a fixed schedule set by your risk assessment, and again after every change to rules, vendors, or counterparty lists. Each test runs known scenarios through the live logic, such as a missing beneficiary name, an inbound transfer with no data, or a sanctioned address, and checks that each one produces the expected decision and a complete log entry."
---

To automate Travel Rule compliance for stablecoin transfers, put the check in the payment flow before funds move: identify whether the counterparty is a VASP or a self-hosted wallet, collect and validate originator and beneficiary data, screen both parties against sanctions lists, then release or hold. Missing data triggers a defined action, and every decision gets logged.

This article is general information, not legal advice. Thresholds and obligations vary by country, so confirm yours with counsel.

**Key takeaways**

- The Travel Rule is FATF Recommendation 16 applied to virtual asset transfers: sender and recipient data travels with the transfer.
- Validate the data and finish sanctions screening before funds move. A confirmed stablecoin transfer can't be pulled back.
- Outbound and inbound failures need different actions. You can stop an outbound transfer; an inbound one has already landed, so you hold the credit.
- Counterparty VASPs need their own due diligence, including whether their country enforces the rule.
- Test the workflow on a schedule with known bad cases, not only when an examiner asks.

## What does the Travel Rule require, in plain language?

The Travel Rule requires the provider sending a transfer to collect identifying data on the sender and the recipient and pass it to the receiving provider, which must check and keep it. It began with bank wires under FATF Recommendation 16, and FATF extended it to virtual asset service providers (VASPs) in 2019.

A VASP is a business that exchanges, transfers, or holds virtual assets for others. [What is a VASP](/resources/more/what-is-a-vasp) covers the full definition. FATF [revised Recommendation 16](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html) in June 2025 under the title "payment transparency."

Countries implement the rule through their own law, and thresholds differ. The US applies it to transmittals of USD 3,000 or more under [31 CFR 1010.410(f)](https://www.ecfr.gov/current/title-31/subtitle-B/chapter-X/part-1010/subpart-D/section-1010.410). The EU applies it to crypto-asset transfers with no minimum under [Regulation (EU) 2023/1113](https://eur-lex.europa.eu/eli/reg/2023/1113/oj). The full threshold table lives in [the travel rule for stablecoin off-ramps](/resources/more/travel-rule-stablecoin-off-ramps).

One detail shapes everything below: the data doesn't ride on the blockchain. It moves beside the transfer, over a channel between providers, so your system runs two tracks and has to keep them in lockstep.

## What data do you collect, and when?

You collect originator and beneficiary identity data, and most of it should come from onboarding, where it is already verified, not from a payment form at transfer time.

| Data element | Collected at | Who validates |
| --- | --- | --- |
| Originator name | Onboarding (KYC or KYB) | Sending provider |
| Originator address, national ID number, customer ID, or date and place of birth | Onboarding | Sending provider |
| Business identifier, such as an LEI or BIC where the entity has one | Onboarding (KYB) | Sending provider |
| Originator wallet address or account number | Per transaction | Sending provider |
| Beneficiary name | Per transaction | Receiving provider, against its own customer record |
| Beneficiary wallet address or account number | Per transaction | Both providers |

Below a country's threshold, many regimes accept less data and skip verification unless something looks suspicious. Building to the strictest regime you serve is simpler than branching forms by corridor.

## How does an automated Travel Rule workflow run, step by step?

It runs as a gate in front of settlement, and funds move only after the last check passes. Six steps:

1. **Identify the counterparty.** Decide whether the destination (or, for inbound, the source) belongs to a VASP or a self-hosted wallet. Attribution comes from the counterparty's response to a data request, from blockchain analytics, or from your customer's declaration. If it's a VASP, record which one and whether it can exchange Travel Rule data.
2. **Collect and validate the data.** Pull originator data from the KYC or KYB record. Take beneficiary data at request time. Validate it: required fields present, formats valid, no placeholder values like "N/A". On inbound transfers, match the beneficiary name to your own customer.
3. **Screen every party.** Screen the originator, the beneficiary, both wallet addresses, and the counterparty VASP against sanctions lists. Names that arrive inside a Travel Rule message need screening too. [Ongoing sanctions screening](/resources/more/ongoing-sanctions-screening-how-often-to-rescreen) covers which lists and how often.
4. **Exchange data or verify ownership.** Send the data to the counterparty VASP and wait for its acknowledgement. For a self-hosted wallet, verify ownership where the rule requires it, such as EU transfers above EUR 1,000. A signed message from the wallet is the common proof.
5. **Release or hold.** Release only when validation passes, screening is clear, and the counterparty has confirmed. Anything else holds with a recorded reason.
6. **Log the decision.** Store the data sent and received, the counterparty, the screening results, the decision, timestamps, and who or what made the call.

The rule for step 5 is simple. A strong design does not release funds until Travel Rule data is validated and sanctions screening is complete. Stablecoin transfers are [final once confirmed](/resources/more/are-stablecoin-payments-reversible), so a check that runs after release is a report, not a control. The Travel Rule gate sits beside the other pre-settlement checks in an [automated risk monitoring](/resources/more/what-is-automated-risk-monitoring-fintech) program, and the same transfer still runs through the [transaction monitoring red flags](/resources/more/transaction-monitoring-red-flags-stablecoin-payments) rule set.

## What should happen when Travel Rule data is missing or wrong?

It depends on the direction. An outbound transfer can still be stopped, so the default is hold, fix, or reject. An inbound transfer has already arrived, so the default is hold the credit, ask the originating VASP, and return the funds if the data never comes.

| Scenario | Recommended action | Evidence to log |
| --- | --- | --- |
| Outbound: beneficiary name or address missing | Hold. Ask your customer to complete it. Reject if not supplied within your policy window | Request sent, customer reply or timeout, final decision |
| Outbound: counterparty VASP can't receive Travel Rule data | Hold. Assess the counterparty, then reject or proceed under a documented risk-based exception | Counterparty assessment, policy clause applied, approver |
| Outbound: sanctions match on a party or address | Stop. Do not release. Escalate to your sanctions procedure, where blocking and reporting duties may apply | Screening hit, match review, outcome, report reference |
| Outbound: self-hosted wallet above the ownership threshold, no proof | Hold until the customer proves control of the address | Proof method, result, timestamp |
| Inbound: funds arrive with no Travel Rule data | Hold the credit. Request the data from the originating VASP | Request timestamp, counterparty reply |
| Inbound: data incomplete or beneficiary name doesn't match your customer | Hold. Contact the originating VASP. Return the funds if not resolved within your window | Mismatch detail, correspondence, return transaction hash |
| Inbound: the same VASP keeps sending incomplete data | Escalate the counterparty review. Restrict or end the relationship. Assess whether a suspicious activity report is warranted | Counterparty history, decision, report assessment |

Two rules make returns safe. Return to the originating address, never to a new address someone asks you to use, because redirection is a classic laundering move. And log the return transaction hash next to the original, so the round trip is provable.

Non-custodial designs make return logic easier to reason about, because the return always has a fixed destination: the wallet that funded the transfer. On BlindPay, for example, a refunded payout sends the stablecoins back to the wallet that funded it, while a failed payout doesn't refund automatically and needs support. Non-custodial here covers flows that start from an external wallet.

## How do you assess a counterparty VASP?

Treat a counterparty VASP like a correspondent bank: confirm it is licensed or registered, that it can exchange Travel Rule data, and that its own AML controls are credible before you transact with it at volume. FATF's [2021 guidance on a risk-based approach to virtual assets and VASPs](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-rba-virtual-assets-2021.html) describes this counterparty due diligence.

Check five things:

- **Registration.** Is it licensed or registered where it operates, and can you verify that in a public register?
- **Capability.** Can it send and receive Travel Rule data, and over which messaging protocol?
- **Sanctions exposure.** Is the entity, its owners, or its jurisdiction a sanctions concern?
- **Jurisdiction.** Has its country implemented the Travel Rule, and does anyone enforce it?
- **Track record.** What share of its messages to you arrived complete? You compute this one from your own logs.

Most teams skip the last item. A counterparty that passed onboarding can degrade for months, and only your logs will show it. Re-score counterparties on a schedule and when data quality drops.

## What about counterparties in countries that haven't implemented the rule?

That's the sunrise issue: your obligation applies even when your counterparty's country hasn't imposed one, so you need a written policy for counterparties that can't or won't exchange data. FATF's 2021 guidance names the problem, and it hasn't gone away.

FATF's [seventh targeted update on virtual assets](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/targeted-updated-virtualassets-vasps-2026.html), published in July 2026, found that 91 of 109 surveyed jurisdictions had passed Travel Rule legislation. Only 40 percent of those had taken supervisory or enforcement action. Legislated is not the same as enforced, so a counterparty's country being "covered" tells you less than it seems.

Your policy options for these counterparties:

- Collect and keep full data on your own customer, even when nothing can be sent.
- Apply enhanced scrutiny: lower limits, more frequent counterparty review, manual approval above a set amount.
- Decline transfers to counterparties that can't meet your minimum standard.

Pick one per risk tier, write it down, and apply it the same way every time.

## How do you test that the Travel Rule workflow works?

Run known scenarios through the live logic on a schedule, and again after every change to rules, vendors, or counterparty lists, and check that each one produces the expected decision and log entry. A workflow that has never seen a bad case hasn't been tested.

A starter scenario set:

1. Outbound transfer with the beneficiary name missing.
2. Inbound transfer with no Travel Rule data at all.
3. Inbound transfer where the beneficiary name doesn't match your customer.
4. Transfer to a sanctioned wallet address.
5. Transfer to a counterparty that can't exchange data.
6. Transfer to a self-hosted wallet above the ownership threshold.

Track four numbers between tests: the share of outbound transfers with complete data, counterparty acknowledgement rates, median hold time, and the count of returns. A rising hold time usually means a counterparty problem, not a customer problem.

## What does an inbound name mismatch look like in practice?

*Illustrative example. All names, amounts, and times are made up.*

A business customer receives 25,000 USDC from another VASP at 10:02. The Travel Rule message names the beneficiary as "Acme Trading LLC." Your KYB record says "Acme Trade Holdings S.A."

1. The system matches the names, scores them as a mismatch, and holds the credit. The funds sit on your side; the customer sees a pending status.
2. At 10:03 it sends a data request to the originating VASP.
3. At 13:40 the VASP replies: Acme Trading is the customer's trading name. Your KYB record lists it as an alternate name.
4. An analyst confirms the match, screening is clear, and the credit releases at 14:30. The log shows the original message, the request, the reply, and the analyst's note.

The other branch: the VASP never replies. Your policy window is three business days (illustrative), so on day three the system returns 25,000 USDC to the originating address and logs both transaction hashes. The table already made the call.

## What are the common mistakes in Travel Rule automation?

1. **Collecting data after the transfer.** Once a transfer confirms, missing data can't stop it. Collect first.
2. **Checking presence, not content.** A field containing "N/A" or a single letter passes a presence check. Validate formats and reject placeholders.
3. **Running screening and the Travel Rule as separate silos.** Names that arrive in a Travel Rule message never reach the sanctions screen. Route them through it.
4. **No counterparty monitoring.** A VASP onboarded once and never reviewed degrades quietly.
5. **Returning funds to a different address.** Always return to the source address, whatever the request says.
6. **No written sunrise policy.** Without one, each analyst handles non-implementing counterparties differently.

## How does BlindPay handle Travel Rule checks?

BlindPay runs KYC, KYB, sanctions screening, and travel rule compliance inside the API flow, before money moves. Customer data is collected at onboarding: KYC Standard is automated and takes about 60 seconds for eligible individuals, while KYC Enhanced and KYB Standard are reviewed manually in 3 hours to 1 business day. That keeps the per-transfer data short.

A transfer that needs a closer look moves to `on_hold` instead of disappearing. Compliance may send a request for information about the transaction, covering the relationship between the parties and its purpose. If that request goes unanswered for 24 hours, the transaction may be refunded to the sender, and a hold can last up to 30 days before a timeout fails it. The process is in [on-hold transactions](/docs/kb/on-hold-transactions), and each outcome is explained in [stablecoin payout statuses](/resources/more/stablecoin-payout-statuses-explained).

## What to do next

Map every flow you run by direction, counterparty type, and threshold. Then write the missing-data table for those flows, with a policy window for each hold, before anyone writes code. Run the six test scenarios above against it, and put the next test date on the calendar.

## Sources and further reading

- [FATF: revised Recommendation 16 on payment transparency (June 2025)](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html)
- [FATF: updated guidance for a risk-based approach to virtual assets and VASPs (2021)](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-rba-virtual-assets-2021.html)
- [FATF: seventh targeted update on virtual assets and VASPs (July 2026)](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/targeted-updated-virtualassets-vasps-2026.html)
- [31 CFR 1010.410: US recordkeeping and travel rule](https://www.ecfr.gov/current/title-31/subtitle-B/chapter-X/part-1010/subpart-D/section-1010.410)
- [Regulation (EU) 2023/1113: Transfer of Funds Regulation](https://eur-lex.europa.eu/eli/reg/2023/1113/oj)
- [OFAC: sanctions compliance guidance for the virtual currency industry](https://ofac.treasury.gov/media/913571/download?inline)

*This article is general information, not legal advice.*

---

Source: https://blindpay.com/resources/more/nostro-vostro-accounts-explained

---
title: "What are nostro and vostro accounts? And why they force pre-funding"
seoTitle: "Nostro vs vostro accounts: what they are and how they work"
description: "A nostro account is a bank's account at a foreign bank, in that bank's currency. A vostro is the same account seen from the other side. Why both trap cash."
date: "2026-10-01"
updated: "2026-10-01"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between a nostro and a vostro account?"
    a: "They are the same account seen from two sides. If a US bank holds Brazilian reais in an account at a Brazilian bank, the US bank calls it its nostro account (\"ours, with you\"). The Brazilian bank calls it a vostro account (\"yours, with us\"). The money and the ledger are the same. Only the point of view changes."
  - q: "What is a loro account?"
    a: "A loro account (\"theirs\") is the term a bank uses for an account that a third bank holds at another bank. If Bank A talks about Bank C's account at Bank B, that is a loro account from Bank A's view. The CPMI's correspondent banking report also uses \"loro\" for the respondent bank's account in the correspondent's books."
  - q: "Why do nostro accounts require pre-funding?"
    a: "Because a correspondent bank pays out of the balance in the account. To send reais to a supplier in Brazil, the sending bank needs reais already sitting in its nostro in Brazil, or a credit line from the correspondent. The balance has to cover every payment until the next refill lands, which can take days on an international wire."
  - q: "Do businesses have nostro accounts?"
    a: "Usually not by that name. Nostro and vostro are interbank terms. A business that holds a euro account at a German bank to pay European suppliers is doing the same thing, though: keeping a foreign currency balance in advance so payments can go out locally. It carries the same idle cash and currency exposure."
  - q: "How is a nostro account reconciled?"
    a: "The bank keeps a mirror account in its own books that tracks what it thinks is in the nostro. The correspondent sends statements, traditionally SWIFT MT950 messages or ISO 20022 camt.053 files, and the bank matches every entry against its mirror. Unmatched items, such as unexpected fees or delayed credits, go to an investigations team."
  - q: "Can you send cross-border payments without a nostro account?"
    a: "Yes. Most companies already do, through their bank's correspondents, which still pre-fund nostro accounts behind the scenes. The alternative that removes the foreign balance entirely is to settle in a stablecoin and pay out over the recipient's local rail, funded at the moment you send, so no money waits in the destination country."
---

A nostro account is a bank's account at a foreign bank, held in that bank's local currency, used to make and receive payments there. A vostro account is the same account seen from the foreign bank's side. Cross-border payments run through these accounts, and each one needs a balance before the first payment goes out. BlindPay replaces that balance with stablecoin settlement funded at send time.

**Key takeaways**

- Nostro means "ours, with you." Vostro means "yours, with us." Loro means "theirs." All three describe accounts banks hold with each other.
- A correspondent payment is a chain of debits and credits on these accounts, carried by SWIFT messages.
- The balance in a nostro has to cover outgoing payments until the next refill arrives, so it is pre-funded and mostly idle.
- The CPMI counted 22% fewer active correspondent banks in 2019 than in 2011, which makes payment chains longer and nostro relationships harder to get.
- Settling in stablecoins and paying out over local rails removes the need for a balance in each destination currency.

## What is a nostro account?

A nostro account is an account one bank holds at another bank in a foreign country, denominated in that country's currency. The word is Italian for "ours": from the account holder's view, it is "our money, held with you."

Example: a US bank opens an account in reais at a bank in São Paulo. The US bank can now pay reais to anyone in Brazil by instructing the São Paulo bank to debit that account. In the US bank's books, that is its BRL nostro.

The Committee on Payments and Market Infrastructures (CPMI) describes the arrangement in its [correspondent banking report](https://www.bis.org/publications/correspondent-banking-final-report.pdf): one bank, the correspondent, "holds deposits owned by other banks (respondents) and provides payment and other services" to them. Reciprocal relationships, the report notes, "may involve the use of so-called nostro and vostro accounts to settle foreign exchange transactions."

## What is a vostro account, and what is a loro account?

A vostro account is the same account, described by the bank that holds it. "Vostro" is Italian for "yours." The São Paulo bank in the example calls the US bank's reais balance a vostro account: "your money, held with us."

A loro account ("theirs") is how a bank refers to an account that a third bank holds somewhere else. If a German bank mentions the US bank's account in São Paulo, it is speaking about a loro account. Usage varies, though. The [ECB's glossary](https://www.ecb.europa.eu/services/glossary/html/glossn.en.html) and the CPMI report both use "loro" for the other side of a nostro, the account as the holding bank sees it, which is the same thing as a vostro.

| | Nostro | Vostro | Loro |
| --- | --- | --- | --- |
| Meaning | "Ours, with you" | "Yours, with us" | "Theirs, with them" |
| Whose view | The bank that owns the money | The bank that holds the money | A third bank talking about the other two |
| Currency | The foreign bank's local currency | The holding bank's own currency | Either |
| Where the real ledger lives | At the foreign bank | In the holding bank's own books | At the holding bank |
| What the owner keeps at home | A mirror account to track the balance | Nothing extra: it is a liability on its books | Nothing |

One account, three names. Which one you use depends on who is talking.

## How does a cross-border payment move through nostro and vostro accounts?

A cross-border payment is a series of debits and credits on accounts that banks hold with each other, with a SWIFT message telling each bank what to do. The CPMI report illustrates the basic case, where bank A pays a customer of bank C through bank B because A and C have no account with each other.

Here's the flow for a US company paying a supplier in Brazil in reais:

1. **The company's account is debited.** The US bank takes dollars from the company's account and converts them to reais at its own rate.
2. **A payment message goes out.** The US bank sends an MT103 or its ISO 20022 equivalent, pacs.008, to its correspondent in Brazil.
3. **The nostro is debited.** The Brazilian correspondent debits the US bank's reais account. That is the US bank's nostro and the correspondent's vostro.
4. **The beneficiary bank is credited.** If the supplier banks elsewhere, the correspondent pays the supplier's bank through Brazil's local payment system.
5. **The supplier is credited.** The supplier's bank credits the supplier's account in reais.
6. **Both sides reconcile.** The US bank updates the mirror account in its own books and later matches it against the correspondent's statement.

When there's no direct relationship, more banks join the chain, each with its own nostro and vostro accounts and its own fee. The CPMI report describes two ways to route this: the serial method, where the MT103 passes through every bank in the chain, and the cover method, where the MT103 goes straight to the beneficiary's bank and the funds follow separately through the correspondents. Each hop can deduct a fee, which is where the OUR, SHA, and BEN charge codes come from. [Hidden fees in international wires](/resources/more/hidden-fees-international-wires-our-sha-ben) explains how to read them.

## Why do nostro accounts force pre-funding?

Because the correspondent pays out of the balance in the account. To pay reais in Brazil, there must already be reais in the nostro, or a credit line from the correspondent covering the overdraft.

Three things set how big that balance has to be:

- **Outflows between refills.** The balance must cover every payment until new money arrives.
- **Refill lead time.** Topping up a nostro usually means an FX trade and an international transfer, which takes one or more business days and stops at weekends and holidays.
- **A safety margin.** Payment volumes spike, refills get delayed, and nobody wants a payroll run to bounce because a nostro hit zero.

The result is a balance that sits in a foreign currency, earns little, and moves with the exchange rate. Multiply it by every currency a bank pays in. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) puts numbers on that across five markets.

## How big does a nostro balance need to be?

A simple rule of thumb: required balance equals average daily outflow times the number of days it takes to refill, plus a margin for spikes. This illustrative example uses round numbers for a single corridor.

A payroll platform pays Mexican contractors. Assumptions:

- Average outflow: the peso equivalent of $150,000 per business day.
- Refill lead time: 3 business days from deciding to top up to funds landing in the nostro.
- Safety margin: 2 more business days of outflow.

| Line | Calculation | Balance (USD equivalent) |
| --- | --- | --- |
| Cover outflows during the refill | $150,000 × 3 days | $450,000 |
| Safety margin | $150,000 × 2 days | $300,000 |
| **Minimum nostro balance** | | **$750,000** |
| Cost at an assumed 4% a year | $750,000 × 4% | About $30,000 a year |
| Loss on an assumed 5% peso move | $750,000 × 5% | About $37,500, once |

Two features of this math matter more than the totals. The balance scales with volume: double the payroll, double the nostro. And the refill lead time drives everything: cut it from three days to zero, and the main term goes away.

## How is a nostro account reconciled?

By matching two ledgers that should agree and often don't. The account owner keeps a mirror account, which the CPMI describes as a record "kept for accounting purposes," and compares it against statements from the correspondent.

Those statements traditionally arrive as SWIFT MT950 messages, and increasingly as ISO 20022 camt.053 files. Every entry gets matched to an expected payment or refill. The leftovers are the problem: fees deducted by an intermediary, credits that arrived a day late, or payments that bounced. Each one becomes an investigation, and each investigation is a person's time.

The more nostro accounts a business runs, the more of this it does.

## Why are correspondent relationships getting harder to keep?

Because banks have been cutting them. The CPMI's quantitative review found the number of active correspondent banks worldwide fell [22% between 2011 and 2019](https://www.bis.org/cpmi/paysysinfo/corr_bank_data/corr_bank_data_commentary_2008.htm), and the number of active corridors fell roughly 12% over the same period.

The 2016 CPMI report links the retreat to the cost of AML and counter-terrorist-financing compliance and a higher perception of risk. For smaller banks and fintechs in emerging markets, that means fewer correspondents willing to hold their nostro accounts, longer chains for the ones that remain, and more fees along the way. [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) shows what each extra hop does to timing.

## How can you pay across borders without your own nostro balances?

Four ways, and only one removes the foreign balance from the system rather than moving it to someone else.

| Approach | Who holds the foreign balance | What you pre-fund | Typical speed to the recipient |
| --- | --- | --- | --- |
| BlindPay: stablecoin settlement plus local rails, funded at send time | Nobody holds a balance for you; local currency comes from a liquidity provider at payout | Nothing beyond the payout in flight | Minutes on Pix, SPEI, and Transfers 3.0; 1 to 2 business days on ACH, SEPA, and ACH Colombia |
| Your bank's correspondent network | Your bank, in its nostro accounts | Nothing directly, but you pay for it in fees and FX spread | Typically 1 to 5 business days |
| Your own foreign bank accounts | You | A balance in every currency you pay in | Same day, once the balance is there |
| Provider with a pre-funded balance | You, at the provider | A top-up before each payout cycle | Depends on the provider |

The last row is the trap to watch for. A provider can remove your foreign bank accounts and still ask you to keep a balance with it. [What "no pre-funding" means in a stablecoin API](/resources/more/no-pre-funding-stablecoin-payouts) sorts the funding models, and [what a liquidity market is](/resources/more/what-is-a-liquidity-market-cross-border-payments) explains why pooled local currency is cheaper than a balance per company.

## How does BlindPay replace nostro balances?

BlindPay settles the cross-border leg in a stablecoin such as USDC or USDT and pays the recipient over the local rail, so no balance has to sit in the destination currency ahead of time. [What is real-time cross-border settlement](/resources/more/what-is-real-time-cross-border-settlement) covers the full model. You fund each payout when you create it.

The flow, from the [payouts docs](/docs/payouts):

1. **Quote.** You request a payout quote. The rate and fees lock for five minutes.
2. **Fund.** You approve exactly the quoted stablecoin amount from your wallet. BlindPay pulls only that amount, only at that moment.
3. **Settle.** The stablecoins move on-chain in seconds to minutes.
4. **Pay out.** The local currency goes out over Pix, SPEI, ACH, RTP, SEPA, Transfers 3.0, ACH Colombia, or SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT payments.

Where do the dollars come from? Either a stablecoin wallet you already hold, or a [US virtual account](/resources/more/stablecoin-virtual-accounts-explained) that turns incoming ACH, wire, or SWIFT deposits into USDC or USDT. Either way, the balance you keep is in one currency, in one place. Funding from your own wallet stays non-custodial; managed wallets, a beta product, are BlindPay-custodied.

For collections, [POBO vs COBO](/resources/more/swift-pobo-vs-cobo-explained) covers how a platform receives international wires in its customer's name without opening a foreign account for each one.

## What to do next

Size the nostro balance for your largest corridor with the formula above, then compare it to funding at send time. Run a test payout on a free development instance with the [payout quickstart](/docs/quickstart-payout) to see the quote, fund, and settle steps end to end.

---

Source: https://blindpay.com/resources/more/ongoing-sanctions-screening-how-often-to-rescreen

---
title: "Ongoing sanctions screening: how often to rescreen and what to screen"
seoTitle: "Ongoing sanctions screening: how often to rescreen"
description: "How often to rescreen customers against sanctions lists, what to screen beyond names, and a cadence that holds up under OFAC strict liability."
date: "2026-10-01"
updated: "2026-10-01"
category: "compliance"
author: "BlindPay Team"
howto:
  name: "How to design an ongoing sanctions screening workflow"
  steps:
    - name: "Define the screening scope"
      text: "List every party you screen: individual customers, business customers, beneficial owners and controllers, payment counterparties, and the blockchain wallet addresses on both sides of each transfer."
    - name: "Pick the lists per jurisdiction"
      text: "Screen against the OFAC SDN and non-SDN consolidated lists, plus the UN, EU, and UK lists where you or your customers operate. Add PEP and adverse media sources for risk rating, not for blocking."
    - name: "Subscribe to list updates"
      text: "Ingest each list as soon as it changes, record the version you screened against, and alert when an update fails to load."
    - name: "Rescreen the whole base on every update"
      text: "When a list changes, rescreen every active customer, owner, and stored wallet address against the new entries, not only new signups."
    - name: "Screen at transaction time"
      text: "Before a payment settles, screen the parties and wallet addresses involved. A possible match holds the payment before funds move."
    - name: "Clear or escalate each match"
      text: "Compare secondary identifiers such as date of birth, nationality, and address. Document what matched, what was compared, the decision, who made it, and the list version."
    - name: "Block, reject, and report confirmed matches"
      text: "A confirmed match is blocked or rejected under OFAC rules and reported to OFAC within its deadlines. Do not return funds to a blocked person."
faq:
  - q: "How often should a fintech rescreen customers against sanctions lists?"
    a: "Every time a list it relies on changes, plus on every transaction before settlement. OFAC updates the SDN List frequently, often several times a month, so a quarterly or monthly batch leaves weeks in which a newly listed customer can still move money. Rescreen on customer data changes too, such as a new owner, address, or wallet."
  - q: "Is a sanctions check at onboarding enough?"
    a: "No. Onboarding screening proves the customer was clean on the day they signed up. Sanctions lists change after that, and OFAC applies a strict liability standard, so a payment to a person listed last week can be a violation even if your team never knew. Ongoing screening closes the gap between signup and every later payment."
  - q: "Do you need to screen blockchain wallet addresses for sanctions?"
    a: "Yes, if you move stablecoins or other digital assets. OFAC has added digital currency addresses to SDN List entries since November 2018, but says those listings are not likely to be exhaustive. Screen addresses against the list and use blockchain analytics to score exposure to sanctioned actors who were never listed by address."
  - q: "What is the OFAC 50 percent rule?"
    a: "It is OFAC guidance that treats an entity as blocked when one or more blocked persons own 50 percent or more of it, directly or indirectly, individually or in aggregate. The entity is blocked even when its own name appears on no list. That is why sanctions screening has to cover beneficial owners, not only the business name."
  - q: "What is the difference between sanctions screening and PEP screening?"
    a: "Sanctions screening looks for parties you are legally prohibited from dealing with, and a confirmed match stops the payment. PEP screening looks for politically exposed persons, who are allowed as customers but carry higher corruption risk. Under FATF Recommendation 12, a PEP match triggers enhanced due diligence, such as checking source of wealth, rather than a block."
  - q: "How do you reduce false positives in sanctions screening?"
    a: "Use fuzzy matching to catch spelling variants, then compare secondary identifiers before raising an alert: date of birth, nationality, country, address, or registration number. Record why each cleared match was cleared, and suppress the same match only while the customer data and the list entry stay unchanged. If either changes, screen again."
---

Screen every customer at onboarding, rescreen the whole customer base each time a sanctions list changes, and screen the parties and wallet addresses on every transaction before it settles. Scope covers individuals, businesses, beneficial owners, counterparties, and blockchain addresses. Batch rescreening on a fixed calendar leaves gaps of weeks, and OFAC liability is strict.

This article is general information, not legal advice. Sanctions obligations depend on where you operate and who your customers are, so confirm yours with counsel.

**Key takeaways**

- Onboarding screening only proves a customer was clean on signup day. Lists keep changing after that.
- The defensible baseline is rescreening on every list update plus screening at transaction time, before settlement.
- Screen beneficial owners, not only business names. Under OFAC's 50 percent rule, an unlisted company can still be blocked.
- Wallet addresses are sanctions identifiers in their own right, and OFAC says its address listings are not exhaustive.
- Fuzzy matching catches spelling variants. Secondary identifiers and written decisions keep it from drowning the team.

Sanctions screening is one of the four parts of an [automated risk monitoring program](/resources/more/what-is-automated-risk-monitoring-fintech). This guide covers its two big decisions: how often to screen, and what to screen.

## Why is a one-time sanctions check not enough?

Because sanctions lists change after the customer signs up, and OFAC liability does not depend on whether you knew. A customer cleared in January can be designated in March, and every payment after that date is exposed.

The Office of Foreign Assets Control (OFAC), part of the US Treasury, is direct about the standard. Its [sanctions compliance guidance for the virtual currency industry](https://ofac.treasury.gov/media/913571/download?inline) says OFAC may impose civil penalties "based on a strict liability legal standard," meaning a US person can be held liable "even without having knowledge or reason to know" of the violation. OFAC weighs the facts of each case, but "we screened them at signup" does not make the payment legal.

The same guidance notes that the Specially Designated Nationals and Blocked Persons List (SDN List) "is frequently updated." OFAC posts each change on its [Recent Actions](https://ofac.treasury.gov/recent-actions) page, and sanctions-related actions there often land several times a month.

So the question is not whether to rescreen. It's how fast you pick up a change, and what you rescreen when you do.

## Which sanctions lists and watchlists should a fintech screen against?

At minimum, the OFAC lists for any business with a US nexus, plus the UN, EU, and UK lists wherever you or your customers operate. PEP and adverse media sources feed risk rating rather than blocking decisions.

| List | Who it applies to | Why it matters | Typical screening trigger |
| --- | --- | --- | --- |
| OFAC SDN List | US persons and transactions touching the US financial system | Listed parties are blocked; dealing with them is prohibited | Onboarding, every list update, every transaction |
| OFAC non-SDN consolidated lists | US persons | Narrower prohibitions on specific dealings, not full blocking | Onboarding, every list update, every transaction |
| [UN Security Council Consolidated List](https://main.un.org/securitycouncil/en/content/un-sc-consolidated-list) | UN member states, through national law | Base layer that many national lists implement | Onboarding, every list update |
| [EU consolidated financial sanctions list](https://data.europa.eu/data/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions) | EU persons and business done in the EU | Asset freezes and prohibitions across member states | Onboarding, every list update, every transaction |
| [UK Sanctions List](https://www.gov.uk/government/publications/the-uk-sanctions-list) | UK persons and business done in the UK | Financial sanctions enforced by the Office of Financial Sanctions Implementation (OFSI) | Onboarding, every list update, every transaction |
| Politically exposed person (PEP) databases | Firms following FATF Recommendation 12 | PEPs are allowed but need enhanced due diligence | Onboarding, periodic review, data change |
| Adverse media | Risk-based, no single legal list | Early signal of fraud, corruption, or pending designation | Onboarding, periodic review |

Lists overlap but don't match, so a US-only screen is not enough for a business with EU customers. And PEP is not a sanctions category. A PEP match means more questions, as the [FATF guidance on politically exposed persons](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Peps-r12-r22.html) lays out, not a refused payment.

## How often should you rescreen customers against sanctions lists?

Rescreen the full customer base every time a list you rely on changes, and screen parties at transaction time before settlement. Fixed calendar batches, monthly or quarterly, are better than nothing and worse than both.

| Approach | What it catches | What it misses | Risk level |
| --- | --- | --- | --- |
| Onboarding only | Parties already listed at signup | Every designation after signup | High |
| Periodic batch, quarterly | Designations up to the last run | Up to three months of new designations and the payments made in between | High |
| Periodic batch, monthly | Designations up to the last run | Up to a month of new designations | Medium to high |
| On every list update | New designations, across the whole base, as soon as the update is ingested | Changes on the customer side between updates, such as a new owner or wallet | Low to medium on its own |
| On every transaction | Parties and addresses at the moment money moves | Dormant customers who hold balances but don't transact | Low to medium on its own |
| List update plus transaction plus data change | New designations, new counterparties, and changed customer data | Very little, if matching is tuned | Lowest |

The combination wins because each method covers the other's blind spot. List-update screening finds the customer who became a match while doing nothing. Transaction screening finds the new counterparty or wallet that was never in your customer base. Data-change screening catches the new beneficial owner who joined after KYB.

For stablecoin flows, transaction-time screening has to run before settlement. A confirmed on-chain transfer [can't be reversed](/resources/more/are-stablecoin-payments-reversible), so a match found afterward is a report, not a control.

## What should you screen besides customer names?

Screen every party whose property or interest is in the payment: the customer, the people who own and control a business customer, the counterparty, and the wallet addresses involved. A name-only screen of the account holder misses most of the ways a sanctioned party actually shows up.

**Individuals.** Full legal name, plus date of birth, nationality, and address as secondary identifiers.

**Businesses.** Legal name, trade names, registration number, and registered address. Screen former names too.

**Beneficial owners and controllers.** OFAC's [50 percent rule guidance](https://ofac.treasury.gov/media/6186/download?inline) treats an entity as blocked when blocked persons own 50 percent or more of it, directly or indirectly, individually or in aggregate. The company's own name may appear on no list. Only screening the owners, as collected during [KYB](/resources/more/what-is-kyb), catches it.

**Counterparties.** The beneficiary of a payout or the sender of a payin, plus their bank or provider where you have it. A clean customer paying a listed supplier is still a prohibited dealing.

**Wallet addresses.** OFAC [first listed digital currency addresses](https://ofac.treasury.gov/recent-actions/20181128) on SDN entries on November 28, 2018, for two Iran-based individuals. Its [FAQ 562](https://ofac.treasury.gov/faqs/562) says those address listings are "not likely to be exhaustive." Screen addresses against the list, then score their exposure to sanctioned actors through blockchain analytics. The [crypto wallet compliance checklist](/resources/more/crypto-wallet-compliance-checklist) covers address screening in more depth.

## How does name matching work, and how do you clear a false match?

Fuzzy matching compares names by similarity, not exact spelling, and secondary identifiers decide whether a similar name is the same person. Exact matching is cheaper to run and misses too much.

Exact matching fails on transliteration (Mohammad, Mohammed, Muhammad), word order, dropped middle names, and alternate country spellings. OFAC's [Framework for OFAC Compliance Commitments](https://ofac.treasury.gov/media/16331/download) lists both failure modes among the root causes of past violations: screening software not updated for SDN List changes, and screens that did not account for alternative spellings, such as Habana for Havana.

Fuzzy matching fixes recall and creates noise. The fix for the noise is not a looser threshold. It's a second check before an alert reaches a person:

- Date of birth or year of birth for individuals.
- Nationality and country of residence.
- Registration number and country of incorporation for entities.
- Address, where the list entry carries one.

When an analyst clears a match, the record should say what matched, which list entry and list version, which identifiers were compared, the decision, who made it, and when. That record lets you suppress the same alert next time, but only while both the customer data and the list entry stay the same. If either changes, the pair goes back through the screen. A suppression that outlives its facts is how a real match gets waved through.

## How do you design a sanctions screening workflow?

Define the scope, load the lists as events, screen on three triggers, and hold before settlement. The steps:

1. **Define the scope.** Customers, owners and controllers, counterparties, and wallet addresses. Write it down; it is the first thing an examiner asks for.
2. **Pick the lists per jurisdiction.** OFAC SDN and non-SDN lists for any US nexus, plus UN, EU, and UK lists where you or your customers operate.
3. **Load list updates as events.** Ingest each change as soon as it's published, store the version, and alert when a load fails. A stale list is the quietest failure in this whole system.
4. **Rescreen the full base on every update.** Every active customer, owner, and stored address against the new and changed entries.
5. **Screen at transaction time.** Parties and addresses, before settlement. A possible match holds the payment while funds can still be stopped.
6. **Clear or escalate.** Compare secondary identifiers, document the decision, and escalate anything unresolved to the compliance officer.
7. **Block, reject, and report.** A confirmed match is blocked or rejected under OFAC rules and reported within the deadlines in OFAC's Reporting, Procedures and Penalties Regulations (31 CFR part 501). Returning funds to a blocked person is itself a prohibited dealing.

A sanctions hold is one of the [transaction monitoring red flags](/resources/more/transaction-monitoring-red-flags-stablecoin-payments) a system scores before money moves.

## What does a list-update match look like in practice?

Illustrative example. The names, dates, and amounts below are invented to show the mechanics.

A logistics company in Mexico passes KYB on January 12. It has two owners: one holds 60 percent, the other 40 percent. Neither owner, nor the company, is on any list. Clean.

On March 18, OFAC adds the 60 percent owner to the SDN List. The company's name appears nowhere in the update. Under the 50 percent rule, it is now blocked anyway.

**With quarterly batch screening.** The next run is April 1. Between March 18 and March 31, the company sends six payouts totaling USD 84,000. Each one is a dealing with a blocked entity, and the April run finds the match only after the money is gone.

**With list-update screening.** The March 18 update loads that afternoon. The rescreen matches the owner's name, then confirms on date of birth and nationality. Because owners are in scope, the match rolls up to the company. Its account is frozen and the payout queued for March 19 is held before settlement. Compliance confirms the match, blocks the funds, and files the report to OFAC.

Same customer, same list. The difference is when the screen ran and whether owners were in it.

## What are the common sanctions screening mistakes?

Most failures come from screening too rarely or too little:

1. **Signup-only checks.** The customer is screened once and never again. Every later designation is invisible.
2. **Ignoring beneficial owners.** The business name is screened, the owners aren't, and the 50 percent rule goes unenforced.
3. **No wallet screening, or SDN-only address checks.** OFAC itself says its address listings are incomplete.
4. **No record of cleared alerts.** The match was cleared, but nobody can show why. To an examiner, an undocumented clearance looks like no review at all.
5. **No list update monitoring.** The screening tool runs, but against a list version from weeks ago, and no one is alerted when a load fails.
6. **Permanent suppressions.** A cleared match stays suppressed after the customer's data or the list entry changes.

## How does BlindPay handle sanctions screening?

BlindPay runs KYC, KYB, sanctions screening, and transaction monitoring inside the API flow, before money moves. BlindPay is registered with FinCEN as a money services business, and its registrations are on the [licenses page](/licenses).

Customers are verified before their first transaction: KYC Standard is automated and takes about 60 seconds, while KYC Enhanced and KYB Standard are manual reviews that take 3 hours to 1 business day. Entities or individuals on OFAC, EU, UN, or other sanctions lists are not supported, per the [prohibited activities list](/docs/kb/prohibited-activities). Creating a customer or bank account in a prohibited country fails outright, with no override.

A sanctions or watchlist match on a payment is one of the documented [compliance hold triggers](/docs/kb/cut-off-times). The payin or payout moves to `on_hold` for manual review. A hold can last up to 30 days: approval resumes the normal flow, and a timeout without a decision fails the transaction.

## What to do next

Pull three facts from your current setup: the date of your last full-base rescreen, the list version it used, and whether owners and wallet addresses were in scope. If the rescreen ran on a calendar instead of on a list update, or owners weren't in it, fix that before anything else. Then sample 20 cleared matches and check that each one has a written reason.

## Sources and further reading

- [OFAC: Sanctions compliance guidance for the virtual currency industry](https://ofac.treasury.gov/media/913571/download?inline)
- [OFAC: FAQ 562 on digital currency addresses](https://ofac.treasury.gov/faqs/562)
- [OFAC: Recent Actions](https://ofac.treasury.gov/recent-actions)
- [OFAC: Revised guidance on entities owned by blocked persons (50 percent rule)](https://ofac.treasury.gov/media/6186/download?inline)
- [OFAC: A Framework for OFAC Compliance Commitments](https://ofac.treasury.gov/media/16331/download)
- [FATF: Guidance on politically exposed persons (Recommendations 12 and 22)](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Peps-r12-r22.html)

*This article is general information, not legal advice.*

---

Source: https://blindpay.com/resources/more/otc-quote-vs-standard-quote

---
title: "OTC quotes vs standard quotes for large BRL on-ramps: how a 10-second quote works"
seoTitle: "OTC vs standard quotes for large BRL on-ramps"
description: "An OTC quote prices a large BRL to USDT on-ramp through an OTC desk, locks for 10 seconds, and lists fees as lines. When to pick it over a standard quote."
date: "2026-10-01"
updated: "2026-10-01"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is an OTC quote in a crypto on-ramp?"
    a: "An OTC (over-the-counter) quote is a price for a large conversion set directly by a trading desk rather than taken from the standard rate. In an on-ramp it prices a block of local currency into stablecoins at one rate for the whole amount. At BlindPay, OTC quotes cover BRL paid over Pix into USDT, from $5,000 USD equivalent."
  - q: "How long does a BlindPay OTC quote last?"
    a: "Ten seconds, compared with 5 minutes for a standard payin quote. The short window is for accepting the price: your backend creates the payin from the quote inside those 10 seconds. The payer then has until 23:59 Brasília time to send the Pix, or until the next day's cutoff if the quote was created after 23:59."
  - q: "What is the minimum amount for an OTC quote?"
    a: "At BlindPay, $5,000 USD equivalent. Below that, the quote fails with PAYOUTS_AMOUNT_BELOW_MINIMUM and you use a standard payin quote instead. The receiver's per-transaction limit still applies on top, which defaults to $10,000 to $50,000 depending on the KYC tier and can be raised through a limit increase request."
  - q: "Why is the rate on an OTC quote equal to the market rate?"
    a: "Because fees are not built into the exchange rate on an OTC quote. On a BlindPay OTC quote, blindpay_quotation equals commercial_quotation, and the fees show up in flat_fee and partner_fee_amount instead. On a standard quote, blindpay_quotation is the rate net of BlindPay's fee. Compare the two by the stablecoin amount received, not by the rate."
  - q: "What happens if the payer never sends the Pix on an OTC quote?"
    a: "BlindPay waits for the deposit until the 23:59 Brasília time cutoff, which is also when the Pix code expires. If the deposit never arrives, the payin fails and a flat $100.00 penalty is added to the quote's billing fee. A standard Pix payin waits up to 30 minutes, with a reconciliation check, before it is marked failed."
---

An OTC quote prices a large on-ramp through an over-the-counter desk instead of the standard rate. At BlindPay it covers BRL paid over Pix into USDT, starts at $5,000 USD equivalent, and locks for 10 seconds instead of 5 minutes. The rate equals the market rate, and fees appear as separate lines.

That makes it a different tool, not a premium version of the standard quote. It fits a backend that can act in seconds and a payer who will send the same day. It does not fit a confirmation screen where a person reads the number first.

**Key takeaways**

- OTC quotes at BlindPay: BRL over Pix in, USDT out, $5,000 USD equivalent minimum, 10-second window.
- The 10 seconds are for accepting the price. The payer has until 23:59 Brasília time to send the Pix.
- On an OTC quote, `blindpay_quotation` equals `commercial_quotation`. Fees live in `flat_fee` and `partner_fee_amount`.
- If an OTC deposit never arrives, a flat $100.00 penalty is added to the quote's billing fee.
- Compare an OTC quote and a standard quote by the USDT received for the same reais, never by the rate alone.

## What is an OTC quote?

An OTC quote is a price agreed directly between two parties for a specific size, instead of a rate taken from a screen or an exchange order book. "Over the counter" just means bilateral.

Most of the FX market already works this way. The BIS Triennial Survey, which measured [global FX trading at $9.6 trillion per day in April 2025](https://www.bis.org/press/p250930.htm), is a survey of OTC markets: dealers quoting clients directly. An OTC desk in a ramp does the same for a block of local currency going into stablecoins. It prices the whole amount at once, which is why it exists for large tickets.

The wider family of off-ramp and on-ramp models, including standalone OTC desks, is compared in [types of crypto off-ramps](/resources/more/types-of-crypto-off-ramps). This article is about one specific quote type inside an API.

## How is a BlindPay OTC quote different from a standard payin quote?

Set `is_otc: true` on a [payin quote](/docs/payin-quotes) and eight things change.

| | Standard payin quote | OTC payin quote |
| --- | --- | --- |
| Payment method | Any supported payin method | BRL over Pix |
| Token delivered | USDC or USDT, by network | USDT |
| Minimum | Per currency, R$10.00 for BRL | $5,000 USD equivalent |
| Quote window | 5 minutes | 10 seconds |
| Rate shown | `blindpay_quotation` is net of BlindPay's fee | `blindpay_quotation` equals `commercial_quotation` |
| Fee setting | Any `currency_type` and `cover_fees` | `sender` with `cover_fees: false`, or `receiver` with `cover_fees: true` |
| Pix deposit wait | Up to 30 minutes, with a reconciliation check | Until 23:59 Brasília time |
| Deposit never arrives | Payin marked `failed` | Payin fails, plus a flat $100.00 penalty |

Anything outside the OTC scope fails with `QUOTES_OTC_NOT_SUPPORTED`. The deposit windows come from the [payins reference](/docs/payins) and the [cut-off times reference](/docs/kb/cut-off-times).

## Why does an OTC quote last only 10 seconds?

Because the desk carries the market move for a large block while the price stands. The longer the window, the more the rate can drift, and a big ticket turns a small drift into real money. [Who carries FX risk in a stablecoin payout](/resources/more/who-carries-fx-risk-stablecoin-payout) works through the math: at 1% daily volatility, a 5-minute window carries about 6 bps of typical move, a 10-second window about 1 bp.

Ten seconds is a machine window, not a human one. Network latency, a page render, and a person reading the number would use most of it. So the design assumption is that your server requests the quote and creates the payin in the same request handler.

## Why does the payer get until 23:59 when the quote lasts 10 seconds?

Because there are two clocks. The quote window is the time you have to accept the price by creating the payin. The deposit window is the time the payer has to send the Pix.

For OTC Pix payins, BlindPay waits for the deposit until 23:59 Brasília time (America/Sao_Paulo) on the same day, or the next day if the quote was created after that time. The Pix code's own expiration is set to that same cutoff. Pix itself runs [24 hours a day, every day](https://www.bcb.gov.br/en/financialstability/pix_en), so the payer can send any time before the cutoff.

The $100.00 penalty is the other half of that deal. A large price was held for most of a day. If the money never comes, the party that did not send pays for the held price.

## When should you use an OTC quote instead of a standard one?

Use the decision rule below. Every condition in the first list should be true.

**Use an OTC quote when:**

- The payer sends BRL over Pix and you want USDT delivered.
- The deposit is $5,000 USD equivalent or more.
- Your backend can create the payin within 10 seconds of the quote, with no human step in between.
- The payer will reliably send the full amount the same day.
- You prefer the fee as its own line rather than inside the rate.

**Use a standard quote when:**

- You need USDC, or the payer uses SPEI, Transfers 3.0, PSE, ACH, or another rail.
- The deposit is under $5,000 equivalent.
- A person needs to review the amount before confirming. Five minutes covers that; ten seconds does not.
- The payer's timing is uncertain, and a $100.00 penalty for a no-show is not acceptable.

[USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) covers the token choice, and [how to on-ramp BRL, MXN, ARS, and COP](/resources/more/how-to-on-ramp-local-currency-latin-america) covers the standard quote for each local rail.

## How do you compare an OTC quote with a standard quote?

By the stablecoin amount received for the same reais. The rates are not comparable, because one includes the fee and the other does not.

**Illustrative example.** A payer sends R$100,000. The market rate is 5.40 BRL per USDT.

- **Standard quote:** the fee is inside the rate. Say `blindpay_quotation` is 5.4270, a 0.5% margin. The wallet receives 100,000 / 5.4270 = 18,426.39 USDT.
- **OTC quote:** the rate is the market rate, 5.40. Gross: 100,000 / 5.40 = 18,518.52 USDT, minus the fee lines.

Break-even: 18,518.52 - 18,426.39 = 92.13 USDT. With fee lines below about 92.13 USDT, the OTC quote delivers more; above it, the standard quote does. Every number here is illustrative. Pull both quotes at the same moment and compare `receiver_amount`.

[Crypto on-ramp fees explained](/resources/more/crypto-on-ramp-fees-explained) covers how to read each fee line on a payin quote.

## How do you build for a 10-second window?

Do everything that needs a person before you request the quote.

1. **Collect the amount and payer details first.** Validate the payer, the amount, and the destination wallet before pricing anything.
2. **Request the OTC quote server-side.**
3. **Create the payin immediately.** Call `POST /v1/instances/{instance_id}/payins/evm` with the quote's id as `payin_quote_id`, in the same handler. The path name is historical and covers Pix too.
4. **Show the Pix code.** The payin response carries `pix_code`, as copyable text or a QR code.
5. **Re-quote on a miss.** If creating the payin fails because the quote expired, request a new quote. Never retry with the old id.
6. **Track the deposit by webhook.** `payin.new`, `payin.update`, and `payin.complete` are listed in the [webhook events reference](/docs/learn/webhooks-events).

The quote request looks like this, with `request_amount` in minor units, so R$100,000.00 is `10000000`:

```json
{
  "blockchain_wallet_id": "bw_000000000000",
  "currency_type": "sender",
  "cover_fees": false,
  "request_amount": 10000000,
  "payment_method": "pix",
  "token": "USDT",
  "is_otc": true
}
```

Two more checks before you go live. First, limits: the maximum on any payin quote is the receiver's per-transaction limit, $10,000 to $50,000 by KYC tier by default, raised through a [limit increase](/docs/learn/limit-increase). Second, the payer's own bank applies its own Pix limits, so confirm a large payer can send the full amount in one transfer. Failed and late deposits are covered in [why crypto on-ramp deposits fail](/resources/more/why-crypto-on-ramp-deposits-fail).

## Is an OTC quote binding?

Inside its window, yes: you accept it by creating the payin before `expires_at`. That is the opposite of an indicative price, which only previews a rate. [Indicative rate vs binding quote](/resources/more/indicative-rate-vs-binding-quote-api) explains when to show each one.

Wholesale FX has rules for this distinction. The [FX Global Code](https://www.globalfxc.org/fx_global_code.htm) asks market participants to make clear whether the prices they provide are firm or merely indicative, and to disclose practices such as last look. Ask any OTC provider the same question in writing: once I accept inside the window, can you still reject or reprice?

For depth at large sizes on the payout side, run the [quote-ladder test](/resources/more/test-offramp-liquidity-depth). The terms used here are defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

*How we know: OTC scope, windows, cutoffs, and the penalty come from BlindPay's [payin quotes](/docs/payin-quotes), [payins](/docs/payins), and [cut-off times](/docs/kb/cut-off-times) documentation.*

## What to do next

If your BRL deposits regularly clear $5,000, read the OTC section of the [payin quotes docs](/docs/payin-quotes) and wire the quote and payin calls into one server handler before testing a live Pix.

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

---

Source: https://blindpay.com/resources/more/stablecoin-api-rfp-template

---
title: "Stablecoin API RFP template: sections, scoring, and a vendor scorecard"
seoTitle: "Stablecoin API RFP template and vendor scorecard"
description: "How to write an RFP for a stablecoin API: the eight sections to include, pass or fail gates, 1 to 3 weighted scoring, a copyable scorecard, and a timeline."
date: "2026-10-01"
updated: "2026-10-01"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to run an RFP for a stablecoin API"
  steps:
    - name: "Write the requirements section"
      text: "Describe your flow on one page: corridors and direction, monthly volume and typical payment size, tokens and networks you hold, who your end users are, and who must hold funds at each step. Vendors answer this section, so make it specific enough that two vendors cannot read it differently."
    - name: "Set the hard-minimum gates"
      text: "Pick the pass or fail requirements before any vendor replies: licensing for your flow, Travel Rule and sanctions controls, a written custody model, and your launch corridors live in production. A vendor that fails one gate is out, and its scores are never calculated."
    - name: "Send the RFP with a fixed answer format"
      text: "Send the same document to every vendor with numbered questions, a response template, a deadline, and a list of documents to attach. Ask for written answers only. Calls are useful for follow-ups, but they produce answers you cannot compare side by side."
    - name: "Score the answers on a 1 to 3 scale"
      text: "Score each criterion 1 (weak or missing), 2 (meets the need), or 3 (strong and proven with a document, link, or sandbox test). Multiply by the weight you set before sending the RFP, and add up totals only for vendors that passed every gate."
    - name: "Verify the top two in a sandbox"
      text: "Take the two highest-scoring vendors into their sandboxes and test the claims that drove their scores: quotes, failed and refunded payouts, webhook replays, and duplicate requests. Change a score when the sandbox disagrees with the written answer."
faq:
  - q: "What should a stablecoin API RFP include?"
    a: "Eight sections: your requirements and flow, corridors and rails, compliance and licensing, custody and flow of funds, technical integration, reliability and support, pricing, and contract terms. Each section should have numbered questions, a response format, and a list of documents to attach, so every vendor answers the same questions in the same shape and the answers can be scored side by side."
  - q: "How do you score stablecoin API vendors?"
    a: "Use gates first, then scores. Gates are pass or fail: licensing for your flow, Travel Rule and sanctions controls, a written custody model, and live launch corridors. Vendors that pass get a 1 to 3 score on each weighted criterion, where 3 means the answer is proven with a document, link, or sandbox test. Set the weights before any vendor replies."
  - q: "What are the hard minimums when choosing a stablecoin API?"
    a: "Most evaluation frameworks treat three things as pass or fail: the provider is licensed or registered for the role it plays in your flow, it runs Travel Rule and sanctions controls on the transactions it touches, and it can state in writing who holds funds and keys at every step. Add your launch corridors being live in production as a fourth gate."
  - q: "Why use a 1 to 3 scale instead of 1 to 10?"
    a: "A short scale forces a decision. On a 1 to 10 scale, reviewers cluster around 6 to 8 and real differences disappear in the noise. With 1 to 3, a score of 3 needs evidence, such as a document, a public docs link, or a sandbox result, so the scale rewards proof over confident answers in a sales deck."
  - q: "How long should a stablecoin API RFP take?"
    a: "About four to six weeks for most fintechs: one week to write the RFP and set gates, two weeks for vendors to answer, one week to score and ask follow-ups, and one to two weeks of sandbox checks on the top two. Compliance and contract review take the longest, so request those documents with the RFP, not after scoring."
  - q: "Should you share your volumes in a stablecoin API RFP?"
    a: "Yes, as ranges under a mutual NDA. Pricing, limits, and onboarding depend on monthly volume, payment size, and corridors, so a vendor that does not know them will quote a generic rate you cannot compare. Ranges such as $1 million to $3 million a month are enough. You do not need to share customer names or exact revenue."
---

A stablecoin API RFP (request for proposal) is a written document that asks every vendor the same numbered questions about corridors, compliance, custody, integration, reliability, pricing, and contract terms. Score the replies in two passes: pass or fail gates first, then a weighted 1 to 3 score on every criterion, using weights you set before anyone replies.

Most fintechs skip the RFP and go straight to demos. That works until three vendors describe "global coverage" in three different ways and nobody can say which is better. A short, structured RFP fixes that.

**Key takeaways**

- An RFP is useful because it fixes the questions and the answer format. Comparability is the whole point.
- Set the pass or fail gates and the weights before sending. Changing them after replies arrive invites bias.
- Gates come first: licensing, Travel Rule and sanctions controls, custody model, and live launch corridors.
- Score 1 to 3. A 3 needs proof, such as a document, a public docs link, or a sandbox test.
- Verify the top two vendors in a sandbox before signing. Written answers are claims until tested.

If you are still working out which part of the stack you are buying, read [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure) first, then [the types of stablecoin APIs](/resources/more/types-of-stablecoin-apis). An RFP only works when every vendor on the list is solving the same problem.

## What is a stablecoin API RFP?

A stablecoin API RFP is a document a buyer sends to several providers asking for written, structured answers about how the provider would handle the buyer's payment flow. It replaces open-ended sales calls with numbered questions, a response template, a deadline, and a list of required documents.

An RFP is different from a questionnaire. A questionnaire asks a vendor about itself. An RFP starts with your flow (corridors, volumes, users, custody needs) and asks how the vendor would serve it. That framing matters, because a stablecoin API that is strong for card issuing can be weak for local payouts, and only your flow tells you which one you need.

## What sections should a stablecoin API RFP include?

A stablecoin API RFP should include eight sections, each with numbered questions and a list of documents to attach. Put your own requirements first, so every answer that follows is about your flow.

| Section | What you write | What you ask the vendor | Documents to request |
| --- | --- | --- | --- |
| 1. Requirements and flow | Corridors, direction, monthly volume range, payment size, tokens and networks, end-user types | Confirm which parts of the flow you would handle, and which you would not | None |
| 2. Corridors and rails | Countries, currencies, and rails you need at launch and in 12 months | Which rail and country pairs are live in production, in which direction, with what settlement window | Rails list from public docs |
| 3. Compliance and licensing | Your own licenses, if any, and who your end users are | Which licenses or registrations cover your flow; who runs KYC, KYB, sanctions screening, Travel Rule, and monitoring | License list, AML and sanctions policy statement |
| 4. Custody and flow of funds | Who must hold funds at each step | Who holds stablecoins, fiat, and keys at each step; what happens to funds in a payment that cannot complete | Flow-of-funds diagram |
| 5. Technical integration | Your stack, languages, and ledger model | API style, OpenAPI spec, SDKs, sandbox access, webhooks, idempotency, error model | Docs links, sandbox credentials |
| 6. Reliability and support | Your uptime and support needs | SLAs, status page, incident history, support hours and channels, escalation path | SLA document, incident summary |
| 7. Pricing | Volume range and payment size per corridor | Itemized sample quotes for your top corridors, monthly fees, minimums, pre-funding needs | Sample quotes, order form |
| 8. Contract | Your legal requirements | Term, termination, notice, data export on exit, liability, change-of-terms process | Standard contract |

Keep the vendor questions to 40 or fewer across all eight sections. Long RFPs get long, vague answers. If you need a deeper question bank for a specific section, the [30 due diligence questions](/resources/more/stablecoin-payments-provider-due-diligence) are organized by category and drop into sections 3, 4, 6, and 8.

## Which requirements should be pass or fail gates?

Gates are the requirements where a weak answer cannot be offset by a strong score somewhere else. Procurement frameworks for stablecoin payments usually treat licensing, Travel Rule compliance, and the custody model as hard minimums, and most buyers add live corridors.

1. **Licensing for your flow.** The vendor holds the licenses or registrations needed for the role it plays in your flow, in the markets you pay into. In the US you can check federal money services business registration yourself in FinCEN's [MSB registrant search](https://www.fincen.gov/resources/msb-state-selector). [Which license a stablecoin payment flow needs](/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi) explains the categories.
2. **Travel Rule and sanctions controls.** The vendor screens every counterparty and transaction it touches and exchanges originator and beneficiary data where the Travel Rule applies.
3. **A written custody model.** The vendor states in writing who holds stablecoins, fiat, and keys at every step, and what happens to funds in a payment that fails. [Custodial vs non-custodial off-ramps](/resources/more/custodial-vs-non-custodial-off-ramps) covers why this matters in an insolvency.
4. **Launch corridors live in production.** Every corridor you need on day one is live today, in the direction you need. Roadmap items do not pass.

A vendor that fails one gate is out. Do not calculate its score. This keeps a cheap or well-documented vendor from winning on points while failing on the one thing that would stop your launch.

## How do you score answers on a 1 to 3 scale?

Score each criterion 1, 2, or 3, multiply by its weight, and add up. The short scale forces a decision and makes evidence the difference between a 2 and a 3.

| Score | Meaning | Evidence needed |
| --- | --- | --- |
| 1 | Weak, vague, or missing | None, or a sales claim only |
| 2 | Meets the requirement | A clear written answer |
| 3 | Strong and proven | A document, a public docs link, or a sandbox result that confirms the answer |

Weights depend on your business. A payroll platform paying contractors in Latin America will weight corridors and settlement heavily. A regulated bank will weight licensing, security, and contract terms. Decide the weights before sending the RFP and write them into the scoring sheet, so nobody adjusts them after a favorite vendor replies.

Two rules keep scoring honest:

- **Score per criterion, not per vendor.** Score all vendors on criterion 1, then all on criterion 2. Reading one vendor end to end inflates its scores.
- **Two scorers per section.** Engineering scores technical sections, compliance scores sections 3 and 4, finance scores pricing. Average the two, and discuss any gap of 2 points.

## What does a stablecoin API scorecard look like?

A scorecard lists every weighted criterion with blank score columns for each vendor, plus the gates above it. Copy the table below into a spreadsheet and adjust the weights to your flow. The weights shown are an example, not an industry standard.

**Gates (pass or fail for each vendor):** licensing for your flow, Travel Rule and sanctions controls, written custody model, launch corridors live.

| Criterion | Example weight | Vendor A (1 to 3) | Vendor B (1 to 3) | Vendor C (1 to 3) |
| --- | --- | --- | --- | --- |
| Corridors and rails beyond launch needs | 12% |  |  |  |
| Settlement windows per rail, in writing | 10% |  |  |  |
| Compliance split (KYC, KYB, screening, monitoring) | 10% |  |  |  |
| Supported stablecoins and networks | 6% |  |  |  |
| Quote and fee transparency | 12% |  |  |  |
| Pre-funding requirement | 8% |  |  |  |
| API design and OpenAPI spec | 8% |  |  |  |
| SDKs and sandbox access | 6% |  |  |  |
| Webhooks and event reliability | 8% |  |  |  |
| Reconciliation and reporting | 6% |  |  |  |
| SLAs, support, and refund handling | 8% |  |  |  |
| Contract terms and exit | 6% |  |  |  |
| **Weighted total (max 3.00)** | **100%** |  |  |  |

To get the weighted total, multiply each score by its weight and add the results. A vendor scoring 2 on everything totals 2.00. Anything above 2.50 means most answers came with proof.

For what a good and a bad answer look like on the six criteria that eliminate vendors fastest, see [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api).

## What questions belong in the technical section?

The technical section should ask how the API behaves when things go wrong, not only how a successful payment works. Every vendor can show a happy path in a demo.

Ask for:

- A link to the public API reference and an [OpenAPI](https://spec.openapis.org/oas/latest.html) description you can generate a client from.
- The list of official SDKs and the languages your team uses.
- Sandbox access without a sales call, and which production behaviors the sandbox does not reproduce. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) lists the usual gaps.
- How to trigger a failed and a refunded payment in the sandbox.
- How write requests stay safe to retry (idempotency keys, and for how long they are stored).
- How webhooks are signed, retried, and replayed, and whether events can arrive out of order. [Webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation) covers the patterns.
- The full list of payment statuses and which are terminal.
- Rate limits per endpoint and what the error response looks like.

## What should the pricing and contract sections ask?

The pricing section should ask for itemized sample quotes on your real corridors and amounts, and the contract section should ask what happens at the edges: exit, failure, and change.

For pricing, give each vendor the same three payments (for example, your median and largest payment on your top two corridors) and ask for the fee, the exchange rate, the reference rate it was compared to, the network fee, and the amount the recipient receives. Ask separately about monthly fees, minimum volumes, and any balance you must keep with the vendor. [Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) shows where fees sit outside the quote.

For the contract, ask about term and termination notice, data export on exit, liability caps, how fee changes are announced, and support response times. If you work with a bank partner, it will likely ask how you chose and monitor the vendor. US bank regulators' [2023 interagency guidance on third-party relationships](https://www.occ.gov/news-issuances/bulletins/2023/bulletin-2023-17.html) describes third-party risk management as a life cycle and says not every third party carries the same risk, so a scored RFP file is useful evidence later. For security, a [SOC 2](https://www.aicpa-cima.com/topic/audit-assurance/audit-and-assurance-greater-than-soc-2) report covers controls relevant to security, availability, processing integrity, confidentiality, or privacy, so ask which report the vendor has and for what period.

## What is a realistic RFP timeline?

Plan four to six weeks from first draft to signed contract. The slow parts are vendor answers and compliance review, not scoring.

| Week | Activity | Output |
| --- | --- | --- |
| 1 | Write requirements, set gates and weights, pick 3 to 5 vendors | RFP document and scoring sheet |
| 2 to 3 | Vendors answer in writing; you answer clarifying questions to all vendors at once | Written responses and documents |
| 4 | Apply gates, score, send follow-up questions | Ranked shortlist of two |
| 5 to 6 | Sandbox verification and contract review for the top two | Final scores and a decision memo |

Share clarifying answers with every vendor, not only the one who asked. Otherwise vendors answer slightly different RFPs.

## What are the limits of an RFP?

An RFP measures what vendors say and what their documents show. It does not measure what happens in production, and it rewards vendors that write well.

- **Written answers are claims.** Settlement windows, failure handling, and support quality only become facts in a sandbox or a small live pilot.
- **RFPs favor large vendors.** Big providers have teams that answer RFPs every week. A smaller provider with a better fit can lose on polish, so score content, not formatting.
- **Weights are judgment.** No framework weighting is an industry standard. Two reasonable teams can weight the same criteria differently.
- **An RFP does not replace a pilot.** Use it to pick two vendors, then test.

## How does BlindPay answer a stablecoin API RFP?

BlindPay is a stablecoin payout and collection API: it converts USDC and USDT into local currency over Pix, PIX Safe, TED, SPEI, ACH Colombia, Transfers 3.0, ACH, domestic wire, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations, and runs KYC, KYB, and sanctions screening inside the payment flow. It is registered with FinCEN as a Money Services Business (NMLS #2745309), and the status of other licenses is on the [licenses page](/licenses).

For the technical and pricing sections, most answers are public: development instances are free, there is no setup fee or monthly minimum, and SDKs cover Node.js, Python, Go, PHP, and Swift, as listed in the [SDK reference](/docs/sdks). Every payout quote returns the fee breakdown and the amount the recipient receives, and expires after 5 minutes. A [fee schedule endpoint](/docs/learn/billing) returns the flat and percentage fee per rail and network on your instance. In development, setting a payout's request amount to $666.00 or $777.00 forces a `failed` or `refunded` result, so both failure paths are testable before scoring. A refunded payout returns the stablecoins; a failed payout does not refund automatically and goes to support.

To score BlindPay with evidence instead of claims, create a development instance and run the [payout quickstart](/docs/quickstart-payout).

---

Source: https://blindpay.com/resources/more/stablecoin-card-for-travel

---
title: "Using a stablecoin card abroad: FX rates, markups, ATM fees, and when a normal debit card is cheaper"
seoTitle: "Using a stablecoin card abroad: FX, fees, and travel tips"
description: "How a stablecoin card prices purchases abroad: network FX rates, issuer markups, currency conversion, ATM fees, and when a fintech debit card costs less."
date: "2026-10-01"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Is a stablecoin card good for travel?"
    a: "It can be. The card pays merchants in local currency over Visa or Mastercard, so it works almost anywhere cards are accepted. The cost depends on the issuer's FX markup, which NGIBANK reports is commonly 1.5% to 3% on crypto cards, plus ATM fees. A card with no added markup on top of the network rate is the one to look for."
  - q: "Do stablecoin cards charge foreign transaction fees?"
    a: "Many do, usually as an FX markup on top of the card network's exchange rate. Some programs list no added markup: Coin Bureau describes Gnosis Pay as applying the Visa rate with no extra FX markup, and KAST lists 0.5% to 1.75% on non-USD spend. Check the live fee page before you travel, since fees change."
  - q: "Should I pay in local currency or my home currency abroad?"
    a: "Choose local currency. When a terminal or ATM offers to charge you in your home currency, that is dynamic currency conversion, and the merchant or ATM operator sets the rate. Paying in local currency lets the card network and your issuer convert instead, which is usually cheaper and easier to check."
  - q: "Is a crypto card cheaper than a fintech debit card abroad?"
    a: "Not always. NGIBANK's guide compares FX markups of 1.5% to 3% on crypto cards with 0% to 1% on good fintech debit cards. If your money is already in a bank account, a low-markup fintech card often wins. A stablecoin card makes most sense when your balance is already in USDC or USDT."
  - q: "Can I withdraw cash abroad with a stablecoin card?"
    a: "Usually yes, at ATMs on the card's network, but it is often the most expensive way to spend. NGIBANK describes a common pattern of a small free monthly quota followed by 1.5% to 2% per withdrawal, and KAST lists $3 plus 2%. The ATM operator may add its own fee on top."
---

A stablecoin card works abroad like any Visa or Mastercard debit card: the merchant gets local currency and your USDC or USDT balance pays for it. The cost comes from three layers: the network's exchange rate, the issuer's FX markup, and ATM or conversion fees. Pick a card with a low markup, always pay in local currency, and keep a backup card.

Travel is one of the reasons people get a stablecoin card in the first place. A dollar balance you can spend wherever the card network is accepted, without opening a bank account abroad, is useful. The programs are spreading too: Visa said in March 2026 that it runs more than 130 stablecoin-linked card programs across more than 50 countries. Usefulness and cost are separate questions, though, and this page is about the second one.

For how the card itself works, start with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card) and the hub page on [stablecoin card issuing](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Abroad, a stablecoin card pays merchants in local currency over the card network, like any debit card.
- The issuer's FX markup is the cost that varies most. NGIBANK reports 1.5% to 3% as common on crypto cards, against 0% to 1% on good fintech debit cards.
- Always decline dynamic currency conversion and pay in the local currency.
- ATM withdrawals are often the most expensive way to spend: a small free quota, then 1.5% to 2%, per NGIBANK.
- If your money already sits in a bank account, a low-markup fintech card can be cheaper than converting into stablecoins first.

## How does a stablecoin card pay in a foreign currency?

Two conversions happen. Your stablecoin converts to the card's billing currency, usually dollars, and the card network converts dollars into the merchant's local currency. The issuer can add a markup to either step.

> **Network rate:** the exchange rate Visa or Mastercard applies when a card is billed in one currency and the merchant charges in another.
>
> **FX markup:** a percentage the issuer adds on top of the network rate on foreign-currency purchases. Sometimes called a foreign transaction fee.
>
> **Dynamic currency conversion (DCC):** when the merchant or ATM offers to charge you in your home currency at a rate it sets.

A simple purchase abroad runs like this:

1. **You tap the card** at a cafe in Lisbon for EUR 4.50.
2. **The network converts** EUR 4.50 to dollars at its rate.
3. **The issuer adds its markup,** if it has one, and checks your balance.
4. **Your USDC is converted** into the dollar amount, at or near one to one, plus any spread.
5. **The merchant is paid in euros** on its normal schedule and never sees the stablecoin.

For the full authorization and settlement flow, see [how stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle).

## What does a purchase abroad actually cost?

Add the spread on the stablecoin conversion, the issuer's FX markup, and any ATM or DCC costs. The network rate itself is usually close to the market rate. The markups on top are where cards differ.

| Cost layer | What it is | Typical range or example | Source |
| --- | --- | --- | --- |
| Stablecoin conversion spread | Difference between the rate you get and one to one | Varies by provider | Check the provider |
| Issuer FX markup | Percentage added to foreign-currency purchases | Commonly 1.5% to 3% on crypto cards; 0% to 1% on good fintech debit cards | NGIBANK, March 2026 |
| No added markup | Network rate passed through | Gnosis Pay, Visa rate applies | Coin Bureau, March 2026 |
| Non-USD spend fee | Fee on purchases outside USD | KAST lists 0.5% to 1.75% | KAST fee page |
| ATM withdrawal | Fee above a free quota | Small free quota, then 1.5% to 2%; KAST lists $3 plus 2% | NGIBANK; KAST |
| Dynamic currency conversion | Merchant-set rate if you pay in home currency | Avoidable | Decline it |

A worked example, labeled illustrative. On a $2,000 trip spent in euros, a 2.5% markup costs $50. A 0.5% markup costs $10. ATM withdrawals of $300 above the free quota at 2% add $6 more. The card choice matters more than any single purchase.

[Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) walks through the full all-in calculation, including top-up and inactivity fees.

## Why should you decline dynamic currency conversion?

Because DCC hands the exchange rate to the merchant or ATM operator. Paying in local currency keeps the conversion with the card network and your issuer, where the rate is easier to check against the market.

The offer usually appears as a question on the terminal or ATM screen: pay in dollars or in euros? It looks helpful because you see a familiar number. Choose the local currency every time. The same applies to hotels and car rentals that ask at checkout.

## Do stablecoin card exchange rates change on weekends?

The stablecoin side does not stop on weekends, but FX markets for traditional currencies close. Some card providers add an extra buffer on weekend foreign-currency purchases to cover that gap. Check your card's fee page for weekend terms.

The safe habit is to plan large foreign-currency purchases, like a hotel deposit, for weekdays when you can, and to compare the rate on your statement with a public market rate after the trip. If a weekend surcharge shows up, you will see it there.

Hotel and car rental holds deserve a word too. A pre-authorization reserves more than the final bill, and on a just-in-time card that reserved amount sits against your stablecoin balance until the final charge clears. Leave headroom.

## When is a normal fintech debit card cheaper?

When your money already sits in a bank account. Converting fiat into stablecoins just to spend it abroad adds a step, and a fintech debit card with a 0% to 1% markup can beat a crypto card at 1.5% to 3%.

| Your situation | Usually cheaper option |
| --- | --- |
| Paid in USDC, traveling anywhere | Stablecoin card with a low FX markup |
| Paid in local fiat, low-markup fintech card available | Fintech debit card |
| Traveling in the US with a USD stablecoin balance | Stablecoin card with 0% USD spend, no FX step |
| Need cash for markets or taxis | Withdraw once, larger amount, to limit per-withdrawal fees |
| Hotel or car rental deposit | Card with enough headroom for the hold, often a credit card |

A stablecoin card is a good travel tool when your income or savings are already in stablecoins. It is not automatically the cheapest card in your wallet.

## What should you check before a trip?

Check fees, limits, and backup options a week before you leave. Most travel card problems are a declined payment at the wrong moment, not a fee.

1. **Read the live fee page** for FX markup, non-USD fees, ATM fees, and weekend terms.
2. **Confirm country support.** Some programs limit where the card works.
3. **Check spending and ATM limits** against your trip budget.
4. **Top up or keep enough balance,** including headroom for hotel holds.
5. **Turn on transaction alerts** so you see each authorization.
6. **Set up 3-D Secure** or app approvals for online bookings.
7. **Carry a backup card** from a different provider and network.
8. **Save the support contact** and know how to freeze the card from the app.

[Are stablecoin cards safe?](/resources/more/are-stablecoin-cards-safe) covers freeze controls, custody, and what happens if a program has an incident.

## Where does BlindPay fit for travel and dollar-account products?

Platforms that offer stablecoin cards to travelers or to people who want a dollar balance still need money to arrive and leave. BlindPay supplies those legs: funding in from bank transfers and paying out to local bank accounts.

Card issuers such as Bridge, which describes its card product as letting users "spend their stablecoin balances," handle the card. Visa and Bridge announced in April 2025 a program starting with Argentina, Colombia, Ecuador, Mexico, Peru, and Chile. Around a card like that, a platform needs a way for users to get dollars in and money back out to their bank.

With BlindPay, a platform can issue US virtual accounts that receive ACH, wire, or SWIFT deposits and convert them into USDC or USDT in the user's wallet ([virtual accounts docs](/docs/virtual-accounts)). In the other direction, it pays stablecoins out as local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with the rate and fees shown in a live quote before the stablecoins move and no pre-funding. That covers the rent and bills a card cannot pay, which [how freelancers spend USDC](/resources/more/how-freelancers-spend-usdc) explains from the user's side.

## What should you do next?

Before your next trip, compare your card's FX markup with one fintech debit card, set alerts, and pack a backup. If you are building a travel or dollar-account product, map the funding and cash-out legs next to the card, and test them on a free development instance with the [payout quickstart](/docs/quickstart-payout).

## Sources

- Visa, [How stablecoin-linked cards are modernizing money movement](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement), March 31, 2026
- NGIBANK, [crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide), March 3, 2026
- Coin Bureau, [best crypto debit cards](https://coinbureau.com/analysis/best-crypto-debit-cards), March 11, 2026
- KAST, [fees and conditions for KAST cards and accounts](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts)
- Visa, [Visa and Bridge partner to make stablecoins accessible for everyday purchases](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21371.html), April 30, 2025
- Bridge, [Cards](https://www.bridge.xyz/product/cards)

---

Source: https://blindpay.com/resources/more/stablecoin-payment-licenses-msb-mtl-vasp-emi

---
title: "MSB vs money transmitter license vs VASP vs EMI: which license does a stablecoin payment flow need?"
seoTitle: "MSB vs MTL vs VASP vs EMI: stablecoin payment licenses"
description: "MSB registration, state money transmitter licenses, VASP, EMI, and PSAV compared: who needs each, what triggers it, and when your provider covers you."
date: "2026-10-01"
updated: "2026-10-10"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Is FinCEN MSB registration the same as a money transmitter license?"
    a: "No. MSB registration is a federal filing with FinCEN under 31 CFR 1022.380, due within 180 days of starting business and renewed every two calendar years. A money transmitter license is issued by each state, with its own net worth, surety bond, and investment rules. A US money transmitter usually needs both: one federal registration and a license in each state where it serves customers."
  - q: "Does a company that pays its own suppliers in stablecoins need a license?"
    a: "Usually not. Licensing follows the act of moving money for someone else. A company paying its own suppliers or contractors from its own funds, through a licensed provider, is a user of the payment system. The picture changes when it collects money from one party to pass to another, as a marketplace or payroll platform does. Confirm your own structure with counsel."
  - q: "What is the difference between a VASP and a money transmitter?"
    a: "VASP is FATF's activity category: exchanging, transferring, or safekeeping virtual assets for others. Each country implements it through its own law. In the US the same activities fall under FinCEN's money transmitter definition and state licensing. In the EU they need MiCA authorization as a crypto-asset service provider. In Brazil they need PSAV authorization from the Central Bank."
  - q: "Do you need an EMI license to use stablecoins in Europe?"
    a: "Only to issue them. MiCA Article 48 lets only a credit institution or an electronic money institution offer an e-money token, such as a euro or dollar stablecoin, to the public in the EU. Exchanging, transferring, or holding stablecoins for EU customers needs crypto-asset service provider authorization instead. A business that just pays and gets paid through an authorized provider needs neither."
  - q: "Does my payment provider's license cover my customers?"
    a: "Only the customers your provider has onboarded and can see. A provider's license covers the activity it performs for parties it has verified. If you pool funds from your own users and push them through one provider account, the provider can't see who owns the money, and the activity may fall outside its coverage and inside your own licensing perimeter."
  - q: "Can a crypto payment processor use the payment processor exemption?"
    a: "Generally not in the US. FinCEN's 2019 guidance says payment processors that accept convertible virtual currency from customers and pay merchants are money transmitters, because they do not meet every condition of the exemption. One condition is operating through clearance and settlement systems that admit only BSA-regulated financial institutions, and public blockchains don't qualify."
---

A stablecoin payment flow needs a license wherever someone accepts money from one party and moves it to another. In the US that means FinCEN MSB registration plus state money transmitter licenses. The EU requires MiCA authorization, and Brazil a PSAV. A business that pays and gets paid through a licensed provider usually needs none of them.

This article is general information, not legal advice. Licensing turns on your exact structure, so confirm your obligations with qualified counsel before launch.

**Key takeaways**

- FinCEN MSB registration is federal and is not a license. State money transmitter licenses are separate, and a US transmitter usually needs both.
- VASP is an activity category from FATF, not a single license. Each country turns it into its own regime.
- An EMI license matters for issuing an e-money token in the EU, not for using one.
- The trigger is almost always the same: accepting value from one person and transmitting it to another, or exchanging and holding crypto for customers.
- A provider's license covers the parties it onboards and can see. Pooling other people's money through your account moves the risk back to you.

The [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis) guide explains who holds funds in each provider model. This page answers the follow-up question: which license sits behind each role.

## What licenses apply to stablecoin payments?

Five regimes cover most stablecoin payment flows into and out of the Americas and Europe: US federal registration, US state licensing, MiCA, EU e-money, and national VASP regimes like Brazil's.

| License or registration | Region | Who grants it | Who needs it | Typical trigger |
| --- | --- | --- | --- | --- |
| MSB registration | United States (federal) | FinCEN | Money transmitters, currency dealers, and other money services businesses, including foreign firms doing business in the US | Accepting and transmitting funds or value for others |
| Money transmitter license (MTL) | United States (each state) | State financial regulators | Firms transmitting money for residents of that state | Same activity, assessed state by state |
| CASP authorization | European Union | National competent authority under MiCA | Firms exchanging, transferring, or holding crypto-assets for EU clients | Providing crypto-asset services in the EU |
| Electronic money institution (EMI) | European Union | National competent authority under the E-Money Directive | Issuers of e-money, including e-money tokens under MiCA | Issuing a euro or dollar stablecoin to the public |
| PSAV authorization | Brazil | Banco Central do Brasil | Firms providing virtual asset services to people in Brazil, onshore or offshore | Exchanging, transferring, or holding virtual assets for Brazilian clients |

The UK runs its own regime: cryptoasset firms register with the FCA under the money laundering regulations today, and the FCA's [new cryptoasset regime](https://www.fca.org.uk/publications/policy-statements/cryptoasset-regime) expands authorization from October 25, 2027, with applications open from September 30, 2026 to February 28, 2027.

## What is the difference between an MSB and a money transmitter license?

MSB status is a federal registration with FinCEN, and a money transmitter license is a state permission. They stack. They don't replace each other.

**The federal layer.** Under [31 CFR 1010.100(ff)(5)](https://www.law.cornell.edu/cfr/text/31/1010.100), money transmission means accepting currency, funds, or other value that substitutes for currency from one person and transmitting it to another location or person by any means. FinCEN's [2019 guidance on convertible virtual currency](https://www.fincen.gov/sites/default/files/2019-05/FinCEN%20Guidance%20CVC%20FINAL%20508.pdf) (FIN-2019-G001) confirms that stablecoins count as value that substitutes for currency.

A money services business registers under [31 CFR 1022.380](https://www.law.cornell.edu/cfr/text/31/1022.380):

1. File within 180 days of the day the business is established.
2. Renew every two calendar years.
3. Re-register after a transfer of more than 10% of voting power or equity, or a jump of more than 50% in agents.
4. Keep a list of agents. A firm that is an MSB only because it acts as another MSB's agent doesn't register itself.
5. If the firm is located abroad but does business in the US, name a US agent for service of legal process.

Registration comes with a full AML program: policies, a compliance officer, training, and independent review.

**The state layer.** Each state licenses money transmitters separately, with its own capital, bonding, and examination rules. The Conference of State Bank Supervisors drafted the [Money Transmission Modernization Act](https://www.csbs.org/csbs-money-transmission-modernization-act-mtma) to standardize net worth, surety bond, and permissible investment requirements. As of September 2026, CSBS reports that 31 states have enacted it in full or in part. Everywhere else, the old state rules still apply.

That's why US licensing takes years to build. One federal filing, then dozens of state applications.

## Is a VASP license the same as a money transmitter license?

No. VASP is a category FATF created in 2019, and each country decides which license a VASP needs.

The FATF activity list is short: exchanging virtual assets for fiat or for other virtual assets, transferring them, safekeeping them, and taking part in issuance. The [VASP explainer](/resources/more/what-is-a-vasp) walks through each one.

What changes is the implementation:

- **United States.** No separate VASP license. The same activities fall under FinCEN money transmission and state MTLs.
- **European Union.** [MiCA](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32023R1114) Article 59 says nobody may provide crypto-asset services in the EU unless authorized as a CASP, or already licensed as a bank, investment firm, EMI, or similar entity allowed to offer them. The transitional period for firms already operating ended on July 1, 2026 at the latest.
- **Brazil.** Central Bank Resolutions 519, 520, and 521 took effect on February 2, 2026 and require PSAV authorization for anyone serving Brazilian clients. See [PSAV in Brazil explained](/resources/more/psav-brazil-explained).

So "are you a licensed VASP?" is an incomplete question. Ask which regime, in which country, for which activity.

## When do you need an EMI license for stablecoins?

You need an EMI license, or a banking license, to issue a euro or dollar stablecoin to the public in the EU. Not to hold or spend one.

MiCA Article 48 says a person may not offer an e-money token to the public in the EU unless it is the issuer and is authorized as a credit institution or an electronic money institution. The [E-Money Directive](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32009L0110) sets the EMI baseline, including initial capital of at least EUR 350,000.

That's why Circle holds an EMI license in France for USDC and EURC, and why exchanges restricted USDT for EU clients. [MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) has the details. For a payments company, the EMI question is mostly about your supplier: is the stablecoin you move issued by an authorized EMI, and is your provider authorized to handle it?

## What triggers a license, and what doesn't?

The trigger is control over someone else's money in transit. The activity matters, not what you call your company.

Activities that usually trigger licensing:

1. Accepting funds or stablecoins from one party and sending them to another.
2. Exchanging stablecoins for fiat, or one crypto-asset for another, on behalf of customers.
3. Holding customer balances or private keys.
4. Issuing a stablecoin.
5. Collecting from buyers and paying sellers as a marketplace that touches the money.

Activities that usually don't:

1. Accepting stablecoins as payment for your own goods or services. FinCEN's 2019 guidance treats that business as a user, not a transmitter.
2. Paying your own suppliers, contractors, or employees from your own funds.
3. Providing software that never takes control of the value, such as unhosted wallet software.

One trap catches crypto payment processors. US rules exempt payment processors that facilitate the purchase of goods through a clearance and settlement system by agreement with the seller. FinCEN's 2019 guidance says CVC payment processors are money transmitters anyway, because they don't meet every condition, including running through settlement systems that admit only BSA-regulated financial institutions. A public blockchain isn't one.

## Does your provider's license cover your activity?

A provider's license covers what the provider does for the parties it has onboarded. It doesn't stretch to customers it can't see.

| Your setup | Who is moving the money | Licensing exposure |
| --- | --- | --- |
| You pay your own contractors through a provider | The provider, for you | Low. You're the provider's customer |
| You collect stablecoins for your own sales | You receive, the provider converts | Low. You're a user |
| Your platform onboards each end customer directly with the provider | The provider, for each verified customer | Lower. The provider can see every party |
| You pool users' money in one provider account and pay out on their behalf | You | High. You may be transmitting for others |
| Your app holds user stablecoin balances in wallets you control | You | High. You're custodying value for others |

The pooled row is the one that surprises teams. Money moving through your account for parties the provider never verified looks, to the provider, like your own activity. To a regulator, it looks like unlicensed transmission. [Who owns compliance in a crypto on-ramp](/resources/more/crypto-on-ramp-compliance-who-owns-what) runs the same test from the on-ramp side.

BlindPay draws that line explicitly: its [nested payments rule](/docs/kb/nested-payments) bars customers from moving money for any party BlindPay hasn't onboarded or can't see. A platform that needs to serve its own customers can open a separate instance and onboard them directly, so every party sits inside the verified flow.

## Who is responsible for what when you use a licensed provider?

Responsibility splits, but it never disappears. This matrix assumes you don't hold customer funds and every party is onboarded with the provider.

| Duty | You | Provider | Shared |
| --- | --- | --- | --- |
| Onboarding (KYC and KYB) | Collect accurate data, describe your business truthfully | Verify identity, ownership, and documents | Keep data current when it changes |
| Sanctions screening | Follow OFAC and local sanctions as a business | Screen customers, counterparties, and wallets | Escalate matches fast |
| Transaction monitoring | Watch for misuse of your own product | Monitor payments flowing through its platform | Answer information requests |
| Suspicious activity reporting | File your own reports if you are a regulated entity | File reports on activity it sees | Cooperate on investigations |
| Record retention | Keep invoices, contracts, and approvals for each payment | Keep transaction and KYC records under its own rules | Produce records for audits |
| Disputes and complaints | Handle your end users' complaints | Handle failed or returned payments | Agree on who answers first |

The left column never goes to zero. A [merchant accepting stablecoins](/resources/more/do-merchants-need-a-license-to-accept-stablecoins) still owns sanctions compliance and tax records, even without a license.

## What should you ask before launching?

Eight questions cover most of the licensing risk:

1. Which entity holds which license, in which country, for which activity?
2. Does the provider's coverage include your customers' countries, or only yours?
3. Will every one of your end customers be onboarded with the provider, or will funds pool in your account?
4. Do you ever hold customer funds or keys, even for a few minutes?
5. Which stablecoins does the provider support, and who issues them?
6. Who files suspicious activity reports on your flows?
7. What does the provider need from you in writing about your business model?
8. What happens to your flows if the provider loses a license or a banking partner?

BlindPay runs KYC, KYB, sanctions screening, and travel rule checks inside the payment flow, before money moves, and publishes its license status on its [licenses page](/licenses). The KYC requirements are in the [KYC reference](/docs/kb/kyc).

Start with question 3. Draw your fund flow on one page, mark every moment your company touches someone else's money, and take that diagram to counsel.

Running a card program across several countries? The [country readiness template for cross-border card compliance](/resources/more/cross-border-stablecoin-card-compliance-by-country) lays out onboarding rules, funding rails, and payout rails per market.

---

Source: https://blindpay.com/resources/more/best-virtual-account-providers-stablecoins

---
title: "Best virtual account providers for stablecoins in 2026: BlindPay, Bridge, HIFI, Noah, and Conduit compared"
seoTitle: "Best virtual account providers for stablecoins in 2026"
description: "Five virtual account providers for fiat and stablecoins compared on deposit rails, settlement chains, account naming, and custody, plus a 30-day test plan."
date: "2026-09-30"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is the best virtual USD account for stablecoins?"
    a: "There isn't one best account for everyone. The right one accepts the rails your payers use (ACH, wire, SWIFT, RTP, or FedNow), shows a name they accept, and settles the stablecoin and chain your treasury runs on. BlindPay, Bridge, HIFI, Noah, and Conduit all document USD accounts tied to stablecoins. Compare them on those three points first, then on sandbox and pricing."
  - q: "Can a virtual account receive USD and settle in USDT?"
    a: "Yes, at several providers. BlindPay settles to USDC or USDT, and USDT needs a wallet on Polygon, Ethereum, or Solana. HIFI supports USDT with a $10 minimum deposit, and smaller deposits are returned to the sender. Bridge lists USDT among its supported tokens, with only USDC and EURC available to users in the EEA. Check the chain before you check the token."
  - q: "Do stablecoin virtual accounts hold a balance?"
    a: "Most don't. At BlindPay, HIFI, Noah, and Bridge, each deposit converts and settles to a wallet, so the account itself is a routing address rather than a place money sits. Conduit is the exception in this comparison: its announcement describes holding and checking a USD balance in real time. Decide whether you want fiat to sit or move."
  - q: "Can I give each of my customers' clients their own virtual account?"
    a: "Only if every client is onboarded and verified as a customer in their own right. Issuing accounts to parties the provider never screened, so your customer can collect on their behalf, is called nesting, and providers freeze or close accounts used that way. If you need accounts for end clients, onboard them directly or ask the provider about a separate instance."
  - q: "Can I test a virtual account provider without moving real money?"
    a: "Yes, and you should. BlindPay gives you a free development instance where accounts approve instantly and payins auto-complete about 30 seconds after creation. HIFI and Noah document endpoints that simulate a deposit in sandbox. Bridge creates virtual accounts with dummy data in sandbox after you onboard a developer account through its support team."
---

The best virtual account provider for stablecoins is the one whose accounts accept your payers' rails, show a name they trust, and settle the token and chain your treasury uses. BlindPay, Bridge, HIFI, Noah, and Conduit all connect fiat deposits to USDC or USDT, but they differ on currencies, naming, custody, and testing.

This page compares them on facts from their public docs, checked on 2026-09-30. No scores, no ranking. For the full criteria list, see [how to choose a virtual account provider](/resources/more/how-to-choose-a-virtual-account-provider).

## Key takeaways

- All five providers connect USD deposits to stablecoins. The differences are the rails in, the currencies, the name on the account, and where settlement lands.
- BlindPay, HIFI, and Noah document USD accounts. Bridge also lists EUR, MXN, BRL, GBP, and COP accounts. Conduit lists USD, with GBP and EUR in early access.
- Deposit rules decide which payments actually land: minimums, third-party sender limits, and beneficiary name matching.
- Run a 30-day evaluation with simulated deposits and a small production pilot before you sign anything.

## What are the most common use cases for virtual accounts with stablecoins?

The most common use cases are collecting money in one currency and moving it as stablecoins: marketplace payouts, B2B collections, remittance, payroll, SaaS billing, treasury, and freelancer payments. In each one, the account number identifies who paid, and the stablecoin leg moves the money after.

- **Marketplace payouts.** A marketplace onboards each seller as a verified customer and issues a USD account in the seller's name. Buyers' wires settle to the seller's wallet in USDC, and the seller cashes out over a local rail.
- **B2B collections.** A Mexican software exporter gets a US account so its US clients can pay invoices by ACH. Deposits settle in USDC and convert to pesos when the finance team needs them.
- **Remittance.** A remittance app gives each US sender an account to fund transfers by ACH or wire. Funds settle as stablecoins and pay out over Pix or SPEI on the other side.
- **Payroll.** A payroll platform's employer customer wires the monthly payroll into its own account. The deposit settles in USDC, and contractors in five countries are paid from that balance the same day.
- **SaaS billing.** A SaaS company collects annual contracts by wire into one named account it owns. The invoice reference and amount match each payment, and settlement lands in the company's treasury wallet.
- **Treasury.** A company that holds idle dollars wires from its operating bank into its own account and settles to USDC, keeping the bank account for payroll and taxes.
- **Freelancer payments.** A platform onboards freelancers as individual customers so their US clients can pay by ACH. Eligibility depends on the freelancer's country and whether they're an individual or a business, so check it before you design onboarding.

One rule cuts across all seven. Each account should hold money that belongs to the verified customer it was issued to. An account per end client of your customer, when those clients were never onboarded, is nesting, and BlindPay's position is in [nested payments](/docs/kb/nested-payments).

## Which providers issue virtual accounts that settle to stablecoins, and how do they compare?

Five providers publicly document virtual accounts that connect fiat deposits to stablecoins: BlindPay, Bridge, HIFI, Noah, and Conduit. The table compares what each one's docs state. Where a fact wasn't in the docs reviewed, the cell says so.

| Provider | Account currencies and rails in | Stablecoins and chains out | Name on the account | Where settlement lands | Sandbox |
| --- | --- | --- | --- | --- | --- |
| [BlindPay](/virtual-accounts) | USD only. ACH, wire, and SWIFT (POBO/COBO), depending on account type. No RTP into the account | USDC or USDT. USDT needs a Polygon, Ethereum, or Solana wallet | The customer's name. Payouts from the account go out under that name | An external wallet the customer controls, one wallet per account | Free development instance. Accounts approve instantly |
| [Bridge](https://apidocs.bridge.xyz/get-started/guides/move-money/virtualaccounts) | USD (ACH and wire), EUR IBAN (SEPA), MXN CLABE (SPEI), BRL (Pix), GBP (FPS), COP (Bre-B). Pix, FPS, and Bre-B accept first-party and third-party business payments only | USDC, USDT, PYUSD, EURC, and others across chains including Ethereum, Solana, Base, Polygon, Stellar, and Tron. Only USDC and EURC for EEA users | Issued in the customer's name | The destination wallet address set on the account | Sandbox with dummy account data, after onboarding through support |
| [HIFI](https://docs.hifi.com/v3/core/orchestration/virtual-accounts) | USD. ACH, wire, and RTP | USDC or USDT on chains including Ethereum, Polygon, Solana, Base, and Tron. USDT has a $10 minimum | Bound to one user. Payers must match the beneficiary name in the instructions | A HIFI wallet or an external wallet. Optional rules split each deposit across wallets | Sandbox with a simulate-deposit endpoint |
| [Noah](https://docs.noah.com/recipes/payin/bank-onramp-us) | USD. Standard ACH, same-day ACH, wire, and SWIFT | USDC. Sandbox examples use Polygon and Solana testnets; production chains aren't listed on the onramp guide | Not stated as a rule. The sample response shows a Noah entity as holder | Optionally withdrawn to the customer's external address | Self-serve sandbox signup with a simulate-deposit endpoint |
| [Conduit](https://conduitpay.com/blog/multi-currency-virtual-accounts) | USD, with GBP and EUR in early access. Inbound deposits from third parties | Pay-ins and payouts in USDC and USDT. Chains not stated in the announcement | The business's own name | A USD balance in the account, with payouts in stablecoins or 15 fiat currencies | Not stated in the announcement. Available through web app and API |

Rails, chains, and coverage change often. Treat the table as a snapshot and confirm each row with the provider before you commit.

A few details in the docs matter more than the table can show:

- **BlindPay** puts every account through compliance review and then bank review, with issuance SLAs of 24 hours or 3 to 5 business days depending on account type. Each deposit becomes a payin with its own fee fields. Details are in [virtual accounts](/docs/virtual-accounts).
- **Bridge** requires customers to be KYC or KYB approved before an account is created, and lets you add a developer fee on each transaction. Its routes page warns that deposits to unsupported token and chain pairs may be lost for good.
- **HIFI** binds each account to one destination wallet and one stablecoin. Deposits below the $10 USDT minimum are returned to the sender rather than converted.
- **Noah** lists sender guardrails: US-resident customers can receive third-party deposits only from registered businesses, and any single transaction above 10,000 USD triggers an enhanced due diligence review. USD accounts work only with its Standard Model KYC.
- **Conduit** describes accounts that hold a balance and support named pay-ins and payouts, which is a different model from accounts that convert every deposit on arrival.

## Which type of provider fits which business?

Match the provider's model to the money flow, not to the length of its currency list. Five models show up in this comparison, and most businesses need one of them.

1. **USD collection plus global payout (BlindPay).** Fits teams that collect USD from US and foreign payers into accounts in their customers' names, settle to stablecoins in an external wallet, and pay out to local rails. Payouts go over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations, to 100+ countries.
2. **Multi-currency local accounts (Bridge).** Fits teams whose payers send EUR by SEPA, pesos by SPEI, reais by Pix, or pounds by Faster Payments, and who want one API for all of them.
3. **Hosted wallets with split rules (HIFI).** Fits teams that want the provider to hold the settlement wallet, or need each deposit split across several wallets automatically.
4. **Wallet app on-ramp (Noah).** Fits wallet and consumer products that need ACH, wire, and SWIFT into USDC, and can work within documented per-sender limits.
5. **Balance-holding account (Conduit).** Fits businesses that want a USD balance first and treat stablecoins as one way to pay out.

Size and region matter too. An early-stage team wants a sandbox it can open today and published account pricing. A team with customers outside the US needs to know which customer countries and entity types are eligible before it promises accounts to anyone.

## What mistakes do teams make when choosing a provider?

The common mistakes come from comparing marketing pages instead of deposit rules. Six show up again and again:

- **Choosing on the currency list alone.** A provider that lists ten currencies but doesn't accept your payers' rail is the wrong provider.
- **Ignoring the name on the account.** Payers and their banks check the beneficiary name. Some payers won't send to an account in a provider's name, and HIFI's instructions warn that a deposit may be rejected when the beneficiary name doesn't match the account holder. The difference is explained in [virtual account vs virtual IBAN](/resources/more/virtual-account-vs-virtual-iban).
- **Skipping the sender rules.** Third-party deposit limits, minimum amounts, and enhanced review thresholds decide which payments land. Read them before launch, not after the first returned wire.
- **Assuming any chain works.** Token and chain pairs are fixed per provider. USDT at BlindPay needs a Polygon, Ethereum, or Solana wallet, and HIFI applies a $10 minimum to USDT deposits.
- **Planning accounts for unverified end clients.** That's nesting, and it gets accounts frozen.
- **Testing only the happy path.** Failed deposits, returns, and duplicate webhooks are where reconciliation breaks.

## What does a 30-day evaluation plan look like?

A 30-day plan gives you a shortlist in week one, sandbox results in week two, a real pilot in week three, and a decision in week four. Each week produces something you can show your team.

1. **Days 1 to 7: requirements and questions.** Write down the rails your payers use, the currencies, the settlement token and chain, the name the payer must see, and who should hold the wallet. Send the [12 questions](/resources/more/how-to-choose-a-virtual-account-provider) to two or three providers and ask for answers per account type.
2. **Days 8 to 14: sandbox.** Create test accounts and push deposits through them, including the failure and return cases. Check that every deposit produces its own event with amounts and fees. The [sandbox test plan](/resources/more/how-to-test-virtual-accounts-sandbox) lists the cases.
3. **Days 15 to 21: production pilot.** Onboard three to five real customers. Measure approval time, which documents the bank asks for, and the time from a real deposit to stablecoin in the wallet. The document list is in [virtual account requirements](/resources/more/virtual-account-requirements-kyc-kyb).
4. **Days 22 to 30: score and decide.** Fill in the weighted scorecard, model the monthly cost at your expected volume, and get pricing in writing. The fee stack is broken down in [virtual account fees](/resources/more/virtual-account-fees).

**Worked example (illustrative).** A fintech expects 200 customer accounts and 300 deposits a month, averaging $2,000 each, so $600,000 a month. It asks each shortlisted provider for an all-in monthly quote at that volume: account fees plus deposit fees. With hypothetical numbers, Provider A quotes 0.30% per deposit and no account fee ($1,800 a month), and Provider B quotes $1.50 per account plus a flat $3 per deposit ($300 plus $900, so $1,200 a month). The cheaper quote isn't the decision yet. The sandbox is next.

In week two, the team runs 40 sandbox deposits, including 2 failures, 2 returns, and 1 deliberately replayed webhook. One provider's events don't include the fee on the deposit record, so the team can't reconcile without the invoice. That provider drops out.

In week three, 5 pilot customers apply. Four are approved inside the published SLA, and one bank review asks for source of funds documents, which restarts that clock. The first real ACH deposit takes 2 business days to arrive and settles in minutes after that. At BlindPay, the team also checks both fee paths: deposits of $100 or more show the fee deducted on the payin, smaller ones accrue to the invoice, and both fields reconcile to the ledger.

In week four, the weighted scores land at 4.1 and 3.6 out of 5. The team signs with the higher score and keeps the other as a backup for a currency it doesn't need yet.

## Where does BlindPay fit?

BlindPay fits teams that collect USD into accounts named for their own verified customers and want deposits to settle as stablecoins in a wallet the customer controls. Accounts receive ACH, wire, and SWIFT (POBO/COBO) depending on account type, and settle to USDC or USDT. The same API pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT, to 100+ countries.

Accounts cost $1.50 per month each. Every deposit is its own payin with its own fee fields, and the request is one call once the customer's KYC is approved, as shown in [create a virtual account](/docs/virtual-accounts-create).

Consider another provider, or pair one with BlindPay, if:

- You need EUR, GBP, MXN, BRL, or COP accounts. BlindPay issues US accounts only, with no IBANs or virtual IBANs.
- Your payers want to send instant RTP or FedNow payments into the account. BlindPay accounts take ACH, wire, and SWIFT.
- You want the provider to hold the settlement wallet or split deposits across wallets.
- You want a fiat USD balance to sit in the account rather than settle on arrival.

For the concepts behind each column, start with [what is a virtual account](/resources/more/what-is-a-virtual-account).

## Methodology and sources

Each provider row is based on that provider's public docs or site, checked on 2026-09-30. Providers were included because they publicly document virtual accounts that connect fiat deposits to stablecoins. Where a capability wasn't stated in the pages below, the table says so rather than guessing. BlindPay is our product, so it's listed first and described from its own docs.

- BlindPay: [virtual accounts](/docs/virtual-accounts), [create a virtual account](/docs/virtual-accounts-create), [supported chains](/docs/kb/supported-chains), [POBO and COBO](/docs/kb/pobo-cobo)
- Bridge: [virtual accounts guide](https://apidocs.bridge.xyz/get-started/guides/move-money/virtualaccounts), [USD integration guide](https://apidocs.bridge.xyz/get-started/guides/move-money/usd-integration-guide), [payment routes](https://apidocs.bridge.xyz/get-started/introduction/what-we-support/payment-routes), [sandbox setup](https://apidocs.bridge.xyz/get-started/introduction/quick-start/setting-up-sandbox)
- HIFI: [virtual accounts](https://docs.hifi.com/v3/core/orchestration/virtual-accounts), [on-chain assets](https://docs.hifi.com/v3/docs/references/onchain-assets), [sandbox](https://docs.hifi.com/v3/docs/introduction/sandbox)
- Noah: [bank onramp via USD virtual account](https://docs.noah.com/recipes/payin/bank-onramp-us)
- Conduit: [multi-currency virtual accounts](https://conduitpay.com/blog/multi-currency-virtual-accounts)

## What to do next

Pick the two providers whose rails in and settlement out match your payers, then start week two today. Open a free BlindPay development instance, create a test account with [create a virtual account](/docs/virtual-accounts-create), and push your first simulated deposits through it.

*This article is for general information only and is not legal, tax, or financial advice. Provider capabilities change, so confirm details with each provider before you commit.*

---

Source: https://blindpay.com/resources/more/hidden-fees-international-wires-our-sha-ben

---
title: "Hidden fees in international wires: OUR, SHA, BEN, and a 7-point quote audit"
seoTitle: "Hidden wire fees: OUR, SHA, BEN and a 7-point quote audit"
description: "Why suppliers get short-paid on international wires: SWIFT charge codes, intermediary deductions, and FX markups. Plus a 7-step audit for any quote."
date: "2026-09-30"
updated: "2026-09-30"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to audit a cross-border payment quote in 7 steps"
  steps:
    - name: "Get the mid-market rate and the offered rate"
      text: "Write down the mid-market rate at the moment you request the quote, next to the exchange rate the provider offers."
    - name: "Compute the spread"
      text: "Divide the gap between the two rates by the mid-market rate. That percentage is the FX markup you pay on the whole amount."
    - name: "List every fee line"
      text: "Collect the sending fee, any surcharge for the charge option, receiving fees, and network fees in one place."
    - name: "Ask who can deduct from the amount"
      text: "Find out the SWIFT charge code (OUR, SHA, or BEN) and whether intermediary or receiving banks can take fees out of the payment."
    - name: "Confirm the amount the recipient gets"
      text: "Ask for the exact amount in the recipient's currency and whether it is guaranteed or an estimate."
    - name: "Check how long the quote is locked"
      text: "Find out when the rate expires and what happens if you confirm after that."
    - name: "Test it on your real corridor and size"
      text: "Send one real payment on your most common corridor and amount, and compare what landed with what the quote promised."
faq:
  - q: "What do OUR, SHA, and BEN mean on a wire transfer?"
    a: "They are the three charge codes in field 71A of a SWIFT MT103 payment message. OUR means the sender pays all transaction charges. SHA means each side pays its own bank's charges. BEN means the beneficiary pays all charges, so they are deducted from the amount. The code decides whether the recipient gets the full invoice amount."
  - q: "Why did my supplier receive less than I sent?"
    a: "Usually because the wire went out as SHA or BEN, and correspondent banks along the route deducted their fees from the payment. The recipient's bank may also have charged an incoming fee or converted the currency at a marked-up rate. Ask your bank for the charge code and for the fees deducted, shown in fields 71F and 71G of the MT103."
  - q: "Does choosing OUR guarantee the recipient gets the full amount?"
    a: "It gets closer, but it isn't a guarantee. OUR tells banks to bill charges to the sender rather than deduct them, and banks usually add a surcharge for it. Some receiving banks still apply their own incoming fees, and banks can claim extra charges back from the sending bank after the payment. Ask for the guaranteed amount received in writing."
  - q: "What is a lifting fee?"
    a: "A lifting fee is a commission some receiving banks charge to credit an incoming foreign payment, often a small percentage or a flat fee. It isn't shown on the sender's quote because a different bank charges it. Suppliers in some countries see it on every wire, which is one reason local payment rails often cost the recipient less."
  - q: "What is the biggest hidden cost in an international wire?"
    a: "The FX markup. Banks rarely print it as a number; they build it into the exchange rate. A 3% markup on a $25,000 payment is $750, far more than a $45 wire fee or a $20 intermediary deduction. Compare the rate you're offered to the mid-market rate before you look at the fee line."
  - q: "How does BlindPay show the cost of a payout?"
    a: "Each BlindPay payout quote returns the market rate (commercial_quotation), the rate net of BlindPay's fee (blindpay_quotation), the flat fee, and the exact amount the bank account receives. You choose whether fees come out of the recipient's amount or are added on top. The quote is valid for 5 minutes by default."
---

Hidden fees in international wires sit in three places: deductions by intermediary banks, fees charged by the recipient's bank, and an FX markup built into the exchange rate. The SWIFT charge code, OUR, SHA, or BEN, decides who pays the bank fees. Compare quotes on the amount that lands, not the headline fee. BlindPay quotes show the market rate and the rate you get side by side.

**Key takeaways**

- Every SWIFT payment carries a charge code in field 71A of the MT103 message: OUR (sender pays), SHA (shared), or BEN (beneficiary pays).
- With SHA or BEN, correspondent banks can deduct their fees from the payment itself, so the supplier is short-paid.
- The FX markup is usually the largest hidden cost, and it rarely appears as a number on the quote.
- Banks are the most expensive channel in the World Bank's price data, at 14.99% on a $200 transfer, against a 6.36% global average.
- A quote that shows the mid-market rate, every fee line, and a guaranteed amount received is the standard to ask for.

## What are hidden fees in an international wire?

Hidden fees are costs you pay but don't see on the quote: deductions by banks in the middle, charges by the recipient's bank, and the markup inside the exchange rate. They're legal and common. They're just not disclosed upfront.

A wire is a single instruction, but it travels through several banks. Your bank charges you a sending fee. Then the payment may pass through one or two correspondent banks, which hold accounts with each other to move money between countries. Then the recipient's bank credits the account. Each of those banks can charge, and only the first one is on your quote.

The scale is real. The World Bank's [Remittance Prices Worldwide report](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) (Issue 54, Q3 2025 data) found banks were the costliest type of provider at 14.99% of a $200 transfer, against a global average of 6.36%. [How much cross-border payments cost in 2026](/resources/more/cross-border-payment-costs-2026) has the corridor-by-corridor numbers.

## What do OUR, SHA, and BEN mean?

OUR, SHA, and BEN are the three values of field 71A, "Details of Charges," in a SWIFT MT103 customer payment message. The field is mandatory, so every SWIFT wire carries one of them.

Swift's MT103 standard, as reproduced in [Millennium bcp's MT103 manual](https://ind.millenniumbcp.pt/pt/negocios/tesouraria/Documents/Manual_mt103.pdf), defines them like this:

| Code | Swift definition | What it means in practice |
| --- | --- | --- |
| OUR | All transaction charges are to be borne by the ordering customer | The sender pays every bank's charges, usually through a surcharge. The supplier should get the full amount |
| SHA | Charges on the Sender's side are borne by the ordering customer; charges on the Receiver's side are borne by the beneficiary customer | The sender pays their own bank. Intermediary and receiving bank charges come out of the payment |
| BEN | All transaction charges are to be borne by the beneficiary customer | Every bank's fee, including the sender's bank, is deducted from the amount |

Two companion fields show what was actually charged. Field 71F lists **sender's charges** deducted along the way, and field 71G shows **receiver's charges** prepaid by the sender. Under the standard's rules, BEN requires at least one 71F entry, SHA allows 71F but not 71G, and OUR allows 71G but not 71F.

So if a supplier says they were short-paid, ask your bank for the MT103 and read fields 71A, 71F, and 71G. The answer is usually there.

### Is SHA the default?

On many bank platforms, yes, SHA is the default option. Within the EU, it's effectively the rule. The [EU Payment Services Directive (PSD2)](https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32015L2366), Article 62(2), requires that when both payment providers are in the EU, the payer pays their provider's charges and the payee pays theirs. Article 81 also bars intermediaries from deducting charges from the amount transferred on those payments.

Outside that scope, deductions are normal. A US company paying a supplier in Asia or Latin America by SWIFT should expect them unless it chose OUR. This is for information only and is not legal advice.

## Where else do hidden costs hide?

Beyond the charge code, four more costs can come out of an international wire: the FX markup, receiving-bank fees, surcharges billed after the fact, and the cost of a returned payment.

- **FX markup.** Whoever converts the currency sets the rate. The gap between that rate and the mid-market rate is a percentage of the full amount. If your bank sends dollars and the recipient's bank converts them, the markup is set by a bank you never talked to.
- **Lifting fees and incoming charges.** Some receiving banks charge a commission to credit an incoming foreign payment. It's often called a lifting fee. The sender never sees it.
- **Charges claimed later.** Under OUR, a bank in the chain can ask the sending bank to pay its charges after the payment. Swift even has a message type for it, the MT191 request for payment of charges. Those can land on your statement weeks later.
- **Repairs and returns.** A wrong beneficiary name or missing field can bounce a wire. Banks often charge to investigate or return it, and the returned amount can come back at a different exchange rate.

[Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) explains why each extra bank in the chain adds cost.

## How does a SHA wire short-pay a $25,000 invoice?

Here's how a SHA wire short-pays a supplier. **All numbers are illustrative**, not taken from any specific bank.

Assumptions: a US company pays a $25,000 invoice to a supplier with a USD account abroad. The wire goes as SHA. The sending bank charges $45. Two correspondent banks deduct $25 and $15. The supplier's bank charges a $20 incoming fee.

| Step | Amount | Who pays |
| --- | --- | --- |
| Sending bank fee | $45 | Sender, billed separately |
| Amount leaving the sending bank | $25,000 | |
| First correspondent deduction | -$25 | Supplier |
| Second correspondent deduction | -$15 | Supplier |
| Receiving bank incoming fee | -$20 | Supplier |
| **Amount credited to the supplier** | **$24,940** | |

The supplier is $60 short and marks the invoice as unpaid. Someone now spends an hour on emails to settle $60. Multiply that by every supplier, every month.

Now add conversion. If the supplier's account is in local currency and their bank converts at 2% below the mid-market rate, that's another $499 on the remaining $24,940. The visible fee was $45. The total cost was about $604.

## How do you audit a cross-border quote in 7 steps?

Audit a quote by comparing what lands in the recipient's account against what the mid-market rate says it should be, with every fee counted. These seven steps work for banks, fintechs, and stablecoin providers alike.

1. **Get the mid-market rate and the offered rate.** Note the mid-market rate when you request the quote, from a market data source or a central bank reference rate. Example: mid-market 18.50 MXN per USD, offered 17.95.
2. **Compute the spread.** Spread % = (mid-market rate minus offered rate) / mid-market rate x 100. Example: (18.50 minus 17.95) / 18.50 = 2.97%, or $297 on $10,000.
3. **List every fee line.** Sending fee, OUR surcharge, network fee, receiving fee. Example: $45 sending fee plus a $25 OUR surcharge is $70 before any conversion.
4. **Ask who can deduct from the amount.** Ask for the charge code and whether intermediary or receiving banks can still take fees. Example: "SHA, intermediaries may deduct" means the supplier will get less than the invoice.
5. **Confirm the amount the recipient gets.** Ask for the exact figure in the recipient's currency and whether it's guaranteed. Example: "Recipient receives 179,500 MXN, guaranteed" beats "approximately 179,000 MXN."
6. **Check how long the quote is locked.** A rate that expires before you approve isn't a price. Example: a 5-minute lock is fine for an automated payout; a rate "indicative until execution" isn't locked at all.
7. **Test it on your real corridor and size.** Send one real payment on your most common corridor and amount. Example: compare the supplier's credited amount with step 5, then decide.

The FX math in steps 1 and 2 is the step most teams skip. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers expiry and fee direction in more detail.

## What should a transparent quote show?

A transparent quote shows the market rate, the rate you get, every fee, who pays each fee, the exact amount received, and when the price expires. If any of those are missing, the cost is hidden somewhere.

| Line | Transparent quote | Opaque quote |
| --- | --- | --- |
| Exchange rate | Mid-market rate and offered rate, side by side | One rate, no reference point |
| Fees | Every fee as its own line | "Low fee" or "no fee" |
| Who pays fees | Stated, and selectable | Charge code buried in the bank form |
| Intermediary deductions | None possible, or stated | "May apply" |
| Amount received | Exact, in the recipient's currency | Estimated, or in the sender's currency only |
| Expiry | A fixed time, such as 5 minutes | "Indicative" |
| Tracking | A reference the recipient's bank recognizes | A confirmation email |

This is also where regulators are heading. The [FSB's G20 targets](https://www.fsb.org/work-of-the-fsb/financial-innovation-and-structural-change/cross-border-payments/g20-targets-for-enhancing-cross-border-payments-2/) ask every payment service provider to show, by end-2027, the total cost of a cross-border payment including fees and FX charges, the expected delivery time, payment tracking, and terms of service.

## What are the red flags in a "zero fee" offer?

A zero-fee offer is a red flag when the rate isn't shown next to the mid-market rate. The fee went somewhere, usually into the spread.

Watch for these:

- The quote shows one exchange rate with no market reference.
- The amount received is shown only in the sender's currency.
- The terms say intermediary fees "may apply."
- The rate is "indicative" until the bank executes.
- Large payments get a "better rate" by phone, with no written breakdown.

None of these mean the provider is dishonest. They mean you can't compare it to anyone else.

## How does BlindPay keep fees visible?

BlindPay prices every payout in a quote that shows the market rate, the rate net of fees, the flat fee, and the exact amount the bank account receives. Nothing moves until you execute that quote.

From the [payout quote docs](/docs/payout-quotes):

- `commercial_quotation` is the raw market exchange rate.
- `blindpay_quotation` is the rate net of BlindPay's fee. The gap between the two is the FX cost, as a number.
- `flat_fee` is the flat-fee component, and `partner_fee_amount` shows your own markup if you add one.
- `receiver_amount` is the exact fiat amount the bank account receives.
- `cover_fees` sets who pays. With `false`, fees come out of the recipient's amount. With `true`, they're added on top of the stablecoin amount you send, so the recipient gets the full figure.
- Quotes expire after 5 minutes by default, and `expires_at` tells you exactly when.

Most BlindPay payouts never touch a correspondent chain. Pix in Brazil, SPEI in Mexico, ACH and RTP in the US, Transfers 3.0 in Argentina, ACH Colombia, and SEPA in Europe are local rails, so there are no intermediary banks to deduct along the way.

Where no local rail reaches, BlindPay sends SWIFT (POBO/COBO) payouts in USD. Each one carries a UETR, the end-to-end reference every bank in the chain uses, so you can trace it, and the quote's `description` travels in MT103 field 70, the reference the supplier's bank shows them ([POBO and COBO](/docs/kb/pobo-cobo)). SWIFT still runs through correspondent banks, so on some corridors a receiving or intermediary bank can apply its own charges outside the quote. Use a local rail when the recipient's country has one. [POBO vs COBO explained](/resources/more/swift-pobo-vs-cobo-explained) covers how those SWIFT payments work.

BlindPay's plans are published on the [pricing page](/pricing), there's no pre-funding requirement, and there's no minimum volume. [What is real-time cross-border settlement](/resources/more/what-is-real-time-cross-border-settlement) explains how the speed side fits in.

## What to do next

Pull the MT103 for your last three short-paid supplier wires and read fields 71A, 71F, and 71G. Then run the same payments through the 7-step audit using a [BlindPay payout quote](/docs/quickstart-payout) from a free development instance, and compare the amount each supplier would receive.

---

Source: https://blindpay.com/resources/more/how-freelancers-spend-usdc

---
title: "How to spend USDC as a freelancer: stablecoin card, exchange off-ramp, or local bank payout"
seoTitle: "How to spend USDC as a freelancer: card, off-ramp, or payout"
description: "Three ways to spend USDC as a freelancer: a stablecoin card, an exchange off-ramp, or a local payout over Pix, SPEI, or ACH, compared on speed and cost."
date: "2026-09-30"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to cash out USDC to a local bank account as a freelancer"
  steps:
    - name: "Check the network"
      text: "Confirm which blockchain your USDC is on, such as Ethereum, Polygon, Base, or Solana, and that your off-ramp accepts it on that network."
    - name: "Verify your account"
      text: "Complete KYC with the exchange or off-ramp provider before you need the money, so the first cash-out is not delayed by verification."
    - name: "Add your bank details"
      text: "Register the account in your name: a Pix key in Brazil, a CLABE in Mexico, or routing and account numbers in the US."
    - name: "Get a quote"
      text: "Request the local currency amount and read the rate and fees before you confirm."
    - name: "Send the USDC"
      text: "Transfer from your wallet to the deposit address shown, on the correct network."
    - name: "Track the payout"
      text: "Keep the payout reference until the money lands, and save the record for your taxes."
faq:
  - q: "What is the easiest way to spend USDC as a freelancer?"
    a: "For everyday purchases, a stablecoin card is the easiest: you tap and the merchant gets local currency. For rent, bills, and taxes that only accept bank transfers, you need to cash out to a local bank account, either through an exchange off-ramp or by having your client pay you in local currency directly."
  - q: "Can I withdraw USDC to my local bank account?"
    a: "Yes. An exchange or off-ramp provider sells the USDC and sends local currency to your account over a domestic rail such as Pix in Brazil, SPEI in Mexico, or ACH in the US. Check that the provider accepts your USDC network, complete KYC early, and compare the rate and fees in the quote before confirming."
  - q: "Is a stablecoin card cheaper than cashing out to a bank?"
    a: "It depends on where you spend. Some cards list 0% fees on USD spend, while NGIBANK reports FX markups of 1.5% to 3% as common on crypto cards for foreign-currency purchases. A single cash-out to your bank has its own spread and fees. Compare the effective rate on both for a typical month."
  - q: "Do I pay tax when I spend USDC with a card?"
    a: "In many countries each conversion counts as a disposal of a crypto asset, even if the gain is close to zero for a dollar stablecoin. The IRS and HMRC both describe spending crypto on goods or services as a disposal. Keep card statements and wallet history, and ask a local tax adviser how your country treats it."
  - q: "Can my client pay me in local currency instead of USDC?"
    a: "Yes, if the client uses a stablecoin payout API. The client keeps funding in USDC or USDT, and the provider converts and pays your bank account in reais, pesos, dollars, or euros. You receive a normal bank transfer and skip the off-ramp step entirely."
---

A freelancer paid in USDC has three ways to spend it: a stablecoin card for everyday purchases, an exchange off-ramp to a local bank account, or asking the client to pay out in local currency over Pix, SPEI, or ACH. Rent, bills, and taxes usually need a bank transfer, so a card alone rarely covers a whole month.

Getting paid in USDC solves one problem. Clients abroad can pay quickly, at any hour, without a wire that takes days. It creates another: your landlord does not take USDC. This page lays out the three spending routes, what each costs, and how to combine them.

For how the card route works under the hood, read [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card) and the hub page on [stablecoin card issuing](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- A stablecoin card is the fastest way to spend USDC at shops and online, but most rent, utilities, and tax payments need a bank transfer.
- An exchange off-ramp sells your USDC and sends local currency to your bank, usually over a domestic rail.
- A client using a stablecoin payout API can pay you in local currency directly, so you never touch the off-ramp.
- Fees hide in spreads and FX markups. NGIBANK reports 1.5% to 3% FX markups as common on crypto cards for foreign-currency spend.
- Each conversion can be a taxable disposal. Keep records from day one.

## What are the ways to spend USDC as a freelancer?

There are three main routes: spend through a card, sell on an exchange and withdraw to your bank, or receive local currency directly from a client who pays out through a stablecoin API. Most freelancers end up using two of them.

> **Stablecoin card:** a Visa or Mastercard debit card funded by a USDC or USDT balance. The merchant gets local currency.
>
> **Off-ramp:** a service that converts stablecoins into local currency in a bank account. An exchange is one kind; a payout API is another.
>
> **Local payout rail:** a domestic bank transfer system, such as Pix in Brazil, SPEI in Mexico, ACH in the US, or SEPA in Europe.

A fourth option is to keep the USDC and pay other people in USDC. That works with other crypto-native contractors. It does not work with your landlord.

## How do the options compare?

A card wins on convenience, a bank cash-out wins on reach, and a direct local payout from your client removes a step entirely. The right mix depends on what you pay for each month.

| Route | Speed | Main costs | Tax records | Best for |
| --- | --- | --- | --- | --- |
| Stablecoin card | Seconds at checkout | Conversion spread, FX markup on foreign currency, ATM fees | Can be one disposal per purchase or top-up | Groceries, online shopping, travel |
| Exchange off-ramp to bank | Minutes to days, by rail and exchange | Trading fee, spread, withdrawal fee | One disposal per sale | Monthly cash-out for rent and bills |
| Client pays local currency | Minutes on Pix and SPEI; about 1 to 2 business days on ACH | Paid by the client inside the quote | A normal bank deposit for you | Regular invoices and retainers |
| Keep USDC | Instant onchain | Network fees | None until you convert | Paying other crypto-native contractors |

Card fees vary a lot by provider. KAST's fee page lists 0% for USD card spend and 0.5% to 1.75% for non-USD, and Coinbase advertises no transaction fees on Coinbase Card spending while noting a spread when crypto is converted. Always check the live fee page. [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) shows how to compute the all-in cost.

## Why isn't a stablecoin card enough on its own?

Because the biggest monthly bills usually do not accept cards. Rent, utilities, school fees, and tax payments often go by bank transfer, and in Brazil and Mexico many of them run on Pix or SPEI.

The workaround is an ATM withdrawal, and that is the most expensive way to get local cash. NGIBANK's crypto card guide describes a common pattern: a small free monthly quota, around EUR 200 in its example, then 1.5% to 2% per withdrawal. KAST lists ATM withdrawals at $3 plus 2%. On a rent payment, that adds up fast.

So the realistic setup is a card for daily spending and a bank route for the large fixed payments.

## How do you cash out USDC to a local bank account?

Use an exchange or off-ramp provider that accepts your USDC network, verify your account early, and send to the deposit address after reading the quote. The domestic rail at the end decides how quickly the money lands.

1. **Check the network.** USDC exists on many chains. Sending it on a network the provider does not support can strand it. [Which network to off-ramp stablecoins on](/resources/more/best-network-to-off-ramp-stablecoins) compares the options.
2. **Verify your account before you need the money.** KYC can take minutes or days depending on the provider and your country.
3. **Add a bank account in your own name.** A Pix key in Brazil, a CLABE in Mexico, routing and account numbers in the US, or an IBAN for SEPA.
4. **Get a quote.** Read the exchange rate and every fee. Compare against the mid-market rate.
5. **Send the USDC.** Use the exact network and address shown.
6. **Track the payout and save the record.** Keep the payout reference for disputes and taxes.

Typical rail timing, per BlindPay's [payment methods reference](/docs/kb/payment-methods): Pix and SPEI settle in minutes, RTP is instant, ACH and SEPA take about 1 to 2 business days, and SWIFT can take up to 5 business days. Other providers publish their own windows. [What a stablecoin off-ramp is](/resources/more/what-is-a-stablecoin-offramp) covers the mechanics in more depth.

## What does a month look like with all three routes?

Here is an illustrative month for a freelancer in Brazil earning $3,000 in USDC. The numbers are made up to show the split, not quotes from any provider.

| Expense | Amount | Route |
| --- | --- | --- |
| Rent and condo fee | $900 | Client pays part of the invoice in BRL over Pix |
| Utilities and phone | $150 | Same Pix payout |
| Groceries, transport, eating out | $700 | Stablecoin card |
| Online subscriptions in USD | $100 | Stablecoin card, no FX conversion |
| Savings | $1,150 | Kept in USDC |

*Illustrative only.*

The point is the split. Fixed local bills go by bank transfer. Variable spending goes on the card. Savings stay in dollars until you need them.

## How can the company paying you skip the off-ramp?

If your client uses a stablecoin payout API, it can fund the payment in USDC and deliver local currency to your bank account. You receive a normal Pix, SPEI, ACH, or SEPA transfer, and the conversion happens on the client's side.

BlindPay is one way companies do this. It converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with a live quote that locks the rate and fees before the stablecoins move and no pre-funding. Contractors go through KYC inside the same API flow. For payouts funded from a wallet the company controls, BlindPay works as a non-custodial processor: the company authorizes the exact amount, and if a payout cannot be delivered after the stablecoins are collected, they are refunded to the quote's refund wallet or the sending wallet, automatically on Pix and other non-USD local rails and after an operator review on USD payouts ([payouts docs](/docs/payouts)).

If you invoice regularly, it is worth asking. [Stablecoin payroll for LATAM contractors](/resources/more/stablecoin-payroll-latam-contractors) shows the setup from the company's side.

## What records do you need for taxes?

Keep every card statement, every exchange sale, and every bank deposit, with dates and values in your tax currency. In many countries each conversion of USDC is a disposal, even when the gain is close to zero.

[Are stablecoin card purchases taxable?](/resources/more/are-stablecoin-card-purchases-taxable) covers how the US, UK, Germany, Spain, the Netherlands, and Brazil treat card spending. If your client pays you in local currency directly, the income lands as a regular bank deposit, which is simpler to report in most places. This is general information, not tax advice.

## What should you do next?

Write down your fixed monthly bills and how each one can be paid. Anything that needs a bank transfer goes on the cash-out or client-payout route. Then pick a card for the rest, check its fee page for your currency, and set a monthly reminder to export statements.

If you are the company paying freelancers, you can test local currency payouts on a free development instance with the [payout quickstart](/docs/quickstart-payout).

## Sources

- NGIBANK, [crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide), March 3, 2026
- KAST, [fees and conditions for KAST cards and accounts](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts)
- Coinbase, [Coinbase Card fees and taxes](https://help.coinbase.com/en/coinbase/trading-and-funding/coinbase-card/cb-card-fees-tax)
- IRS, [Digital assets](https://www.irs.gov/filing/digital-assets)
- HMRC, [Cryptoassets Manual, CRYPTO22100](https://www.gov.uk/hmrc-internal-manuals/cryptoassets-manual/crypto22100)

---

Source: https://blindpay.com/resources/more/stablecoin-card-program-architecture

---
title: "Stablecoin card program architecture: from bank deposit to card spend to local payout"
seoTitle: "Stablecoin card program architecture, layer by layer"
description: "A reference architecture for a stablecoin card program: KYC, bank deposit, conversion, wallet, JIT funding, network settlement, and local-currency payout."
date: "2026-09-30"
updated: "2026-09-30"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are the layers of a stablecoin card program?"
    a: "Seven layers: customer onboarding and KYC, bank-deposit funding, conversion from fiat to USDC or USDT, the wallet that holds the balance, the card issuer's authorization and just-in-time funding, network clearing and settlement, and the off-ramp that turns stablecoins back into local currency in a bank account. Different providers usually own different layers, and your ledger ties them together."
  - q: "Who provides each layer of a stablecoin card stack?"
    a: "The card issuer and its sponsor bank own authorization, the card, and the network relationship. A funding and payout provider owns bank deposits, conversion, and local-currency payouts. A wallet provider or the issuer holds the balance. Your company owns the product, the cardholder relationship, and the ledger that reconciles every event across the providers."
  - q: "Is a stablecoin card authorization an on-chain transaction?"
    a: "No. Authorization runs over card network messaging, as with any debit card. The issuer checks the available balance and approves or declines in real time. In a just-in-time design, the issuer may pull stablecoins on-chain at that moment, but the approval message itself is card network traffic, not a blockchain transaction."
  - q: "How do you reconcile a stablecoin card program?"
    a: "Keep one internal ledger and post every provider event to it once, keyed on the provider's id: deposit and payin events from the funding layer, authorization, capture, and refund events from the card issuer, and payout events from the off-ramp. Reconcile the ledger daily against each provider's statement and against the on-chain wallet balance."
  - q: "What happens when a step fails in a stablecoin card program?"
    a: "Each layer fails differently. A deposit can be held for review or returned before it reaches the wallet. An authorization is declined when the balance or on-chain approval is short. A payout that cannot be delivered is refunded in stablecoins. Design each handler so your ledger only moves on a final, completed event."
  - q: "Do I need webhooks from every provider in a card stack?"
    a: "Yes. Polling is too slow for card authorization and too expensive for deposits and payouts at scale. Subscribe to the funding provider's deposit and payout webhooks, the card issuer's authorization and transaction webhooks, and verify every signature. Store raw events before processing so you can replay them if a handler fails."
---

*Reading time: about 8 minutes.*

**Summary:** A stablecoin card program has seven layers: onboarding and KYC, a bank-deposit entry point, conversion into USDC or USDT, a wallet that holds the balance, the card issuer's authorization and just-in-time funding, network clearing and settlement, and an off-ramp to local currency. Different providers own different layers. Your ledger is what holds them together.

**Key takeaways**

- Draw the program as layers before choosing vendors. Most mistakes come from two providers both thinking they own a layer, or neither.
- Authorization is card network messaging. The stablecoin side is funding and settlement.
- The bank-deposit entry point and the local-currency exit are usually one provider, separate from the card issuer.
- Every layer emits events. One internal ledger, keyed on provider ids, is the only reliable source of truth.
- Credit on completion, never on creation. That one rule removes most reconciliation bugs.


Most card program diagrams start at the swipe. That is the easy part, because the card issuer has already built it. The hard parts sit on either side: how money gets into the stablecoin balance, and how it gets back out to a bank account in the cardholder's currency.

This is a reference architecture for the whole loop. It assumes you integrate providers, not build a processor. For the swipe itself, read [how a stablecoin-backed card works](/resources/more/what-is-stablecoin-card-issuing).

## What does the full architecture look like?

The program is a loop: bank money in, stablecoin balance, card spend, and optionally bank money out. Here it is as a layered diagram:

```
┌─────────────────────────────────────────────────────────────┐
│ 7. Off-ramp        USDC/USDT → BRL, MXN, USD, EUR payout    │
├─────────────────────────────────────────────────────────────┤
│ 6. Network         clearing + settlement (fiat or stablecoin)│
├─────────────────────────────────────────────────────────────┤
│ 5. Card issuer     authorization, JIT pull, controls         │
├─────────────────────────────────────────────────────────────┤
│ 4. Wallet          the balance the card spends from          │
├─────────────────────────────────────────────────────────────┤
│ 3. Conversion      USD, BRL, MXN → USDC or USDT              │
├─────────────────────────────────────────────────────────────┤
│ 2. Funding         virtual account or local payin            │
├─────────────────────────────────────────────────────────────┤
│ 1. Onboarding      KYC on the cardholder, KYB on you         │
└─────────────────────────────────────────────────────────────┘
          Your ledger and product sit across every layer
```

Read it bottom to top for a top-up, top to bottom for a cash-out. The card swipe lives in layers 4 to 6.

## Who typically provides each layer?

Each layer has a natural owner. The table is the conversation to have with every vendor before signing: "which of these rows are yours?"

| Layer | What it does | Typically provided by |
|---|---|---|
| 1. Onboarding | KYC on cardholders, KYB on your company, sanctions screening | Card issuer for card eligibility; funding provider for deposits and payouts; both may run checks |
| 2. Funding | Dedicated bank details or local payment instructions | Funding and payout provider (virtual accounts, local payins) |
| 3. Conversion | Fiat to stablecoin at a quoted rate | Funding and payout provider |
| 4. Wallet | Holds the stablecoin balance | Card issuer (custodial), wallet provider, or the cardholder (non-custodial) |
| 5. Card issuing | Card creation, authorization, controls, disputes | Card issuer, its BIN sponsor bank, and processor |
| 6. Network settlement | Moves money between issuer and acquirer | Visa or Mastercard, through the issuer |
| 7. Off-ramp | Stablecoin to local currency in a bank account | Funding and payout provider |
| Across all | Product, ledger, support, statements | You |

A **BIN sponsor** is the licensed bank that owns the card number range and carries regulatory responsibility for the program. **JIT funding** (just-in-time) means the issuer pulls only the amount needed at the moment of authorization instead of holding a prefunded card balance.

Stripe's Bridge integration is a clean example of the split. Per Stripe's docs, customers are created in Bridge, cards and spend webhooks live in Stripe, and KYC plus the cards endorsement are managed in Bridge ([Stripe](https://docs.stripe.com/issuing/bridge-stablecoin-cards)). Two vendors, one card, and your code in the middle.

## How does money flow through the stack, step by step?

Here is one full loop for a cardholder in the US who also cashes out to a bank account.

1. **Onboard.** You create the cardholder with the funding provider and the card issuer. Both need a passed identity check before they act.
2. **Fund.** The cardholder sends an ACH transfer to a virtual account in their name. The [virtual accounts guide](/resources/more/stablecoin-virtual-accounts-explained) covers this step.
3. **Convert.** The deposit becomes a payin. The provider converts USD into USDC and sends it on-chain.
4. **Hold.** USDC lands in the card wallet. In a non-custodial design, that wallet already holds an on-chain approval to the issuer's contract.
5. **Authorize.** The cardholder taps. The network asks the issuer to approve. Per Stripe's docs, Bridge then pulls funds from the linked wallet just in time, relying on that prior approval, and rejects the pull if the approval or the balance is short.
6. **Settle.** The issuer settles with the network. Visa settles USDC with some US issuers seven days a week, instead of the traditional five-business day window ([Visa](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html)). The merchant is still paid in local currency by its acquirer.
7. **Cash out.** The cardholder wants leftover funds in a bank account. You quote a payout, they authorize the exact amount from their wallet, and the provider pays out in local currency.

## Which webhooks does each layer send?

Every layer reports through events, and the stack only works if you consume them all. Treat webhooks as the system's nervous system, not a nice-to-have.

| Layer | Example events | What your handler does |
|---|---|---|
| Onboarding | `customer.update` (KYC status) | Allow card issuance and account creation on approval |
| Funding | `virtualAccount.complete` | Show account details in the app |
| Funding and conversion | `payin.new`, `payin.update`, `payin.complete` | Show "pending", then credit the ledger on completion |
| Card issuer | Authorization request, capture, refund, reversal | Approve or decline in real time; adjust holds |
| Off-ramp | `payout.new`, `payout.update`, `payout.complete` | Debit on creation, confirm on completion, handle refunds |

The event names in the funding and off-ramp rows are BlindPay's ([webhook events](/docs/learn/webhooks-events)). Card issuer names vary by provider. Stripe gives a real-time authorization webhook 2 seconds to answer before applying your timeout setting ([Stripe](https://docs.stripe.com/issuing/controls/real-time-authorizations)). That deadline is why the authorization handler must read your ledger, never a block explorer.

Verify every signature ([webhook verification](/docs/learn/webhooks-verification)). Store the raw event before processing, so a failed handler can replay it.

## How do you reconcile across three providers?

Reconciliation is one ledger, many feeds. Each event posts once, keyed on the provider's id, and the ledger is checked daily against three outside views: each provider's statement, the on-chain wallet balance, and the bank-side records.

Three rules make it hold:

- **Credit on completion.** A deposit is not money until `payin.complete`. A payout is not gone until `payout.complete` or a refund event.
- **Key on ids.** Payin id, authorization id, payout id. Providers retry webhooks. Your ledger should shrug.
- **Separate holds from balances.** A card authorization is a hold. The capture can come in lower, higher (tips), or never. Bridge may also pull an extra amount at authorization for some merchant categories and refund the difference at capture, per Stripe's docs.

The [webhooks and reconciliation guide](/resources/more/stablecoin-api-webhooks-reconciliation) and the [virtual account reconciliation guide](/resources/more/virtual-account-reconciliation) go deeper on the funding side.

## How should each layer handle failure?

Failure handling is layer by layer, and each layer has its own vocabulary. The goal is the same everywhere: the ledger only moves on a final state.

- **Funding.** A BlindPay payin can go `on_hold` for manual review, then end `completed`, `failed`, or `refunded` (returned to the sender). Do not credit the card before `completed`.
- **Authorization.** A decline for a short balance or a revoked on-chain approval is normal. Show the cardholder why, and offer a top-up.
- **Settlement.** Visa notes that every card program has to fund its daily settlement obligation before it collects from cardholders ([Visa](https://www.visa.com/en-us/thought-leadership/innovation/financing-stablecoin-linked-card-programs)). Your card issuer handles this, but ask how.
- **Off-ramp.** BlindPay operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.

The [custodial vs non-custodial off-ramps guide](/resources/more/custodial-vs-non-custodial-off-ramps) covers what each custody model protects you from.

## What are the most common architecture mistakes?

Four come up again and again.

1. **Reading the chain in the authorization path.** Too slow for a 2-second deadline. Keep a ledger fed by events.
2. **One wallet for everyone.** Pooling cardholders' funds behind one deposit route hides who owns the money. Payment providers treat that as nesting ([nested payments](/docs/kb/nested-payments)). Map one cardholder to one funding account and one wallet.
3. **Mismatched token and chain.** The funding provider delivers USDT on one network, the issuer pulls USDC on another. Agree on token and network per program before launch ([supported chains](/docs/kb/supported-chains)).
4. **No exit.** Programs plan the top-up and forget the cash-out. Cardholders who cannot get money back to a bank account stop topping up.

## Where does BlindPay fit?

BlindPay owns layers 2, 3, and 7: the entry and the exit around the card. The card issuer runs the card. BlindPay moves money into and out of the stablecoin balance behind it.

On the way in, BlindPay issues [US virtual accounts](/virtual-accounts) in each cardholder's name for ACH, wire, and SWIFT, and creates Pix, SPEI, Transfers 3.0, and PSE payins for Latin America, converting deposits into USDC or USDT in the card wallet. On the way out, it pays out in local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on SWIFT. KYC and KYB run in the same API, every quote shows fees before execute, and every step emits a signed webhook.

That keeps your card issuer focused on cards and your ledger fed by one funding and payout integration. Read the [payins docs](/docs/payins) and [payouts docs](/docs/payouts), or [talk to the team](/contact).

## What to read next

- [What is stablecoin card issuing?](/resources/more/what-is-stablecoin-card-issuing)
- [Stablecoin card issuing platforms compared](/resources/more/stablecoin-card-issuing-platforms-compared)
- [Bridge cards and BlindPay payouts in one stack](/resources/more/bridge-cards-and-blindpay-payouts), a worked pairing of two layers
- [How to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api), for the authorization handler code

## Sources

- Stripe, [Issue stablecoin-backed cards with Bridge](https://docs.stripe.com/issuing/bridge-stablecoin-cards)
- Stripe, [Real-time authorizations](https://docs.stripe.com/issuing/controls/real-time-authorizations)
- Visa, [press release on USDC settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html), December 16, 2025
- Visa, [on financing stablecoin-linked card programs](https://www.visa.com/en-us/thought-leadership/innovation/financing-stablecoin-linked-card-programs), September 8, 2026
- Bridge, [Global card issuance with stablecoins explained](https://bridge.xyz/learn/stablecoin-payments-global-card-issuance)

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

---

Source: https://blindpay.com/resources/more/swift-pobo-vs-cobo-explained

---
title: "POBO vs COBO: SWIFT payments and collections on behalf of, explained"
seoTitle: "POBO vs COBO: SWIFT payments on behalf of, explained"
description: "POBO sends a SWIFT payment for a customer, COBO collects one for them. Whose name shows, how UETR tracking works, and where stablecoin settlement fits."
date: "2026-09-30"
updated: "2026-09-30"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between POBO and COBO?"
    a: "POBO, payment on behalf of, is outbound: one entity sends a payment from its own account for an obligation that belongs to someone else. COBO, collection on behalf of, is inbound: one entity receives a payment into its account that economically belongs to someone else. Both come from corporate treasury, where a parent pays and collects for its subsidiaries through one account."
  - q: "Whose name does the supplier see on a POBO payment?"
    a: "It depends on how the payment is built. Under ISO 20022 the message can name an ultimate debtor separately from the account holder, but many providers don't populate that field. In practice the payee sees the name on the account that was debited, so the reliable way to show your customer's name is an account titled in your customer's name, plus a clear payment reference."
  - q: "What is a UETR and why does it matter for POBO?"
    a: "A UETR, or Unique End-to-end Transaction Reference, is a 36-character identifier carried in every Swift payment instruction. Every bank in the chain refers to the payment by the same UETR, so the sender, the receiver, and each correspondent can trace the same payment. For POBO it is the number you give a supplier who says the money never arrived."
  - q: "Is MT103 still used after Swift's ISO 20022 migration?"
    a: "Swift ended the MT and ISO 20022 coexistence period for cross-border payment instructions on November 22, 2025, so banks now exchange those instructions as ISO 20022 messages such as pacs.008. Many banks and customers still call the payment confirmation an MT103, and the familiar fields map across: the MT103 field 70 remittance information becomes the remittance information element in pacs.008."
  - q: "Is POBO the same as nested payments?"
    a: "No. POBO is legitimate when the provider can see the party it is paying for: that party is onboarded, verified, and holds an account in its own name. Nesting is when a customer uses its account to move money for its own clients, whom the provider never onboarded or screened. The mechanics look alike. The visibility is what separates them."
  - q: "Can stablecoins replace SWIFT for POBO and COBO?"
    a: "Not fully. Stablecoin settlement can replace the expensive middle of the payment, but a supplier who invoices in dollars and banks with a correspondent-connected bank still expects a SWIFT payment. Hybrid setups settle the value in stablecoins and deliver the last leg as a SWIFT payment, so the supplier sees an ordinary wire with a UETR."
---

POBO (payment on behalf of) is when one entity sends a SWIFT payment for an obligation that belongs to its customer. COBO (collection on behalf of) is when it receives a payment that belongs to its customer. Both let a platform pay and collect internationally for customers who don't hold their own overseas bank accounts.

**Key takeaways**

- **POBO is outbound, COBO is inbound.** Both come from corporate treasury, where a head office pays and collects for its subsidiaries.
- **The name on the account decides what the counterparty sees.** ISO 20022 has ultimate debtor and creditor fields, but you can't count on every provider or bank to fill them.
- **The UETR is the tracking number.** Every Swift payment instruction carries one, and every bank in the chain uses it.
- **POBO is not nesting.** It only works when the provider has onboarded the party it pays or collects for.
- **Stablecoins replace the middle, not the ends.** Hybrid setups settle in stablecoins and deliver a normal SWIFT payment to the supplier.

**Definition.** **POBO and COBO** are third-party payment arrangements in which one entity pays (POBO) or collects (COBO) through its own account on behalf of another party, the ultimate debtor or ultimate creditor.

## What are POBO and COBO?

POBO and COBO are "on behalf of" arrangements in which the account holder and the party that owns the money are different entities.

The terms come from corporate treasury. A multinational runs a payment factory: one entity pays suppliers for every subsidiary and collects from customers into one set of accounts. The [Payments Market Practice Group's guidelines on ultimate parties](https://www.gleif.org/lei-solutions/featuring-the-lei/cross-border-payments/pmpg-ultimate-parties-in-cross-border-payments_v1_0.pdf) (November 2023) define POBO as third-party payments executed from the entity's own bank account, and COBO, also called ROBO, as third-party collections received into it.

Platforms now do the same thing for their customers instead of their own group companies. A marketplace pays a seller's supplier. A payroll platform collects from a client abroad. The mechanics are the same; the compliance requirements are stricter, because the customers are separate businesses.

## How do POBO and COBO compare?

POBO moves money out for a customer and COBO brings money in for a customer; most other differences follow from that direction.

| | POBO | COBO |
| --- | --- | --- |
| Direction | Outbound | Inbound |
| Who owns the obligation | Your customer owes the payee | The payer owes your customer |
| ISO 20022 party | Ultimate debtor | Ultimate creditor |
| What the counterparty should see | Your customer as the sender | An account that looks like your customer's |
| Typical setup | An account titled for the customer, plus a payment reference | A per-customer account with its own beneficiary name and SWIFT details |
| Typical documents | Invoice or purchase order proving the obligation | Sender details captured on arrival for reconciliation |
| Main failure | Payee can't match the payment to an invoice | Payer sends to the wrong details, or funds can't be attributed |

## Whose name appears on a POBO payment?

The name that reaches the payee is usually the name on the account that was debited, so an account titled for your customer is the reliable way to show their name.

ISO 20022 does give each party its own field. The PMPG guidelines note that legacy MT messages had no dedicated fields for ultimate parties, which pushed that information into free-text fields like remittance information. ISO 20022 adds structured ultimate debtor and ultimate creditor elements.

The catch: a structured field only helps if every party in the chain populates it and the beneficiary bank shows it. Many don't. So ask any provider two questions before promising a customer that their name will appear:

1. Is the debited account titled in my customer's name, or in yours?
2. Do you populate the ultimate debtor field, or only the debtor?

If the answer to the first is "ours," the supplier will see the provider's name and will need the payment reference to match the invoice.

## What does a SWIFT payment carry back?

A SWIFT payment carries back a UETR, a 36-character reference the sending bank assigns, and every bank in the chain uses it to report status.

According to [Swift's UETR explainer](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr), a UETR works like a courier tracking number: any party in the chain can locate the payment, and the sender is notified when the funds are credited or rejected. Swift made it mandatory on MT103 payment instructions from November 2018.

The message format changed too. Swift ended the [MT and ISO 20022 coexistence period](https://www.swift.com/standards/iso-20022/iso-20022-faqs/implementation) for cross-border payment instructions on November 22, 2025. Instructions now travel as ISO 20022 pacs.008 messages. Banks and finance teams still ask for "the MT103" as payment confirmation, and the fields map across.

One field matters most for POBO: remittance information (field 70 on MT103, the remittance information element on pacs.008). It is the only payer-supplied text the beneficiary's bank reliably shows as the payment reference. Put the invoice number first and keep it short, because some routes truncate it. [How to track an off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) covers what to send a recipient who can't find a payment.

## Where is the line between POBO and nested payments?

POBO stays compliant only when the provider can see the party the payment is for; when it can't, the arrangement is nesting.

The PMPG guidelines cite the Wolfsberg Group's position that on-behalf-of arrangements must be understood by the sending bank, so it can confirm the relationship is allowed under local rules. For a platform, that translates to one test:

- **POBO or COBO:** your customer is onboarded with the provider, has passed KYC or KYB, and the account is in their name. The provider sees who owns the money and what it is for.
- **Nesting:** your customer uses its account to pay or collect for its own clients, whom the provider has never onboarded or screened.

The payment reference doesn't change the answer. If one of your customers needs to pay for its own client base, those clients need to be onboarded too.

## How do stablecoins fit into POBO and COBO?

Stablecoins can carry the value across borders while SWIFT delivers the first or last leg, so the counterparty still sees an ordinary bank payment.

A hybrid POBO payment looks like this:

1. Your customer funds the payment in USDC or USDT, or from local currency converted into stablecoins.
2. The provider quotes the payment and locks the rate.
3. The stablecoin moves on-chain to the provider in seconds or minutes.
4. The provider sends a SWIFT payment from an account titled for your customer, with the invoice number in the remittance field.
5. The UETR comes back once the payment is confirmed, and you pass it to the supplier.

COBO runs the other way: the payer sends a SWIFT payment to a per-customer account, the funds convert to stablecoins, and the stablecoins land in your customer's wallet.

The supplier never touches a stablecoin. What changes is the middle: no pre-funded nostro balance and no float sitting in a correspondent account. [Stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments) compares the two on cost and speed.

## How does BlindPay run POBO and COBO?

BlindPay runs SWIFT (POBO/COBO) on top of a virtual account issued to a specific onboarded customer, with UETR tracking and MT103 confirmations, and settles the value in USDC or USDT.

- **COBO.** Inbound international payments need a virtual account, which carries the customer's own beneficiary name, SWIFT BIC, and account number. Incoming funds convert to USDC or USDT and go to the customer's linked wallet, and the payin reports the sender's name, bank, account, and reference.
- **POBO.** The Named Account setting puts the customer's name on the payment instead of BlindPay's. BlindPay doesn't populate the ISO 20022 ultimate debtor field, so the name travels through the account title and the reference.
- **Rules worth planning around.** The minimum SWIFT payout is 100 USD, the cut-off is 10:30 AM ET, and settlement takes up to 5 business days. Every SWIFT payout starts on hold, and payments to a third party need a document such as an invoice before they release. Only the first 30 characters of the description reach the beneficiary.

The full setup is in the [POBO and COBO guide](/docs/kb/pobo-cobo), and the product overview is on [POBO and COBO over SWIFT](/pobo-cobo-swift).

## When should you not use stablecoins for an on-behalf-of payment?

Skip the stablecoin leg when it adds a step without removing a cost.

- **Domestic payments.** A US company paying a US supplier is better served by ACH or a domestic wire.
- **Countries that restrict third-party payments.** Some beneficiary banks decline a payment that isn't in the invoice party's name, whatever rail funds it.
- **Suppliers who require a specific bank.** If the contract names the paying bank, a provider-issued account won't satisfy it.
- **Very small payments.** Below a SWIFT minimum, use a local rail or batch the invoices.
- **No one owns the documents.** If nobody on your side can produce invoices on request, third-party SWIFT payments will sit on hold.

[When not to use blockchain payments](/resources/more/when-not-to-use-blockchain-payments) covers the broader cases.

## How do you choose a rail for a payment on behalf of a customer?

Pick by the corridor, the amount, and how the counterparty wants to be paid.

1. **Does the recipient's country have an instant local rail the provider pays out to?** If yes, a local payout usually beats SWIFT on speed and cost.
2. **Does the supplier insist on a wire?** Then SWIFT delivers the last leg, with stablecoins or a bank balance funding it.
3. **Is the amount above the provider's SWIFT minimum?** If not, batch or use a local rail.
4. **Can you produce the invoice?** Third-party SWIFT payments need one.
5. **Does your customer's name need to show?** Confirm the account is titled for them before you promise it.
6. **How urgent is it?** SWIFT can take several business days; budget for cut-offs and weekends. [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) explains where the days go.

For how payout APIs, wallet APIs, and issuer APIs divide these jobs, see [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis).

## What should you do next?

List the customers you pay or collect for today and check each one against the nesting test. Then confirm with your provider whose name appears on the payment and where the invoice reference lands. Fix those two before the first supplier calls asking who sent the money.

---

Source: https://blindpay.com/resources/more/test-offramp-liquidity-depth

---
title: "How to test an off-ramp's liquidity depth before you commit: a quote-ladder protocol"
seoTitle: "How to test off-ramp liquidity depth: a quote-ladder test"
description: "Quote $500, $5,000, $50,000, and $250,000 at the same moment, three times a day, and compare the rate. The protocol, log table, and pass rule."
date: "2026-09-30"
updated: "2026-09-30"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to test an off-ramp provider's liquidity depth with a quote ladder"
  steps:
    - name: "Fix every variable except size"
      text: "Pick one corridor, one approved recipient bank account, one network and token, and keep currency_type and cover_fees the same on every request. Only the amount changes between rungs."
    - name: "Fire four quotes at the same moment"
      text: "Request quotes for 500, 5,000, 50,000, and 250,000 USD in parallel, within a few seconds of each other, so every rung sees the same market."
    - name: "Record the rate fields from each response"
      text: "Log the market rate, the rate you get, the fees, the amount received, and the expiry for each rung. On BlindPay these are commercial_quotation, blindpay_quotation, flat_fee, receiver_amount, and expires_at."
    - name: "Compute the depth slope"
      text: "Depth slope in bps = (rate at the smallest rung - rate at the rung) / rate at the smallest rung x 10,000. Use the rate before flat fees so fixed charges do not hide the size effect."
    - name: "Repeat at three times of day on three days"
      text: "Run the ladder at the destination market's morning, during the London and New York overlap, and after the destination market closes, on three business days. Log weekend runs separately."
    - name: "Apply the pass rule"
      text: "A slope of 10 bps or less at the top rung means real depth at that size. Between 10 and 50 bps, split large payouts. Above 50 bps, or no binding quote at the top rung, the inventory runs out early."
faq:
  - q: "How do I test an off-ramp provider's liquidity?"
    a: "Request quotes for the same corridor at four sizes, such as $500, $5,000, $50,000, and $250,000, within the same few seconds. Compare the rate each size gets, before flat fees. Repeat at three times of day on three days. If the rate barely moves with size, the provider has depth; if it falls quickly, its inventory runs out early."
  - q: "What quote sizes should I use to test liquidity depth?"
    a: "Use a ladder that spans a factor of 500: $500 for small payouts, $5,000 for a typical B2B invoice, $50,000 for a payroll batch or treasury move, and $250,000 for a large transfer. Add a rung at your own largest real payout. If your account limits are lower, cap the ladder at the largest payout you will actually send."
  - q: "What is a good rate difference between small and large quotes?"
    a: "As a rule of thumb, 10 basis points or less between the $500 rung and the top rung means the provider fills large sizes from the same inventory. Between 10 and 50 bps is usable if you split large payouts. Above 50 bps, or no binding quote at the top size, the provider is reaching for worse prices as the order grows."
  - q: "Does time of day change stablecoin off-ramp rates?"
    a: "It can. FX trading concentrates in a few centers: the BIS found that dealers in the UK, US, Singapore, and Hong Kong handled 75% of FX trading in April 2025. Local currencies such as BRL or MXN trade most actively in their own market hours. Quotes outside those hours can carry a wider margin, so test morning, midday, and evening."
  - q: "Can I test liquidity depth in a sandbox?"
    a: "Not meaningfully. A sandbox shows that your code handles quotes, expiry, and errors, but its prices do not reflect production inventory. At BlindPay, development instances run on testnets with USDB, BlindPay's test stablecoin. Production quotes move no money until you execute them, so run the depth ladder on production quotes and simply never execute."
---

To test an off-ramp's liquidity depth, request quotes for the same corridor at $500, $5,000, $50,000, and $250,000 within the same few seconds. Repeat at three times of day on three days, and compare the rate each size gets in basis points. A rate that stays flat across sizes means real depth. One that falls fast means inventory runs out early.

Earlier guides on [on/off-ramp liquidity with live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) and [liquidity markets](/resources/more/what-is-a-liquidity-market-cross-border-payments) explain why depth matters and suggest a quick three-size check. This is the full protocol: the top rung, the time-of-day runs, the log, and a pass rule you can hand to a finance team.

**Key takeaways**

- Change only the amount. Same corridor, bank account, network, token, fee setting, and the same few seconds.
- Measure the rate before flat fees. Fixed fees make small payouts look expensive and hide what size does to the rate.
- Depth slope = (rate at $500 - rate at the rung) / rate at $500 x 10,000. Under 10 bps at the top rung is a pass.
- Run three sessions a day on three days. Depth that only exists at midday is not depth for a payout that runs at night.
- A quote window that shrinks as size grows, or a binding quote that turns indicative at the top rung, is a failed test.

## What does liquidity depth mean for an off-ramp?

Liquidity depth is the amount a provider can convert on one corridor before its rate gets worse. Deep inventory fills a $250,000 payout at nearly the same rate as a $500 one. Thin inventory has to reach for worse prices, or a third party with its own markup, as the order grows.

Coverage maps do not show this. A provider can list Brazil and still fill only small tickets well. The quote API is the honest witness, as long as you ask it the same question at different sizes. The terms used below (live quote, depth, spread, basis point) are defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

## What do you need before you start?

Four things, set once and kept constant for every run.

- **Production quote access.** A quote moves no money until you execute it. Sandbox prices do not reflect real inventory, and BlindPay development instances run on testnets with USDB. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) covers what a sandbox can and cannot tell you.
- **One approved recipient bank account per corridor.** Quotes are priced against a specific destination.
- **A fixed funding leg.** Same `network` and `token` on every request, for example USDC on Polygon. Check pairs against [supported chains](/docs/kb/supported-chains).
- **Limits that cover the top rung.** BlindPay checks per-customer limits on the stablecoin amount: $10,000 per transaction for KYC Standard, $30,000 for KYB Standard, and $50,000 for KYC Enhanced by default, per the [customers reference](/docs/learn/customers). Raise them with a [limit increase](/docs/learn/limit-increase), or cap the ladder at your largest real payout. A rung above a limit can come back as an error; log it as a limit, not as thin liquidity.

## What sizes should you test?

Four rungs, spanning a factor of 500, plus your own largest payout if it falls outside them.

| Rung | Amount | What it tells you |
| --- | --- | --- |
| 1 | $500 | Baseline rate. Flat fees dominate the all-in cost here |
| 2 | $5,000 | A typical supplier invoice or contractor payment |
| 3 | $50,000 | A payroll batch or a weekly treasury move |
| 4 | $250,000 | A large transfer. Thin inventory usually breaks here |

The fourth rung is the one most evaluations skip, and it is where providers that route to a partner at quote time show their seams.

## How do you run the quote ladder?

Fire all four quotes in parallel so they see the same market, then save the responses. With BlindPay's [payout quote endpoint](/docs/payout-quotes), `request_amount` is in minor units, so $500 is `50000`.

```bash
# Same corridor, same moment, four sizes. Quotes are never executed.
for amount in 50000 500000 5000000 25000000; do
  curl -s "https://api.blindpay.com/v1/instances/$INSTANCE_ID/quotes" \
    -H "Authorization: Bearer $BLINDPAY_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"bank_account_id\":\"$BANK_ACCOUNT_ID\",\"currency_type\":\"sender\",\"cover_fees\":false,\"request_amount\":$amount,\"network\":\"polygon\",\"token\":\"USDC\"}" \
    > "quote_$amount.json" &
done
wait
```

Then compute the spread and the depth slope for each rung.

```python
import json

base = None
for amount in [50000, 500000, 5000000, 25000000]:
    q = json.load(open(f"quote_{amount}.json"))
    rate, market = q["blindpay_quotation"], q["commercial_quotation"]
    base = base or rate
    spread_bps = (market - rate) / market * 10_000
    slope_bps = (base - rate) / base * 10_000
    print(amount / 100, market, rate, round(spread_bps, 1), round(slope_bps, 1), q["expires_at"])
```

Two columns matter. `commercial_quotation` across rungs shows whether the market price itself moves with size. `blindpay_quotation` is the rate you actually get before flat fees. Keep `flat_fee` in the log, but leave it out of the depth calculation.

## How do you read the results?

Compare the rate at each rung with the rate at $500. The change, in basis points, is the depth slope.

**Illustrative example.** Two providers quote USDC to BRL at the same moment. The market rate is 5.4000 BRL per USDC.

| Rung | Provider A rate | A slope | Provider B rate | B slope |
| --- | --- | --- | --- | --- |
| $500 | 5.3730 | 0 bps | 5.3730 | 0 bps |
| $5,000 | 5.3730 | 0 bps | 5.3720 | 1.9 bps |
| $50,000 | 5.3730 | 0 bps | 5.3460 | 50.3 bps |
| $250,000 | 5.3730 | 0 bps | 5.2920 | 150.8 bps |

Provider B's top rung: (5.3730 - 5.2920) / 5.3730 x 10,000 = 150.8 bps. On $250,000 that is 250,000 x 0.0810 = R$20,250 less for the recipient, about $3,769 at Provider A's rate (20,250 / 5.373). Same corridor, same minute, same quoted "spread" on a small ticket.

## What time of day matters?

The hours when the destination currency trades most. The BIS 2025 Triennial Survey found that sales desks in the UK, US, Singapore, and Hong Kong handled [75% of FX trading in April 2025](https://www.bis.org/press/p250930.htm). Currencies like BRL and MXN also trade heavily in their own onshore hours.

Run each ladder three times a day:

1. **Destination morning**, shortly after the local FX market opens.
2. **London and New York overlap**, roughly 8:00 to 12:00 New York time, when the two largest FX trading centers are both open.
3. **After the destination market closes**, when a provider has to hold risk until the next open.

Do it on three business days. Run any weekend ladder separately and compare it only with other weekend runs: Pix settles 24/7, but the price of reais on a Saturday carries Monday's risk.

## What counts as a pass?

Use the top-rung slope from the worst of your nine runs, not the average. A payout that runs at the worst moment gets the worst rate.

| Worst top-rung slope | Verdict | What to do |
| --- | --- | --- |
| 10 bps or less | Deep at this size | Production-ready for payouts up to the top rung |
| 10 to 50 bps | Usable with care | Split large payouts, or test a middle rung to find where the rate breaks |
| Over 50 bps | Thin | Inventory runs out early. Keep large payouts elsewhere |
| No binding quote | Fail | The provider cannot hold a price at that size |

These thresholds are rules of thumb, not an industry standard. Two more failure signals:

- **The window shrinks with size.** If `expires_at` gets closer as the amount grows, the provider is protecting itself from a book it cannot fill.
- **Last look on the top rung.** The [FX Global Code](https://www.globalfxc.org/fx_global_code.htm) defines last look as a final chance for the quoting firm to accept or reject your request against its quoted price. A large quote that can be rejected after you execute has not passed a depth test, whatever its rate.

One caution on interpretation. The BIS Markets Committee noted that internalised trading [makes liquidity harder to measure from the outside](https://www.bis.org/publ/mktc13.htm). Quote ladders measure what you can get, not what a provider holds, and that is the number your payouts depend on.

## What should you log?

Copy this table into a spreadsheet and fill one row per rung per run.

| Date | Time (UTC) | Corridor | Rung (USD) | commercial_quotation | blindpay_quotation | flat_fee | receiver_amount | Window (s) | Spread (bps) | Slope (bps) | Notes |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| | | | | | | | | | | | |

Window (s) is `expires_at` minus the request time, divided by 1,000, since `expires_at` is in epoch milliseconds. Keep the raw JSON too. When a provider's rates change after you go live, this log is your baseline.

## How does BlindPay show up on this test?

Every BlindPay payout quote returns `commercial_quotation` next to `blindpay_quotation`, itemized fees, and a 5-minute `expires_at`, so the ladder runs on the public API without a sales call. Quotes are funded when you execute them, with no pre-funding. Plans are on the [pricing page](/pricing), and per-transaction fees appear in each quote.

Run the ladder yourself and judge the slope. For who holds the rate while the window is open, see [who carries FX risk in a stablecoin payout](/resources/more/who-carries-fx-risk-stablecoin-payout). For where the inventory behind a quote comes from, see [what a market maker is in stablecoin payments](/resources/more/what-is-a-market-maker-stablecoin-payments). The [slippage guide](/resources/more/stablecoin-fx-slippage-live-quotes) covers the next test after depth: whether the settled rate matches the quoted one. Depth is one row in the full [on/off-ramp provider checklist](/resources/more/how-to-choose-on-off-ramp-provider).

*How we know: BlindPay fields and limits come from the [payout quotes](/docs/payout-quotes) and [customers](/docs/learn/customers) documentation. Market structure figures come from the BIS and the FX Global Code, linked above.*

## What to do next

Pick your largest corridor and run the four-rung ladder once today against the [payout quote endpoint](/docs/payout-quotes). Save the JSON, fill the log, and schedule the other eight runs for the next three days.

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

---

Source: https://blindpay.com/resources/more/transaction-monitoring-red-flags-stablecoin-payments

---
title: "Transaction monitoring red flags for stablecoin payments: 12 rules to automate"
seoTitle: "12 transaction monitoring red flags for stablecoin payments"
description: "The 12 red flags automated transaction monitoring should catch in stablecoin and cross-border payments, with rule logic, actions, and the data each needs."
date: "2026-09-30"
updated: "2026-09-30"
category: "compliance"
author: "BlindPay Team"
howto:
  name: "How an automated transaction monitoring alert becomes a decision"
  steps:
    - name: "Score"
      text: "Run every rule, baseline comparison, and wallet check against the transaction before it settles, and combine the results into one risk score with the rules that fired attached."
    - name: "Pass"
      text: "Release transactions that score below the review band. Keep the score and the rule results, even for clean payments, so the decision can be reconstructed later."
    - name: "Hold"
      text: "Pause transactions that score into the review band. Funds stay where they are and the customer sees a pending state, not an error."
    - name: "Block"
      text: "Stop transactions that hit a hard rule, such as a confirmed sanctions match or a prohibited country. A block needs no analyst to take effect."
    - name: "Review"
      text: "Send held transactions and blocked edge cases to an analyst, who gathers evidence, asks the customer for information if needed, and decides to release, reject, or escalate to a suspicious activity report."
    - name: "Log"
      text: "Record the score, the rules that fired, the evidence, the analyst, the decision, and the timestamps for every case, so an examiner can follow it from alert to closure."
faq:
  - q: "What is a red flag in transaction monitoring?"
    a: "A red flag is a pattern that suggests a payment may be linked to money laundering, sanctions evasion, or fraud, such as transfers split just under a threshold or funds that leave minutes after they arrive. A red flag is not proof. In an automated system, each red flag becomes a rule that raises an alert, and an analyst decides what it means."
  - q: "How is structuring detected in stablecoin payments?"
    a: "With a rule that counts transfers just under a threshold within a time window, per customer and across linked customers. The classic US threshold is the USD 10,000 currency transaction report, which applies to cash. In stablecoin and wire flows, the same splitting shows up under the USD 3,000 US travel rule threshold and under a provider's own per-transfer limits."
  - q: "Does a transaction near USD 10,000 require a suspicious activity report?"
    a: "Not on its own. FinCEN's October 2025 SAR FAQs say that transactions at or near the USD 10,000 threshold are not enough by themselves to require a SAR. A filing is required when the institution knows, suspects, or has reason to suspect the transactions were designed to evade reporting. The rule raises the alert, and the analyst makes that call."
  - q: "How many rules should a transaction monitoring system start with?"
    a: "Enough to cover every risk in your own risk assessment, and no more than your team can explain. There is no regulatory rule count. The 12 red flags in this guide are a reasonable starting library for stablecoin and cross-border flows. Each rule needs a written reason, a threshold set from your data, and a test case that proves it fires."
  - q: "What is the difference between holding and blocking a transaction?"
    a: "A hold pauses a transaction until an analyst reviews it, and most held payments are released once the evidence checks out. A block stops a transaction outright because it hit a hard rule, such as a confirmed sanctions match or a prohibited country. Holds are for doubt. Blocks are for cases where the answer is already known."
  - q: "Should transaction monitoring thresholds be the same for every customer?"
    a: "No. A single threshold floods analysts with alerts on large, legitimate customers and misses unusual activity from small ones. Segment customers by type, risk rating, and expected volume, then compare each customer with its own history and with a peer group of similar customers. Fixed thresholds still make sense for hard rules like sanctions hits."
---

An automated transaction monitoring system should flag structuring, velocity spikes, rapid in-and-out movement, round amounts, high-risk corridors, activity that contradicts the customer's declared business, fan-in patterns, risky wallet addresses, dormant accounts waking up, changed customer data, bridge or mixer hops, and near-threshold payments across linked accounts. Each rule pairs a condition with an action: pass, hold, block, or review.

This article is general information, not legal advice. Thresholds below are illustrative, not recommendations.

**Key takeaways**

- A red flag only works in automation when it's written as a rule: a condition, a threshold, an action, and the data it needs.
- Fixed rules, behavioral baselines, and risk scoring do different jobs. A working system uses all three.
- Stablecoin transfers are final once confirmed, so the rules have to run before settlement, not on yesterday's file.
- Structuring rules raise alerts, not reports. FinCEN says amounts near a threshold alone don't require a suspicious activity report.
- Every rule needs a documented reason and a test case. Copied vendor defaults fail both.

## What is automated transaction monitoring?

Automated transaction monitoring is software that checks every payment against a set of rules and models, and flags the ones that look like money laundering, sanctions evasion, or fraud. It replaces a person reading every transaction with a person reviewing only the flagged ones.

It's one of four parts of a [risk monitoring program](/resources/more/what-is-automated-risk-monitoring-fintech), next to KYC and KYB, sanctions screening, and alert handling. This guide is about the rule library itself: what to flag, how each rule works, and what happens next. The signals behind a stablecoin risk score, and why real-time beats batch, are covered in [real-time transaction monitoring for stablecoin payments](/resources/more/real-time-transaction-monitoring-stablecoin-payments).

## How do rules, behavioral baselines, and risk scoring differ?

Rules check a fixed condition, baselines compare a customer with its own past and its peers, and risk scoring combines both into one number that drives the action. Most red flags below use more than one.

| Method | How it works | Good at | Weak at | Illustrative example |
| --- | --- | --- | --- | --- |
| Rule-based alerts | A fixed condition fires when met | Hard limits, sanctions hits, known typologies | Too many alerts on large customers, easy to game once known | Any transfer to a wallet on the SDN List |
| Behavioral baselines (peer groups) | Compares activity with the customer's history and with similar customers | Catching change: spikes, new corridors, dormancy | Needs history; new customers have no baseline | 7-day volume at 3 times the customer's 90-day average |
| Risk scoring | Weights rule hits, baselines, and customer risk into one score | Ranking alerts, routing to pass, hold, or review | Hard to explain if weights aren't documented | Score above 70 holds the payment for review |

A peer group is a set of customers with similar type, size, and declared activity. A new marketplace seller gets compared with other new marketplace sellers until it has a history of its own.

## What are the 12 red flags an automated system should flag?

These 12 cover the patterns that show up most often in stablecoin and cross-border payment flows. The thresholds are illustrative. Set yours from your own data and your risk assessment.

| # | Red flag | Rule logic (illustrative thresholds) | Typical action | Data needed |
| --- | --- | --- | --- | --- |
| 1 | Structuring below a reporting threshold | 3 or more transfers between 90 and 99.9 percent of a threshold (USD 10,000 cash, USD 3,000 US travel rule, or an internal limit) within 48 hours | Review | Amounts, timestamps, customer ID |
| 2 | Velocity spike against baseline | 7-day volume above 3 times the customer's 90-day weekly average | Review | Transaction history, customer baseline |
| 3 | Rapid in-and-out movement | 80 percent or more of an incoming amount sent onward to a different party within 24 hours | Review | Payin and payout records, timestamps |
| 4 | Round amount patterns | 5 or more transfers in exact multiples of USD 1,000 in 30 days with no matching invoices | Review (low weight in score) | Amounts, declared activity |
| 5 | High-risk corridor | Origin or destination country on the internal high-risk list; prohibited countries stopped outright | Review or block | Customer country, bank country, IP and geolocation |
| 6 | Declared activity mismatch | Monthly volume above 2 times declared expected volume, or payments to industries outside the profile | Review | KYB profile, expected volume, counterparties |
| 7 | Many senders to one receiver | 10 or more distinct senders paying one beneficiary in 7 days | Review | Sender and beneficiary identifiers |
| 8 | Wallet linked to sanctions or illicit clusters | Address on the SDN List, or analytics exposure to sanctioned, mixer, or stolen-funds clusters above risk appetite | Block (direct hit) or hold | Wallet address, list data, analytics score |
| 9 | Activity after a dormant period | No activity for 180 days, then a transfer above the customer's historical maximum | Hold | Account history |
| 10 | Sudden change in verified data | New bank account, wallet, email, or phone within 72 hours before a large payout | Hold | Profile change log, timestamps |
| 11 | Bridge or mixer hops before deposit | Funds reach the deposit address through a mixer, or through 2 or more bridge hops within 24 hours | Hold or block | On-chain trace, analytics data |
| 12 | Near-threshold payments across linked accounts | Customers sharing an owner, address, device, or bank account each send just under a threshold on the same day | Review | Entity links: shared identifiers |

A few notes on the rows that trip teams up.

**Row 1 needs care with the threshold.** The currency transaction report (CTR) under [31 CFR 1010.311](https://www.law.cornell.edu/cfr/text/31/1010.311) covers transactions in currency of more than USD 10,000, which means cash. A stablecoin payout isn't cash. The same splitting behavior still matters, though: under the USD 3,000 US [travel rule threshold](/resources/more/travel-rule-stablecoin-off-ramps), under a provider's per-transfer limit, or on the cash side of an on-ramp. Structuring to evade a reporting requirement is a crime under [31 USC 5324](https://www.law.cornell.edu/uscode/text/31/5324), whether or not the money is dirty.

**Row 8 is the one rule with no judgment call on a direct hit.** OFAC [adds some wallet addresses to SDN List entries](https://ofac.treasury.gov/faqs/562) and says those listings are not likely to be exhaustive. So a clean list check isn't the end of it. Analytics exposure covers what the list misses.

**Row 12 depends on entity resolution.** Entity resolution means linking customers that share identifiers. Without it, a structuring ring split across five accounts looks like five clean customers.

## Why do stablecoin transfers need pre-settlement checks?

Because a confirmed on-chain transfer is final. There is no recall and no chargeback, as covered in [are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible), so a rule that fires after settlement can only produce a report.

That changes where the rules sit. In a wire program, monitoring can review yesterday's batch and still ask a bank to recall a payment. In a stablecoin program, the rule library has to run between the payment request and the transfer. That's why the holds in the table above exist at all: a hold is only possible if the check runs first.

## What happens from alert to decision?

Every transaction gets scored, and the score decides whether it passes, waits for a person, or stops. The flow below is the standard shape.

1. **Score.** Run every rule, baseline comparison, and wallet check before settlement. Combine them into one score, with the rules that fired attached.
2. **Pass.** Below the review band, release the payment. Keep the score anyway.
3. **Hold.** Inside the review band, pause the payment. The customer sees a pending state.
4. **Block.** On a hard rule, such as a confirmed sanctions match or a prohibited country, stop it. No analyst is needed for the block to take effect.
5. **Review.** An analyst works the held and edge cases: checks the evidence, asks the customer for information, and decides to release, reject, or escalate.
6. **Log.** Store the score, the rules, the evidence, the analyst, the decision, and the timestamps, for every case.

Step 6 is the one teams skip, and it's the one an examiner asks for first. A decision you can't reconstruct is a decision you can't defend.

## How does a structuring rule work on a real pattern?

The rule raises the question; the analyst answers it. Here's how one pattern moves through the flow.

**Illustrative example: nine transfers of USD 9,800 in two days.** A small import business, onboarded three months ago, declared expected monthly volume of USD 40,000. Over two days it requests nine stablecoin payouts of USD 9,800 each to three bank accounts in Mexico. Its provider caps single payouts at USD 10,000 (an illustrative internal limit).

- Total: 9 × USD 9,800 = USD 88,200, more than twice the declared monthly volume, in 48 hours.
- Rule 1 fires on the third transfer: three amounts at 98 percent of the internal limit within 48 hours.
- Rule 2 fires: weekly volume is far above the customer's baseline.
- Rule 6 fires: volume contradicts the declared profile.
- The score lands in the review band. Transfer three and everything after it are held. Transfers one and two have already settled.

The analyst asks the customer for invoices and the relationship with the three recipients. Two outcomes are possible.

If the customer shows three supplier invoices for USD 29,400 each, split because of the payout cap, the analyst clears the alert, writes down why, and the team considers a limit increase. The pattern was the limit, not the customer.

If the customer can't explain the split, or the recipients don't match the invoices, the case escalates. Here the line FinCEN draws matters. Its [October 2025 SAR FAQs](https://www.fincen.gov/system/files/2025-10/SAR-FAQs-October-2025.pdf) say amounts at or near a threshold alone don't require a suspicious activity report (SAR). A SAR is required when the institution knows, suspects, or has reason to suspect the transactions were designed to evade reporting, or are otherwise suspicious. Splitting with no business reason, after a request for invoices, is that kind of reason.

For a money services business, [31 CFR 1022.320](https://www.law.cornell.edu/cfr/text/31/1022.320) requires a SAR on suspicious transactions of at least USD 2,000, filed no later than 30 calendar days after initial detection, with the SAR and supporting documents kept for five years. The USD 88,200 here is well over the line.

## What do FATF and FinCEN require from a monitoring program?

They require that suspicious activity gets detected and reported; they don't prescribe a rule list. [FATF Recommendation 20](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Fatf-recommendations.html) requires financial institutions to report promptly to their financial intelligence unit when they suspect funds are the proceeds of crime or linked to terrorist financing. Countries implement that through their own laws.

In the US, the Bank Secrecy Act and FinCEN's rules carry it out. FinCEN's SAR FAQs say monitoring parameters should be commensurate with the institution's money laundering and terrorist financing risk, given its products, locations, and customers. That sentence is the reason a rule library has to be your own. A cross-border stablecoin business with Latin American payout corridors has different risk than a domestic payroll app, and its rules should show it.

## What are the common mistakes when building a rule library?

Most weak programs fail in the same five or six places.

- **Copying vendor default rules.** Defaults are a starting point. Shipping them unchanged means the rules reflect someone else's customers, and you can't explain why a threshold is what it is.
- **One threshold for all customers.** A USD 50,000 weekly trigger is noise for a marketplace and blind for a freelancer. Segment first.
- **No peer groups.** Without them, new customers have no baseline, and the system can't tell unusual from normal for the first 90 days.
- **No documented rationale per rule.** Every rule needs a sentence on what risk it covers, why the threshold sits where it does, and when it was last reviewed.
- **No scenario testing.** Build test cases, like the nine-transfer pattern above, and prove each rule fires on them before and after every change.
- **Rules that run after settlement.** For stablecoin flows, a post-settlement rule is a report generator, not a control.

## How does BlindPay run these checks inside the payment flow?

BlindPay runs KYC, KYB, sanctions screening, travel rule compliance, and transaction monitoring inside the API flow, before money moves. Customers are verified first: KYC Standard is automated and takes about 60 seconds for standard-risk individuals, while KYC Enhanced and KYB are reviewed manually in 3 hours to 1 business day.

On each payin or payout, monitoring can move a transaction to `on_hold`. The [documented triggers](/docs/kb/cut-off-times) include first-time withdrawals or unusual activity, amounts large relative to the customer's history, and sanctions or watchlist matches. Compliance reviews each held transaction for false positives and may send a request for information about the sender relationship, the purpose, and the expected outcome. An unanswered transaction request can lead to a refund to the sender after 24 hours, and a hold can take up to 30 days to resolve. The process is in [on-hold transactions](/docs/kb/on-hold-transactions), and each status is explained in [stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained).

## What to do next

Take the 12-row table and mark each row: covered, partly covered, or missing. For every covered row, write down the threshold, why it's set there, and the test case that proves it fires. Start with rows 1, 8, and 12. They're the ones where a gap turns into a reportable failure fastest. If you're still choosing tools, [how to choose an automated risk monitoring vendor](/resources/more/how-to-choose-automated-risk-monitoring-vendor) covers what to ask.

## Sources and further reading

- [FATF Recommendations](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Fatf-recommendations.html), including Recommendation 20 on suspicious transaction reporting.
- [31 CFR 1022.320](https://www.law.cornell.edu/cfr/text/31/1022.320), suspicious activity reports by money services businesses.
- [FinCEN SAR FAQs, October 2025](https://www.fincen.gov/system/files/2025-10/SAR-FAQs-October-2025.pdf), on structuring and continuing activity.
- [31 USC 5324](https://www.law.cornell.edu/uscode/text/31/5324), structuring transactions to evade reporting requirements.
- [31 CFR 1010.311](https://www.law.cornell.edu/cfr/text/31/1010.311), currency transaction reports.
- [OFAC FAQ 562](https://ofac.treasury.gov/faqs/562), digital currency addresses on the SDN List.

*This article is general information, not legal advice.*

---

Source: https://blindpay.com/resources/more/what-happens-if-a-stablecoin-payment-provider-fails

---
title: "What happens to your money if a stablecoin payment provider fails?"
seoTitle: "What happens if a stablecoin payment provider fails?"
description: "Issuer, provider, or bank: who fails decides what you get back. What the GENIUS Act and state law protect, where money sits mid-payment, and a runbook."
date: "2026-09-30"
updated: "2026-09-30"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Are stablecoins FDIC insured?"
    a: "No. Section 4(e) of the GENIUS Act says payment stablecoins shall not be subject to FDIC deposit insurance or NCUA share insurance, and it makes it unlawful to claim they are. Protection for stablecoin holders comes from reserve rules and insolvency priority instead. A provider that calls a stablecoin balance insured is a red flag, whatever else it offers."
  - q: "What happens to USDC or USDT if the issuer goes bankrupt?"
    a: "For a permitted US issuer, section 11 of the GENIUS Act gives holders priority over the required reserves, shared ratably with other holders, ahead of the issuer's other creditors. The reserves are excluded from the bankruptcy estate, and a court can let redemptions start early. These rules take effect on January 18, 2027 and apply only to permitted issuers."
  - q: "What happens to a custodial stablecoin balance if the payment provider fails?"
    a: "It depends on how the balance was held and which law applies. If the provider segregated customer assets and its terms say you own them, you have a strong claim to get them back. If balances sat in a pooled account under terms that give the provider ownership, you may be an unsecured creditor. Read the ownership clause before you deposit."
  - q: "Do state money transmitter laws protect customers if a provider fails?"
    a: "In states that adopted the Money Transmission Modernization Act, a licensee must hold permissible investments at least equal to its outstanding money transmission obligations, and those investments are held in trust for customers if the licensee becomes insolvent. Whether a stablecoin balance counts as such an obligation depends on the state, so ask which licenses cover your flow."
  - q: "What happens to a payout that is in progress when a provider fails?"
    a: "It depends on which leg it reached. Before the stablecoins leave your wallet, nothing has moved. After the onchain transfer confirms, the stablecoins belong to the provider's flow and you have a claim for the fiat. After the bank transfer settles, the recipient has the money. Track each payout's status so you know which group it sits in."
  - q: "Does a non-custodial provider remove all failure risk?"
    a: "No. It removes the risk on balances that sit in your own wallet, which is most of the time. During a payout, the provider still handles the funds for minutes or hours, and compliance holds can extend that. Issuer risk, bank partner risk, and your own key security stay with you. Non-custodial narrows the window rather than closing it."
---

If a stablecoin payment provider fails, what you get back depends on where your money sat and who failed. Stablecoins in a wallet you control aren't affected. A custodial balance depends on segregation and contract terms. If the issuer fails, the GENIUS Act gives holders first claim on reserves from January 18, 2027.

*This article is for information only and is not legal advice.*

Most teams plan for a provider going offline for a day. Fewer plan for it disappearing. The second case is rarer and much more expensive, and the time to prepare is before you sign.

**Key takeaways**

- Three different failures matter: the stablecoin issuer, the payment provider, and the bank behind the provider. Each has different protection.
- Stablecoins are not deposits. The GENIUS Act bans FDIC insurance for them and bans saying otherwise.
- For permitted US issuers, holders get priority on reserves in insolvency. That starts January 18, 2027.
- For custodians and money transmitters, protection depends on segregation, trust rules, and the ownership clause in your contract.
- Your exposure changes during each payment. Know which leg each in-flight payout is on.

If you're mapping the whole stack first, read [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure). This page zooms in on one question: what happens when a piece of it fails.

## Which kinds of failure should you plan for?

Plan for three: the issuer of the stablecoin, the payment provider that moves it, and the bank or partner that sends the fiat. Each one fails differently, and the protection that applies is different too.

| Who fails | What you hold at risk | Main protection | Main gap |
| --- | --- | --- | --- |
| Stablecoin issuer | Every token you hold from that issuer | GENIUS Act section 11 priority on reserves (permitted US issuers, from January 18, 2027) | Foreign and non-permitted issuers; time to redeem |
| Payment provider, custodial | Balances it holds for you | Segregation rules, state trust rules, your contract | Pooled balances under terms that give the provider ownership |
| Payment provider, non-custodial | Only funds in flight | Your funds never leave your wallet until a payout runs | Payouts already in progress |
| Bank or rail partner | Fiat in transit or parked at the provider | The provider's banking redundancy and account structure | Access delays while the provider finds a new bank |
| You (key loss) | Your own wallet | Nothing outside your own controls | A non-custodial provider can't recover it |

The [overview of stablecoin payment risks](/resources/more/are-stablecoin-payments-safe) covers depegs, network outages, and fraud. This page stays on failure of a company in the chain.

## Where is your money at each stage of a payment?

Your exposure moves as the payment moves. A typical payout passes through five places, and at each one a different company owes you something.

1. **In your wallet before the payout.** Under your keys. A provider failure doesn't touch it.
2. **In a custodial balance at the provider.** You hold a claim on the provider. How strong it is depends on segregation and terms.
3. **On the onchain leg.** Once the transfer confirms, the stablecoins sit in the provider's flow. Blockchain transfers are final, so you can't pull them back yourself.
4. **On the fiat leg.** The provider or its partner has converted and sent the bank transfer. You hold a claim for the fiat until the recipient's bank credits it.
5. **At the recipient's bank.** Done. A provider failure after this point doesn't undo the payment.

Pre-funding adds a sixth place: fiat or stablecoins parked at the provider in advance so payouts can go out instantly. That's a standing custodial balance by another name. [No pre-funding payouts](/resources/more/no-pre-funding-stablecoin-payouts) explains the models.

Status tracking tells you which stage each payout is in. [Payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) maps statuses to these legs.

## What does the GENIUS Act say about issuer insolvency?

Section 11 of the GENIUS Act puts stablecoin holders first in line for the reserves when a permitted US issuer fails. The [enrolled text](https://www.congress.gov/119/bills/s1582/BILLS-119s1582enr.htm) does four things:

- **Priority.** A holder's claim has priority over the issuer's other creditors with respect to required reserves, shared ratably with other holders.
- **Reserves outside the estate.** Required reserves are excluded from the bankruptcy estate, though the automatic stay still applies to them.
- **Faster redemption.** A court can lift the stay for redemptions if reserves are available, and must use best efforts to enter a final order within 14 days after the hearing.
- **Shortfall rule.** If reserves fall short, the remaining holder claim gets first priority against the estate, up to the reserves the issuer should have held.

Two limits. These rules cover only permitted payment stablecoin issuers, and the Act takes effect January 18, 2027. The [GENIUS Act timeline](/resources/more/genius-act-timeline-key-dates) has the dates. A foreign-issued token follows its home country's law.

Section 4(e) adds a firm line: payment stablecoins shall not be backed by the full faith and credit of the United States, guaranteed by the government, or covered by FDIC deposit insurance or NCUA share insurance. Claiming otherwise is unlawful.

## What does the GENIUS Act say about custodians?

Section 10 sets rules for firms that custody payment stablecoin reserves, stablecoins used as collateral, or the private keys used to issue them. Those firms must be supervised, must treat customer stablecoins and cash as the customer's property, and must keep them separate from their own assets.

The details that matter in a failure:

- **Commingling is banned, with exceptions.** Customer assets may sit in an omnibus account at a bank or trust company, as long as they're accounted for per customer.
- **Customer priority.** Customer claims on stablecoins the custodian holds rank ahead of everyone except other customers, with or without segregation, unless the customer consented otherwise.
- **Self-custody software is excluded.** Providing hardware or software for a customer's own custody doesn't make a company a custodian under section 10.

How far section 10 reaches into ordinary payment provider balances will depend on rules and courts. Don't assume it covers a balance until your provider can tell you which regime its custody falls under.

## How do state money transmitter laws protect customers?

In the US, most payment providers are state-licensed money transmitters, and state law has its own protection: required permissible investments held in trust for customers.

The [Money Transmission Modernization Act](https://www.csbs.org/sites/default/files/2023-08/CSBS%20Money%20Transmission%20Modernization%20Act.pdf), the model law written by state regulators, says a licensee must hold permissible investments at least equal to its outstanding money transmission obligations (section 10.03). Those investments, even if commingled, are held in trust for customers if the licensee becomes insolvent or files for bankruptcy. Creditors who aren't beneficiaries can't reach them.

More than half of US states have enacted the model law in full or in part, according to the [Conference of State Bank Supervisors](https://www.csbs.org/csbs-money-transmission-modernization-act-mtma). Two caveats:

- States that adopted it in part may differ on the trust provision.
- Whether a stablecoin balance counts as an outstanding money transmission obligation depends on the state and the product.

Ask your provider which licenses cover your specific flow. [What a VASP is](/resources/more/what-is-a-vasp) explains how these licenses map across countries.

## What should you do the day a provider fails?

Act on the funds you still control first, then work through what's in flight. This is the runbook.

1. **Stop new payouts and payins** through the provider. Pause the integration with a feature flag.
2. **Revoke token approvals.** On EVM chains, an ERC-20 `approve` lets a spender pull up to the approved amount. Set any unused allowance to the provider back to zero.
3. **Move payer instructions.** Give payers new deposit details so new money doesn't land at the failed provider.
4. **Sort in-flight payouts by stage** using your last known status for each: not started, onchain leg confirmed, fiat sent, completed.
5. **Reconcile your ledger** against onchain records. Transaction hashes prove what left your wallet and when.
6. **Contact affected recipients** with the amount, date, and what you're doing about it.
7. **Reroute through your backup provider** for the corridors that matter most.
8. **Preserve records and file claims.** Quotes, payout IDs, hashes, statements, and the contract go to counsel.

Steps 2 and 7 only work if they were set up in advance. A team with no second provider on day one is negotiating a contract during an outage.

## What should the contract say about failure?

Read the contract for failure, not for features. Six clauses decide most outcomes.

| Clause | What to look for | Red flag |
| --- | --- | --- |
| Ownership | Customer assets belong to the customer | Terms that transfer title to the provider |
| Segregation | Separate accounting per customer, named account structure | No mention of how balances are held |
| In-flight payments | What happens to payouts mid-process if service stops | Silence |
| Wind-down | Notice period, return of balances, data export | Termination at the provider's discretion only |
| Banking partners | How balances are protected if a partner bank changes | No answer on partner concentration |
| Regulatory regime | Which licenses or charters cover your flow | A license list unrelated to your corridors |

The [due diligence question list](/resources/more/stablecoin-payments-provider-due-diligence) covers the rest of the evaluation.

## What does this not solve?

Planning reduces loss. It doesn't remove it.

- **The law isn't in effect yet.** GENIUS Act protection starts January 18, 2027 and isn't tested in court.
- **Recovery takes time.** Even with priority, redemption from a failed issuer or custodian can take weeks.
- **Onchain transfers are final.** Funds sent to the wrong place stay there. See [whether stablecoin payments are reversible](/resources/more/are-stablecoin-payments-reversible).
- **Compliance holds extend exposure.** A payout under review is in the provider's hands until it clears.
- **Issuer freezes are separate.** An issuer can freeze tokens at an address regardless of who custodies them.

## How does BlindPay handle custody?

BlindPay supports both models and labels each one, so your failure exposure depends on which product a flow uses.

- **External blockchain wallets (non-custodial).** Stablecoins stay in your customer's wallet until a payout executes. The customer authorizes only the quoted amount: an ERC-20 `approve` scoped to the quote on EVM chains, a signed transaction on Stellar, or a token delegation on Solana. The [blockchain wallets docs](/docs/blockchain-wallets) are explicit: BlindPay cannot access, freeze, or recover funds in a blockchain wallet.
- **Managed wallets (custodial, beta).** BlindPay generates the address and holds the keys, so there's no signing per payout. That's a custodial balance, with the trade-offs above.

When a payout ends `refunded`, the stablecoins go back to the funding source. A payout that ends `failed` doesn't refund automatically, and support handles it; [payouts](/docs/payouts) lists every status. Wires go out as SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations, and payouts also run over Pix, SPEI, ACH, RTP, and SEPA with no pre-funding for external-wallet flows.

Write your failure runbook this week, and keep your largest balances in wallets you control. Then [compare custodial and non-custodial off-ramps](/resources/more/custodial-vs-non-custodial-off-ramps) for each flow before you choose where the rest sits.

---

Source: https://blindpay.com/resources/more/are-stablecoin-card-purchases-taxable

---
title: "Are stablecoin card purchases taxable? A country-by-country overview of disposals, gains, and records"
seoTitle: "Are stablecoin card purchases taxable? By country"
description: "Why a stablecoin card purchase can be a taxable disposal, how the US, UK, Germany, Spain, the Netherlands, and Brazil differ, and which records to keep."
date: "2026-09-29"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Is paying with a stablecoin card a taxable event?"
    a: "In many countries it can be. The IRS treats digital assets as property and lists exchanging them for goods or services, in any amount, as a disposal. HMRC lists using tokens to pay for goods or services as a disposal. Because a dollar stablecoin usually holds its value, the gain on each purchase tends to be close to zero, but the record still matters."
  - q: "Do I pay capital gains tax when I spend USDC?"
    a: "Usually only on any difference between what the USDC cost you and what it was worth when you spent it, measured in your tax currency. For a US taxpayer who bought USDC at one dollar and spent it at one dollar, that difference is about zero. Taxpayers outside the US can see small gains or losses from exchange rate moves. Confirm with a tax adviser."
  - q: "Is a crypto card purchase taxed differently from a stablecoin card purchase?"
    a: "The rule is usually the same, but the result is not. A card that sells ether or bitcoin at checkout can create a real gain or loss on every swipe, because the price moved since you bought it. A dollar stablecoin card mostly produces near-zero results. Either way, each purchase can be a disposal that needs a record."
  - q: "What records should I keep for stablecoin card spending?"
    a: "For each purchase or top-up, keep the date and time, the amount of stablecoin converted, its value in your tax currency, your cost basis, the fees charged, and the merchant or transaction ID. Export the card provider's statement and your wallet history regularly, because providers can close, change apps, or limit how far back exports go."
  - q: "How are stablecoin card purchases taxed in Brazil?"
    a: "Crypto gains in Brazil fall under capital gains rules, and law-firm guidance describes a monthly sales exemption of R$35,000 for certain assets. Reporting is moving from IN RFB 1888/2019 to IN RFB 2.291/2025, known as DeCripto. Because the reporting rules are changing, confirm your position with a Brazilian tax professional."
---

Often, yes. In the US and UK, spending crypto on goods or services counts as a disposal, and a stablecoin is still a crypto asset for tax purposes. A dollar stablecoin usually keeps the gain on each card purchase close to zero, but the disposal still happens and still needs a record. Rules differ a lot by country.

*This page is general information, not tax or legal advice. Check your situation with a qualified tax adviser in your country.*

The question comes up because a stablecoin card feels like a normal debit card. You tap, the merchant gets paid in local currency, and nothing about the checkout looks like a crypto trade. Behind the scenes, though, the program converts your USDC or USDT into fiat, and many tax systems treat that conversion as you selling the asset.

For how the card converts and settles, read [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card) and the hub page on [stablecoin card issuing](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- The IRS treats digital assets as property and lists exchanging them for goods or services "in any amount" as a disposal.
- HMRC lists "using tokens to pay for goods or services" as a disposal.
- Dollar stablecoins keep each gain near zero for dollar-based taxpayers, but taxpayers in other currencies can see small exchange rate gains or losses.
- In Europe, Germany, Spain, and the Netherlands handle crypto very differently, per NGIBANK's 2026 overview.
- The work is in the records. A card with hundreds of small purchases creates hundreds of small disposals.

## Why can spending crypto with a card be a taxable event?

Many tax systems treat crypto as property, not money. When you spend property, you have disposed of it, and any difference between what it cost and what it was worth at that moment is a gain or a loss.

A few terms help here.

> **Disposal:** giving up ownership of an asset, by selling it, swapping it, spending it, or giving it away.
>
> **Cost basis:** what you paid to acquire the asset, including fees in many systems.
>
> **Gain or loss:** the value at disposal minus the cost basis, measured in your tax currency.

The [IRS digital assets page](https://www.irs.gov/filing/digital-assets) says digital assets "are considered property, not currency," and lists disposing of them "in exchange or trade for property, goods or services in any amount." The same page notes that Forms 1040, 1040-SR, and 1040-NR carry a yes or no question about digital assets.

In the UK, [HMRC's Cryptoassets Manual (CRYPTO22100)](https://www.gov.uk/hmrc-internal-manuals/cryptoassets-manual/crypto22100) lists what counts as a disposal, including "using tokens to pay for goods or services."

## Why do stablecoins keep the gain close to zero?

A dollar stablecoin aims to stay at one dollar, so the value when you spend it is usually the value you paid for it. The gain or loss on each card purchase is then close to zero, though not always exactly zero.

Three cases change that:

- **Your tax currency is not the dollar.** A euro-based taxpayer who bought USDC when one dollar was worth a certain number of euros, then spent it when the rate had moved, can have a small gain or loss in euros.
- **You bought below or above one dollar.** Stablecoins can trade slightly off their peg. A purchase at 0.998 and a spend at 1.000 is a tiny gain.
- **The card sells something else first.** If the program converts ether or bitcoin into a stablecoin before spending, the first conversion can carry a real gain.

That is why the card type matters. [Stablecoin card vs crypto debit vs prepaid vs credit](/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit) compares how each type converts, and [which stablecoin to use for card spending](/resources/more/best-stablecoin-for-card-spending) covers USDC, USDT, and euro stablecoins.

## When does the disposal happen on a stablecoin card?

The disposal usually happens when the stablecoin is converted. On a just-in-time card that is at purchase. On a prefunded card it is at top-up, when you load stablecoins and they become a fiat balance.

This matters for timing and for record count. A prefunded card might create one disposal per top-up and then many fiat purchases. A just-in-time card can create one disposal per purchase. [Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards) explains both models.

A quick illustration, with made-up numbers labeled as such. a16z crypto reported an average stablecoin card purchase of around $86 in July 2026, citing Paymentscan data. Imagine a month of 40 purchases of that size:

| Card model | Disposals in the month | Typical gain per disposal (dollar taxpayer, USDC) |
| --- | --- | --- |
| Just-in-time stablecoin card | 40 (one per purchase) | About $0 |
| Prefunded card, two top-ups | 2 (one per top-up) | About $0 |
| Crypto card spending ether at checkout | 40 | Depends on the ether price since purchase |

*Illustrative only. Real results depend on your currency, cost basis method, and local rules.*

## How do countries treat stablecoin card purchases?

The treatment ranges from "every purchase is a disposal" to "only what you hold matters." The table below summarizes what each source says. It is a starting point, not a filing guide.

| Country | What the source says | Source |
| --- | --- | --- |
| United States | Digital assets are property; exchanging them for goods or services in any amount is a disposal; Form 1040 has a digital asset question | IRS, digital assets page (reviewed September 2, 2026) |
| United Kingdom | Using tokens to pay for goods or services is a disposal | HMRC, CRYPTO22100 (updated November 28, 2025) |
| Germany | Gains are taxed if the crypto is disposed of within one year of purchase | NGIBANK, May 26, 2026 |
| Spain | Gains are taxed as savings income at progressive rates from 19% up to 30% | NGIBANK, May 26, 2026 |
| Netherlands | Crypto is treated as part of your wealth, so holdings are taxed rather than each disposal | NGIBANK, May 26, 2026 |
| Brazil | Capital gains rules, with a monthly sales exemption of R$35,000 for certain assets; reporting moving to IN RFB 2.291/2025 (DeCripto) | Mattos Filho guidance; confirm with a local professional |

Two notes on the table. The European rows come from [NGIBANK's guide to crypto taxes in Europe](https://www.ngibank.com/en/blog/crypto-taxes-europe-basics), which is a summary, not a tax authority. Brazil's reporting rules are changing, and the law-firm summary from [Mattos Filho](https://www.mattosfilho.com.br/unico/decripto-receita-federal-ocde/) is the best public reference we found. In both cases, confirm with an adviser before filing.

For other countries, the pattern to look for is the same: does the tax authority treat crypto as property, does spending count as a disposal, and is there a holding period or exemption.

## What records should you keep for stablecoin card spending?

Keep one line per conversion, with the value in your tax currency and the cost basis. The tax due may be tiny. Rebuilding a year of records from a closed app is not.

1. **Export the card statement monthly.** It lists each purchase, its fiat amount, and the merchant.
2. **Export the wallet history.** It shows each stablecoin movement, with transaction hashes.
3. **Match each conversion to a value in your tax currency.** Use the rate the provider applied, or a consistent public rate.
4. **Record your cost basis.** Note when and at what price you acquired the stablecoins you spent.
5. **Record fees separately.** Conversion spread, top-up fees, and FX markups can affect the basis or count as costs, depending on the country. [Stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) lists them.
6. **Note top-ups as their own events** on prefunded cards.
7. **Keep refunds and chargebacks linked** to the original purchase.
8. **Store everything outside the provider's app.** Providers can close or change export formats.

For a business, the same records feed the books. [Crypto debit card vs stablecoin card for business](/resources/more/crypto-debit-card-vs-stablecoin-card-for-business) covers accounting and spend controls.

## How does BlindPay help keep records clean?

BlindPay sits on the money legs around a card program, and each movement it handles creates its own record with the rate and fees attached. That makes reconciliation easier for the funding and cash-out side of a card program.

Each BlindPay payout starts from a live quote that shows the exchange rate and fees before the stablecoins move, and each payout carries a status and a rail reference ([payouts docs](/docs/payouts)). Each deposit into a US virtual account creates its own payin record before USDC or USDT reaches the linked wallet ([virtual accounts docs](/docs/virtual-accounts)). Webhooks report every status change, which is the usual way to feed a ledger, as described in [stablecoin API webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation).

None of this replaces your tax adviser. It does mean the amounts, rates, and fees for each conversion exist in one place when you need them.

## What should you do next?

Start a simple spreadsheet or tax tool feed this month, before purchases pile up. Export last month's card and wallet history, add values in your tax currency, and check how your country treats a disposal. If you run a program, give your users exportable statements with the conversion rate on every line.

## Sources

- IRS, [Digital assets](https://www.irs.gov/filing/digital-assets), reviewed September 2, 2026
- HMRC, [Cryptoassets Manual, CRYPTO22100](https://www.gov.uk/hmrc-internal-manuals/cryptoassets-manual/crypto22100), updated November 28, 2025
- NGIBANK, [guide to crypto taxes in Europe](https://www.ngibank.com/en/blog/crypto-taxes-europe-basics), May 26, 2026
- Mattos Filho, [guidance on crypto reporting and taxation in Brazil](https://www.mattosfilho.com.br/unico/decripto-receita-federal-ocde/)
- a16z crypto, [charts on stablecoin payment card spend](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend), August 7, 2026

---

Source: https://blindpay.com/resources/more/herstatt-risk-fx-settlement-risk

---
title: "What is Herstatt risk? FX settlement risk, PvP, and what real-time settlement changes"
seoTitle: "What is Herstatt risk? FX settlement risk explained"
description: "Herstatt risk is paying your side of an FX trade and never getting the other. What happened in 1974, how PvP removes it, and where it remains."
date: "2026-09-29"
updated: "2026-09-29"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is Herstatt risk in simple terms?"
    a: "Herstatt risk is the chance that you deliver your currency in a foreign exchange trade and never receive the currency you bought. It is named after Bankhaus Herstatt, a German bank closed on June 26, 1974, after it had received Deutsche marks but before it paid the dollars it owed. The loss is the full principal, not just a price move."
  - q: "Is Herstatt risk the same as settlement risk?"
    a: "Herstatt risk is one type of settlement risk. Settlement risk covers any case where a trade or payment does not settle as expected. Herstatt risk is the FX version: the two currencies settle at different times, often in different time zones, so one side pays first and depends on the other side paying later."
  - q: "How does CLS eliminate FX settlement risk?"
    a: "CLS settles both legs of an FX trade on a payment-versus-payment basis: neither currency is released unless the other is paid too. The BIS describes CLS as providing PvP in 18 currencies. Trades in currencies outside that list, or with counterparties that lack access to CLS, have to use other methods, many of which leave the principal exposed."
  - q: "How much FX settlement is still exposed to Herstatt risk?"
    a: "More than $1.4 trillion a day. The BIS found that in April 2025, about $14 trillion of FX obligations settled on an average day. About 36% settled with payment versus payment, about 54% used methods such as netting that reduce risk, and more than $1.4 trillion, or 10%, settled gross and bilateral, fully exposed."
  - q: "Do stablecoin payments remove Herstatt risk?"
    a: "They shrink it, but they don't remove it when one leg is a bank transfer. A stablecoin moves and reaches finality in seconds to minutes, so the exposure window gets much shorter. In a payout to a bank account, though, the stablecoin leg settles first and the local currency leg follows, so for a short time you rely on the provider to deliver."
  - q: "Who carries Herstatt risk in a stablecoin payout?"
    a: "The sender, for the time between the stablecoin leaving their wallet and the local currency landing in the recipient's account. During that window the payment provider is the counterparty. That's why the provider's refund rules, compliance holds, and the speed of the destination rail matter as much as the blockchain's speed."
---

Herstatt risk is the risk that you pay your side of a foreign exchange trade and never receive the other side. The two currencies settle at different times, so one party pays first and trusts the other to follow. The BIS counted more than $1.4 trillion a day of FX settlement still fully exposed to it in April 2025. Faster settlement shortens the window. BlindPay's payouts cut it from days to minutes on instant rails.

**Key takeaways**

- Herstatt risk is principal risk: the full amount you paid, not a price move. It comes from settling two currencies at different times.
- Payment versus payment (PvP) removes it by releasing both currencies together or not at all. CLS does this in 18 currencies.
- In April 2025, 36% of average daily FX settlement used PvP, 54% used methods that only reduce the risk, and 10% was fully exposed, according to the BIS.
- Instant rails and stablecoins shorten the exposure window from days to minutes. They don't make a stablecoin-to-bank payout atomic.
- In a stablecoin payout, ask what happens during the window: who holds the funds, how long holds last, and what gets refunded automatically.

## What is Herstatt risk?

Herstatt risk is FX settlement risk: the chance that one party to a currency trade delivers the currency it owes and the counterparty doesn't deliver in return. The BIS defines FX settlement risk as "the risk that one party in a currency trade fails to deliver the currency owed."

It exists because an FX trade has two legs in two currencies. Each leg settles in its own country's payment system, on its own hours. If the dollar leg and the peso leg can't settle at the same instant, someone pays first.

The loss is the whole principal. If you sold $1 million for euros, paid the dollars, and the euros never came, you lost $1 million, not the 2% the rate moved that week. That is what makes it different from market risk.

## What happened at Bankhaus Herstatt in 1974?

On June 26, 1974, German supervisors closed Bankhaus Herstatt in the middle of the German business day, after heavy losses on speculative currency positions. Its counterparties had already paid it Deutsche marks. The dollars it owed them, due in New York later that day, never arrived.

The European Central Bank's [account of the case](https://www.ecb.europa.eu/pub/financial-stability/fsr/focus/2007/pdf/ecb~ccda416def.fsrbox200712_19.pdf) lays out the timing. Herstatt had already received, through the German payment system, the marks it bought. Because of the time zone gap, it had not yet delivered the dollars it sold. Several institutions took losses, and the US CHIPS system closed for 24 hours.

Before Herstatt, the ECB notes, banks thought their FX risk was limited to market moves. After it, they knew they faced principal risk. The failure was one of the disturbances that led G10 central bank governors to set up what became the [Basel Committee on Banking Supervision](https://www.bis.org/bcbs/history.htm) at the end of 1974.

## Why does an FX trade expose the full principal?

Because the two legs settle on different systems at different times, and nothing ties one payment to the other. Your payment becomes final in your currency's system whether or not the counterparty's payment ever happens.

The exposure window runs from the moment your payment can no longer be recalled until you confirm the other currency has arrived. Three things stretch it:

1. **Time zones.** Asian currencies settle before European ones, and European ones before the dollar. Whoever pays the earlier currency waits.
2. **Cut-offs and banking hours.** If the second leg misses its cut-off, it settles the next business day. A Friday trade can wait for Monday.
3. **Reconciliation.** Many firms don't know the other leg arrived until they match statements, often hours after the money actually landed.

Correspondent banking adds a further layer. The payment you sent passes through one or more intermediary banks before it reaches the counterparty, and each one is a point where it can be held. [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) walks through those hops.

## How do PvP and CLS remove FX settlement risk?

Payment versus payment (PvP) links the two legs: the first currency is released only if the second is released too. If either side can't pay, neither leg settles, and nobody loses principal.

CLS is the main PvP system for FX. It launched in 2002, and the BIS describes it as providing PvP in 18 currencies. Members pay in to CLS through the central bank settlement systems of each currency, and CLS releases both legs of each trade together.

The limit is coverage. A trade settles through CLS only if both currencies are eligible and both parties have access. The BIS's [June 2026 Quarterly Review article](https://www.bis.org/publ/qtrpdf/r_qt2606c.htm) found that only 12% of trades in non-CLS-eligible currency pairs settled through other PvP systems, against 40% for CLS-eligible pairs. When firms settled gross instead, the top reasons were that the counterparty had no PvP access, the trade type wasn't eligible, or the currency pair wasn't eligible.

## How much FX settlement is still exposed in 2026?

About a tenth of it, measured in the most recent data. The BIS used the 2025 Triennial Survey to break down how roughly $14 trillion of daily FX obligations settled in April 2025.

| Settlement method (April 2025, average day) | Share | Value | Settlement risk |
| --- | --- | --- | --- |
| Payment versus payment (PvP) | 36% | Just over $5 trillion | Eliminated |
| Other methods, such as pre-settlement netting | 54% | About $7.6 trillion | Reduced, not removed |
| Gross bilateral settlement | 10% | More than $1.4 trillion | Fully exposed |

Source: BIS Quarterly Review, June 2026, "Uncovering FX settlement risk: new measures from the 2025 BIS Triennial Survey".

Who is most exposed? Not the big dealers trading with each other. The BIS found gross bilateral settlement made up 22% of obligations with non-financial customers, 19% with other financial institutions, and 11% between external dealers. An earlier [BIS study of April 2022 data](https://www.bis.org/publ/qtrpdf/r_qt2212i.htm) found the risk concentrated in emerging market currencies against the US dollar, many of which CLS doesn't cover.

That describes a business paying suppliers in Brazilian reais, Colombian pesos, or Argentine pesos. None of the three is among the 18 CLS currencies (the Mexican peso is), and a company paying a supplier rarely has PvP access anyway. The protection large banks rely on mostly isn't there.

## How do real-time rails and stablecoins change the exposure window?

They shorten it. Herstatt risk is a timing problem, and a payment that settles in seconds leaves far less time for a counterparty to fail between the two legs.

Two separate things help:

- **Instant local rails.** Pix in Brazil and SPEI in Mexico run 24/7 and credit the recipient in seconds to minutes. The local currency leg no longer waits for a banking day.
- **Stablecoin settlement.** A stablecoin such as USDC or USDT moves on a blockchain and reaches finality in seconds to minutes on most payment networks, at any hour. The dollar leg no longer waits for New York to open.

| Way of settling a USD to BRL payment | Who pays first | Typical exposure window | Can the window cross a weekend? |
| --- | --- | --- | --- |
| BlindPay: stablecoin in, Pix out | Sender delivers stablecoins | Minutes, plus any compliance review | Rarely: Pix runs 24/7 |
| Correspondent bank wire with FX at the bank | Sender's dollars leave first | Hours to several business days | Yes |
| FX trade settled through CLS (PvP) | Neither: both legs release together | None for principal | Not available: BRL is not a CLS currency |
| Two separate transfers between unrelated parties | Whoever agreed to pay first | As long as the slower leg takes | Yes |

The window shrinks; it doesn't close. When one leg is a token and the other is a bank deposit in reais, the two can't settle in the same instant. A smart contract can swap two tokens on the same chain atomically, which is PvP by construction. A Pix credit lives in Brazil's central bank system, outside any blockchain, so a stablecoin-to-bank payout still has an order: one leg first, the other after.

## Where does Herstatt-style risk remain in a stablecoin payout?

In the gap between the stablecoin leaving your wallet and the local currency reaching the recipient. In that gap you've paid, and the provider is your counterparty until the fiat lands.

Here is how that gap looks in a BlindPay payout, from the [payouts docs](/docs/payouts):

1. **Quote.** Rate and fees lock for five minutes. Nothing has moved, so nothing is at risk.
2. **Stablecoins pulled.** The quoted amount leaves the funding wallet and settles on-chain. From here your leg is done.
3. **Review, on some rails.** ACH, wire, and RTP payouts pass through `on_hold` for compliance review after the stablecoins are collected. SWIFT payouts start `on_hold` until documents are approved. Holds can last up to 30 days.
4. **Fiat sent.** Pix and SPEI land in minutes. ACH, TED, ACH Colombia, and SEPA take about one to two business days. SWIFT (POBO/COBO) can take up to five.
5. **Completed, refunded, or failed.** A `refunded` payout returns the stablecoins to the funding source. A `failed` payout isn't refunded automatically.

Automatic refunds have a scope worth knowing. When a payout can't be delivered after the stablecoins are collected, Pix and other non-USD local rail payouts are refunded automatically, while USD payouts, and payouts whose review times out, are refunded after an operator review. Read [stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) before you build your own retry logic.

Two habits keep the exposure small:

- **Use instant rails where they exist.** A Pix or SPEI payout keeps the window at minutes. A Friday SEPA payout can sit until Monday, and [cut-off times by rail](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays) shows where that happens.
- **Fund at send time.** Don't park a balance with any provider ahead of time. Approve exactly the quoted amount, so the most you can have outstanding is the payout in flight.

## How long is the exposure window on a $50,000 payment?

This example uses round, illustrative numbers. It isn't a quote.

A US company owes a supplier in São Paulo the reais equivalent of $50,000. It pays on a Friday afternoon, New York time.

**By correspondent wire.** The company's bank debits $50,000 on Friday. The wire misses the day's cut-off at an intermediary bank, waits for Monday, and the Brazilian bank converts and credits reais on Tuesday. For about four calendar days, $50,000 is somewhere in a chain of banks, and the company has no claim on any of them until something goes wrong.

**By stablecoin payout over Pix.** The company quotes the payout, approves the USDC amount, and creates the payout. The USDC settles on-chain in seconds, and the reais arrive over Pix in minutes, even on a Friday evening. The company's exposure is to one regulated provider for minutes, and it can track each step through webhooks.

Neither route is PvP. The difference is the size of the window: four days across several banks, or minutes with one counterparty you chose.

## What should treasury and payments teams ask a provider?

Ask about the window, not only the price. Five questions cover it:

1. In what order do the two legs settle, and when does my payment become irrevocable?
2. Who holds the funds between the legs, and are they held in my name or the provider's?
3. Which payouts go to compliance review after my funds are collected, and for how long?
4. If the fiat leg fails, which cases are refunded automatically, and in what form?
5. Do you need me to pre-fund a balance, which turns a minutes-long window into a standing exposure?

[Custodial vs non-custodial off-ramps](/resources/more/custodial-vs-non-custodial-off-ramps) covers question 2 in depth, and [what real-time cross-border settlement means](/resources/more/what-is-real-time-cross-border-settlement) defines the speed claims you'll hear in the answers.

## How does BlindPay handle settlement timing?

BlindPay sequences the legs so the window stays short: the stablecoin leg settles first, then the local currency goes out over the fastest rail available for the corridor. Payouts reach bank accounts over Pix, SPEI, ACH, RTP, SEPA, Transfers 3.0, ACH Colombia, and SWIFT (POBO/COBO), from one API.

What that means in practice:

- **Funded at send time.** Payouts pull the quoted stablecoin amount from a wallet at execution, so no destination-currency balance sits with BlindPay ahead of time.
- **Non-custodial when you fund from your own wallet.** Until you approve the quoted amount, BlindPay can't move it. Managed wallets, a beta product, are BlindPay-custodied.
- **Instant rails first.** Pix, SPEI, and Transfers 3.0 settle in minutes and RTP instantly, according to the [payment methods guide](/docs/kb/payment-methods).
- **Status at every step.** Each payout reports `processing`, `on_hold`, `completed`, `failed`, or `refunded`, with webhooks on every change.

## What to do next

Map the exposure window for your top corridor: when your funds leave, which rail delivers, and what happens if it fails. Then run a test payout on a free development instance with the [payout quickstart](/docs/quickstart-payout) and watch each status change.

---

Source: https://blindpay.com/resources/more/how-to-evaluate-a-wallet-integration-provider

---
title: "How to evaluate a wallet integration provider: 12-point checklist"
seoTitle: "How to evaluate a wallet integration provider: 12 checks"
description: "A 12-point checklist for choosing a wallet or stablecoin payments provider: custody, chains, rails, pricing, compliance, SOC 2, SLAs, and AI tooling."
date: "2026-09-29"
updated: "2026-09-29"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "How do I choose a crypto wallet integration provider?"
    a: "Rank candidates on five criteria first: the custody model and who can sign without you, chain and stablecoin coverage, local payout rails if money must reach bank accounts, pricing transparency including pre-funding, and compliance coverage. Then check developer experience, security reports, SLAs, and support in a two-week proof of concept on the provider's sandbox, not in a sales demo."
  - q: "What is the most important criterion for a wallet provider?"
    a: "The custody model, because it decides who can move the funds, what happens if the provider fails, and which licenses your own company may need. Ask for a diagram of who holds keys or key shares for each product, and who can sign a transaction without you or your users. Every other criterion is easier to fix later than custody."
  - q: "What questions should I ask a wallet provider in a demo?"
    a: "Ask them to show, not tell: who can sign from your wallets without your approval, a failed payout from start to finish, what happens to your funds if they lose a banking partner, how a quote is priced and how long it holds, and how you would leave. Ask for the answers in writing, with the contract clauses that back them."
  - q: "What are red flags in a stablecoin infrastructure provider?"
    a: "Fees that only appear as one blended rate, mandatory pre-funding with no clear reason, custody claims without a key diagram, a sandbox that only returns success, no signed webhooks, FX rates set at settlement instead of quoted upfront, and licenses you can't find on a regulator's public register. Any one of these deserves a direct question before you sign."
  - q: "How long should a wallet provider proof of concept take?"
    a: "Two weeks is enough for most teams. In ten working days you can onboard test customers, link or create wallets on your main chain, run a pay-in and a payout end to end, verify webhooks, force failures and refunds, and add a second chain or rail. Write the success criteria on day one, so the decision on day ten is a scorecard, not a debate."
  - q: "Is BlindPay a wallet provider?"
    a: "No. BlindPay is the payments layer that connects wallets to bank accounts: virtual accounts, on-ramps and off-ramps, live quotes, and local payouts. It links external wallets without holding their keys and offers managed wallets in beta. For key management across thousands of end-user wallets, pair a wallet infrastructure provider with BlindPay for the bank side."
---

To choose a wallet integration provider, rank candidates on five things first: the custody model and who can sign without you, chain and stablecoin coverage, local payout rails if money has to reach bank accounts, pricing transparency including pre-funding, and compliance coverage. Then test developer experience in a two-week proof of concept, not a sales demo.

This checklist covers both halves of a wallet stack: the wallet infrastructure that holds and signs, and the payments layer that connects wallets to bank accounts. Many teams evaluate the two separately and discover the gap between them in production. For the payments API alone, [how to choose a blockchain payment API](/resources/more/how-to-choose-a-blockchain-payment-api) goes deeper on SDKs, OpenAPI quality, and abstraction level.

## How do you choose a wallet integration provider?

Start with the five criteria that are hardest to change after launch, and score the rest in a proof of concept. Custody, coverage, rails, pricing, and compliance shape your architecture and your licensing. Developer experience and support shape your roadmap.

The top five, in order:

1. **Custody model.** Who holds keys or key shares, and who can sign without you or your users. [Custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets) explains the options.
2. **Chain and stablecoin coverage.** Which networks and tokens are live in production today, not on the roadmap.
3. **Local payout rails.** If money has to reach bank accounts, which rails are live in which countries.
4. **Pricing transparency and pre-funding.** Whether fees are itemized before execution, and whether you have to park a balance with the provider.
5. **Compliance coverage.** Which checks run inside the product, and which licensed entity serves each market.

## The 12-point evaluation checklist

Send the same twelve questions to every vendor on your shortlist and score the written answers. A good answer is specific and checkable. A weak answer is a promise.

| # | Criterion | What to ask | What a good answer looks like |
| --- | --- | --- | --- |
| 1 | Custody model | Who holds the keys or shares, and who can sign without us? | A diagram per product, with custodial and non-custodial products named separately |
| 2 | Chain coverage | Which chains are live in production, and which signature schemes do you support? | A published matrix of mainnets and matching testnets |
| 3 | Stablecoin coverage | Which tokens are supported on which chains? | A per-chain token list, with unsupported pairs rejected by a clear error |
| 4 | Local payout rails | Which rails are live, in which countries, in production? | Named rails such as Pix, SPEI, ACH, and SEPA, each marked live |
| 5 | Developer experience | Is there a REST API, a downloadable OpenAPI spec, SDKs, and a sandbox? | An [OpenAPI 3.1](https://spec.openapis.org/oas/v3.1.0) spec, SDKs in several languages, and a sandbox with the same states as production |
| 6 | Pricing and pre-funding | How are fees charged, and must we pre-fund a balance? | Fees itemized in every quote; no pre-funding, or a clear reason for it |
| 7 | FX and live quotes | How is the rate set, and how long does a quote hold? | A firm quote with an expiry and a visible fee split before execution |
| 8 | Compliance coverage | Which checks run in the product: KYC, KYB, sanctions, address screening, KYT, Travel Rule? | Named checks with statuses in the API, plus the licensed entity per market |
| 9 | Security certifications and audits | Which SOC 2 report, which penetration tests, which contract audits? | A [SOC 2](https://www.aicpa-cima.com/topic/audit-assurance/audit-and-assurance-greater-than-soc-2) Type 2 report under NDA and a recent pentest summary |
| 10 | Uptime and SLA | What exactly does the SLA measure? | A split between API uptime and settlement timing, and a status history |
| 11 | Support and migration path | Who answers during an incident, and how do we leave? | A named escalation path, plus key, address, and data export terms in the contract |
| 12 | AI-agent and MCP tooling | Can coding agents build against the API? | An [MCP](https://modelcontextprotocol.io/) server, agent skills, and docs that load cleanly into an agent |

Two items deserve extra time. On item 9, a SOC 2 Type 2 report covers how controls operated over a period, while a Type 1 covers a single date. On item 10, [stablecoin API SLAs](/resources/more/stablecoin-api-sla-settlement-finality) explains why an API can report high uptime while money is still in flight.

## What questions should you ask in a vendor demo?

Ask the vendor to show each answer live in the sandbox, and to follow up in writing. Demos are built around the happy path, so these ten questions go straight to the other paths:

1. Show me every way a transaction can leave our wallets without our approval.
2. Walk a failed payout from start to finish: which status, which webhook, and where do the funds end up?
3. What happens to our funds if you lose a banking partner tomorrow?
4. Which licensed entity serves each of our corridors, and where can we check it?
5. Show a quote: the rate, every fee, the expiry, and what happens when it expires.
6. Do we need to pre-fund a balance, and if so, who holds it and in whose name?
7. How do we prove a customer controls a wallet address before it receives funds?
8. What does address screening return, and what happens when an address is flagged?
9. How do we export our keys, addresses, and transaction history if we leave?
10. Who do we call during an incident, and how fast do they answer?

## What red flags should you watch for?

Red flags are answers that hide cost, custody, or failure behavior. None of them is disqualifying on its own, but each deserves a direct question before you sign:

- **Hidden fees.** One blended rate, with no split between FX spread and transaction fee. [Stablecoin API pricing](/resources/more/stablecoin-api-pricing-explained) shows how to read a quote line by line.
- **Mandatory pre-funding.** A balance you must park with the provider before paying out, with no clear reason. [What no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) covers the alternatives.
- **Unclear custody.** "Non-custodial" in the pitch, with no key or share diagram behind it.
- **No real sandbox.** A test environment that only returns success, so failure paths first show up in production.
- **No webhooks, or unsigned ones.** Polling-only status, or payloads you can't verify.
- **Opaque FX.** A rate set at settlement instead of quoted upfront. [Stablecoin FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes) explains the difference.
- **Unverifiable licenses.** Registrations you can't find on a regulator's public register, such as FinCEN's [MSB registrant search](https://www.fincen.gov/msb-registrant-search).

## How do different provider types compare?

Wallet integration touches four kinds of providers, and each is best at a different job. Most production stacks combine two of them, usually a wallet provider and a payments layer. [Wallet API vs embedded SDK vs white-label](/resources/more/wallet-api-vs-embedded-wallet-sdk-vs-white-label) covers how the wallet side plugs in.

| Provider type | Examples | Best at | Usually paired with |
| --- | --- | --- | --- |
| Payout and on/off-ramp infrastructure | BlindPay | Converting between bank money and stablecoins: virtual accounts, live quotes, local payouts | A wallet provider, or the customer's own wallet |
| Wallet infrastructure providers | Fireblocks, Circle wallets, Privy, Dfns, Utila | Key management, signing policies, embedded and treasury wallets | A payments layer for bank rails |
| Stablecoin issuers | Circle (USDC), Tether (USDT) | Issuing and redeeming the stablecoin itself | Ramps and payout providers for last-mile delivery |
| Exchanges and ramps | Centralized exchanges, consumer ramp apps | Trading liquidity and retail buying and selling | Wallets for storage and transfers |

The categories overlap at the edges. Some wallet providers add fiat connectivity through partners, and some issuers run payout networks. Ask each vendor which job it does itself and which it hands to a partner.

## How do you run a 2-week proof of concept?

A proof of concept should run your real flows in the provider's sandbox for ten working days, against success criteria written on day one. The goal is a scorecard, not a feeling.

1. **Day 1:** get sandbox access and API keys, and write the success criteria with engineering, product, and compliance.
2. **Day 2:** create test customers and run KYC and KYB, including one rejection.
3. **Day 3:** create or link wallets on your main chain, and prove wallet ownership at registration.
4. **Day 4:** run a pay-in end to end, from bank deposit to stablecoins in the wallet.
5. **Day 5:** run a payout end to end: quote, wallet authorization, execution, and fiat delivery. [How to add stablecoin payments to your wallet integration](/resources/more/how-to-add-stablecoin-payments-to-your-wallet-integration) has the steps.
6. **Day 6:** verify webhook signatures, replay duplicate events, and reconcile against your ledger.
7. **Day 7:** force failures: an expired quote, a failed payout, a refunded payout.
8. **Day 8:** add a second chain or a second payout rail.
9. **Day 9:** compliance and security review: the data collected, the checks visible in the API, the SOC 2 report.
10. **Day 10:** price the setup against your projected volume, score the checklist, and decide.

Success criteria worth writing down: every payment state reached in the sandbox, every failure path landing in the right order state, webhook signatures verified, pricing reproduced from quotes, and written answers to all twelve checklist items.

## When is BlindPay a good fit, and when is it not?

BlindPay fits teams that need wallets connected to bank accounts across borders, with the customer's funds staying in the customer's wallet until a payout executes. It doesn't fit teams that need key management, card acquiring, or a stablecoin of their own.

BlindPay is a good fit when you need:

- **Non-custodial cross-border stablecoin flows.** Payouts from external wallets pull only the quoted amount at execution, and BlindPay never holds those wallets' keys. Managed wallets, in beta, cover teams that prefer custody.
- **Virtual accounts.** US bank details per customer, with each deposit converted to USDC or USDT and settled to the linked wallet.
- **Local-currency payouts.** Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), TED, ACH Colombia, and Transfers 3.0. Cross-border wires run as SWIFT payments and collections on behalf of the customer, with UETR tracking and MT103 confirmations.
- **No pre-funding and no volume floor.** Plans are on the [pricing page](/pricing), with no setup fee and no monthly minimum, and every quote itemizes its fees before execution.
- **Chain coverage.** Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, per the [supported chains](/docs/kb/supported-chains) matrix.
- **Developer and agent tooling.** An OpenAPI 3.1 spec, [SDKs](/docs/sdks) for Node.js, Python, Go, PHP, and Swift, an MCP server, agent skills, and a [prompt library](/prompts) for coding agents.

BlindPay is registered with FinCEN as a money services business ([licenses](/licenses)), and its [security page](/security) lists SOC 2 Type 2.

BlindPay is not the right fit when you need a stablecoin issuer, card acquiring, a consumer wallet app, or key-management infrastructure for end-user wallets. For those, pick a specialist, and use the table above to see where BlindPay can sit behind it.

## What to do next

Copy the 12-point table into a spreadsheet, send it to every vendor on your shortlist, including us, and book the two-week proof of concept with the two strongest written answers. Decide on the scorecard, not the demo.

If you're still defining scope, start with [what is crypto wallet integration](/resources/more/what-is-crypto-wallet-integration), then check your launch plan against the [crypto wallet compliance checklist](/resources/more/crypto-wallet-compliance-checklist) before the first vendor call.

---

Source: https://blindpay.com/resources/more/how-to-test-virtual-accounts-sandbox

---
title: "How to test a virtual accounts API integration before going live"
seoTitle: "Virtual accounts API: how to test it in a sandbox"
description: "The integration sequence for a virtual accounts API, what a sandbox simulates and what it can't, and a test plan with the statuses and webhooks to expect."
date: "2026-09-29"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to integrate and test a virtual accounts API"
  steps:
    - name: "Create the customer"
      text: "Create an individual or business customer with the API. On a development instance, KYC is auto-approved, and a first or legal name of Fail returns a rejection you can test against."
    - name: "Fill the compliance fields"
      text: "Before requesting an account, fill the fields the banking partner checks: account purpose, source of wealth, and for businesses the business type, description, NAICS industry code, estimated annual revenue, and owners."
    - name: "Add the settlement wallet"
      text: "Register the customer's blockchain wallet. Every deposit into the virtual account settles to this wallet. USDT settlement needs a wallet on Polygon, Ethereum, or Solana."
    - name: "Create the virtual account"
      text: "Call the virtual accounts endpoint with the banking partner, the settlement token, and the blockchain wallet id. Send an Idempotency-Key header so a retried request never creates a second account."
    - name: "Handle the account webhooks"
      text: "Listen for virtualAccount.new when the account is requested and virtualAccount.complete when the bank approves it and the routing and account numbers are issued."
    - name: "Handle a payin per deposit"
      text: "Every deposit into the account creates a payin. Handle payin.new, any payin.update, and payin.complete, and treat completed, failed, and refunded as final statuses."
    - name: "Switch to production"
      text: "Create a production instance and API key, re-create the webhook endpoint, switch USDB to USDC or USDT, submit real KYC documents, and remove any logic that relies on test amounts."
faq:
  - q: "Can I test a virtual accounts API for free?"
    a: "Yes, on BlindPay. A development instance is free and exposes the same endpoints, fields, and webhooks as production. Virtual accounts are approved instantly, deposits are simulated with payins that complete in about 30 seconds, and settlement uses USDB, a test stablecoin. You only pay the $1.50 monthly account fee and deposit fees once real accounts run on a production instance."
  - q: "How do I simulate a deposit into a virtual account in the sandbox?"
    a: "There is no bank to send from on a development instance, so you simulate the deposit with a payin. Create a payin quote for the customer with ach or wire as the payment method, then create the payin from it within the 5 minute quote window. It completes after about 30 seconds unless you use a test amount that forces a failure or a refund."
  - q: "Are sandbox virtual account numbers real?"
    a: "No. On a BlindPay development instance the routing number is always 110000000 and the account number is a fake 12-digit number derived from the account id, so it stays the same across requests. No real bank recognizes either value. Never show them to a real payer. Production accounts get bank-issued numbers once the bank approves them."
  - q: "Why does my production virtual account stay in pending_review?"
    a: "Production accounts go through two reviews. The account sits in pending_review during compliance review, then verifying during bank review, then becomes approved or rejected. Issuance SLAs are 24 hours or 3 to 5 business days depending on account type. If the bank asks for more documents, the SLA clock restarts on the day you submit them."
  - q: "Can I test a virtual account rejection in the sandbox?"
    a: "Not directly. Development instances approve every virtual account, so a rejected account only happens in production. You can test a rejected customer by setting the first or legal name to Fail. For the account itself, feed your handler a stored payload with a rejected status in a unit test, so the code path exists before the first real rejection arrives."
---

To test a virtual accounts API integration, run the whole sequence on a development instance: create a customer, fill the compliance fields, link a wallet, create the account, and simulate deposits that complete, fail, and refund. Check every status and webhook along the way. Then plan for what a sandbox can't test: bank review, real payer banks, and name checks.

The sandbox proves your code. It doesn't prove your approval timeline.

## Key takeaways

- A virtual accounts integration is seven steps, and only one of them is the create call. The rest is compliance fields and webhooks.
- A sandbox simulates approval and deposits. It can't simulate bank review, the payer's bank, or a beneficiary name check.
- In production you never create the payins for deposits. Each deposit creates one, so your handler has to accept payins it has never seen.
- Model one account per customer. Pooled accounts push matching back onto payers, and per-invoice accounts run into review limits and nesting rules.

## What does a virtual accounts API integration involve?

A virtual accounts integration takes a verified customer, gives them their own bank account details, and turns every deposit into a tracked event. The create call is one request. The work around it is customer data, a settlement destination, and webhook handling.

The sequence at BlindPay looks like this:

1. **Create the customer.** Individual or business. On development, KYC is auto-approved.
2. **Fill the compliance fields.** Account purpose and source of wealth for everyone. For businesses, also business type, description, NAICS industry code, estimated annual revenue, publicly traded status, and owners with ownership percentage and title.
3. **Add the settlement wallet.** A blockchain wallet (`bw_...`) the customer controls. Deposits settle there.
4. **Create the virtual account.** One request with the banking partner, the token, and the wallet id.
5. **Handle the account webhooks.** `virtualAccount.new` fires when the account is requested, `virtualAccount.complete` when the bank approves it and the numbers are issued.
6. **Handle one payin per deposit.** `payin.new`, then intermediate `payin.update` events, then `payin.complete`.
7. **Switch to production.** New instance, new key, new webhook endpoint, real tokens.

Step 2 is where teams lose days. Depending on the banking partner, the API rejects the create request with `missing_required_fields` and names each blank field. Collect those fields in your onboarding form, not in a support thread later. The full list is in [virtual account requirements](/resources/more/virtual-account-requirements-kyc-kyb).

If you're still deciding what a virtual account is for in your product, start with [what is a virtual account](/resources/more/what-is-a-virtual-account).

## What do the create request and response look like?

The request names the banking partner, the settlement token, and the wallet. The response returns an account id and, once approved, routing and account numbers per rail. Here's an example on a development instance, with placeholder ids:

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: 6f1c2a9e-onboarding-re_000000000000' \
  --data '{
    "banking_partner": "<eligible_banking_partner>",
    "token": "USDB",
    "blockchain_wallet_id": "bw_000000000000"
  }'
```

An abbreviated response, with values a development instance returns:

```json
{
  "id": "va_000000000000",
  "kyc_status": "approved",
  "token": "USDB",
  "blockchain_wallet_id": "bw_000000000000",
  "partner_fee_id": null,
  "us": {
    "ach": { "routing_number": "110000000", "account_number": "123456789012" },
    "wire": { "routing_number": "110000000", "account_number": "123456789012" }
  }
}
```

Three details matter for your data model. The `token` and `blockchain_wallet_id` can be changed later, but `banking_partner` can't. Before approval, the rail numbers are empty, so don't render payment instructions until they exist. And USDB only works on development: production uses USDC or USDT. The field reference is in [create a virtual account](/docs/virtual-accounts-create).

## What does a development instance simulate, and what can't it?

A development instance simulates approvals and deposits with the same endpoints, fields, and webhooks as production. It can't simulate anything a real bank does. That gap decides which tests belong in the sandbox and which belong in a controlled production launch.

| Behavior | Development instance | Production instance |
| --- | --- | --- |
| Customer KYC | Auto-approved. A first or legal name of `Fail` returns a rejection | Real review: about 60 seconds for KYC Standard, hours to a business day for manual review |
| Virtual account review | Skipped. Created directly as `approved` | `pending_review`, then `verifying`, then `approved` or `rejected` |
| Account numbers | Routing `110000000`, fake 12-digit account number that stays the same per account | Real, bank-issued numbers |
| Deposits | Simulated with a payin that completes in about 30 seconds | Real ACH, wire, or SWIFT transfer, up to 5 business days for ACH and wire |
| Outcome control | `request_amount` of `66600` fails, `77700` refunds | The real amount is processed |
| Settlement token | USDB | USDC or USDT |
| Rate limit | About 100 requests per minute per instance, then `429` | The development cap does not apply |

What the sandbox can't tell you: how long bank review takes for your customer mix, whether a payer's bank adds its own delays, whether a sending bank checks the beneficiary name, and which documents the bank asks for. Those are production facts. The general list of what testing misses is in [stablecoin API sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production).

## Which test cases should you run?

Run one test per status your product shows and one per webhook your ledger depends on. The table below covers the virtual account cases. Simulate each deposit with a payin quote for the customer using `ach` or `wire`, then a payin created from it within the 5 minute quote window.

| Test | How to trigger it | Expected result |
| --- | --- | --- |
| Customer rejected | Create a customer with first or legal name `Fail` | Customer `rejected`. Your onboarding should block account creation |
| Missing compliance fields | Request an account for a business with `account_purpose` blank | `missing_required_fields` naming each blank field, depending on the banking partner |
| Account created | Valid create request | `approved` right away, `virtualAccount.new` fires |
| Retried create | Resend the same request with the same `Idempotency-Key` and identical body | Original response replayed with `Idempotency-Replayed: true`, no second account |
| Second account | Request another account for the same customer on the same banking partner | Rejected, except on the one partner that allows several accounts per customer |
| Deposit completes | Payin with any normal amount | `payin.new`, then `payin.complete` with status `completed`; `blindpay_bank_details` shows the account's own numbers |
| Deposit fails | `request_amount` of `66600` ($666.00) | Status `failed` |
| Deposit refunds | `request_amount` of `77700` ($777.00) | Status `refunded` |
| Fee fields | Any completed deposit | Your ledger stores both `billing_fee_amount` and `transaction_fee_amount` without assuming either is set. Development is free, so check real values on the first production deposits |
| Duplicate webhook | Replay an event from the webhook dashboard | Your handler deduplicates on `svix-id` and changes nothing |

Two of these catch most production bugs. The retried create, because a timeout during onboarding is common and a second account is a support ticket. And the duplicate webhook, because replays happen. Signature checks and dedupe patterns are in [stablecoin API webhooks](/resources/more/stablecoin-api-webhooks-reconciliation), and key handling is in [idempotency keys](/resources/more/stablecoin-api-idempotency-keys).

One production difference changes how you write the deposit handler. In the sandbox you create the payin yourself. In production, BlindPay creates a payin for every deposit that lands on the account and sends `payin.new`. Match it on `customer_id` and the account number in `blindpay_bank_details`, never on a payin id you stored earlier.

## Should you create one account per customer, per invoice, or a pooled account?

Create one account per customer. That's the model virtual accounts are built for: the receiving account number identifies who paid, and the account is reviewed once. Pooled accounts and per-invoice accounts both work in narrow cases, with real costs.

| | Single pooled account | One account per customer | One account per invoice |
| --- | --- | --- | --- |
| What the payer sees | A shared account plus a reference or memo code | The customer's own routing and account number | A new account number on every invoice |
| How deposits are matched | The payer types the reference correctly | By the receiving account number | By account number, at invoice level |
| Review | None per payment | Once per customer | Once per account, so once per invoice |
| At BlindPay | Payin quote without a virtual account: `ach` and `wire` use a memo code, capped at $500,000 per transaction, and SWIFT isn't available | The default model, with SWIFT available once approved | Limited: a customer holds one account per banking partner, with one partner allowing several |
| Main risk | Payers drop the reference and someone matches by hand | Approval time before the first deposit | Review per account, payers reusing old details, and nesting |

Nesting is the reason per-invoice designs fail review. If each account really represents a different client of your customer, the money belongs to parties the provider never verified. BlindPay's rule is in [nested payments](/docs/kb/nested-payments). For invoice-level matching on one account, use amounts and the payment records instead; [how virtual accounts automate reconciliation](/resources/more/virtual-account-reconciliation) walks through partial payments and overpayments.

## What does a test plan look like for a payroll platform?

*Illustrative example, not a real customer.* A payroll platform lets employers fund payroll by sending ACH or wire to their own virtual account, which settles to USDC before payouts go to contractors. The team writes a sandbox plan with three test employers.

**Employer A, the happy path.** A US business with every compliance field filled.

1. `customer.new`, then `blockchainWallet.new` when the wallet is added.
2. Create the account: `approved` in the response, `virtualAccount.new` fires.
3. Simulate a $12,000.00 funding deposit: `payin.new`, then `payin.complete` about 30 seconds later, status `completed`.
4. Confirm the ledger stores both fee fields from the payin, even though development charges no fees. In production, the fee lands in `billing_fee_amount` below $100.00 and in `transaction_fee_amount` at $100.00 or more.

**Employer B, the bad deposits.** Same setup, then two payins: `66600` ends `failed` and `77700` ends `refunded`. The team checks that the payroll run stays blocked in both cases and that the employer sees a clear "funding returned" state instead of a spinner.

**Employer C, the rejected customer.** Legal name `Fail`. KYC comes back `rejected`, and the onboarding screen stops before the account request. No `virtualAccount.new` should ever fire for this employer.

The plan takes an afternoon. What it doesn't cover goes into a launch checklist: the first real employer's review time, the first real ACH arrival time, and the first micro-deposit (a $0.01 test some payroll providers send), which shows up as a real payin and should be reconciled, not flagged.

## What changes when you switch to production?

Everything that touches a bank becomes real, and the approval step comes back. Plan for both before you migrate the first customer.

- **New instance and key.** Production instances are created in the dashboard and can take up to 3 business days to provision. Development keys don't work on them.
- **Re-create webhooks.** The development webhook endpoint doesn't carry over.
- **Real tokens.** Switch USDB to USDC or USDT. USDT needs a wallet on Polygon, Ethereum, or Solana.
- **Real review.** Accounts go through compliance and bank review, with SLAs of 24 hours or 3 to 5 business days by account type. If the bank asks for more documents, the clock restarts when you submit them.
- **Remove test amounts.** On production, $666.00 and $777.00 are just amounts.
- **Real fees.** $1.50 per month per account, plus the fee on each deposit's payin.

Build the onboarding screen around the review time, not the API response time. That's the one thing the sandbox hides.

## Where does BlindPay fit?

BlindPay issues US virtual accounts in your customer's name that receive ACH, wire, and SWIFT (POBO/COBO) transfers and settle to USDC or USDT in a wallet the customer controls. The free development instance uses the same base URL as production, `https://api.blindpay.com`, and which environment you hit depends on the instance your API key belongs to.

For the build itself, there's a public OpenAPI 3.1 spec, official SDKs for Node.js, Python, Go, PHP, and Swift ([SDKs](/docs/sdks)), and a [CLI](/blog/cli) where `blindpay virtual_accounts create` runs the same request from a terminal. For the full evaluation beyond testing, see [how to choose a virtual account provider](/resources/more/how-to-choose-a-virtual-account-provider), and for what the payer side costs, [virtual account fees](/resources/more/virtual-account-fees).

What BlindPay doesn't do: issue virtual IBANs, or accounts outside the US. Deposits that never show up are covered in [virtual account deposit not received](/resources/more/virtual-account-deposit-not-received).

## What to do next

Create a free development instance, then run the ten test cases in the table above against your own webhook endpoint, starting with the retried create and the duplicate webhook. The request reference is in [create a virtual account](/docs/virtual-accounts-create), and the full sandbox behavior is in [sandbox vs production](/docs/learn/sandbox-vs-production).

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

---

Source: https://blindpay.com/resources/more/on-ramp-widget-vs-api

---
title: "On-ramp widget vs API: which integration fits your product?"
seoTitle: "On-ramp widget vs API: which one to integrate"
description: "Hosted on-ramp widget or API-first ramp? Compare who owns the UX, KYC, quotes, webhooks, branding, and compliance, plus a decision table and checklist."
date: "2026-09-29"
updated: "2026-09-29"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between an on-ramp widget and an on-ramp API?"
    a: "A hosted on-ramp widget is a page or iframe the provider runs inside your app: the provider shows the quote, collects KYC, and owns most of the screens. An API-first on-ramp gives you endpoints and webhooks, so your product builds every screen, sends customer data to the provider, and decides how quotes and deposit instructions look. The conversion is the same. Control and effort differ."
  - q: "Is an on-ramp widget faster to launch than an API?"
    a: "Usually, yes, for the first version. A widget can go live in days because the provider already built KYC capture, quote display, and payment screens. An API integration takes longer because you build those screens and handle webhooks yourself. The gap narrows if you already run KYC in your own onboarding, since the API can reuse that data instead of asking users twice."
  - q: "Who does KYC in an on-ramp widget?"
    a: "In most widgets, the ramp provider collects ID documents and selfies inside its own screens and keeps the customer relationship. With an API-first ramp, you usually collect the data in your onboarding and submit it to the provider, which still runs the verification and makes the decision. Either way, the ramp provider screens the person or business before any money moves."
  - q: "Can I brand a hosted on-ramp widget?"
    a: "Partly. Most widgets let you set a logo, colors, and sometimes default currency or network, but the layout, the copy, and the KYC steps stay the provider's. If your product needs its own flow, such as showing deposit details inside an existing account screen, an API is the only way to control every pixel and every word the user reads."
  - q: "Which on-ramp integration do businesses use?"
    a: "Business on-ramps tend to be API-first because companies fund with bank transfers like ACH, wire, Pix, or SPEI, need deposits matched to invoices or accounts, and want webhooks feeding a ledger. Hosted widgets are more common in consumer wallets where one person buys a small amount by card and conversion speed matters more than reconciliation."
  - q: "Can you mix a widget and an API in one product?"
    a: "Yes. A common pattern is an API for the money flow and one hosted step for something the provider must collect directly, such as a terms of service acceptance or a document upload. The rule is simple: the more of the flow the provider hosts, the less you control, and the more your user sees the provider's name."
---

An on-ramp widget is a hosted page the provider runs inside your app. It shows quotes, collects KYC, and owns most screens, so you launch fast with little control. An API-first on-ramp gives you endpoints and webhooks: you build the screens, own the user experience and data flow, and take on more engineering work.

Both convert fiat into stablecoins. The difference is who owns each step between "user taps buy" and "USDC lands in a wallet." That split decides your launch date, your conversion rate, and what your compliance team signs.

**Key takeaways**

- Widgets trade control for speed. The provider owns the screens, the copy, and usually the KYC flow.
- APIs trade speed for control. You own the UX, the quote display, and the data, and you build more.
- KYC is the deciding factor. If you already verify users in your onboarding, an API avoids asking twice.
- Businesses funding by bank transfer lean API-first. Consumer card purchases lean widget.
- Hybrids are normal: an API for the money flow plus one hosted step the provider must own.

New to the stack? [What is stablecoin infrastructure](/resources/more/what-is-stablecoin-infrastructure) maps the layers, and this page zooms into how the on-ramp layer plugs into your product.

## What is a hosted on-ramp widget?

A hosted on-ramp widget is a provider-built purchase flow embedded in your product through an iframe, a redirect, or an SDK that opens a modal. Your app passes a few parameters (amount, currency, destination wallet) and the provider handles the rest.

Inside the widget, the provider typically:

1. Shows a quote with the price, fees, and network.
2. Collects identity data, ID photos, and a selfie.
3. Takes payment, often by card or a local method.
4. Sends stablecoins to the wallet address you passed in.
5. Redirects the user back, sometimes with a status callback.

Widgets were built for consumer wallets: one person buying a small amount, often by card. [Business vs consumer on-ramps](/resources/more/business-vs-consumer-crypto-on-ramps) covers why that market looks so different from company funding flows.

One technical note. If the widget loads in an iframe, the provider controls which sites may frame it through the Content-Security-Policy `frame-ancestors` directive ([MDN reference](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/frame-ancestors)). Expect an allowlisting step, and expect some providers to force a redirect or popup instead.

## What is an API-first on-ramp?

An API-first on-ramp exposes the conversion as REST endpoints plus webhooks. Your product creates the customer, requests a quote, creates the deposit, shows the payment instructions in your own UI, and listens for status events.

The typical call sequence:

1. Create a customer and submit KYC or KYB data.
2. Register the destination wallet.
3. Request a quote for amount, currency, and rail.
4. Create the payin and render the deposit instructions (bank details, a Pix code, a CLABE).
5. Receive webhooks as the deposit arrives and the stablecoins are delivered.

The full walkthrough, with edge cases and testing, is in [how to integrate a crypto on-ramp API](/resources/more/how-to-integrate-a-crypto-on-ramp-api).

## What changes between a widget and an API?

Almost everything except the conversion itself. The table below compares the two on the decisions that matter after launch.

| Dimension | Hosted widget | API-first ramp |
| --- | --- | --- |
| Who builds the screens | Provider | You |
| Branding | Logo and colors, provider layout | Fully yours |
| KYC capture | Provider screens, provider customer relationship | Your onboarding, data sent to provider |
| KYC decision | Provider | Provider |
| Quote display | Provider shows it; you may not see the breakdown | You get fees, rate, and expiry as fields |
| Deposit instructions | Shown inside the widget | Returned as data; you render them |
| Status updates | Redirect or callback, varies | Webhooks for each state change |
| Reconciliation | Per-session data, often limited | IDs and references you store in your ledger |
| Typical funding | Cards, mobile wallets, some local methods | Bank transfers: ACH, wire, Pix, SPEI |
| Time to first launch | Days to a few weeks | Weeks |
| Engineering after launch | Low | Ongoing: webhooks, retries, UI states |
| Who the user sees | The provider's name | Your product |

Two rows deserve a closer look.

**Quote display.** A widget usually shows one all-in price. An API returns the pieces: rate, fees, amount received, and how long the quote stays valid. If your treasury team needs to explain every basis point, you need those fields. [Live quotes and slippage](/resources/more/stablecoin-fx-slippage-live-quotes) explains why the expiry window matters.

**Reconciliation.** Widgets are built around a session. APIs are built around objects with IDs. If deposits need to match invoices or customer accounts, object IDs win.

## Who owns KYC and compliance in each model?

The ramp provider always makes the verification decision. The question is who collects the data and who owns the customer relationship.

With a widget, the provider usually collects documents in its own screens and treats the user as its own customer. That's simpler for your compliance team. It's also friction for a user who already passed your onboarding and now sees a second ID check.

With an API, you collect the data once and submit it. Your compliance team now has to think about data handling and about which party screens what. [On-ramp compliance: who owns what](/resources/more/crypto-on-ramp-compliance-who-owns-what) breaks down that split line by line.

Business customers raise the bar. Under FinCEN's customer due diligence rule, covered US financial institutions identify beneficial owners of legal entity customers ([31 CFR 1010.230](https://www.law.cornell.edu/cfr/text/31/1010.230)). Expect a business on-ramp to ask for owners and control persons, whichever integration you pick.

The money transmission question doesn't disappear with a widget either. FinCEN's 2019 guidance on convertible virtual currency business models ([FIN-2019-G001](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-certain-business-models)) looks at what each party actually does with the value, not at whose screen it happens on. This article is for information only and is not legal advice.

## Which integration fits which product?

Pick by funding method, by who the user is, and by whether you already run KYC. The table gives a starting point.

| Product | Better fit | Why |
| --- | --- | --- |
| Consumer self-custody wallet, card buys | Widget | Card coverage and KYC in minutes, built for you |
| Neobank or fintech with USD accounts | API | Deposit details inside your account screen, KYC reused |
| B2B treasury or payroll funding | API | Bank transfers, IDs for reconciliation, webhooks to ledger |
| Marketplace collecting from buyers | API | Deposits matched to orders and sellers |
| Prototype or MVP to test demand | Widget | Launch in days, learn before you build |
| Regulated fintech with its own KYC program | API | One verification, your audit trail |

## How do you decide, step by step?

Use these steps in order. Most teams have their answer by step 4.

1. **Name the funding method.** Card buys point to a widget. Bank transfers point to an API.
2. **Check your onboarding.** If users already pass KYC or KYB with you, an API saves them a second check.
3. **Decide who the user should see.** If the brand on the payment screen must be yours, you need an API.
4. **List what finance needs.** Fee breakdowns, quote IDs, and deposit references require API data.
5. **Count your engineering weeks.** If you can't staff webhooks, retries, and UI states this quarter, start with a widget.
6. **Ask about hosted steps.** Even API-first providers may host one step, such as terms acceptance. Know which ones.
7. **Plan the exit.** If you start on a widget, confirm you can move to the provider's API later without re-verifying every user.

Whichever you pick, document it for your bank partners. US bank regulators' 2023 interagency guidance on third-party relationships ([OCC Bulletin 2023-17](https://www.occ.gov/news-issuances/bulletins/2023/bulletin-2023-17.html)) expects banks to understand the vendors in a flow, and your ramp is one of them.

## What are the limits of each approach?

Neither model is free of trade-offs, and each has cases where it is the wrong pick.

**Widget limitations:**

- Your users see a different company's name at the moment they pay.
- You often can't show the fee breakdown or control the quote expiry.
- Iframe embedding can break on strict mobile webviews or framing rules.
- Data access is limited to what the provider sends back.
- Conversion depends on screens you can't A/B test.

**API limitations:**

- More engineering, before and after launch.
- You own every UI state, including errors and holds.
- Your compliance team owns data collection and its handling.
- Bank-transfer funding is slower than a card buy, so it suits planned deposits more than impulse purchases.

## How does BlindPay fit?

BlindPay is an API-first on-ramp for businesses. There's no consumer card widget. Your product creates customers, quotes, and payins through the API, renders the deposit instructions itself, and follows each deposit through webhooks.

One step is hosted on purpose: [terms of service acceptance](/docs/learn/terms-of-service). Each customer accepts BlindPay's terms on a page at app.blindpay.com that shows your instance's logo, name, and accent color, then returns to your `redirect_url` with a `tos_id` you pass when creating the customer. Everything else stays in your UI.

What the API gives you:

- **KYC and KYB through the API.** You submit customer data and documents; BlindPay runs the review. [KYC requirements](/docs/kb/kyc) lists the fields per level.
- **Quotes as data.** A payin quote locks the payment method, amount, and fees for 5 minutes, so you can show exact numbers before the user commits.
- **Deposit instructions as fields.** ACH and wire return bank details and a memo code, Pix returns a `pix_code`, SPEI returns a CLABE. Customers with an approved virtual account get dedicated US bank details instead.
- **Webhooks for every step.** `payin.new`, `payin.update`, and `payin.complete`, plus `tos.accept` and customer updates.
- **Delivery to any supported chain.** USDC or USDT to Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, or Tron, depending on token.

If your users never see a wallet address, the Abstracted docs flavor treats payins as plain deposits. Payouts run the other direction over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO).

## What to do next

Write down your funding method and whether you already run KYC. If the answers are "bank transfer" and "yes," start with the [payin quickstart](/docs/quickstart-payin) on a free development instance and render your first deposit instructions today.

---

Source: https://blindpay.com/resources/more/stablecoin-depeg-risk-payments

---
title: "Stablecoin depeg risk for payment companies: what past depegs teach and how to set limits"
seoTitle: "Stablecoin depeg risk for payments: lessons and limits"
description: "A depeg hurts a payment flow only while you hold the stablecoin. What USDC's 2023 depeg and UST's collapse teach, and the limits and triggers to set."
date: "2026-09-29"
updated: "2026-09-29"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin depeg?"
    a: "A depeg is when a stablecoin trades away from its target price, usually one US dollar, on the open market. For a fiat-backed stablecoin it is a market price move, not a change in what the issuer owes: the issuer still promises to redeem at par. The risk for a business is selling or valuing tokens at the market price while the gap is open."
  - q: "How far did USDC fall in March 2023?"
    a: "USDC hit a low of 86 cents on March 11, 2023, according to a December 2025 Federal Reserve note, after Circle disclosed that $3.3 billion of its reserves sat at the failed Silicon Valley Bank. It returned to par after US authorities said on March 12 that all of the bank's depositors would be protected and Circle's primary market reopened on March 13."
  - q: "Does a depeg affect a payment that is already in flight?"
    a: "Only if you hold the stablecoin at a floating price while it is in flight. If the payout rate was locked by a quote before the transfer and the conversion executes against that quote, the price move after the lock is the provider's problem, not yours. Exposure comes back when you hold balances, receive stablecoins without converting them, or let quotes expire and requote mid-event."
  - q: "Should a payment company pause stablecoin payouts during a depeg?"
    a: "Pause new exposure, not everything. Stop accepting stablecoin receivables you would have to hold, cap pre-funded balances, and route new payouts through the token that is holding its peg if your provider supports both. Payouts already locked to a quote can usually complete. Decide these rules before an event, because a weekend depeg leaves no time for a committee."
  - q: "Is USDT or USDC safer from depegs?"
    a: "Neither is immune. USDC's largest depeg came from bank concentration in its reserves in 2023. In March 2023, USDT traded above par as money left USDC, but that says more about one weekend than about its reserves. The practical answer for a payment flow is to support both where the corridor allows, cap how much you hold of each, and keep holding periods short."
  - q: "Does the GENIUS Act eliminate depeg risk?"
    a: "No. The GENIUS Act requires permitted US issuers to hold 1:1 reserves in cash and short-term Treasuries and to publish monthly reserve reports, which reduces the reserve-quality risk behind past depegs. It does not stop secondary market prices from moving during a panic, and its core provisions only take effect on January 18, 2027. Confirm the details with qualified counsel."
---

A stablecoin depeg only hurts a payment company while it holds the stablecoin at a floating price. A payout locked by a quote and converted within minutes carries almost no depeg risk. A treasury balance, a pre-funded float, or unconverted customer receivables carry all of it. Set limits on those holdings, not on payments.

This article is general information, not legal or investment advice.

**Key takeaways**

- **Exposure is time multiplied by balance.** A payment flow that converts within minutes has a tiny exposure window. Balances held for days have a large one.
- **USDC fell to 86 cents in March 2023** when $3.3 billion of reserves were stuck at Silicon Valley Bank, per a [Federal Reserve note](https://www.federalreserve.gov/econres/notes/feds-notes/in-the-shadow-of-bank-run-lessons-from-the-silicon-valley-bank-failure-and-its-impact-on-stablecoins-20251217.html). It recovered within days.
- **Depegs hit on weekends.** The issuer's redemption window was shut over the SVB weekend while secondary markets traded around the clock.
- **Depegs spread.** Stablecoins backed by or linked to USDC fell with it. USDT traded above par as money fled.
- **Write the playbook before the event:** concentration caps, holding-time limits, price triggers, and a token fallback.

**Definition.** A **stablecoin depeg** is a period when a stablecoin trades on the open market away from its target value, usually one US dollar.

## Why is depeg risk different for a payment flow than for a treasury?

A payment flow holds a stablecoin for minutes, while a treasury holds it for weeks, so the same price move costs them very different amounts.

Think of exposure as balance multiplied by time held. A payout that locks a rate, pulls the stablecoin, and pays out in local currency is exposed only between the lock and the conversion. A company that keeps a stablecoin float to fund payouts, or lets merchant receivables sit in stablecoins until month-end, is exposed for the whole holding period.

Here is where stablecoin exposure actually sits in a typical payments business:

| Where the stablecoin sits | Typical holding time | Depeg exposure | Who carries it |
| --- | --- | --- | --- |
| Quote window before a payout executes | Minutes | Low, if the rate is locked | Usually the provider, inside the quote |
| On-chain transfer to the payout provider | Seconds to minutes | Low | Sender until the transfer confirms |
| Pre-funded balance at a provider | Days to weeks | High | You |
| Customer receivables held in stablecoins | Days to a month | High | You or your customer, by contract |
| Treasury reserve held in stablecoins | Weeks to months | Highest | You |

The design question is simple: which rows can you shrink? The [no pre-funding model](/resources/more/no-pre-funding-stablecoin-payouts) removes the third row entirely.

## What happened in past stablecoin depegs?

Two events show the two main failure types: a fiat-backed stablecoin with a reserve problem, and an algorithmic stablecoin with no real reserve.

**USDC, March 2023 (reserve concentration).** On March 10, Silicon Valley Bank failed and Circle disclosed that $3.3 billion of USDC reserves, about 8 percent, were held there. The [Federal Reserve's December 2025 note](https://www.federalreserve.gov/econres/notes/feds-notes/in-the-shadow-of-bank-run-lessons-from-the-silicon-valley-bank-failure-and-its-impact-on-stablecoins-20251217.html) on the episode records:

1. USDC hit a low of 86 cents on March 11.
2. Circle suspended primary minting and redemption over the weekend, citing US banking hours.
3. Secondary market trading volume rose to nearly $2 billion an hour on March 11, and decentralized exchange volume far exceeded centralized exchange volume.
4. Stablecoins linked to USDC also fell: DAI through its USDC-backed stability modules, and USDP to 91 cents. USDT traded above par in a flight to safety.
5. The Treasury, the Federal Reserve, and the FDIC [said on March 12](https://www.federalreserve.gov/newsevents/pressreleases/monetary20230312b.htm) that all SVB depositors would have access to their money on March 13. The peg recovered once Circle's primary market reopened that Monday.

**UST, May 2022 (algorithmic design).** TerraUSD tried to hold its peg through an exchange mechanism with a sister token, LUNA, not through cash reserves. The [SEC's complaint](https://www.sec.gov/news/press-release/2023-32) states that in May 2022 UST depegged and its price, along with its sister tokens, "plummeted to close to zero." It never recovered.

The lesson for payments teams: a reserve-backed stablecoin can trade at a discount for a weekend and recover. An unbacked one can go to zero. Payment flows should only touch the first kind. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares the two largest issuers' track records.

## Why do depegs tend to happen on weekends?

A fiat-backed stablecoin's redemption depends on the banking system, which closes on weekends, while blockchains and exchanges keep trading.

That gap is the mechanism. During the week, an arbitrageur who buys USDC at 97 cents can redeem it with the issuer at one dollar, which pulls the price back up. When redemption pauses, that pull disappears, and the secondary market price floats freely until banks reopen. The SVB failure landed on a Friday, and the trough came on Saturday.

For a payment company, this means the riskiest time to hold a stablecoin balance is Friday evening through Monday morning, which is also when local bank rails are thinnest. Plan for both at once.

## How do depegs spread between stablecoins?

A depeg spreads through backing and liquidity links: a stablecoin that holds another stablecoin as collateral, or trades mainly against it, inherits its stress.

In March 2023, DAI fell because a large share of its backing was USDC held in stability modules. USDP fell too. Meanwhile USDT rose above one dollar because traders sold USDC for it.

So diversifying across two stablecoins helps only if they don't share reserves, banks, or collateral. Before you count a second token as a hedge, check what backs it.

## What controls should a payment company set?

Set limits on holdings, not on payment volume, and decide the rules before an event.

1. **Concentration cap per token.** Cap the share of any balance held in one stablecoin. If the corridor supports both USDC and USDT, split holdings so one issuer's bad weekend can't take out your float.
2. **Holding-time limit.** Convert stablecoin receivables to fiat, or into the payout, within a set window. Every extra day held is extra exposure.
3. **Price triggers.** Watch the market price of each token you hold. Set tiers in advance, for example a warning at 99.5 cents and a stop on new holdings at 99 cents. These numbers are illustrative; set your own from your balance size and risk appetite.
4. **Locked quotes only.** Execute payouts against a quote that fixes the rate. Never price a payout from a live market feed during an event.
5. **Requote discipline.** If a quote expires mid-event, the new one may price the token differently. Show the user the new numbers before executing. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers expiry handling.
6. **Token fallback.** Know in advance which corridors can switch tokens. A payout to Brazil over Pix may work from either token on several chains; some chains carry only one.
7. **Redemption access.** If you hold large balances, know who can redeem directly with the issuer at par, and whether you can.
8. **Customer terms.** If customers hold balances through you, state in the contract who bears a depeg loss.

**Depeg playbook (the failure modes to plan for)**

- Issuer redemption paused for a weekend while markets trade.
- A second stablecoin you count as a hedge falls too, because it is backed by the first.
- A quote expires and the requote prices the token below par.
- A customer sends stablecoins during the event and expects par value.
- Local payout rails are closed, so you can't convert out until Monday.
- Liquidity on your chain of choice thins out and spreads widen.

## Which controls fit which use case?

The right controls depend on how long each use case holds stablecoins.

| Use case | Typical holding time | Main depeg exposure | Controls that matter most |
| --- | --- | --- | --- |
| Payroll to Latin America | Minutes per run | Funding balance before the run | Fund just in time, locked quotes, token fallback |
| Merchant collections in the US | Hours to days | Receivables held before conversion | Holding-time limit, auto-conversion, customer terms |
| Treasury holding | Weeks to months | Full balance | Concentration cap, price triggers, issuer redemption access |
| Remittance | Minutes | Quote window | Locked quotes, requote discipline |
| B2B supplier payments | Minutes to hours | Pre-funded float | No pre-funding, concentration cap |

Read the table from the right: the further a use case sits from "minutes," the more of the playbook it needs.

## Does regulation reduce depeg risk?

Regulation reduces the reserve-quality risk behind past depegs, but it does not stop market prices from moving during a panic.

The GENIUS Act requires permitted US issuers to hold 1:1 reserves in cash and short-term Treasuries and to publish monthly reserve reports. Its core provisions take effect on January 18, 2027. The [GENIUS Act guide](/resources/more/genius-act-for-businesses) has the full timeline. In the EU, MiCA already requires e-money tokens to be fully reserved and redeemable at par.

Better reserves make a 2023-style bank concentration less likely. They don't make a weekend gap between redemption and trading go away. Confirm how any regulation applies to your business with qualified counsel.

## How does BlindPay handle depeg exposure?

BlindPay converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), and payouts execute against a quote that locks the rate and fee for 5 minutes. There is no pre-funded balance to hold, so the exposure window in a payout is the minutes between the quote and the execution.

Token support varies by chain: USDT payouts run on Ethereum, Polygon, Solana, Tron, and Tempo, while Base, Arbitrum, Arc, and Stellar carry USDC only. The [supported chains reference](/docs/kb/supported-chains) has the full matrix, which is what you need to plan a token fallback. For the wider map of who holds what in each kind of provider, see [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis).

## What should you do next?

List every place your business holds a stablecoin for longer than a few minutes, and put a size and a time limit on each one. Then write the weekend version of the playbook: who decides, which token you fall back to, and which payouts keep running. Do it this week, not during the next event.

---

Source: https://blindpay.com/resources/more/who-carries-fx-risk-stablecoin-payout

---
title: "Who carries FX risk in a stablecoin payout? A step-by-step map, and why quotes expire"
seoTitle: "Who carries FX risk in a stablecoin payout?"
description: "You carry FX risk until you lock a quote, the provider carries it inside the window, and it comes back to you on a refund. Step-by-step map and math."
date: "2026-09-29"
updated: "2026-09-29"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Who carries the exchange rate risk in a stablecoin payout?"
    a: "It moves. The sender carries it until a quote is locked. The provider carries it from the quote until the recipient is paid, as long as the payout executes before the quote expires. If the quote lapses or the payout is refunded in stablecoins, the sender carries it again, because the next quote is priced at the new market rate."
  - q: "Why do stablecoin payout quotes expire?"
    a: "Because a binding quote is a free option for the sender. If the market moves against the provider during the window, the sender executes; if it moves the other way, the sender can let the quote lapse and ask again. The provider prices that option into the spread, so the window is kept short. At BlindPay most quotes last 5 minutes."
  - q: "What happens to the exchange rate if my payout fails?"
    a: "The conversion does not settle, so the quoted rate no longer applies. At BlindPay, a payout that cannot be delivered after the stablecoins are collected is refunded in stablecoins, not in local currency. If you still owe the recipient, you request a new quote and pay at the current rate, so any market move since the first quote is yours."
  - q: "Can I get a longer quote window?"
    a: "Some providers sell longer locks, and the price shows up as a wider spread, because the provider carries the market move for longer. For most payout flows the cheaper design is to request the quote right before the user confirms, read expires_at from the response, and re-quote automatically when the window closes. For dates weeks away, a forward contract is the tool built for that job."
  - q: "What is last look in FX?"
    a: "Last look is a practice where the party that quoted a price gets a final chance to accept or reject your trade request against that price. The FX Global Code requires firms that use it to disclose how. If a provider can reject or reprice your execution, part of the risk inside the quote window sits with you, not with the provider."
---

In a stablecoin payout, FX risk moves between parties. The sender carries it until a quote is locked. The provider carries it from the quote until the recipient is paid, as long as the payout executes inside the window. If the payout is refunded in stablecoins, the risk is the sender's again. Quotes expire because that middle stretch costs the provider money.

Knowing who holds the risk at each step tells you where a bad rate can come from, and which design choices actually reduce it.

**Key takeaways**

- Before a quote, the exchange rate is your problem. After a binding quote, it is the provider's, until the window closes.
- A quote is a free option for the sender. The provider prices it into the spread, which is why windows are minutes, not hours.
- Illustrative math: at 1% daily volatility, a 5-minute window carries about 6 bps of one-standard-deviation move, a 1-hour window about 20 bps.
- A refund comes back in stablecoins. Re-sending means a new quote at the new rate, so the market move since the first quote lands on you.
- Last look and "rate at execution" settlement quietly move the window risk back to the sender. Ask about both.

## What is FX risk in a cross-border payout?

FX risk is the chance that the exchange rate moves between the moment you decide an amount and the moment money lands. Whoever's amount changes when the rate moves is the party carrying it.

The market behind that rate never sleeps on weekdays. The BIS 2025 Triennial Survey put global FX trading at [$9.6 trillion per day in April 2025](https://www.bis.org/press/p250930.htm), with the US dollar on one side of 89% of trades. Prices update continuously, so any gap between pricing and delivery is exposure.

There are two kinds of FX risk in a payout. Market risk is the rate moving. Settlement risk is one side of a trade being delivered while the other is not: the BIS estimated that [$2.2 trillion of daily FX turnover was still exposed to settlement risk](https://www.bis.org/publ/qtrpdf/r_qt2212i.htm) in April 2022. This article is about market risk. [Herstatt risk explained](/resources/more/herstatt-risk-fx-settlement-risk) covers the settlement side.

## Who carries the risk at each step of a payout?

The table follows a USDC to BRL payout over Pix from the moment you owe money to the moment the recipient holds reais.

| Step | What happens | Who carries FX risk | Why |
| --- | --- | --- | --- |
| 1. Before a quote | You hold USDC and owe an amount in BRL | Sender | No rate is fixed, so the USDC cost of your BRL bill moves |
| 2. Quote created | The provider returns a rate, fees, and `expires_at` | Provider | A binding quote fixes `receiver_amount` |
| 3. Executed in the window | Stablecoins are pulled, conversion starts | Provider | The payout runs against the locked quote |
| 4. Fiat on the rail | Pix delivers in minutes, other rails take longer | Provider | The recipient amount was fixed at step 2 |
| 5. Quote lapses unused | Nothing moves | Sender | The next quote is priced at the new market rate |
| 6. Payout refunded | Stablecoins come back to a wallet | Sender | You are back at step 1 |
| 7. Recipient paid | Reais sit in a Brazilian account | Recipient | Their local currency is now their exposure |

Steps 2 to 4 are the only stretch where the provider holds the risk. Everything a provider does to price, shorten, or hedge that stretch shows up in your rate.

## Why do quotes expire?

Because a binding quote is a free option for the sender. During the window, the sender watches the market for free. If the rate moves against the provider, the sender executes. If it moves the sender's way, the sender can let the quote die and ask for a better one.

The provider cannot refuse the bad side of that bet, so it charges for it inside the spread. The longer the window, the larger the possible move, and the more the option is worth.

A common rule of thumb scales volatility with the square root of time: the typical move over a window is about daily volatility x √(window / 1 day).

**Illustrative example.** Assume a currency pair with 1.0% daily volatility and a $50,000 payout.

| Window | Calculation | Typical move | On $50,000 |
| --- | --- | --- | --- |
| 10 seconds | 1.0% x √(10 / 86,400) = 1.0% x 0.0108 | about 1.1 bps | about $5 |
| 5 minutes | 1.0% x √(5 / 1,440) = 1.0% x 0.0589 | about 5.9 bps | about $29 |
| 1 hour | 1.0% x √(60 / 1,440) = 1.0% x 0.2041 | about 20.4 bps | about $102 |

A one-hour window carries roughly 3.5 times the move of a five-minute window. The provider either widens the spread to cover it or stops binding the quote. Either way, the sender pays.

## Why are some quote windows shorter than others?

Because the risk is different. BlindPay's payin, payout, and transfer quotes last 5 minutes by default, per the [cut-off times reference](/docs/kb/cut-off-times). Two exceptions follow the risk:

- **OTC payin quotes expire in 10 seconds.** They price large BRL deposits into USDT, with a minimum of $5,000 USD equivalent, so the size at stake is larger and the window is shorter.
- **SEPA payout quotes can be shorter than 5 minutes.** The euro rail has its own deadline, and the quote cannot promise delivery beyond it.

Transfer quotes are the odd one out: there is no currency conversion, so the window locks the amount and destination rather than a rate.

The practical rule: read `expires_at` from every [payout quote](/docs/payout-quotes) response, and note it is in epoch milliseconds. Never hardcode a window.

## What happens to FX risk when a payout fails?

It comes back to you. At BlindPay, if a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.

The refund is in stablecoins, so the refund itself carries no FX loss. The loss shows up when you re-send. If the recipient still needs R$53,700 and the rate has moved from 5.37 to 5.32 BRL per USDC since the first quote, the second payout costs 10,093.98 USDC instead of 10,000 (illustrative: 53,700 / 5.32 = 10,093.98). That 93.98 USDC is the market move you carried after the refund.

[Stablecoin payout statuses](/resources/more/stablecoin-payout-statuses-explained) explains how `failed` and `refunded` differ.

## Who carries the risk on the on-ramp side?

The same logic runs in reverse. A payin quote locks the fiat amount the payer sends and the stablecoin amount the wallet receives. You create the payin from it within 5 minutes, and then the payer sends the money.

What changes is the wait for the deposit. For a standard Pix payin, BlindPay waits up to 30 minutes before marking it `failed`, with a reconciliation check first, according to the [payins reference](/docs/payins). OTC Pix payins wait until 23:59 Brasília time instead. If an OTC deposit never arrives, a flat $100.00 penalty is added to the quote's billing fee.

That penalty is risk allocation written down: a large price was held for a deposit that never came, and the party who did not send pays for it.

## Does last look shift the risk back to you?

It can. The [FX Global Code](https://www.globalfxc.org/fx_global_code.htm), the conduct code for wholesale FX, defines last look in Principle 17 as a final opportunity for the quoting firm to accept or reject a trade request against its quoted price, and requires firms that use it to disclose how.

A provider with last look, or one that settles at "the rate at execution", has handed the window risk back to you without changing the screen. The BIS Markets Committee made a related point about FX execution algorithms: they [shift execution risk from dealers to users](https://www.bis.org/publ/mktc13.htm).

So ask every provider two questions. Is the quote binding if I execute before expiry? Can you reject or reprice after I execute? At BlindPay, a payout can only execute against a valid, unexpired quote, and the quote's `receiver_amount` is what the bank account receives.

## How should you design a payout flow around this?

Keep the risky stretches short and visible.

- **Quote at the last responsible moment.** Request the quote when the confirmation screen loads, not when the user starts the flow.
- **Re-quote automatically.** When `expires_at` passes, fetch a new quote and highlight the change only if the amount moved.
- **Log every re-quote.** The gap between an expired quote and its replacement is a direct read of how much risk you carried. [FX slippage and live quotes](/resources/more/stablecoin-fx-slippage-live-quotes) shows how to log quoted vs settled rates.
- **Use the right tool for long gaps.** A quote covers minutes. A BRL invoice due in 60 days is a different exposure; see [live quotes vs forward contracts](/resources/more/live-quote-vs-forward-contract-vs-fixed-rate).
- **Treat a refund as a new trade.** Re-quote before re-sending, and tell the recipient the amount may change.

The vocabulary used here (binding quote, window, spread, re-quote) is defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary). For how liquidity sources shape the quote you get, see [onchain liquidity vs off-ramp liquidity](/resources/more/onchain-liquidity-vs-offramp-liquidity).

*How we know: BlindPay facts come from the [payout quotes](/docs/payout-quotes), [payins](/docs/payins), and [cut-off times](/docs/kb/cut-off-times) documentation. Market figures come from the BIS and the FX Global Code, linked above.*

## What to do next

Create one payout quote for your main corridor from the [payout quotes docs](/docs/payout-quotes), note its `expires_at`, and request a second quote five minutes later. The difference between the two is the risk you would have carried without a binding quote.

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

---

Source: https://blindpay.com/resources/more/bridge-cards-and-blindpay-payouts

---
title: "Bridge and BlindPay: stablecoin cards plus local-currency payouts in one stack"
seoTitle: "Bridge cards and BlindPay payouts: how they fit"
description: "How a card program runs Bridge for stablecoin cards and wallets and BlindPay for bank funding and local payouts: architecture, flows, and who owns what."
date: "2026-09-28"
updated: "2026-09-28"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Bridge vs BlindPay: which one should I use?"
    a: "Use both when you run a stablecoin card program that also needs bank funding and local payouts. Bridge handles stablecoin-linked Visa cards, wallets, and card settlement. BlindPay is an end-to-end stablecoin-to-local-currency payout API: it funds wallets from US bank transfers through virtual accounts and pays out over Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO). The two sit at different layers."
  - q: "Can Bridge cards and BlindPay share the same wallet?"
    a: "Yes, when the wallet is a non-custodial wallet you control. Per Stripe's docs, a Bridge card can spend from a non-custodial wallet with an approval to the Bridge smart contract. A BlindPay virtual account settles deposits to one wallet you link at creation, and a BlindPay payout pulls only the amount you authorize from a wallet. Confirm the network and token with both providers."
  - q: "How does money flow between Bridge and BlindPay?"
    a: "Through the wallet, not through each other. A bank deposit lands in a BlindPay virtual account and arrives as USDC or USDT in the linked wallet. The Bridge card spends from that wallet at authorization. When the cardholder wants cash in a bank account, a BlindPay payout converts stablecoins from the wallet to local currency. Your ledger ties the events together."
  - q: "Do I need to reconcile two providers?"
    a: "Yes, but the join key is simple. Every movement touches the same wallet, so your ledger records BlindPay payin and payout events alongside Bridge card authorizations, captures, and refunds. Keep one available balance per cardholder that subtracts open card holds before you offer a payout amount. That rule prevents a payout from draining funds a pending card capture needs."
  - q: "Does this pattern work with other card providers?"
    a: "It does. The pattern depends on a wallet the card can spend from, not on one card brand. Rain, Stripe Issuing with Bridge, and other issuers can sit in the card layer while BlindPay handles bank funding and local payouts. If your card or account layer is BVNK, which Mastercard finished acquiring on August 3, 2026, the same split by job applies."
---

*Reading time: about 8 minutes.*

**Summary:** Bridge and BlindPay fit together at different layers of a stablecoin card program. Bridge issues stablecoin-linked Visa cards and runs wallets and card settlement. BlindPay funds those wallets from bank transfers and pays stablecoins out as local currency over Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO). The wallet connects them.

**Key takeaways**

- Bridge covers the card layer: issuance, wallets, and settlement with Visa. Its card is issued by Lead Bank and managed by Bridge Ventures, LLC, per Bridge.
- BlindPay is an end-to-end stablecoin-to-local-currency payout API, plus US virtual accounts that turn bank deposits into USDC or USDT.
- The two providers never need to call each other. Both touch the same cardholder wallet.
- Your ledger is the glue: one available balance per cardholder, minus open card holds.
- The same split works with any card provider that spends from a wallet.


The head-to-head view, rails and custody side by side, is in [BlindPay vs. Bridge](/compare/bridge). This page answers a different question: you already picked Bridge for cards, so how do you wire in bank funding and local payouts without building them yourself? For the wider program decisions, start with [how to issue cards with stablecoins](/resources/more/how-to-issue-stablecoin-cards-api).

## What does each provider handle?

Bridge handles the card and the stablecoin wallet it spends from. BlindPay handles the bank legs: money in from a bank account and money out to one. Neither has to replace the other.

| Use Bridge for | Use BlindPay for |
|---|---|
| Issuing stablecoin-linked Visa cards through one API | Funding the cardholder wallet from US bank transfers (ACH, wire, SWIFT) through a virtual account in the cardholder's own name |
| Custodial Bridge wallets, or cards that spend from a non-custodial wallet with an onchain approval | Payins over Pix, SPEI, Transfers 3.0, and PSE that deliver USDC or USDT to the wallet |
| Card authorization, capture, refunds, and settlement with Visa | Payouts to local bank accounts over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, Domestic Wire, SEPA, and SWIFT (POBO/COBO) |
| Cardholder KYC and the cards endorsement (on the Stripe Issuing path) | KYC and KYB for the customers who hold virtual accounts and send payouts |
| Card statements and cardholder support required by network rules | Payout tracking with UETR and MT103 confirmations on SWIFT |

Bridge's reach keeps growing. Visa reported Bridge-enabled cards live in 18 countries on March 3, 2026. Bridge reported 30 countries through its Stripe Issuing integration on April 29, 2026, with a goal of 100+ by the end of the year. Check the live list for your markets.

## How does the architecture look end to end?

Picture five boxes in a row, with the cardholder wallet in the middle. Money enters on the left through BlindPay, sits in the wallet, leaves through the card in the middle, and leaves through BlindPay on the right when it goes to a bank account.

```
[Bank account] --ACH/wire/SWIFT--> [BlindPay virtual account]
                                          |
                                   USDC or USDT
                                          v
[Card terminal] <--Visa-- [Bridge card] <-- [Cardholder wallet] --> [BlindPay payout] --Pix/SPEI/ACH/SEPA/SWIFT--> [Bank account]
                                          ^
                                   [Your ledger]
                    (payin, authorization, capture, refund, payout events)
```

Three design choices follow from this picture.

**The wallet is the contract between providers.** Per Stripe's docs for Bridge-backed cards, a card can spend from "a Bridge custodial wallet, a Privy non-custodial wallet, or any other non-custodial wallet". If you use a non-custodial wallet, BlindPay can settle virtual account deposits straight into it.

**The network has to match.** BlindPay settles on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, with USDC or USDT depending on the network. Confirm which network and token your Bridge card spends from, then link that same wallet on the BlindPay side.

**Your ledger owns the available balance.** The card authorization deadline is short, so your systems decide from a ledger, not from a live chain query. The same ledger tells you how much a cardholder can send to a bank account.

## How does one cardholder's month run, step by step?

Take a freelancer in Brazil paid by a US client. They spend part of the money on a card and send the rest to their bank account in reais.

1. **Onboard.** The cardholder passes KYC once on each side: BlindPay for the virtual account and payouts, Bridge for the card. On the Stripe Issuing path, Stripe's docs say the cards endorsement needs KYC within the past 24 hours, so create the card in the same session.
2. **Get account details.** BlindPay issues a US virtual account in the cardholder's name with its own routing and account number. It goes through compliance and bank review before the `virtualAccount.complete` webhook fires.
3. **Get paid.** The US client sends an ACH payment. BlindPay creates a payin, converts the deposit, and delivers USDC to the linked wallet. Your ledger credits the balance on `payin.complete`.
4. **Spend.** The cardholder buys something abroad. Bridge receives the authorization and, for a non-custodial wallet, pulls the funds onchain at authorization. Your ledger places a hold.
5. **Settle the card.** Captures, partial captures, and refunds arrive as card events. Stripe's docs say refunds are pushed back onchain and can be batched. Your ledger adjusts the hold to the final amount.
6. **Cash out.** The cardholder sends BRL 2,000 to their own bank account. You create a BlindPay payout quote, which shows the fee breakdown and the exact amount they receive, valid for 5 minutes. The cardholder authorizes the exact token amount, and the payout goes out over Pix, typically within minutes.
7. **Reconcile.** At month end, every movement on the wallet matches a BlindPay payin or payout event or a card event. Anything else is an exception to investigate.

## What can go wrong between the two providers?

Most failures come from timing, not from either API. Plan for these four.

| Risk | What happens | How to prevent it |
|---|---|---|
| Payout drains a pending capture | The cardholder cashes out funds that a card capture still needs | Available to pay out = wallet balance minus open card holds |
| Network mismatch | Deposits arrive on a network the card does not spend from | Link the card's wallet and network on both sides at onboarding |
| KYC timing | The cards endorsement expires before the card is created | Create the card in the same onboarding session |
| Overcapture pull | Bridge pulls more than the purchase at authorization for some merchant categories, then refunds the difference | Hold the larger amount, release on capture |

The overcapture behavior is documented by Stripe: Bridge "might also proactively pull an additional amount at the time of authorization based on the MCC". Treat the pulled amount as the hold, not the purchase amount.

When a BlindPay payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic. USD payouts, and payouts whose review times out, are refunded after an operator review. Route those refunds back into the same ledger balance.

## Does the same pattern work with BVNK or other card providers?

Yes. The pattern depends on a wallet the card spends from, not on Bridge specifically. Rain and Stripe Issuing with Bridge slot into the same card box. If your card or account layer is BVNK, which Mastercard finished acquiring on August 3, 2026, split by job the same way: the card and account stay there, and the local payout leg runs through BlindPay. The [BlindPay vs. BVNK comparison](/compare/bvnk) covers that pairing.

## Where does BlindPay fit?

BlindPay is an end-to-end stablecoin-to-local-currency payout API, and in this stack it owns both bank legs. Bridge runs the card. BlindPay moves money into and out of the wallet behind it.

Into the wallet: a [US virtual account](/virtual-accounts) per cardholder, in their own name, converts ACH, wire, and SWIFT deposits to USDC or USDT. In Latin America, payins over Pix, SPEI, Transfers 3.0, and PSE do the same. Out of the wallet: payouts over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, Domestic Wire, SEPA, and SWIFT (POBO/COBO), funded at send time with no pre-funding per country.

Fees come from a monthly plan plus per-transaction fees that each quote discloses before you execute. KYC and KYB run in the same API, and every payin and payout fires a signed webhook your ledger can consume.

Read the [payout quotes docs](/docs/payout-quotes) or [talk to the team](/contact).

## What to read next

- [Stablecoin card issuing platforms compared](/resources/more/stablecoin-card-issuing-platforms-compared)
- [How to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api)
- [What is stablecoin card issuing?](/resources/more/what-is-stablecoin-card-issuing)
- [How to on-ramp BRL, MXN, ARS, and COP into stablecoins](/resources/more/how-to-on-ramp-local-currency-latin-america)

## Sources

- Bridge, [Stablecoin-backed cards are now integrated with Stripe Issuing](https://bridge.xyz/blog/stablecoin-backed-cards-are-now-integrated-with-stripe-issuing) (April 29, 2026)
- Bridge, [Global card issuance with stablecoins explained](https://bridge.xyz/learn/stablecoin-payments-global-card-issuance) (March 16, 2026)
- Stripe, [Issue stablecoin-backed cards with Bridge](https://docs.stripe.com/issuing/bridge-stablecoin-cards)
- Visa, [Bridge-enabled stablecoin-linked cards live in 18 countries](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.22206.html) (March 3, 2026)
- Mastercard, [Mastercard completes acquisition of BVNK](https://investor.mastercard.com/investor-news/investor-news-details/2026/Mastercard-completes-acquisition-of-BVNK-to-advance-global-stablecoin-capabilities/default.aspx) (August 3, 2026)

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

---

Source: https://blindpay.com/resources/more/cross-border-payment-costs-2026

---
title: "How much do cross-border payments cost in 2026? Fees by corridor and what counts as cheap"
seoTitle: "Cross-border payment costs in 2026: fees by corridor"
description: "Sending $200 abroad costs 6.36% on average, per the World Bank. Here is where that money goes, how corridors differ, and what a cheap payment looks like."
date: "2026-09-28"
updated: "2026-09-28"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How much does a cross-border payment cost on average?"
    a: "The World Bank's latest Remittance Prices Worldwide report (Issue 54, Q3 2025 data) puts the global average cost of sending $200 at 6.36% of the amount sent. Digital services average 4.59% and banks 14.99%. Those are consumer remittance prices, but business payments carry the same cost parts: transfer fees, intermediary charges, and the FX margin."
  - q: "What is the biggest cost in an international payment?"
    a: "On most corridors it's the FX margin, the gap between the mid-market rate and the rate you actually get. A 3% margin on a $10,000 payment is $300, which dwarfs a $30 to $50 wire fee. The World Bank splits every price it tracks into a transfer fee and an FX margin for this reason. Always price both."
  - q: "What counts as a cheap cross-border payment?"
    a: "Use the official targets as the bar. The G20 wants retail cross-border payments, which include business payments, to cost no more than 1% on average by end-2027, with no corridor above 3%. For $200 remittances the target is 3% by 2030. Anything under 1% all-in on a business payment is cheap by those standards."
  - q: "Why is sending money from Brazil or South Africa so expensive?"
    a: "In Q3 2025 the World Bank measured 11.91% to send $200 from Brazil and 15.65% from South Africa, against 5.04% from the United States. The report tracks these as country averages across many corridors, so one expensive corridor can lift the figure. Check the corridor you actually use before assuming the country average applies."
  - q: "How do I calculate the true cost of a cross-border payment?"
    a: "Add every fee you pay to the FX cost, then divide by the amount sent. The FX cost is the mid-market rate minus the rate you received, multiplied by the amount converted. Compare providers on the final amount that lands in the recipient's account, not the headline fee, because zero-fee offers usually hide the cost in the rate."
  - q: "Does BlindPay publish its pricing?"
    a: "Yes. BlindPay publishes its plans on its pricing page: Basic at $499 a month and Business at $1,999 a month, with Enterprise priced on request. Per-payment fees aren't a hidden rate card. Each payout quote returns the market rate, the rate net of fees, and the flat fee before you confirm, so you can model the cost per payment."
---

A cross-border payment costs 6.36% of the amount on average to send $200, according to the World Bank's latest Remittance Prices Worldwide data. Business payments are larger, so the percentage is usually lower, but the cost comes from the same places: fees, intermediary charges, and the FX margin. BlindPay shows each of those in a quote before you send.

Here's where the money goes, how much it varies by corridor, and what a good price looks like in 2026.

**Key takeaways**

- The World Bank puts the global average cost of sending $200 at 6.36%, with digital services at 4.59% and banks at 14.99% (Issue 54, Q3 2025 data).
- Corridors vary by a factor of three. Sending from Germany averaged 4.49%, from the US 5.04%, and from Brazil 11.91%.
- The FX margin is usually the biggest single cost. Price the rate, not the fee.
- The G20 target for retail cross-border payments, which includes business payments, is a 1% average with no corridor above 3% by end-2027.
- Total cost % = (fees + FX cost) / amount sent. Run that formula on every quote.

## How much do cross-border payments cost on average?

The global average cost of sending $200 abroad is 6.36%, per the World Bank. That's the most recent figure, published in Issue 54 of [Remittance Prices Worldwide](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf), which covers Q3 2025 data and was posted in April 2026.

The World Bank tracks consumer remittances, not supplier invoices. It's still the best public price index for cross-border payments, because it measures the full cost, fees plus FX margin, across hundreds of corridors every quarter.

Here are the headline numbers from that report:

| Measure (cost of sending $200, Q3 2025) | Average total cost |
| --- | --- |
| Global average | 6.36% |
| Global weighted average (by flow size) | 5.04% |
| Digital remittances | 4.59% |
| Non-digital remittances | 7.30% |
| Banks | 14.99% |
| Money transfer operators | 4.72% |
| SmaRT (three cheapest qualifying services per corridor) | 3.29% |

Two things jump out. Banks cost about three times as much as money transfer operators. And the cheapest services, captured by the SmaRT average, already run near half the global average. The price gap between providers on the same corridor is wide.

## What fees make up the total cost?

Every cross-border payment has up to five cost parts: a sending fee, intermediary charges, the FX margin, a receiving fee, and, on stablecoin routes, a network fee. Most quotes show one or two of them.

| Cost part | Who charges it | Shown upfront? | Typical shape |
| --- | --- | --- | --- |
| Sending fee | Your bank or provider | Usually | Flat fee per payment |
| Intermediary (correspondent) charges | Banks in the middle of a SWIFT chain | Rarely | Deducted from the amount in transit |
| FX margin | Whoever converts the currency | Often not as a number | Percentage built into the rate |
| Receiving fee | The recipient's bank | No | Flat fee or small percentage |
| Network fee | The blockchain, on stablecoin routes | Usually | Cents on low-fee chains |

The **mid-market rate** is the midpoint between the buy and sell prices for a currency pair in the wholesale market. The **FX margin**, or spread, is how far the rate you get sits from it. [Stablecoin FX slippage and live quotes](/resources/more/stablecoin-fx-slippage-live-quotes) explains how that gap moves between quote and execution.

Intermediary charges are the part people miss. On a SWIFT wire, each correspondent bank can take its fee out of the payment as it passes through, so the recipient gets less than you sent. [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) walks through that chain.

## Which cost is usually the biggest?

The FX margin is usually the biggest cost on any payment over a few hundred dollars. Fees are flat, while the margin scales with the amount.

A $45 wire fee is 0.45% of a $10,000 payment. A 3% FX margin on the same payment is $300. Bank fee schedules make the flat fee easy to compare, which is why the margin gets less attention than it deserves.

The World Bank's methodology splits every price into a transfer fee and an FX margin for the same reason. Comparing fees alone tells you very little.

## How do costs differ by corridor?

Costs vary by a factor of three between corridors, depending on where the money starts and where it lands. Competition, channel mix, and local FX markets drive the difference.

Average cost of sending $200 from selected G20 countries, Q3 2025 (World Bank, Issue 54):

| Sending country | Average total cost |
| --- | --- |
| Germany | 4.49% |
| United Kingdom | 4.61% |
| United States | 5.04% |
| Australia | 5.23% |
| France | 5.23% |
| Canada | 5.27% |
| Brazil | 11.91% |
| South Africa | 15.65% |

The receiving side matters too. Mexico was the cheapest G20 country to send money to in Q3 2025 at 4.53%, and sending to Brazil averaged 5.38%.

Note the asymmetry with Brazil. Sending to Brazil averaged 5.38%, but sending from Brazil cost 11.91%. Same country, very different markets.

For business payments, corridor costs also depend on the local rail at the end. A payment that lands over Pix in Brazil or SPEI in Mexico avoids the receiving-bank fees and delays that a SWIFT wire picks up. [USDC to MXN routes in 2026](/resources/more/usdc-to-mxn-routes-2026) compares the options on one corridor.

## What counts as a cheap cross-border payment?

A cross-border business payment is cheap if it costs under 1% all-in. That's the G20 target, and the best services already beat it on liquid corridors.

The [Financial Stability Board's G20 targets](https://www.fsb.org/work-of-the-fsb/financial-innovation-and-structural-change/cross-border-payments/g20-targets-for-enhancing-cross-border-payments-2/) set three cost goals:

- **Retail payments**, which include business-to-business and person-to-business payments: a global average cost of no more than 1%, with no corridor above 3%, by end-2027.
- **Remittances**: a global average cost of sending $200 of no more than 3% by 2030, with no corridor above 5%.
- **Wholesale payments** between financial institutions: no cost target.

The same targets ask that 75% of retail cross-border payments make funds available to the recipient within one hour by end-2027, and that providers show the total cost, including fees and FX charges, before the payment. Price and transparency are part of the same goal.

The World Bank's SmaRT indicator gives a corridor-level benchmark. SmaRT averages the three cheapest services a well-informed sender could use on each corridor. In Q3 2025, 78% of corridors had a SmaRT average below 5%. If your provider costs more than the SmaRT average on your corridor, you're overpaying.

## How do you calculate the true cost of a payment?

Add every fee to the FX cost, then divide by the amount sent. This one formula works for any provider:

**Total cost % = (fees + FX cost) / amount sent x 100**, where **FX cost = (mid-market rate minus rate received) x amount converted / mid-market rate**

Put simply: work out how much less local currency you got than the mid-market rate would give you, convert that shortfall back to dollars, add the fees, and divide by what you sent.

To run it on a real quote:

1. Note the mid-market rate at the moment you request the quote, from a source like Reuters, Bloomberg, or a central bank reference rate such as the [ECB euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) or [Banxico's FIX rate](https://www.banxico.org.mx/tipcamb/main.do?page=tip&idioma=sp) for pesos.
2. Record the rate the provider offers and every fee line.
3. Ask whether any intermediary or receiving bank can deduct from the amount.
4. Compute the amount that lands, in local currency.
5. Compare it to the amount at mid-market. The gap, in dollars, plus fees, is your cost.

## What does a $10,000 payment from the US to Mexico cost by route?

Here's the formula applied to a $10,000 supplier payment in pesos, by three routes. **Every number below is illustrative.** None of them is a quote from BlindPay or any named provider.

Assumptions:

- Mid-market rate: 18.50 MXN per USD, so $10,000 is worth 185,000 MXN at mid-market.
- Bank wire: $45 sending fee, $20 deducted by one intermediary bank, a 3% FX margin applied on conversion, and a 200 MXN receiving fee.
- Fintech transfer: $30 fee charged on top, 0.6% FX margin.
- Stablecoin route: $10,000 in USDC sold for pesos at a 0.5% all-in spread and paid out over SPEI, Mexico's instant payment system, plus about $1 of network fees. If you start from dollars rather than USDC, add your on-ramp cost.

| Route | Pesos received | Fees and deductions | FX margin | Total cost | Total cost % |
| --- | --- | --- | --- | --- | --- |
| Stablecoin plus SPEI | 184,075 MXN | ~$1 | $50 | ~$51 | 0.51% |
| Fintech transfer | 183,890 MXN | $30 | $60 | $90 | 0.90% |
| Bank wire (SWIFT) | 178,891 MXN | $76 ($45 + $20 + 200 MXN) | $299 | $375 | 3.75% |

The wire's headline fee is only $45. The real cost is $375: about $299 of FX margin plus $31 of deductions the sender never sees on the quote. That's the pattern the World Bank data shows at scale.

Your actual numbers will differ by corridor, amount, and provider. Run the same table with real quotes on your own corridor and ticket size before you decide. [Stablecoin off-ramp fees vs a bank wire](/resources/more/stablecoin-off-ramp-fees-explained) runs a similar comparison at $200, $2,000, and $20,000.

## Does pre-funding add to the cost?

Yes, though it never shows up on a quote. Providers that need money parked in each destination country tie up working capital before any payment moves.

That capital has a cost: interest you don't earn, FX exposure on idle balances, and cash you can't use elsewhere. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) runs the numbers on a five-country example, and [what no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) explains the alternative.

## How does BlindPay price cross-border payments?

BlindPay publishes its plans and shows every per-payment cost in a quote before you confirm. There's no pre-funding requirement and no minimum volume.

**Plans** are listed on the [pricing page](/pricing):

| Plan | Monthly price | What it adds |
| --- | --- | --- |
| Basic | $499 a month, or $399 a month billed annually | 500 customers, 500 compliance checks, automated off-ramp |
| Business | $1,999 a month, or $1,599 a month billed annually | 10,000 customers, US virtual accounts, SWIFT (POBO/COBO), partner fees on each transaction |
| Enterprise | Custom | Tailored solutions team and SLAs |

**Per-payment costs** show in the quote. A [payout quote](/docs/payout-quotes) returns `commercial_quotation`, the raw market rate, next to `blindpay_quotation`, the rate net of BlindPay's fee, plus a `flat_fee` and the exact `receiver_amount` in local currency. The gap between the two rates is the FX cost, in plain sight. Quotes are valid for 5 minutes by default, so the price you see is the price you get if you execute in time.

**Who pays the fee** is your choice. With `cover_fees: false`, fees come out of what the recipient receives. With `cover_fees: true`, they're added on top of the stablecoin amount you send, so the recipient gets the full figure.

**Virtual account deposits** follow one more rule. BlindPay fees on deposits below $100.00 accrue to your monthly invoice as `billing_fee_amount`, and deposits of $100.00 or more are charged at transaction time, deducted from the amount delivered as `transaction_fee_amount` ([virtual accounts](/docs/virtual-accounts)). This applies to incoming virtual account deposits, not to payouts.

**Rails** decide speed and receiving cost. BlindPay pays out over Pix, SPEI, ACH, RTP, Transfers 3.0 in Argentina, ACH Colombia, SEPA, and SWIFT (POBO/COBO). Pix and SPEI settle in minutes, RTP is instant, and SWIFT can take up to 5 business days ([cut-off times](/docs/kb/cut-off-times)).

[Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) breaks down mint fees, spreads, and network costs across providers, and [what is real-time cross-border settlement](/resources/more/what-is-real-time-cross-border-settlement) covers how the speed side works.

## What to do next

Take your three most common corridors and one real payment size. Run the total cost formula on a quote from your current provider and on a [BlindPay payout quote](/docs/quickstart-payout) from a free development instance, then compare the amount that lands.

---

Source: https://blindpay.com/resources/more/crypto-wallet-compliance-checklist

---
title: "Crypto wallet compliance checklist: KYC, KYT, and Travel Rule"
seoTitle: "Crypto wallet compliance checklist: KYC, KYT, Travel Rule"
description: "The compliance that comes with crypto wallets and stablecoin payments: KYC and KYB, KYT, the Travel Rule, address screening, MSB rules, and 15 checks."
date: "2026-09-28"
updated: "2026-09-28"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What compliance is required for a crypto wallet integration?"
    a: "Usually five areas: KYC and KYB to verify users, KYT to monitor transactions and wallet addresses, the Travel Rule to pass sender and recipient data between providers, sanctions screening of people and addresses, and a decision on money transmitter or VASP registration. Your custody model decides which of these your company runs and which your provider runs. Confirm your obligations with counsel."
  - q: "Does the Travel Rule apply to self-hosted wallets?"
    a: "Partly. A self-hosted wallet has no provider on the other side to receive Travel Rule data, but rules still reach the provider serving your customer. In the EU, the Transfer of Funds Regulation requires a crypto-asset service provider to verify that a self-hosted address is owned or controlled by its customer for transfers above EUR 1,000. Other jurisdictions set their own approach."
  - q: "What is wallet address screening?"
    a: "Wallet address screening checks a blockchain address against sanctions lists and blockchain analytics before funds move to or from it. OFAC includes some digital currency addresses in SDN List entries, but those listings are not complete, so analytics tools also score an address's exposure to sanctioned entities, mixers, scams, and stolen funds. Screen at registration, before each transfer, and when lists change."
  - q: "What is the difference between KYC and KYT?"
    a: "KYC verifies who a customer is, once at onboarding and again on a schedule or trigger. KYT, know your transaction, watches what the customer does: each transfer's amount, speed, counterparties, and the risk of the wallet addresses involved. A fully verified customer can still send or receive funds that KYT flags, which is why programs need both."
  - q: "Do I need an MSB registration to offer crypto wallets?"
    a: "It depends on whether your company holds or transmits value for others. FinCEN's 2019 guidance treats hosted wallet providers as money transmitters, which register as money services businesses and often need state licenses. Users of unhosted wallets are not. Working with a registered, non-custodial provider can change your exposure, but only counsel can confirm it for your flows."
  - q: "Can crypto wallet compliance be fully automated?"
    a: "Most checks can be automated: document and selfie verification, registry lookups, sanctions and address screening, transaction scoring, and Travel Rule messaging. Decisions can't: reviewing screening matches, enhanced due diligence on high-risk customers, deciding whether to file a suspicious activity report, and licensing strategy. Automation clears the routine cases so people can focus on the rest."
---

Adding crypto wallets or stablecoin payments to a product brings five compliance areas: verifying users (KYC and KYB), monitoring transactions (KYT), passing sender and recipient data (the Travel Rule), screening people and wallet addresses against sanctions lists, and deciding whether your company needs money transmitter registration. Your custody model decides which of these land on you.

This article is general information, not legal advice. Rules differ by country and change often, so confirm your obligations with counsel before launch.

The wallet changes the compliance picture in one specific way: it adds a new identifier, the wallet address, that carries its own risk history, can belong to someone other than your customer, and may sit outside any regulated provider. Most items below come back to that. If you're still choosing a custody model, read [custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets) first.

## What compliance do you need for a crypto wallet integration?

A wallet integration needs identity checks on users, monitoring of transactions and addresses, Travel Rule data exchange, sanctions screening, and a clear answer on licensing. The table shows when each one runs and what the wallet adds to it.

| Area | What it checks | When it runs | What the wallet adds |
| --- | --- | --- | --- |
| KYC and KYB | Who the customer is | Onboarding, then periodic and trigger-based reviews | Each wallet has to map to a verified customer |
| KYT | What the customer does | Every transaction | Address risk travels with funds from counterparties |
| Travel Rule | Who sends and who receives | Transfers between providers | Self-hosted addresses have no provider on the other side |
| Sanctions screening | Parties and addresses against sanctions lists | Onboarding, each transfer, each list update | Addresses can be sanctioned, not only people |
| Licensing | Whether your company transmits or holds value | Before launch | Custody model drives the answer |

## KYC and KYB: who must be verified, when, and with what data?

Everyone whose money moves through your product should be verified before it moves. KYC, know your customer, verifies individuals. KYB, know your business, verifies companies and the people who own and control them.

For individuals, the core identity data is name, date of birth, address, and an identification number, checked against documents or trusted databases. For businesses, it's the legal entity, its registration and address, and its beneficial owners. In the US, FinCEN's [Customer Due Diligence rule](https://www.ecfr.gov/current/title-31/subtitle-B/chapter-X/part-1010/subpart-C/section-1010.230) covers anyone owning 25 percent or more, plus one person who controls or manages the company. [What is KYB](/resources/more/what-is-kyb) walks through the full list.

The wallet-specific rule: every wallet address in your system should belong to a verified customer, and you should be able to prove it. On EVM chains the cleanest proof is a signed message from the wallet at registration, which the [wallet integration tutorial](/resources/more/how-to-add-stablecoin-payments-to-your-wallet-integration) shows step by step. Re-run the check whenever a customer adds a wallet, not only at signup. [How to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the verification flow itself.

## KYT (know your transaction): what is transaction monitoring and what does it flag?

KYT, know your transaction, is transaction monitoring for crypto. It scores each transfer and the wallet addresses on both sides for risk, before funds settle where possible and continuously afterward. A verified customer can still receive funds from a sanctioned address, which is exactly what KYT exists to catch.

KYT flags two kinds of risk. **On-chain exposure** comes from blockchain analytics: an address that received funds, directly or through a few hops, from a sanctioned entity, a mixer, a darknet market, a scam, or a hack. **Behavioral patterns** come from rules on your own data:

- Velocity spikes: many transfers in a short window, well above the customer's normal activity.
- Structuring: repeated amounts just under a reporting threshold, such as the USD 3,000 US Travel Rule threshold.
- Pass-through: funds received and sent onward within minutes.
- Large crypto inflows followed immediately by conversion to fiat.
- Several unrelated wallets paying the same bank account.
- Activity that doesn't match the customer's declared business.

[Real-time transaction monitoring for stablecoin payments](/resources/more/real-time-transaction-monitoring-stablecoin-payments) shows how a flagged pattern moves from alert to decision.

## What is the Travel Rule and when does it apply to stablecoin transfers?

The Travel Rule requires providers that transfer virtual assets to send the originator's and beneficiary's information along with the transfer, and requires the receiving provider to collect and check it. It applies to stablecoin transfers between regulated providers, with thresholds that vary by country.

The rule comes from FATF Recommendation 16, which FATF extended to virtual asset service providers in 2019. FATF adopted a [revised Recommendation 16](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html) in June 2025, retitled "payment transparency," with implementation expected by the end of 2030. National rules implement it differently:

- **United States:** the recordkeeping and travel rule in [31 CFR 1010.410(f)](https://www.ecfr.gov/current/title-31/subtitle-B/chapter-X/part-1010/subpart-D/section-1010.410) applies to transmittals of USD 3,000 or more.
- **European Union:** the [Transfer of Funds Regulation](https://eur-lex.europa.eu/eli/reg/2023/1113/oj), Regulation (EU) 2023/1113, has applied to crypto-asset transfers since December 30, 2024, with no minimum amount.

Self-hosted wallets are where wallet integrations get specific. A self-hosted wallet, one the user controls without a provider, has no counterparty to receive Travel Rule data. The EU's answer is that for a transfer above EUR 1,000 to or from a self-hosted address, the crypto-asset service provider must verify that the address is owned or controlled by its own customer. Wallet ownership proof stops being a nice-to-have and becomes part of the rule. [The travel rule for stablecoin off-ramps](/resources/more/travel-rule-stablecoin-off-ramps) has the full threshold table and what happens when a check fails.

## Sanctions screening and wallet address screening

Screen people against sanctions lists, and screen wallet addresses against both the lists and blockchain analytics. A wallet address can be sanctioned in its own right, and a clean person can hold a tainted address.

OFAC [may add digital currency addresses](https://ofac.treasury.gov/faqs/562) to entries on the Specially Designated Nationals (SDN) List, and says plainly that those listings may not be complete. So checking addresses against the SDN List alone isn't enough. Blockchain analytics tools trace an address's history and score its exposure to sanctioned entities that were never listed by address.

Screen at three moments:

1. **When a wallet is registered**, before it can receive or fund anything.
2. **Before each transfer**, on both the customer's address and the counterparty's.
3. **When lists update.** OFAC, the EU, the UN, and the UK each publish on their own schedules, so rescreen existing customers and addresses against every update.

On a true match, block or reject the transfer, don't tell the customer why, and report as the relevant sanctions authority requires. Document every decision, including the clean ones.

## Do you need a money transmitter or MSB registration?

If your company accepts and transmits value for others, or holds it with independent control, you likely need registration. In the US that means registering with FinCEN as a money services business (MSB) and, in most states, holding a money transmitter license.

FinCEN's [2019 guidance on convertible virtual currency](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-certain-business-models) (FIN-2019-G001, May 9, 2019) decides wallet cases on four facts: who owns the value, where it is stored, whether the owner interacts with the network directly, and whether the intermediary has total independent control over it. Hosted wallet providers are money transmitters. A person using an unhosted wallet to buy goods or services for themselves is not. [What is a VASP](/resources/more/what-is-a-vasp) covers the international version of the same question.

BlindPay is registered with FinCEN as a money services business, and its registrations are published on the [licenses page](/licenses). Building on a registered provider whose payouts are non-custodial, where your company never holds or transmits the funds itself, can change your own exposure. It doesn't settle the question. Your flows, your custody model, and your states decide it, so confirm with counsel. [Do merchants need a license to accept stablecoins](/resources/more/do-merchants-need-a-license-to-accept-stablecoins) covers the merchant case.

## How does compliance differ by region?

The core areas are the same everywhere. Thresholds, licenses, and supervisors differ. Sources are dated below; treat this as a snapshot as of September 2026 and check the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) for updates.

| Region | Main framework | Wallet-relevant points | Source |
| --- | --- | --- | --- |
| United States | Bank Secrecy Act, enforced by FinCEN; state money transmitter laws; the GENIUS Act for payment stablecoin issuers | Hosted wallet providers are money transmitters; Travel Rule at USD 3,000 | FinCEN FIN-2019-G001 (May 2019); [GENIUS Act](https://www.congress.gov/bill/119th-congress/senate-bill/1582) (signed July 18, 2025) |
| European Union | MiCA for crypto-asset service providers; the Transfer of Funds Regulation | Custody needs authorization; Travel Rule with no threshold; self-hosted checks above EUR 1,000 | [MiCA](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023R1114) and TFR (2023, applying since December 30, 2024) |
| Brazil | Law 14.478/2022; Banco Central do Brasil Resolutions 519, 520, and 521 | Virtual asset service providers need Central Bank authorization | BCB resolutions (published November 10, 2025, effective February 2, 2026) |
| Mexico | The 2018 Fintech Law, with Banco de México and the CNBV as supervisors | Banco de México limits how financial institutions may deal in virtual assets | Fintech Law (2018) |

[MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) and [PSAV in Brazil](/resources/more/psav-brazil-explained) go deeper on the EU and Brazil.

## A 15-item pre-launch compliance checklist

Run this list before the first real transfer. Each item should have an owner and a written answer.

1. Counsel has reviewed your custody model and flows, and confirmed which registrations or licenses you need.
2. Every customer passes KYC or KYB before any quote, deposit, or payout.
3. Business customers have beneficial owners and a control person on file.
4. Every wallet address maps to exactly one verified customer.
5. EVM wallets prove control with a signed message at registration.
6. Addresses submitted directly come from your wallet provider's API, not from user input.
7. Customers and beneficial owners are screened against OFAC, EU, UN, and UK sanctions lists at onboarding.
8. Wallet addresses are screened against sanctions lists and blockchain analytics at registration.
9. Counterparty addresses are screened before each transfer.
10. Customers and addresses are rescreened when sanctions lists update.
11. KYT rules cover velocity, structuring, pass-through, and fast crypto-to-fiat conversion.
12. Travel Rule data is collected for transfers at or above each jurisdiction's threshold.
13. Transfers to and from self-hosted wallets have an ownership check where the rules require one.
14. Alerts have a documented review process, with named people who can decide on suspicious activity reports.
15. Records of verification, screening, alerts, and decisions are retained for the required period.

## Which compliance tasks can be automated and which cannot?

Automate the checks and keep people on the decisions. Screening, scoring, and data collection run well as software. Judgment calls on matches, high-risk customers, and reports need a trained person.

| Task | Automate? | Notes |
| --- | --- | --- |
| Document and selfie verification | Yes | Route unclear results to manual review |
| Business registry and ownership collection | Mostly | Complex ownership structures need a person |
| Sanctions and PEP screening | Yes | A person reviews every potential match |
| Wallet address screening | Yes | Analytics scores, with thresholds you set |
| KYT scoring | Yes | Alerts go to a review queue |
| Travel Rule data exchange | Yes | Counterparty provider due diligence is manual |
| Enhanced due diligence | No | Source of funds and business model reviews |
| Suspicious activity report decisions | No | Always a documented human decision |
| Licensing and policy | No | Counsel and your compliance officer |

BlindPay automates the verification side for its customers: Standard KYC usually returns a decision in about 60 seconds, with manual review when needed, and customers are screened at onboarding and on an ongoing basis. Transfers expose a transaction monitoring step with a blockchain screening score and a risk score in the API. [Automated KYC and KYB vs manual onboarding](/resources/more/automated-kyc-kyb-vs-manual-onboarding) and [what is automated risk monitoring](/resources/more/what-is-automated-risk-monitoring-fintech) cover how that automation works in practice.

## What to do next

Take the 15-item checklist to your first compliance meeting and mark each line as yours, your provider's, or unknown. Every unknown is a question for counsel or for your provider's compliance team, and both should answer in writing.

This article is general information only and is not legal advice.

---

Source: https://blindpay.com/resources/more/do-stablecoin-cards-require-kyc

---
title: "Do stablecoin cards require KYC? What to expect, what gets checked, and why \"no KYC\" cards fall short"
seoTitle: "Do stablecoin cards require KYC? What to expect"
description: "Why stablecoin cards ask for ID even with a permissionless wallet, what KYC and KYB collect, why no-KYC cards fall short, and how to fix a rejection."
date: "2026-09-28"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Can I get a stablecoin card without KYC?"
    a: "Rarely, and not in a useful form. A card that runs on Visa or Mastercard is issued by a licensed institution that has to identify its cardholders. Cards marketed as no KYC are usually low-limit prepaid products, programs outside the major networks, or offers that change once regulators or the network notice. Expect limits, sudden closures, or both."
  - q: "Why does a self-custodial stablecoin card still ask for my ID?"
    a: "Because the card and the wallet are separate products. The wallet can be permissionless, but the card is issued by a regulated issuer on a card network, and that issuer must know who its cardholder is. As neobankbeat puts it, the wallet may be permissionless; the plastic isn't."
  - q: "What documents do I need for a stablecoin card?"
    a: "For an individual, usually a government photo ID, a selfie or liveness check, your full name, date of birth, residential address, and a tax or national ID number. Some providers also ask for proof of address or source of funds, especially for higher limits or for applicants in higher-risk countries. Requirements vary by provider and country."
  - q: "What is KYB for a business stablecoin card?"
    a: "KYB, know your business, verifies a company instead of a person. The provider checks the company's registration, address, business activity, and ownership, then runs KYC on the people who own or control it. Expect to upload formation documents, an ownership chart, and proof of address, plus ID for each beneficial owner."
  - q: "Why was my stablecoin card application rejected?"
    a: "The most common causes are a blurry or cropped ID, a name or address that does not match the document, a country the program does not serve, a sanctions or PEP screening hit that needs review, or a business activity the issuer excludes. Ask the provider which check failed, fix that item, and reapply with clean documents."
---

Yes. Almost every stablecoin card requires KYC, because the card runs on Visa or Mastercard through a licensed issuer, and that issuer must identify its cardholders. The wallet funding the card can be permissionless. The card cannot. Cards sold as "no KYC" are usually low-limit prepaid products or programs at risk of closure.

People ask this question for two reasons. Some want privacy. Others had an application stall or get rejected and want to know why. Both get the same answer: the identity check comes from the card rails, not from the stablecoin.

This page covers what gets checked, what documents to have ready, what KYB means for a business card, and what to do after a rejection. For the basics of how these cards work, start with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card), and for the issuer side, [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Card networks run through licensed issuers, and licensed issuers must identify cardholders. That is why stablecoin cards ask for ID.
- Self-custody does not remove KYC. The wallet can be permissionless while the card stays regulated.
- Individuals go through KYC: ID, selfie or liveness, name, date of birth, address, and a tax ID number. Businesses go through KYB plus KYC on their owners.
- "No KYC" cards tend to come with low limits, missing protections, or the risk of being shut off.
- Most rejections come from document quality or mismatched data, and most can be fixed.

## Why do stablecoin cards require KYC if the wallet is permissionless?

A stablecoin card requires KYC because the card is a regulated payment product, separate from the wallet. The issuer that puts the card on Visa or Mastercard carries the anti-money-laundering duties, and identifying the cardholder is the first of them.

A stablecoin card has two halves. The first half is a balance in USDC or USDT, held in a custodial account or a self-custodial smart wallet. The second half is a card issued by a bank or e-money institution, sponsored onto a card network, and processed like any other debit card. The second half is where the identity check lives.

neobankbeat's explainer on stablecoin cards states it plainly: "Even fully self-custodial programmes must identify cardholders... The wallet may be permissionless; the plastic isn't." Gnosis Pay is a good example. It spends from a Safe smart account that the user controls, with allowances enforced onchain, and it still onboards cardholders through identity verification because the card itself is a regulated product.

Sanctions rules push the same way. OFAC's [sanctions compliance guidance for the virtual currency industry](https://home.treasury.gov/system/files/126/virtual_currency_guidance_brochure.pdf) (October 2021) expects virtual currency businesses to know who they are dealing with, and you cannot screen a person you have not identified.

## What is the difference between KYC and KYB?

KYC verifies a person. KYB verifies a company and then the people behind it. A consumer stablecoin card needs KYC. A business card program needs KYB on the company and KYC on its owners.

> **KYC (know your customer):** verifying an individual's identity against documents or trusted data, plus screening against sanctions and politically exposed person (PEP) lists.
>
> **KYB (know your business):** verifying a company's registration, address, activity, and ownership, then running KYC on each beneficial owner and controller.
>
> **Issuer:** the licensed bank or e-money institution that legally issues the card and owns the compliance program.
>
> **Program manager:** the company that runs the card product day to day under the issuer's policies, often the brand you see.

For a deeper walk through business checks, see [what KYB is](/resources/more/what-is-kyb).

## What documents does a stablecoin card provider ask for?

Expect a government ID, a selfie or liveness check, and your personal details for an individual card. Expect formation documents, an ownership chart, and owner IDs for a business card. Exact lists vary by provider and country.

| Item | Individual card (KYC) | Business card program (KYB) |
| --- | --- | --- |
| Identity | Government photo ID (passport, national ID, driver's license) | Certificate of incorporation, articles of organization |
| Liveness | Selfie or video check | Usually not, but owners may do one |
| Personal or company data | Full name, date of birth, residential address | Legal name, registration number, registered address, website |
| Tax ID | National tax or ID number | Company tax ID |
| Ownership | Not applicable | Ownership chart naming beneficial owners |
| Owners | Not applicable | ID and proof of address for each beneficial owner |
| Extra checks | Proof of address or source of funds for higher limits | Source of funds, business activity details |
| Screening | Sanctions and PEP lists | Sanctions on the entity and every owner |

Two items catch people out. Proof of address must usually be recent and in the applicant's name. Source of funds questions show up when a program offers higher limits, and they are normal. [Why off-ramps ask for source of funds](/resources/more/source-of-funds-crypto-off-ramps) explains the logic, and the same logic applies to cards.

## Are "no KYC" crypto cards real?

Some exist, but they are limited and fragile. A card that skips identity checks either avoids the major networks, keeps limits low enough to sit under the issuer's thresholds, or operates in a way the network or a regulator may stop later.

What "no KYC" usually means in practice:

| What the ad says | What it often means | Risk to you |
| --- | --- | --- |
| "No KYC" | Light checks now, full KYC once you pass a limit | Card frozen mid-trip until you verify |
| "Anonymous card" | Low-value prepaid card | Small limits, few or no protections |
| "No ID needed" | Program outside regulated issuers | Funds stuck if the program closes |
| "Instant approval" | Automated KYC that runs in seconds | Usually fine, just fast |

The last row matters. Fast is not the same as no KYC. Many legitimate programs verify identity in a minute or two with automated document and liveness checks. If you value privacy, the better question is what the provider stores, who it shares data with, and how long it keeps records, not whether it skips the check.

## Why was my stablecoin card application rejected, and what should I do?

Most rejections come from document problems, mismatched data, unsupported countries, or a screening hit that needs a manual look. Most are fixable. Ask which check failed before you reapply.

1. **Ask for the reason.** Providers often tell you which step failed: document, liveness, address, or screening.
2. **Retake the ID photo.** Use the original physical document, full frame, no glare, all corners visible.
3. **Match your data to the document.** Your name, date of birth, and address should match the ID exactly, including middle names.
4. **Check country support.** Many programs serve a fixed list of countries. If yours is missing, no document will fix it.
5. **Answer follow-up requests quickly.** Requests for proof of address or source of funds usually come with a deadline.
6. **Don't open duplicate applications.** Several applications with slightly different data look like a fraud signal.
7. **Pick another program if your profile does not fit.** Some issuers exclude certain occupations or business types by policy.

Screening hits deserve a word. A name that resembles someone on a sanctions or PEP list can trigger a manual review. That is a false positive for most people, and it resolves with more data, such as a date of birth or a second ID.

## What does KYB look like for a business stablecoin card program?

A business card program verifies the company first, then every beneficial owner and controller, then the employees who get cards to whatever level the issuer requires. The company becomes responsible for how its cards are used.

The steps are predictable. The provider looks up the company in its corporate registry, reviews formation documents, maps the ownership structure, and runs KYC on each owner above the issuer's threshold plus at least one controlling person. It then screens the entity and every person against sanctions lists. Higher-risk sectors get enhanced due diligence.

If you are building a card program rather than applying for one, the duty sits with you and your issuer. [Stablecoin card issuing compliance](/resources/more/stablecoin-card-issuing-compliance) maps who owns each obligation, and [how to automate KYC and KYB for stablecoin payments](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the tooling.

Travel rule checks also apply when stablecoins move between providers. In the US, [31 CFR 1010.410(f)](https://www.law.cornell.edu/cfr/text/31/1010.410) requires originator and beneficiary data on transmittals of $3,000 or more, and FATF updated [Recommendation 16](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html) on payment transparency in June 2025. That is another reason identity data has to exist before money moves.

## How does BlindPay handle KYC and KYB?

BlindPay builds KYC and KYB into the payment flow itself, so the same API that pays out or collects money also verifies the customer behind it. It works alongside card programs on the funding and payout legs, where the same identity data gets reused.

Per the [BlindPay KYC requirements](/docs/kb/kyc), every payment flows through a customer that has completed verification. Individuals in standard-risk countries go through automated KYC Standard, which typically completes in about 60 seconds. Individuals from high-risk countries go through KYC Enhanced with manual review, and businesses go through KYB Standard with manual review, both typically 3 hours to 1 business day. The [KYB documents list](/docs/kb/kyb-documents) covers formation documents, ownership, and owner IDs.

For a card program, that matters on the legs around the card. A verified customer can receive USD into a US virtual account and get USDC or USDT in their wallet, or cash a stablecoin balance out to a bank account over Pix, SPEI, ACH, RTP, SEPA, or SWIFT (POBO/COBO), with the live quote showing the rate and fees before anything moves.

## What should you do next?

If you are applying for a stablecoin card, have your ID, a recent proof of address, and your tax ID ready, and expect a liveness check. If a program promises no KYC, read the limits and the closure terms first.

If you run a program, decide early who owns KYC, KYB, screening, and records. [Are stablecoin cards safe?](/resources/more/are-stablecoin-cards-safe) covers the risks that good verification helps prevent. To test a verification and payout flow end to end, open a free development instance and follow the [payout quickstart](/docs/quickstart-payout).

## Sources

- neobankbeat, [Stablecoin cards explained](https://www.neobankbeat.com/blog/stablecoin-cards-explained), November 18, 2025
- Gnosis Pay, [official site](https://gnosispay.com/)
- OFAC, [Sanctions compliance guidance for the virtual currency industry](https://home.treasury.gov/system/files/126/virtual_currency_guidance_brochure.pdf), October 2021
- 31 CFR 1010.410, [Records to be made and retained by financial institutions](https://www.law.cornell.edu/cfr/text/31/1010.410)
- FATF, [Update to Recommendation 16 on payment transparency](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/update-Recommendation-16-payment-transparency-june-2025.html), June 2025

---

Source: https://blindpay.com/resources/more/genius-act-timeline-key-dates

---
title: "GENIUS Act and MiCA timeline: the key dates for stablecoin payment teams"
seoTitle: "GENIUS Act and MiCA timeline: key dates for payment teams"
description: "Every GENIUS Act and MiCA date that matters to a stablecoin payment flow, how the US effective date is calculated, and what to finish before each deadline."
date: "2026-09-28"
updated: "2026-09-28"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "When does the GENIUS Act take effect?"
    a: "January 18, 2027. Section 20 sets the effective date at the earlier of 18 months after enactment (the Act was signed July 18, 2025) or 120 days after federal regulators issue final implementing rules. A final rule would have had to land by September 20, 2026 to pull the date forward, and none did, so the 18-month date applies."
  - q: "What happens on July 18, 2028 under the GENIUS Act?"
    a: "From that date, section 3(b)(1) makes it unlawful for a digital asset service provider to offer or sell a payment stablecoin to a person in the United States unless a permitted issuer issued it, or a foreign issuer qualifies under section 18. It is a distribution rule: exchanges, custodians, and payment providers that sell or deliver stablecoins to US persons carry it."
  - q: "When did MiCA start applying to stablecoins?"
    a: "June 30, 2024. Article 149 of Regulation (EU) 2023/1114 applied Titles III and IV, the rules for asset-referenced tokens and e-money tokens, from that date. The rest of MiCA, including the crypto-asset service provider regime, applied from December 30, 2024. The regulation itself entered into force on June 29, 2023."
  - q: "When does the MiCA transitional period for crypto-asset service providers end?"
    a: "July 1, 2026 at the latest. Article 143(3) lets providers that operated under national law before December 30, 2024 continue until that date or until they are authorized or refused, whichever comes first. Member States could shorten or skip the period, so the real end date varied by country. Since July 2026, serving EU clients needs MiCA authorization."
  - q: "Is Treasury's August 2026 GENIUS Act rule final?"
    a: "No. Treasury published a proposed rule on August 18, 2026 covering section 3, the prohibitions and limits on issuing, offering, and selling payment stablecoins in the US. Comments close October 19, 2026. A proposal can change before it becomes final, so build your plan on the statute and treat the proposal as the likely direction."
  - q: "Does a company that only uses stablecoins for payments need to do anything before 2027?"
    a: "Yes, mostly through its providers. Map which stablecoins you hold and move, ask each provider which role it plays under the GENIUS Act, and confirm their plan for foreign-issued tokens, which face an earlier US test than domestic ones. You probably won't need a license to hold stablecoins, but your counterparties might change what they offer."
---

The GENIUS Act was signed on July 18, 2025, takes effect on January 18, 2027, and bars service providers from selling non-permitted payment stablecoins to US persons from July 18, 2028. MiCA already applies in the EU: stablecoin rules since June 30, 2024, provider rules since December 30, 2024, and the last transitional period ended July 1, 2026.

*This article is for information only and is not legal advice.*

Two laws, two very different clocks. The EU's is almost done. The US one is just starting to tick, and the date that will change the most for payment companies is the one furthest away.

**Key takeaways**

- The GENIUS Act's effective date is fixed now: January 18, 2027. The 120-day path closed when no final rule appeared by September 20, 2026.
- Treasury's August 18, 2026 rule on issuing, offering, and selling payment stablecoins is a proposal. Comments close October 19, 2026.
- The deadline that bites distribution is July 18, 2028. After it, service providers can't sell non-permitted payment stablecoins to US persons.
- MiCA is fully in force. Its last big transitional date for service providers passed on July 1, 2026.
- Most payment teams are not issuers. Your exposure runs through which tokens you use and which providers you use to move them.

For the rest of the stack (issuers, networks, ramps, rails), start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure). This page is only about dates.

## What are the key GENIUS Act dates?

The GENIUS Act has one enactment date, one effective date, and a string of deadlines measured from each. The table lists the ones that touch payment flows, with the section of the [enrolled text on congress.gov](https://www.congress.gov/119/bills/s1582/BILLS-119s1582enr.htm) that sets each.

| Date | What happens | Where it comes from | Status as of September 28, 2026 |
| --- | --- | --- | --- |
| July 18, 2025 | Act signed into law | Enactment | Done |
| July 18, 2026 | Deadline for federal and state regulators to issue implementing rules | Section 13(a), 1 year after enactment | Passed with rules still in proposal |
| August 18, 2026 | Treasury proposes rules on issuance, offer, and sale | Federal Register 2026-16796 | Proposed, comments close October 19, 2026 |
| January 18, 2027 | Act takes effect | Section 20, 18 months after enactment | Fixed |
| January 18, 2027 | Foreign-issued stablecoins need an issuer that can and will comply with lawful US orders | Section 3(b)(2), from the effective date | Upcoming |
| January 18, 2028 | States submit initial certifications that their regimes are substantially similar | Section 4(c)(4), 1 year after the effective date | Upcoming |
| July 18, 2028 | Service providers may only offer or sell payment stablecoins from permitted issuers (or qualifying foreign issuers) to US persons | Section 3(b)(1), 3 years after enactment | Upcoming |
| July 18, 2028 | FinCEN guidance and rulemaking on new methods to detect illicit activity | Section 9(d), 3 years after enactment | Upcoming |

The Treasury proposal is the [Federal Register notice of August 18, 2026](https://www.federalregister.gov/documents/2026/08/18/2026-16796/genius-act-regulations-on-payment-stablecoin-issuance-offer-and-sale). It covers section 3 only. Other agencies have their own proposals for the issuers they supervise; the [GENIUS Act guide for businesses](/resources/more/genius-act-for-businesses) lists them.

## How is the GENIUS Act effective date calculated?

Section 20 says the Act takes effect on the earlier of two dates: 18 months after enactment, or 120 days after the primary federal regulators issue final implementing rules. Eighteen months after July 18, 2025 is January 18, 2027.

The arithmetic decides it:

1. Count back 120 days from January 18, 2027. That lands on September 20, 2026.
2. A final rule issued on or before that day would have moved the effective date earlier.
3. No final implementing rule was issued by then. A final rule issued today would point to a date after January 18, 2027, and the earlier date wins.
4. So January 18, 2027 is the effective date, and late rules can't pull it forward.

Why this matters: every "X after the effective date" deadline is now a real calendar date. The state certification deadline is January 18, 2028, for example.

The other clock runs from enactment, not from the effective date. Section 3(b)(1) starts "3 years after the date of enactment," so July 18, 2028 is fixed no matter how long rulemaking takes.

## What are the key MiCA dates?

MiCA, Regulation (EU) 2023/1114, applies in stages set by Article 149, with transition rules in Article 143. All dates come from the [regulation's text on EUR-Lex](https://eur-lex.europa.eu/eli/reg/2023/1114/oj/eng).

| Date | What happens | Article |
| --- | --- | --- |
| June 29, 2023 | Regulation enters into force; a short list of provisions (mostly mandates for technical standards) applies | Article 149(1) and (4) |
| June 30, 2024 | Titles III and IV apply: asset-referenced tokens (ARTs) and e-money tokens (EMTs) | Article 149(3) |
| July 30, 2024 | Last day for existing non-bank ART issuers to apply for authorization and keep issuing while they wait | Article 143(4) |
| December 30, 2024 | The rest of MiCA applies, including the crypto-asset service provider (CASP) regime | Article 149(2) |
| July 1, 2026 | Latest end of the CASP transitional period (shorter where a Member State chose) | Article 143(3) |
| December 31, 2027 | Trading platforms must have compliant white papers for older crypto-assets admitted before December 30, 2024 | Article 143(2)(b) |

Dollar stablecoins like USDC are EMTs under MiCA. The practical effect for payment companies came through distribution: EU platforms dropped non-compliant EMTs for EU clients. The [MiCA explainer](/resources/more/mica-stablecoin-rules-explained) covers what EMT issuers must do.

## How do the GENIUS Act and MiCA timelines compare?

MiCA regulated issuers and service providers on almost the same schedule. The GENIUS Act gives issuers until January 2027 and distributors until July 2028. Same idea, different sequencing.

| Milestone | GENIUS Act (US) | MiCA (EU) |
| --- | --- | --- |
| Law adopted | July 18, 2025 | May 31, 2023 (in force June 29, 2023) |
| Stablecoin issuer rules apply | January 18, 2027 | June 30, 2024 |
| Service provider rules apply | Foreign-issuer test from January 18, 2027; permitted-issuer-only sales from July 18, 2028 | December 30, 2024, with transition to July 1, 2026 at the latest |
| Who writes detailed rules | Treasury, the OCC, the Federal Reserve, the FDIC, NCUA, and state regulators | The European Commission, EBA, and ESMA through technical standards |
| Status in September 2026 | Rules proposed, not final | Fully applied |

The [2026 regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) puts both next to Brazil and Japan.

## Which role does your company play under each law?

Each deadline binds a specific role. Before you put a date in your plan, know whether you are an issuer, a service provider, or a user.

- **Issuer.** Under the GENIUS Act, only a permitted payment stablecoin issuer may issue a payment stablecoin in the US (section 3(a)). Under MiCA, EMT issuers must be credit institutions or e-money institutions. Few payment teams are here.
- **Digital asset service provider (US) or CASP (EU).** The GENIUS Act defines a digital asset service provider in section 2(7) as a person that, for compensation or profit, exchanges digital assets for money or other digital assets, transfers them to a third party, acts as a custodian, or takes part in issuance services. It excludes protocols, validators, and self-custodial software interfaces. A business that converts stablecoins to fiat for customers may fit that definition. Confirm with counsel.
- **User.** A company that holds stablecoins and pays through providers. The July 2028 rule doesn't bind you directly, but it binds the providers you depend on, so the tokens they offer may change.

If you're not sure which applies, read [what a VASP is](/resources/more/what-is-a-vasp). The EU's CASP and the US definition overlap with that concept.

## What should payment teams do before each deadline?

Work backward from the dates that bind your providers. Here is a calendar you can copy.

1. **Before October 19, 2026.** Read the Treasury proposal. If your business depends on a foreign-issued stablecoin, the comment period is the time to say so.
2. **By the end of 2026.** Inventory every stablecoin you hold, accept, or pay out, with the issuer and the network for each. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) explains the main differences.
3. **By the end of 2026.** Ask each provider in writing which GENIUS Act role it plays and how it will handle section 3(b)(2) on January 18, 2027.
4. **January 18, 2027.** The Act is in effect. Check that each foreign-issued token you use is still offered to you by your US providers.
5. **During 2027.** Track final rules from Treasury and the banking agencies. Update your compliance policy when they land, not before.
6. **By early 2028.** Decide your plan for any token whose issuer won't be permitted or qualified by July 18, 2028. Test a second token on your main corridors.
7. **July 18, 2028.** Non-permitted stablecoins can no longer be sold to US persons by service providers. Your flows should already run on tokens that pass.
8. **For EU flows, now.** Confirm every EU provider holds a MiCA authorization, since transitional rights ended by July 1, 2026 at the latest.

## What is still unsettled?

Plenty. Plan around the statute, and expect the details to move.

- **Treasury's rule is a proposal.** The final text may change how platforms can rely on a foreign issuer's representations.
- **Which foreign regimes qualify.** Section 18 depends on Treasury finding a foreign regime comparable. No such finding existed as of this writing.
- **State regimes.** States must certify substantial similarity by January 18, 2028. Until then, which state-issued tokens qualify is open.
- **Edges of the service provider definition.** Payment APIs, wallet software, and orchestration layers sit close to the exclusions. Expect guidance or enforcement to draw those lines.
- **MiCA reviews.** The EU can amend MiCA, and technical standards keep arriving. Fully applied doesn't mean frozen.

## How does BlindPay fit?

BlindPay doesn't issue stablecoins. It moves USDC and USDT between customer wallets and local bank rails, so the GENIUS Act and MiCA reach BlindPay customers mainly through which tokens they choose for each flow.

That choice is a field, not a migration. Every payin and payout quote takes a `network` and `token` pair, and [supported chains](/docs/kb/supported-chains) lists every combination: USDC on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, and Solana, and USDT on Ethereum, Polygon, Tempo, Solana, and Tron. If a token's status changes in 2027 or 2028, a team can move a corridor to the other token by changing the quote request. Payouts settle over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on wires.

Put the eight dates above in your compliance calendar today, then run a test payout in each token on your main corridor so a switch is already proven when you need it.

---

Source: https://blindpay.com/resources/more/how-to-on-ramp-local-currency-latin-america

---
title: "How to on-ramp BRL, MXN, ARS, and COP into stablecoins: Pix, SPEI, Transfers 3.0, and PSE"
seoTitle: "How to on-ramp BRL, MXN, ARS, and COP into stablecoins"
description: "How Latin American bank payments become USDC or USDT: what each rail shows the payer, the payer data it needs, how fast it lands, and the traps by country."
date: "2026-09-28"
updated: "2026-10-11"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "How do I convert Brazilian reais to USDC?"
    a: "Use an on-ramp that collects Pix. You request a quote for the BRL amount, the on-ramp returns a Pix code (copia e cola or QR), the payer pays it from their bank app, and the on-ramp delivers USDC or USDT to your wallet once the payment lands. Pix runs 24/7 and usually settles in seconds, so the whole flow takes minutes."
  - q: "Can I on-ramp Mexican pesos to stablecoins with SPEI?"
    a: "Yes. The on-ramp gives the payer a CLABE to transfer to, and SPEI moves the pesos in seconds at any hour. After the deposit is matched, the provider converts it and sends USDC or USDT on-chain. Quote whole pesos, since some providers, BlindPay included, reject amounts with centavos on SPEI payins."
  - q: "How does a crypto on-ramp work in Argentina?"
    a: "Through Transfers 3.0, the Central Bank of Argentina's interoperable transfer framework. The payer sends pesos to a CVU, CBU, or alias from any bank or wallet app. On BlindPay the payer's CUIT or CUIL is required on the quote, so the deposit can be matched and screened, and amounts must be whole pesos."
  - q: "How does PSE work for crypto on-ramps in Colombia?"
    a: "PSE (Pagos Seguros en Línea) is an online bank debit. The payer opens a payment link, picks their bank, and approves the payment in the bank's own site, usually with two-factor authentication. The on-ramp then converts the pesos and delivers stablecoins. Expect to collect the payer's name, document type and number, email, phone, and bank."
  - q: "Should I use USDC or USDT for a Latin American on-ramp?"
    a: "It depends on where the money goes next. USDT is widely used for savings and peer-to-peer trades in the region, and on Tron it is often the only option. USDC is common for business treasury and cross-border settlement. Pick the token your recipient's next step expects, and confirm the network supports it before quoting."
  - q: "Do I need a local bank account in each country to on-ramp?"
    a: "No. With an on-ramp that collects over local rails, the payer uses their own bank, and the provider handles the local accounts. Your company integrates one API, and the stablecoins arrive in a wallet. You still need each payer to be a verified customer of the provider."
---

To on-ramp Latin American currency into stablecoins, the payer sends a local bank payment and the provider converts it: Pix in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina, and PSE in Colombia. Each rail shows the payer something different, needs different payer data, and settles in seconds to minutes. Then USDC or USDT lands in a wallet.

Most writing about stablecoins in Latin America covers the other direction: [paying out](/resources/more/stablecoins-local-rails-latin-america) to a Pix key or a CLABE. This guide covers money coming in, which is where most integrations hit their first surprises.

## Key takeaways

- Every rail hands the payer a different instruction: a Pix code, a CLABE, a CVU or CBU, or a payment link.
- Instant rails let the on-ramp check who's paying. Expect to collect the payer's tax ID, and for PSE, their full details.
- Mexican, Argentine, and Colombian pesos are often quoted in whole units only. Centavos can get a payin rejected.
- The on-ramp is funded by the payer's deposit, so there's nothing to pre-fund.
- Choose the token and network for where the money goes next, not for where it came from.

## How does a local bank payment become a stablecoin?

The flow is the same in every country. Only step 3 changes.

1. **Quote.** Your backend asks the on-ramp to convert an amount of local currency into USDC or USDT for a specific wallet. The quote locks the rate and fees for a few minutes and records who is allowed to pay.
2. **Create the payment.** The on-ramp returns the payment instructions for the rail.
3. **The payer pays.** From their own bank app, using the Pix code, CLABE, CVU, or link.
4. **Match.** The on-ramp detects the deposit and matches it to the quote: amount, payer, reference.
5. **Convert and deliver.** The on-ramp converts the currency and sends the stablecoins on-chain.
6. **Confirm.** A webhook tells your backend the payment is complete.

[Integrating a crypto on-ramp API](/resources/more/how-to-integrate-a-crypto-on-ramp-api) covers the code for each step. The rest of this page is about step 3, rail by rail.

## Which Latin American rails can fund an on-ramp?

Four rails cover BlindPay's payin side in Latin America.

| Country | Rail | What the payer gets | Payer data on the quote | Typical arrival on BlindPay |
| --- | --- | --- | --- | --- |
| Brazil | Pix | A Pix code, as copyable text or a QR code | CPF or CNPJ of the allowed payers | Up to 5 minutes |
| Mexico | SPEI | A CLABE to transfer to | None | Up to 10 minutes |
| Argentina | Transfers 3.0 | A CVU, CBU, or alias | CUIT or CUIL (required) | Up to 10 minutes |
| Colombia | PSE | A payment link | Full name, document, email, phone, bank code (required) | Up to 10 minutes |

Brazil also has TED, a wire-style rail that's slower than Pix, which BlindPay enables per instance. And US payers have their own set: ACH, wire, and RTP, plus SWIFT into a US virtual account. Those are covered in [accepting bank transfers in stablecoins](/resources/more/accept-bank-transfers-settle-in-stablecoins).

## How does on-ramping with Pix work in Brazil?

Pix is the [Banco Central do Brasil](https://www.bcb.gov.br/en/financialstability/pix_en) instant payment system. It runs 24/7, settles in seconds, and nearly every Brazilian bank account and wallet app supports it.

For an on-ramp, the payer gets a Pix code: a "copia e cola" string or a QR code that already carries the amount and the recipient. They paste it into their bank app, confirm, and it's done.

What to know:

- **Payer allowlist.** BlindPay Pix quotes take `pix_allowed_tax_ids`, the CPF or CNPJ numbers allowed to pay. They're validated against the Receita Federal check digits when the quote is created, so a mistyped CPF fails immediately instead of at the bank.
- **Waiting window.** A Pix payin usually lands within minutes. BlindPay waits up to 30 minutes, runs a reconciliation check, and only then marks it `failed`.
- **Large amounts.** For BRL into USDT of $5,000 or more, you can request an OTC quote (`is_otc: true`), priced through BlindPay's OTC desk. OTC quotes expire in 10 seconds and wait for the deposit until 23:59 São Paulo time. A deposit that never arrives adds a $100.00 penalty to the billing fee, so only quote OTC when the payer is ready.

## How does on-ramping with SPEI work in Mexico?

SPEI is Mexico's interbank transfer system, run by [Banxico](https://www.banxico.org.mx/services/interbanking-electronic-payme.html). Like Pix, it runs around the clock and settles in seconds.

The payer gets an 18-digit CLABE and transfers to it like any other account. There's no QR code and no payer allowlist on the quote, which makes SPEI the simplest of the four to integrate.

The trap is centavos. On BlindPay, a sender-side SPEI quote must be a whole number of pesos: `request_amount` has to be a multiple of 100 in minor units, or the quote fails with `request_amount_must_be_a_whole_currency_unit`. If you quote from the stablecoin side instead, the peso amount is rounded down to a whole unit for you.

## How does on-ramping with Transfers 3.0 work in Argentina?

Transfers 3.0 is the [Banco Central de la República Argentina](https://www.bcra.gob.ar/en/transfers-3-0/) framework that made transfers interoperable between banks and wallet apps. The payer sends pesos to a CVU (a wallet account), a CBU (a bank account), or an alias.

On BlindPay, two rules apply:

- **CUIT or CUIL is required.** `transfers_allowed_tax_id` names the tax ID allowed to pay, in the `20-12345678-6` format.
- **Whole pesos only.** Same rule as SPEI.

Argentina adds one forgiving behavior. If a Transfers 3.0 deposit arrives after the payin was already marked `failed`, and no stablecoins were sent yet, BlindPay revives the payin and completes it once the sender's tax ID and amount match. Late payers don't automatically mean a refund.

## How does on-ramping with PSE work in Colombia?

PSE, Pagos Seguros en Línea, is Colombia's online bank debit, operated by [ACH Colombia](https://www.pse.com.co/). Instead of pushing money to an account number, the payer opens a payment link, picks their bank, and approves the debit inside the bank's own site, usually with two-factor authentication.

That redirect means PSE needs more payer data up front. A BlindPay PSE quote requires:

| Field | Format |
| --- | --- |
| `pse_full_name` | Up to 50 characters |
| `pse_document_type` | `CC` (citizen ID) or `NIT` (tax ID) |
| `pse_document_number` | The document number |
| `pse_email` | The payer's email |
| `pse_phone` | `+573` followed by 9 digits |
| `pse_bank_code` | The payer's bank |

Colombian pesos have a much smaller unit value than the other currencies, so the minimum in raw minor units is higher. Read the minimum from the quote error instead of hardcoding it. And quote whole pesos, as with SPEI and Transfers.

## Which stablecoin and network should you deliver to?

Pick the token for the next step and the network for cost and compatibility.

**Token.** USDT is widely used across Latin America for savings and peer-to-peer trades. USDC is common for business treasury and for settling with US counterparties. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares them in depth. Both are redeemable with their issuers: [Circle](https://www.circle.com/usdc) for USDC and [Tether](https://tether.to/en/transparency/) for USDT.

**Network.** On BlindPay, payins can deliver to:

| Network | Tokens | Notes |
| --- | --- | --- |
| Solana | USDC, USDT | Low fees, fast confirmation |
| Polygon, Ethereum | USDC, USDT | Ethereum fees rise when the network is busy |
| Tempo | USDC, USDT | EVM chain, same address format |
| Base, Arbitrum, Arc | USDC | No USDT |
| Stellar | USDC | No USDT |
| Tron | USDT | No USDC; external Tron wallets are in beta |

The network is read from the destination wallet, so you choose it when the wallet is registered, not on each quote.

## Do you need to pre-fund a Latin American on-ramp?

No. The payer's deposit funds the on-ramp. The provider delivers stablecoins after the pesos or reais land, so neither you nor the provider parks a balance in each country in advance. Pre-funding is an off-ramp and payout question, covered in [what no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts).

## What does a full example look like?

A US fintech offers dollar balances to small businesses in Brazil, Mexico, Argentina, and Colombia. Each business tops up its balance from its own local bank account, and the balance is USDC on Solana.

1. Each business onboards through the fintech's signup. The fintech passes the KYB data to the on-ramp API, which registers each business as its own customer.
2. Each business's Solana wallet is registered once.
3. When a business wants to top up, the fintech requests a quote in that business's currency, with payer rules naming the business's own tax ID.
4. The business sees the right instruction inside the fintech's app: a Pix QR code, a CLABE, a CVU, or a PSE button.
5. As each deposit lands, USDC arrives in that business's wallet, and a webhook updates the balance in the app.

Four countries, four rails, one integration, one token on one network. The fintech never opens a bank account in Latin America, and every business that moves money is a verified customer of the on-ramp.

## How are fees handled?

Every payin quote shows the market rate, the rate with fees, and each fee line before the payer pays. The `cover_fees` flag decides who pays: `false` takes the fee out of the stablecoins delivered, and `true` adds it to the amount the payer sends. A platform can add its own partner fee on top. [Crypto on-ramp fees explained](/resources/more/crypto-on-ramp-fees-explained) shows how to compare quotes.

## Where does BlindPay fit?

BlindPay collects payins over Pix, SPEI, Transfers 3.0, and PSE, plus TED in Brazil and ACH, ACH pull, domestic wire, RTP, and SWIFT in the US, converts them, and delivers USDC or USDT to the wallet on the quote. Delivery can go to an external wallet the customer controls, so the stablecoins never sit with BlindPay, or to a BlindPay-managed wallet (beta), which BlindPay custodies. Payer rules, whole-unit amounts, and waiting windows are enforced by the API, so most mistakes fail at quote time. The same API pays out over local rails when the money needs to go back to a bank.

**When BlindPay is the right fit:** you collect from businesses or individuals in Brazil, Mexico, Argentina, or Colombia and want stablecoins in a wallet, through one API, with KYC and KYB handled. **When it isn't:** you need local virtual accounts in Latin America today (BlindPay's virtual accounts are US accounts), or card checkout for retail crypto buyers. See [payins](/docs/payins) and [payment methods](/docs/kb/payment-methods) for the full reference.

## What to do next

Pick the one country where most of your payers are and run a single payin end to end on a development instance. Then read [why crypto on-ramp deposits fail](/resources/more/why-crypto-on-ramp-deposits-fail) before you launch, and check the compliance split in [who owns on-ramp compliance](/resources/more/crypto-on-ramp-compliance-who-owns-what). For the bigger picture, start at [business vs consumer crypto on-ramps](/resources/more/business-vs-consumer-crypto-on-ramps).

Funding a stablecoin card balance from local bank money follows the same payin flow; [how to fund a stablecoin card with Pix or SPEI](/resources/more/fund-stablecoin-card-pix-spei) walks through the top-up and the cash-out of what is left.

*This article is general information, not legal, tax, or financial advice. Rails, payer requirements, and supported networks change; confirm current details in the docs.*

---

Source: https://blindpay.com/resources/more/onchain-liquidity-vs-offramp-liquidity

---
title: "Onchain liquidity vs off-ramp liquidity: why a deep DEX pool doesn't mean a deep BRL payout"
seoTitle: "Onchain liquidity vs off-ramp liquidity, explained"
description: "Onchain liquidity is tokens in pools. Off-ramp liquidity is local currency a provider can pay into bank accounts. Why one doesn't predict the other."
date: "2026-09-28"
updated: "2026-09-28"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is the difference between onchain liquidity and off-ramp liquidity?"
    a: "Onchain liquidity is how many tokens sit in pools and order books on a blockchain, which sets how much you can swap before the price moves. Off-ramp liquidity is how much local currency a provider can pay into bank accounts at a quoted rate. The first ends with tokens in a wallet. The second ends with money in a bank account."
  - q: "Does a deep stablecoin pool mean I can off-ramp large amounts?"
    a: "No. A deep USDC/USDT pool only means you can swap between two dollar tokens cheaply. Paying reais or pesos into a bank account needs someone holding that currency in bank accounts, plus access to a rail like Pix or SPEI. Test off-ramp depth with quotes at several sizes on your corridor, not with pool sizes."
  - q: "What is price impact in a DEX swap?"
    a: "Price impact is how much your own trade moves the price in a pool. A pool prices swaps from the balances it holds, so a large swap shifts the balance and fills at a worse average rate. Uniswap's docs put it simply: the greater the liquidity available at a given price, the lower the price impact for a given swap size."
  - q: "Is slippage the same on a DEX and on an off-ramp?"
    a: "The word is shared, the meaning differs slightly. On a DEX, slippage is the price change that can happen while your transaction is pending, and you cap it with a slippage tolerance. On an off-ramp, slippage is the gap between the rate you were shown and the rate that settled. A binding quote executed inside its window has none."
  - q: "Which blockchain should I use to off-ramp stablecoins?"
    a: "Pick the network for fees, confirmation time, and which tokens your provider accepts on it. The chain doesn't change how much local currency the provider holds. At BlindPay, a payout quote takes a network and token, and the supported chains reference lists every valid pair, such as USDC on Base or USDT on Tron."
---

Onchain liquidity is how much you can swap between tokens on a blockchain before the price moves. Off-ramp liquidity is how much local currency a provider can pay into bank accounts, at a quoted rate, over rails like Pix or SPEI. They're different pools of money, so a deep USDC pool says nothing about a deep BRL payout.

The confusion is easy to make. Both get called "stablecoin liquidity," both have spreads and slippage, and both show up in the same payment. But one lives in smart contracts and the other lives in bank accounts. This guide separates them, does the pool math on a $50,000 swap, and shows which one to check for your use case.

**Key takeaways**

- Onchain liquidity is tokens in pools and order books. Its output is tokens in a wallet.
- Off-ramp liquidity is local currency in bank accounts, plus the ability to bind a quote and deliver over a rail.
- A deep USDC/USDT pool moves you between two dollar tokens. It doesn't put reais in a bank.
- Pool depth shows up as price impact. Off-ramp depth shows up as the rate on quotes at several sizes.
- Choose the network for fees and finality. Choose the off-ramp for depth and delivered amount.

## What is onchain liquidity?

Onchain liquidity is the token balance available to trade against on a blockchain, mostly in automated market maker pools and exchange order books. A pool holds two or more tokens and prices each swap from the balances it holds.

Uniswap, the best-known example, started as "an automated liquidity protocol based on a 'constant product formula'," per the [Uniswap v2 whitepaper](https://app.uniswap.org/whitepaper.pdf). The pool keeps the product of its two balances constant (x times y), so every token you take out costs more than the last one.

That's what price impact means. Uniswap's [swaps documentation](https://developers.uniswap.org/docs/get-started/concepts/traders/swaps) puts it plainly: "The greater the liquidity available at a given price, the lower the price impact for a given swap size." It defines slippage separately, as "alterations to a given price that could occur while a submitted transaction is pending." You cap it with a slippage tolerance, and if the price moves past it, the swap fails.

Pools built for pegged assets go further. The [StableSwap paper](https://classic.curve.finance/files/stableswap-paper.pdf) behind Curve describes "a fully autonomous market-maker for stablecoins with very minimal price slippage." For USDC to USDT, onchain liquidity is very good. The [market maker explainer](/resources/more/what-is-a-market-maker-stablecoin-payments) covers how these pools compare with human market makers.

## What is off-ramp liquidity?

Off-ramp liquidity is a provider's ability to take your stablecoins and pay local currency into a bank account, at a rate it committed to, at the size you need. The [glossary for this cluster](/resources/more/onramp-offramp-liquidity-glossary) defines it as converting at size, at a quoted rate, without the price moving against you.

Three things have to exist for it to work:

1. **Local currency in bank accounts.** Reais in Brazil, pesos in Mexico, sourced from the provider's own inventory, market makers, or banking partners.
2. **A binding quote.** A price the provider will honor for a window, so the amount you see is the amount that lands.
3. **Rail access.** A connection to Pix, SPEI, ACH, SEPA, or SWIFT (POBO/COBO) that delivers the money.

None of those are onchain. You can read a pool's reserves from any block explorer. You can't read a provider's reais. You infer them from how its quotes behave at size, which is what [on/off-ramp liquidity with live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) walks through.

## How do onchain and off-ramp liquidity compare?

Side by side, they share vocabulary and little else.

| | Onchain liquidity | Off-ramp liquidity |
| --- | --- | --- |
| What's in the pool | Tokens (USDC, USDT, other tokens) | Local currency in bank accounts |
| Where it lives | Smart contracts and exchange books | Bank accounts at the provider or its partners |
| How the price is set | A formula or an order book, per swap | A quote from the provider, binding for a window |
| How you see depth | Read the pool reserves | Request quotes at several sizes |
| What slippage means | Price change while your transaction is pending | Gap between shown rate and settled rate |
| What you end up with | Tokens in a wallet | Money in a bank account |
| Hours | Every block, all week | The destination rail's hours (Pix and SPEI run 24/7) |
| Identity checks | Usually none at the pool | KYC or KYB before the first payout |

The bottom row explains a lot. A pool will swap for anyone. An off-ramp has to know who is sending and who is receiving, because it is moving money into the banking system. [Types of crypto off-ramps](/resources/more/types-of-crypto-off-ramps) covers the different ways that gets done.

## Why doesn't a deep USDC pool mean a deep BRL payout?

Because the reais aren't in the pool. A USDC/USDT pool, however large, swaps one dollar token for another. Getting reais into a Brazilian bank account needs somebody who holds reais in Brazilian bank accounts and will sell them to you.

Some pools hold tokens pegged to local currencies. Swapping into one still leaves you holding a token, not a bank balance. Turning that token into reais is a second off-ramp, with its own spread and its own depth. The [direct vs indirect exchange guide](/resources/more/direct-vs-indirect-stablecoin-exchange) explains why each extra hop adds cost.

**Illustrative example.** A constant-product pool holds 2,000,000 USDC and 10,800,000 units of a hypothetical BRL-pegged token, a price of 5.40. You swap 50,000 USDC in, ignoring pool fees:

- Tokens out = 10,800,000 - (2,000,000 x 10,800,000) / 2,050,000
- = 10,800,000 - 10,536,585.37 = 263,414.63 tokens
- Effective rate: 263,414.63 / 50,000 = 5.2683
- Price impact: (5.40 - 5.2683) / 5.40 = about 2.44%, or 244 bps

A $50,000 swap moved the price 244 bps in a $4 million pool. And you still hold tokens. An off-ramp with real depth quotes $50,000 at close to the same rate as $500, because the reais come from inventory sized for payouts, not from a pool sized for swaps. You'd confirm that with quotes at both sizes, captured in the same minute.

## Where do the two meet in an off-ramp?

At one moment: when your stablecoins move onchain to the provider. Everything before that is onchain. Everything after is bank money.

1. **You get a quote.** At BlindPay, a [payout quote](/docs/payout-quotes) takes the bank account, the amount, the `network`, and the `token`, and returns the rate, fees, and `receiver_amount`, valid for 5 minutes by default.
2. **You authorize the exact amount.** On EVM chains, you `approve` the quoted amount using the `contract` payload in the quote ([payout with EVM](/docs/payout-evm)). Stellar and Solana have their own authorization flows.
3. **The stablecoins move onchain.** Network fees and confirmation time depend on the chain. [What happens onchain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) walks through this leg.
4. **The provider pays out locally.** The reais or pesos come from off-ramp liquidity and land over the rail.

BlindPay settles stablecoins on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, with USDC or USDT depending on the network. The [supported chains reference](/docs/kb/supported-chains) lists every valid pair. Payouts funded from a wallet you control are non-custodial: you authorize the exact amount and BlindPay executes that single transaction.

The chain changes step 3. It doesn't change step 4. That's the whole point of keeping the two liquidity types apart.

## Which one should you check before choosing a route?

The one that matches where the money needs to end up.

- **Ending in tokens** (treasury rebalancing between USDC and USDT, moving funds between wallets): check onchain liquidity. Look at pool depth, expected price impact, and set a slippage tolerance.
- **Ending in a bank account** (supplier payments, payroll, marketplace payouts): check off-ramp liquidity. Request quotes at several sizes, confirm they're binding, and compare the delivered amount.
- **Both** (you hold USDT on Tron but your recipient needs reais): check the network for fees and finality, and the off-ramp for depth. [The best network to off-ramp stablecoins](/resources/more/best-network-to-off-ramp-stablecoins) compares chains on the first part.

Decision rule: never use a pool size to judge an off-ramp. A pool tells you about tokens. A quote at size tells you about the payout.

## What to do next

Pick your largest regular payout, then request [payout quotes](/docs/payout-quotes) at that size and at a tenth of it, on the network you already hold funds on. If the rate barely moves, the off-ramp has the depth you need, whatever the pools look like.

---

Source: https://blindpay.com/resources/more/stablecoin-api-objects-explained

---
title: "Stablecoin API objects explained: customers, bank accounts, wallets, quotes, payouts, and webhooks"
seoTitle: "Stablecoin API objects explained: the data model"
description: "The core objects behind a stablecoin API, how they relate, which IDs to store in your ledger, and 8 data-model mistakes that break payout integrations."
date: "2026-09-28"
updated: "2026-09-28"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are the main objects in a stablecoin API?"
    a: "Most stablecoin APIs share the same core objects: a customer (the verified person or business), bank accounts and blockchain wallets that hold or receive funds, a quote that locks the rate and fees, a payout or payin that executes the quote, an optional virtual account for repeat deposits, and webhook events that report every state change. Names vary by provider, but the roles stay the same."
  - q: "What is the difference between a customer and a receiver in a stablecoin API?"
    a: "A customer is the verified legal party on whose behalf money moves, and it passes KYC or KYB. A receiver, beneficiary, or bank account is a payment destination attached to that customer. Some providers use receiver to mean the customer itself, so read the docs. At BlindPay, customer IDs start with re_ and bank accounts start with ba_."
  - q: "Why do stablecoin API quotes expire so quickly?"
    a: "A quote locks an exchange rate and fees that the provider has to honor, while FX and liquidity keep moving. Short windows, often five minutes, limit that exposure. Treat a quote as single use: create it when the sender confirms, execute the payout right away, and request a new one if it expires. Never cache a quote for a later payment."
  - q: "Which provider IDs should I store in my database?"
    a: "Store the customer ID next to your user or business record, the bank account and wallet IDs next to each payee, and the quote ID, payout or payin ID, and your own idempotency key on every payment. Keep the rail reference too, such as the SWIFT UETR, plus the webhook message ID you used for deduplication. Store amounts as integers in minor units."
  - q: "Should my app update payment status from webhooks or by polling?"
    a: "Use webhooks as the primary signal and polling as the safety net. Webhooks arrive at least once, can repeat, and can arrive out of order, so deduplicate by message ID and only move a payment forward in its state machine. Run a scheduled job that fetches any payment still open past its expected arrival time and reconciles it against the API."
  - q: "How many virtual accounts can one customer have?"
    a: "It depends on the provider. Many issue one account per customer per banking partner, and some allow several for separate purposes. Model the virtual account as its own object linked to the customer and to the wallet where converted stablecoins land, rather than as a field on the customer, so a second account later does not force a schema change."
---

A stablecoin API is built from about eight objects. A customer is the verified person or business. Bank accounts and wallets are where money goes or sits. A quote locks the rate and fees. A payout or payin executes that quote, a virtual account collects repeat deposits, and webhook events report every change. Get those relationships right and the integration code stays small.

**Key takeaways**

- The customer is a verified legal party, not your login user. Model it that way from day one.
- A quote is single use and lives for minutes. A payout or payin is the durable record you reconcile.
- Store the provider's IDs, your idempotency key, and the rail reference on every payment, with amounts as integers in minor units.
- Webhooks are delivered at least once and can arrive out of order. Your state machine should only move forward.
- Names vary by provider (receiver, beneficiary, counterparty), but the roles below show up in nearly every [type of stablecoin API](/resources/more/types-of-stablecoin-apis).

The [integration guide](/resources/more/how-to-integrate-a-stablecoin-api) walks through the calls in order. This page covers the layer under the calls: what each object means, how they link, and what your own database should keep.

## What are the core objects in a stablecoin API?

The core objects are the environment, customer, bank account, wallet, quote, payout, payin, virtual account, and webhook event.

| Object | What it represents | How long it lives | Example ID at BlindPay |
| --- | --- | --- | --- |
| Instance (environment) | An isolated sandbox or production space. Nothing crosses between them | Permanent | `in_...` |
| Customer | The verified individual or business that sends or receives money. Passes KYC or KYB | Permanent | `re_...` |
| Bank account | A fiat destination for payouts: rail, account details, holder name. Can belong to a third party | Until deleted | `ba_...` |
| Blockchain wallet | An external address the customer controls, on a specific network | Until deleted | `bw_...` |
| Managed wallet | A stablecoin balance the provider holds for the customer | Permanent | `bl_...` |
| Quote | A locked rate, fee split, and amount for one payment | Minutes | `qu_...` (payout), `pq_...` (payin) |
| Payout | Stablecoins out, local currency into a bank account | Permanent record | `po_...` |
| Payin | Local currency in, stablecoins out to a wallet | Permanent record | `pi_...` |
| Virtual account | A reusable bank account in the customer's name for repeat deposits | Until closed | `va_...` |
| Webhook endpoint and event | Your URL, and the messages sent to it on each state change | Endpoint permanent, events replayable | `we_...` |

Less common objects follow the same pattern: transfers between wallets, bills to pay (payables), off-ramp wallets that pay out on deposit, and partner fees. If you understand the ten above, you can read any of them.

## How do the objects relate to each other?

Every object hangs off a customer inside one environment, and every money movement points back to a quote.

Picture a tree. The instance is the root. Customers sit under it. Each customer owns its destinations and sources: many bank accounts, many wallets, and usually one or a few virtual accounts. A virtual account points at the wallet where converted stablecoins land.

Money movements sit beside the tree, not inside it. A payout quote references a customer's bank account plus the network and token that fund it. The payout references that quote and the wallet the stablecoins come from. A payin references its payin quote and the destination wallet. Webhook events reference whichever object changed.

Three cardinality rules save the most bugs:

- **One quote backs one payout.** A second payout with the same quote ID should be rejected.
- **A bank account belongs to the paying customer, not the payee.** A customer named John can pay a bank account held by Jack.
- **Funds sit in exactly one place at a time.** An external wallet is under the customer's control, a managed wallet is held by the provider, and a payout in flight is in the provider's hands until it completes or returns. [Payout statuses](/resources/more/stablecoin-payout-statuses-explained) shows each step.

## Which IDs should you store in your own database?

Store every provider ID next to the record it maps to, plus the references your finance team will ask for later.

| Your record | What to store | Why |
| --- | --- | --- |
| User or business | Customer ID, KYC status | Every payment needs the customer; status gates what they can do |
| Payee | Bank account ID, rail, last four digits | Lets you reuse the destination without resending details |
| Wallet | Wallet ID, address, network | The same address on two networks is two different wallets |
| Payment | Quote ID, payout or payin ID, your idempotency key, status, amounts in minor units, token, network | The core of reconciliation |
| Rail reference | SWIFT UETR, Fedwire IMAD, or bank reference when the rail returns one | What the recipient's bank asks for when a payment goes missing |
| Onchain reference | Transaction hash | Proves the stablecoin leg happened |
| Webhook log | Message ID, event type, received time, processed time | Deduplication and audit |

Amounts deserve their own rule. Store integers in minor units, the way the API sends them. A `request_amount` of `66600` in USD means $666.00. A float will eventually round a cent the wrong way, and finance will find it at month end.

## What does a quote and payout request look like?

A quote request names the destination, amount, and funding token; the payout request names the quote. The example below is generic and illustrative. Field names differ by provider.

```json
// POST /quotes  (illustrative)
{
  "bank_account_id": "ba_123",
  "request_amount": 100000,
  "currency_type": "sender",
  "token": "USDC",
  "network": "base"
}

// 200 OK
{
  "id": "qu_456",
  "sender_amount": 100000,
  "receiver_amount": 532150,
  "commercial_rate": 5.35,
  "flat_fee": 300,
  "expires_at": 1790000000000
}
```

```json
// POST /payouts  (illustrative)
// Header: Idempotency-Key: 7b0c4c2e-payroll-2026-09-30-row-118
{
  "quote_id": "qu_456",
  "sender_wallet_address": "0xabc..."
}

// 200 OK
{ "id": "po_789", "status": "processing" }
```

Three details in that exchange matter. `expires_at` is a timestamp you read, not a window you assume. The `Idempotency-Key` header, described in an [IETF draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/), lets you retry the POST without paying twice; our [idempotency guide](/resources/more/stablecoin-api-idempotency-keys) covers the edge cases. And the payout comes back as `processing`, not `completed`. The final answer arrives by webhook.

## Which states does each object move through?

Each object has a small state machine, and your code should mirror it rather than invent its own.

| Object | Common states | Terminal states | Watch for |
| --- | --- | --- | --- |
| Customer | verifying, pending review | approved, rejected | Approved with an open information request |
| Virtual account | pending review, bank review | approved, rejected | Rail details are empty until approval |
| Quote | active | expired, used | Expiry before the sender confirms |
| Payout | processing, on hold | completed, failed, refunded | A failed payout is not automatically refunded |
| Payin | processing, on hold | completed, failed, refunded | A refunded payin means the deposit went back to the sender |

Model "on hold" as pending, not as an error. SWIFT and USD payouts often pass through a review hold as a standard step, so most users will see it at least once.

## How should you build the data model, step by step?

Build it in the same order money moves. Seven steps:

1. **Create one environment per stage.** Keep sandbox and production IDs in separate databases or clearly tagged columns. An ID from one never works in the other.
2. **Map your users to customers.** One customer per legal party that sends or receives money. A company with five admins is one business customer, not five.
3. **Attach destinations to the customer.** Bank accounts and wallets get their own tables with a foreign key to the customer.
4. **Write the payment row before you call the API.** Generate the idempotency key, store it with status `created`, then request the quote and the payout.
5. **Record every provider ID as it comes back.** Quote ID, then payout ID, then the transaction hash and rail reference.
6. **Apply webhooks through a forward-only state machine.** Deduplicate by message ID. The [Standard Webhooks spec](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md) recommends using the message ID as an idempotency key for this.
7. **Reconcile on a schedule.** Fetch anything still open past its expected arrival and compare it with your ledger. The [webhooks and reconciliation guide](/resources/more/stablecoin-api-webhooks-reconciliation) has the matching logic.

## What are the 8 most common data-model mistakes?

These eight show up in nearly every first integration, and each has a one-line fix.

| Mistake | What breaks | Fix |
| --- | --- | --- |
| Treating the customer as your login user | Duplicate KYC, payments split across "customers" for one company | One customer per legal party; many logins can act for it |
| Registering only your direct clients when you pay on behalf of others | Compliance gaps in nested flows | Register each end customer as its own customer when the provider requires it |
| Storing the bank account on the payee profile only | Third-party payouts fail to map | Bank account belongs to the paying customer, with holder name stored separately |
| Storing amounts as floats | Cent-level drift at reconciliation | Integers in minor units, converted only for display |
| Caching or reusing quotes | Expired or rejected payouts | New quote per payment, executed immediately |
| Generating a new idempotency key on each retry | Duplicate payouts after a timeout | One key per intended payment, saved before the first call |
| Applying webhooks in arrival order | A late event moves a completed payout back to processing | Forward-only transitions, dedupe by message ID |
| Counting linked events twice | One bill payment shows as two payments | Correlate linked records (for example a payable and its payout) by ID and count once |

## Where does BlindPay fit?

BlindPay's API uses these same objects with prefixed IDs, so a log line tells you what you are looking at. The docs come in two flavors: Abstracted, for teams that think in bank rails (virtual accounts, payins, payouts), and Advanced, for teams that work with wallets, approvals, and chains directly. Both describe the same API. Official [SDKs](https://blindpay.com/docs/sdks) for Node.js, Python, Go, PHP, and Swift are generated from one [OpenAPI 3.1](https://spec.openapis.org/oas/v3.1.0) spec, so the object shapes match across languages. The [customers reference](https://blindpay.com/docs/learn/customers) and the [webhook event list](https://blindpay.com/docs/learn/webhooks-events) are good first reads.

## What to do next

Draw your current schema next to the table in this article. For each payment row, check that you store the quote ID, the payout or payin ID, your idempotency key, and the amount in minor units. If any of those is missing, add the column before your first production payout, not after the first reconciliation break.

---

Source: https://blindpay.com/resources/more/stablecoins-local-rails-latin-america

---
title: "Stablecoins plus local rails: how cross-border payments actually land in Latin America"
seoTitle: "How stablecoin payments land in Latin America: Pix and SPEI"
description: "A stablecoin crosses the border in seconds, but the payment lands over Pix, SPEI, or another local rail. How that last mile works in Brazil and Mexico."
date: "2026-09-28"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do stablecoin payments reach a bank account in Latin America?"
    a: "The stablecoin carries the value across the border, then an off-ramp converts it into local currency and pays it out over the country's own payment rail: Pix in Brazil, SPEI in Mexico, Transfers in Argentina, or ACH in Colombia. The recipient sees an ordinary local deposit and never holds the stablecoin."
  - q: "What is Pix?"
    a: "Pix is Brazil's instant payment system, run by the Banco Central do Brasil since November 2020. It works 24/7, settles in seconds, and routes payments to a Pix key such as a CPF or CNPJ tax number, a phone number, an email address, or a random key. The Central Bank counted about 79.8 billion Pix transactions in 2025."
  - q: "What is SPEI?"
    a: "SPEI is Mexico's interbank electronic payment system, operated by Banco de México since 2004. Transfers settle in seconds and are addressed to an 18-digit CLABE account number. Banxico reported more than 7.3 billion SPEI transfers in 2025, up 36.8% from the year before."
  - q: "How long does a stablecoin payment to Brazil or Mexico take?"
    a: "At BlindPay, Pix and SPEI payouts are instant, so a payout funded from a stablecoin balance usually lands in the recipient's account within minutes of the quote. If the payment is funded by a US bank transfer first, that deposit sets the pace: ACH and wire deposits can take from the same day up to several business days to arrive."
  - q: "Does BlindPay require pre-funding for Latin America payouts?"
    a: "No. Payouts are funded at the moment you send them. The value arrives as stablecoin and leaves as local currency at the quoted rate, so there is no balance to park in Brazilian or Mexican bank accounts in advance. Plans are on the pricing page, with no monthly minimum, and each quote shows its fee before you execute."
---

A stablecoin can cross a border in seconds, but nobody in São Paulo pays rent in USDC. The payment has to land as reais or pesos in an ordinary bank account, and that last mile runs over each country's own payment rail: Pix in Brazil, SPEI in Mexico. Stablecoins solve the border. Local rails solve the landing. A cross-border payment into Latin America is only as fast and reliable as the connection between the two.

Both rails are already where the money lives. The Banco Central do Brasil counted about 79.8 billion Pix transactions in 2025, and its Pix management report found that 148 million people, around 86% of Brazilian adults, sent or received at least one. Banco de México reported more than 7.3 billion SPEI transfers in 2025, up 36.8% in a year.

## What is the last-mile problem?

Picture a US company paying a supplier in Brazil. The stablecoin leg, dollars to USDC and across the border, takes seconds and costs cents. Then the USDC has to become reais in the supplier's bank account, and there are two ways that can happen.

- **Through a generic intermediary.** The provider converts the stablecoin and sends a SWIFT wire to a Brazilian bank, which credits the supplier. That brings back what the stablecoin was supposed to remove: correspondent fees, cut-offs, and days of waiting.
- **Over the local rail.** The provider pays out on Pix directly, the same way a Brazilian company pays another Brazilian company. The supplier's bank credits the funds in seconds, any day of the week.

The second is the whole point. A stablecoin payment into Latin America without native local-rail payouts is just a SWIFT wire with an extra step.

## How does Pix work for cross-border payouts?

Pix is Brazil's instant payment system, run by the Central Bank since November 16, 2020. It works 24/7, including weekends and holidays, and settles in seconds. It's free for individuals.

Instead of a bank code, branch, and account number, a Pix payment goes to a **Pix key**: a CPF (individual tax number), a CNPJ (company tax number), a phone number, an email address, or a random key the recipient generates. That makes supplier onboarding simple. Ask for one key, not five fields.

What matters for a cross-border payer:

- **Speed:** Pix payouts at BlindPay are instant. Incoming Pix payins confirm in up to five minutes.
- **Fallback options:** when you have the recipient's bank routing but no Pix key, BlindPay's PIX Safe payout type uses the bank code, branch, and account instead, and still settles instantly. TED, Brazil's older transfer rail, settles the same banking day if sent before the cut-off ([bank accounts](/docs/bank-accounts)).
- **Regulation:** since February 2, 2026, Brazil's Central Bank Resolutions 519, 520, and 521 license virtual asset service providers and treat international payments using virtual assets as foreign exchange operations. Brazil's framework is covered in [PSAV in Brazil explained](/resources/more/psav-brazil-explained) and our note on [BCB Resolution 561](/blog/bcb-resolution-561-efx-stablecoins).

## How does SPEI work for cross-border payouts?

SPEI (Sistema de Pagos Electrónicos Interbancarios) is Mexico's interbank payment system, operated by Banco de México since 2004. Banxico describes settlement on the order of seconds.

Payments are addressed to a **CLABE**, an 18-digit standardized account number: three digits for the bank, three for the city, eleven for the account, and one check digit. The check digit catches most typos before a payment goes anywhere, which matters when a mistaken payout is expensive to chase. BlindPay's SPEI payouts also accept a debit card number or phone number as the destination, with the bank's institution code.

What matters for a cross-border payer:

- **Speed:** SPEI payouts at BlindPay are instant. Incoming SPEI payins confirm in up to ten minutes.
- **Volume:** SPEI is how Mexico moves money. 94% of 2025's transfers were small, at or under roughly MXN 13,200, which is exactly the size of a payroll deposit or a remittance.

## Pix, SPEI, and the other Latin American rails at a glance

| Rail | Country | Recipient identifier | BlindPay payout | BlindPay payin arrival |
| --- | --- | --- | --- | --- |
| Pix | Brazil | Pix key (CPF, CNPJ, phone, email, random key) | Instant | Up to 5 minutes |
| PIX Safe | Brazil | Bank code, branch, account | Instant | Payout only |
| TED | Brazil | Bank code, branch, account | Same banking day before cut-off | Payout only |
| SPEI | Mexico | 18-digit CLABE, debit card, or phone | Instant | Up to 10 minutes |
| Transfers | Argentina | CBU | Instant | Up to 10 minutes |
| ACH COP | Colombia | Bank account | About 1 business day | PSE payins, up to 10 minutes |

Timings are BlindPay's published estimates ([cut-off times](/docs/kb/cut-off-times)). Compliance review can add time on any rail.

## Case example: a US importer pays a supplier in Brazil

A US import/export company owes a supplier in Curitiba $30,000. It keeps a USDC balance in its own wallet for supplier payments. Here's the payment, start to finish, with approximate timing:

1. **One-time setup (minutes).** The company adds the supplier as a recipient with their Pix key, a CNPJ. BlindPay runs KYB on the company once, which takes 3 hours to 1 business day because a person reviews it.
2. **Quote (seconds).** Finance requests a payout quote for $30,000 USDC to BRL. The quote shows the rate, the fee, and the exact reais amount the supplier will receive, locked for five minutes.
3. **Authorize (seconds).** The company's wallet signs an approval for exactly $30,000 in USDC on the network it holds funds on, such as Base or Polygon.
4. **Execute (seconds).** BlindPay pulls the authorized USDC on-chain and converts it to reais.
5. **Pix payout (seconds).** The reais go out over Pix. The supplier's bank credits the account and a `payout.complete` webhook fires.

From quote to deposit: usually a few minutes. If the company funds each payment by US bank transfer instead of holding USDC, add the time that deposit takes to arrive. The networks settle a domestic wire the same business day if it goes out before the 3:00 PM ET cut-off and ACH in one to three business days, and BlindPay allows up to five business days for either deposit to arrive.

If the supplier's bank rejects or returns the transfer, the payout ends `refunded` and the USDC goes back to the company's wallet. No funds sit stranded in a Brazilian account. The corridor's other routes, from exchanges to P2P, are compared in [USDC to BRL in 2026](/resources/more/usdc-to-brl-routes-2026).

## Why does this matter for remittance and payroll platforms?

Remittance and payroll money is time-sensitive and small-ticket, the exact profile local rails handle best.

- **Remittances.** Mexico received $61.79 billion in remittances in 2025 according to Banxico, down 4.6% from 2024 and the first annual drop in more than a decade. With volumes under pressure, a platform's margin depends on cost per transfer, and a correspondent chain eats that margin ([where the savings come from](/resources/more/stablecoin-cross-border-payments-savings)). SPEI settlement plus a stablecoin leg removes the hops.
- **Payroll.** Contractors expect to be paid on payday, not three business days later. Pix runs 24/7, so a payout isn't held for the next banking day the way a wire is. How platforms pay LATAM contractors is in [stablecoin payroll for LATAM contractors](/resources/more/stablecoin-payroll-latam-contractors).
- **No pre-funding.** A platform expanding into a new country doesn't need to open a local bank account and park capital there first. At BlindPay, each payout is funded when it's sent. Plans are published on the [pricing page](/pricing), there's no monthly minimum, and every quote shows its fee before you execute.

## What about markets beyond Latin America?

The same pattern, stablecoin in the middle and a local rail at the end, covers BlindPay's other corridors. In the US, payouts go over ACH, wire, and RTP. In Europe, over SEPA. Everywhere else in 100+ countries, over SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on every transfer. For a platform in several regions, that's one API and one set of webhooks rather than a new provider per country. The rail-by-rail timings are in [stablecoin payout settlement times](/resources/more/stablecoin-payout-settlement-times).

## What to do next

Pick your highest-volume Latin American corridor and trace a single payment through it: where the value converts, which rail it lands on, and how long the recipient waits. Then run the same payment on a free [BlindPay](/global-payments) development instance with the [payout quickstart](/docs/quickstart-payout), where Pix and SPEI payouts complete automatically so you can build the whole flow before going live.

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

---

Source: https://blindpay.com/resources/more/are-stablecoin-cards-safe

---
title: "Are stablecoin cards safe? Peg, issuer, custody, and smart contract risks"
seoTitle: "Are stablecoin cards safe? The 5 risks to check"
description: "The five risks of a stablecoin card: peg, program failure, custody, smart contracts, and fraud, with the August 2026 incident and a safety checklist."
date: "2026-09-27"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Are stablecoin cards safe to use?"
    a: "They can be, if you check five risks: the stablecoin's peg and reserves, the program's financial health, who holds the funds, the smart contracts behind the card, and account fraud. Use a licensed program, keep only spending money on the card, turn on freeze controls and limits, and remember balances are not bank deposits."
  - q: "Can I lose money on a stablecoin card?"
    a: "Yes. Losses can come from a stablecoin losing its peg, a program or custodian failing, a smart contract exploit, or fraud on your account. In August 2026, unauthorized withdrawals hit card balances held in a Rain-managed Solana contract; affected programs such as Tria and Avici said users would be refunded in full."
  - q: "Are crypto card balances insured like a bank account?"
    a: "No, not in the way bank deposits are. The FDIC states that deposit insurance does not apply to crypto assets and does not protect against the failure of non-bank entities such as crypto custodians or exchanges. Read your program's terms to see exactly where your balance is held."
  - q: "Is a self-custodial stablecoin card safer than a custodial one?"
    a: "It removes some risks and adds others. A self-custodial card keeps funds in a wallet you control, so a program failure does not freeze them, and self-custodial wallets were reported unaffected in the August 2026 Rain contract incident. But you carry key management and smart account risk yourself."
  - q: "How do I spot a crypto card scam?"
    a: "Be wary of cards that promise guaranteed yield, ask for an upfront fee before you get the card, skip identity checks entirely, or cannot name the licensed issuer behind the card. A real program names its issuing bank or e-money institution and the card network, and identifies cardholders."
---

Stablecoin cards are as safe as the weakest of five layers: the stablecoin's peg, the program's finances, the custody model, the smart contracts, and your own account security. None of these balances is a bank deposit. Most risk can be reduced with a licensed program, a small card balance, and spending controls turned on.

The question is not whether stablecoin cards are safe in general. It is which risks a specific card exposes you to and how much money you keep on it. This guide walks through each risk with a real example and ends with a checklist. For how the cards work, see [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card).

**Key takeaways**

- A stablecoin card carries five distinct risks: peg and reserves, program or issuer failure, custody, smart contracts and infrastructure, and account fraud.
- In August 2026, unauthorized withdrawals hit card balances in a Rain-managed Solana contract. Tria reported 636 affected users and $431,945, with every affected user being refunded in full.
- Self-custodial wallets were reported unaffected by that incident, because they sat outside the affected contract.
- The [FDIC states](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html) that deposit insurance does not apply to crypto assets.
- Keep only spending money on a card, and turn on freeze controls, limits, and 3-D Secure.

## What are the risks of a stablecoin card?

There are five. Each sits in a different layer of the card, and each is reduced in a different way.

| Risk | What can go wrong | Who carries it | How to reduce it |
| --- | --- | --- | --- |
| Peg and reserves | The stablecoin trades below one dollar or reserves fall short | Holder of the stablecoin | Hold well-reported stablecoins; keep balances small |
| Program or issuer failure | The program manager, custodian, or partner stops operating | Cardholders with funds held by the program | Use licensed programs that segregate customer funds |
| Custody | Funds held by a third party are frozen, lost, or mismanaged | Cardholders in custodial programs | Know who holds your funds; consider self-custodial options |
| Smart contract and infrastructure | A bug or exploit in shared contracts drains balances | Everyone using the affected contracts | Prefer programs with audits, monitoring, and a reimbursement record |
| Account fraud | Stolen card details, phishing, or account takeover | Cardholder, then program under its policies | 3-D Secure, freeze controls, limits, strong login security |

**Custodial:** a third party holds the stablecoins on your behalf, and the card spends from its ledger.

**Self-custodial:** you hold the keys to the wallet, and the card spends from it under rules set in a smart contract.

## Can a stablecoin lose its peg while it sits on a card?

Yes. A stablecoin is only as stable as its reserves and the market's confidence in redemption. If it trades below one dollar, the card converts fewer dollars per token.

How much this matters depends on the funding model. A just-in-time card keeps the balance in stablecoins until purchase, so a depeg hits the whole balance. A prefunded card has already converted the money into fiat at load time, so only unloaded stablecoins are exposed. [Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards) explains the two models.

Dollar stablecoins carry most card volume today. The [best stablecoin for card spending](/resources/more/best-stablecoin-for-card-spending) compares USDC, USDT, and euro stablecoins on reserves and regulation.

## What happens if the card program or issuer fails?

It depends on how funds are held. In a custodial program, your balance is a claim on the program or its custodian, and getting it back depends on how well customer funds were segregated.

That is why licensing and segregation are on every safety checklist. A licensed issuer or e-money institution has to follow rules on how customer money is held. A program that cannot name its issuing bank or licensed partner gives you nothing to check.

Deposit insurance does not fill the gap. The FDIC's [fact sheet on crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html) (July 2022) says deposit insurance does not apply to crypto assets and does not protect against the default, insolvency, or bankruptcy of non-bank entities, including crypto custodians and exchanges.

## What did the August 2026 card contract incident show?

It showed that shared infrastructure creates shared risk. A single contract version used by several programs became a single point of failure.

On August 28, 2026, unauthorized withdrawals hit card balances held in a Rain-managed Solana contract. Rain described it as [a vulnerability](https://x.com/raincards/status/2093435073081053518) "impacting a small number of programs using an outdated version of our Solana contracts." Rain upgraded the contracts the same day and confirmed repayment the next day.

Two affected programs published numbers:

| Program | Affected users | Amount | Outcome |
| --- | --- | --- | --- |
| Tria | 636 | $431,945 | Every affected user being refunded in full (per [SpendNode](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/), August 29, 2026) |
| Avici | 1,685 | $500,859 | Refunds processed in full with an extra 10% cashback (per [SpendNode](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/), August 30, 2026) |

Self-custodial wallets were reported unaffected because they sat outside the affected contract. Rain had not published a full post-mortem at the time of writing, and not every program built on Rain was exposed.

Self-custodial cards have their own contract risk. Gnosis Pay reported an exploit of its Delay and Roles modules on June 1, 2026, and its [post-mortem](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit) says attackers extracted $1.5 million and that Gnosis absorbed the losses and restored all funds to users. [Custodial vs self-custodial stablecoin cards](/resources/more/custodial-vs-self-custodial-stablecoin-cards) compares how each model fails.

## How does account fraud happen on a stablecoin card?

Mostly the same way it happens on any card: stolen card numbers, phishing, and account takeover. The card rails are the same, so the same protections apply.

What changes is the recovery path. Card purchases go through network dispute rules, but a stablecoin transfer out of your wallet is final once confirmed. If an attacker gets into the account that funds the card, they may move stablecoins out directly instead of using the card. [Are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible) explains why onchain transfers cannot be pulled back.

Watch for these scam signals:

- Guaranteed yield or rewards that sound too good.
- An upfront fee before the card is issued.
- No identity checks at all. Card rails require cardholder identification even when the wallet is permissionless, as [neobankbeat notes](https://www.neobankbeat.com/blog/stablecoin-cards-explained).
- No named issuing bank, e-money institution, or card network.

## What should you check before trusting a stablecoin card?

Run through ten checks. A program that fails several of them is not worth a large balance.

1. **License.** The issuer or program names a licensed bank or e-money institution, and you can find it on the regulator's public register.
2. **Segregation.** The terms say customer funds are segregated from the company's own money.
3. **Custody model.** You know whether the program or you hold the stablecoins.
4. **Contract security.** For onchain programs, audits are public and the program has a record of handling incidents.
5. **Freeze controls.** You can freeze and unfreeze the card instantly in the app.
6. **3-D Secure.** Online purchases need an extra confirmation step.
7. **Limits.** You can set daily and per-transaction limits.
8. **Login security.** The account supports strong two-factor authentication.
9. **Small balance.** You keep only near-term spending money on the card.
10. **Exit path.** You know how to move money out to a bank account if the card stops working.

## Where does BlindPay fit?

The tenth check, an exit path, is where BlindPay sits. A card is a spending interface. Getting money out to a bank account needs a payout rail.

BlindPay converts USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with KYC, KYB, and sanctions screening built into the API flow. For payouts from wallets the customer controls, BlindPay works as a non-custodial payment processor: the customer authorizes the exact amount and BlindPay executes that single transaction, so the stablecoins stay in the customer's wallet until a payout is authorized. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet or the sending wallet; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review. Managed wallets, offered in beta, are custodial when a customer chooses that path.

For card programs, that means the payout leg does not add another pooled balance to the risk list. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers the model in more detail.

## How to use a stablecoin card more safely today

Pick a licensed program, keep a small balance, and turn on every control the app offers. Then make sure you can reach a bank account without the card.

If you run a card program and want a payout path that keeps funds under your customers' control, test it on a free BlindPay development instance with the [payout quickstart](/docs/quickstart-payout). For the layers behind every card, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing). For the business-side view of the same risks, see [are stablecoin payments safe](/resources/more/are-stablecoin-payments-safe).

## Sources

- FDIC, [What the public needs to know about FDIC deposit insurance and crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html), July 28, 2022
- Rain, [statement on the Solana contract vulnerability](https://x.com/raincards/status/2093435073081053518), August 2026
- SpendNode, [Tria details Rain card vulnerability: 636 users, $431,945 refunded](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/), August 29, 2026
- SpendNode, [Avici completes refunds with 10% cashback](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/), August 30, 2026
- Gnosis Pay, [Post-mortem: Gnosis Pay vulnerability exploit](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit)
- neobankbeat, [Stablecoin cards explained](https://www.neobankbeat.com/blog/stablecoin-cards-explained), November 18, 2025

---

Source: https://blindpay.com/resources/more/do-you-need-a-crypto-wallet-for-stablecoin-payments

---
title: "Do you need a crypto wallet to make stablecoin payments?"
seoTitle: "Do you need a crypto wallet for stablecoin payments?"
description: "Who needs a wallet in a stablecoin payment, who doesn't, and how payment providers hide keys, networks, gas, and confirmations from payers and recipients."
date: "2026-09-27"
updated: "2026-09-27"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Can I send a stablecoin payment without a crypto wallet?"
    a: "Yes, if a provider holds the stablecoins for you. A business can fund a payment with a bank transfer, let the provider convert it to USDC or USDT, and pay a recipient who receives local currency in a bank account. Somebody still holds a wallet and signs transactions. In this flow that is the provider, which shifts custody and counterparty risk onto the provider."
  - q: "Does the recipient of a stablecoin payout need a wallet?"
    a: "Not when the payout ends in local currency. The provider converts the stablecoins and pays the recipient over a domestic rail such as Pix in Brazil or SPEI in Mexico, so the recipient only gives bank details. A recipient needs a wallet only when they want to receive and keep the stablecoins themselves instead of the converted local currency."
  - q: "What is the difference between a managed wallet and a self-custody wallet?"
    a: "In a managed wallet, the provider generates the address and holds the private keys, so the provider can move funds when you instruct it through an API. In a self-custody wallet, only the owner holds the keys, so every movement needs the owner's signature. Managed wallets are easier to integrate. Self-custody wallets keep control, and the operational burden, with the owner."
  - q: "Who pays gas if I never touch a wallet?"
    a: "Whoever submits the onchain transaction pays the network fee in that chain's gas token, so in a fully abstracted flow it is usually the provider. Providers recover that cost through a flat fee, a percentage fee, or a spread. When you fund a payout from your own wallet, you still pay gas on the transaction you sign, such as a token approval."
  - q: "Is it safer to let a provider hold the wallet?"
    a: "It changes the risk more than it lowers it. A provider removes the chance of losing a key or sending to the wrong network from your own hands, but you now depend on the provider's security, solvency, and controls while it holds the funds. Ask who holds keys at each step, how long funds sit there, and what happens to them if the provider fails."
  - q: "Do I need to choose a blockchain to make a stablecoin payment?"
    a: "Only if you hold or send the stablecoins yourself. When you fund from a bank account, the provider picks the network internally. When you send from your own wallet, the network and token must match what the provider supports for that route, because sending USDC on a chain the receiving address does not watch can strand the funds."
---

You don't need your own crypto wallet to make or receive a stablecoin payment. A payer can fund with a bank transfer and a recipient can get local currency in a bank account, while the payment provider holds the wallets, signs the transactions, picks the network, and pays gas. Someone always holds a wallet. The question is who.

That shift is what made stablecoins usable for finance teams that never wanted to touch a seed phrase. It also moves custody, network choice, and failure handling onto the provider, so it's worth knowing exactly what you hand over.

**Key takeaways**

- Every stablecoin transfer is signed by a private key. If you never hold one, a provider does.
- Payers funding from a bank and recipients paid in local currency don't need wallets.
- You need your own wallet only when you hold stablecoins yourself and want to keep the keys.
- Providers abstract five things: addresses, keys, network choice, gas, and confirmations.
- Hiding the wallet trades key-management risk for provider risk. Ask who holds funds at each step.

For the full map of who does what in a stablecoin payment, start with [what stablecoin infrastructure is](/resources/more/what-is-stablecoin-infrastructure). This page zooms in on one layer: wallets and custody.

## What does a wallet actually do in a stablecoin payment?

A wallet holds the private key that signs transfers and exposes the address that receives them. The stablecoins themselves never sit "in" the wallet; they are balances on a blockchain ledger, and the key is what lets you move them.

Ethereum's own [documentation on accounts](https://ethereum.org/en/developers/docs/accounts/) puts it plainly: your private key "grants you custody over the funds," and "you never really hold cryptocurrency, you hold private keys." Whoever holds the key controls the balance. That's why the custody question and the wallet question are the same question.

A wallet does three jobs in a payment:

1. **Receives.** Its address is where stablecoins land.
2. **Authorizes.** Its key signs a transfer, or signs a permission that lets someone else pull tokens.
3. **Pays gas.** On most chains, the account submitting a transaction pays the network fee in that chain's native token.

Take those three jobs away from the payer and the recipient, and they don't need a wallet. Somebody else does the jobs.

## Who needs a wallet in each stablecoin payment flow?

It depends on where the money starts and where it ends. If either end is a bank account, that party usually doesn't need a wallet at all.

| Participant | Starts or ends in | Needs own wallet? | Why |
| --- | --- | --- | --- |
| Business sending from a stablecoin treasury | USDC or USDT it already holds | Yes, or a managed wallet | It must authorize the stablecoins leaving its balance |
| Business funding from a bank | USD, BRL, MXN, or another fiat | No | The provider converts the deposit and holds the stablecoins in transit |
| Customer receiving into a virtual account | Bank transfer in, stablecoins out | Needs a destination wallet, managed or own | The converted stablecoins have to land at an address |
| Recipient paid in local currency | Bank account | No | The provider converts and pays out over a local rail |
| Recipient paid in stablecoins | Their own address | Yes | They are choosing to hold the token |
| Payment provider | Both ends | Yes, many | It runs the wallets everyone else skipped |

The pattern: wallets follow whoever holds stablecoins, even for a few minutes. Bank in, bank out, and the only wallets in the flow are the provider's.

If you want the onchain mechanics of the middle leg (signing, broadcast, confirmations), [what happens onchain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) walks through them. The full step-by-step from funding to reconciliation is in [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works).

## How do payment providers hide the wallet from users?

Providers hide the wallet by doing its three jobs on your behalf, plus two technical chores that come with them. Each one removes a decision from your users and adds a responsibility to the provider.

1. **Address generation.** The provider creates deposit addresses per customer or per account, so nobody copies a 42-character string from a browser extension.
2. **Key custody.** The provider holds the private keys, usually in hardware security modules or multi-party computation setups, and signs transfers when your API call tells it to.
3. **Network choice.** The provider decides which chain a given payment uses, or limits you to the chains it supports for that route. You send "pay 1,000 USD to this Pix key," not "send USDC on Polygon to 0x..."
4. **Gas.** The provider holds the native token each chain needs and pays the network fee, then recovers it through its own pricing.
5. **Confirmations.** The provider watches the chain, decides when a transfer is final enough to act on, and turns that into a status your system understands, like `processing` or `completed`.

None of this is magic. It's ordinary operations work that someone has to do. The design question is whether you want to do it yourself or pay a provider to do it.

## What are the ways to hold stablecoins without running your own wallet?

There are three common patterns, and they differ on one thing: who holds the keys.

| Pattern | Who holds the keys | Who signs transfers | Typical use |
| --- | --- | --- | --- |
| Managed (custodial) wallet | The provider | The provider, on your API instruction | Products that want balances without key management |
| Self-custody wallet registered with a provider | You or your customer | You, through an approval or signed transaction | Teams that already hold stablecoins and want to keep control |
| Deposit address that auto-converts | The provider | The provider, automatically on receipt | Receiving stablecoins and paying out fiat with no balance kept |

A fourth option is to hold nothing. Fund each payment from a bank transfer, let it convert and pay out in one pass, and stablecoins only exist for the minutes the payment is in flight.

The trade-offs between custodial, self-custody, and MPC setups get their own page: [custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets). The short version is that convenience and control move in opposite directions.

## What changes for the payer who never touches a wallet?

The payer's job shrinks to sending a bank transfer and reading a quote. Everything onchain happens inside the provider.

What goes away:

- No seed phrase to store, rotate, or lose.
- No native token balance to keep topped up for gas.
- No choice of chain, and no risk of sending on the wrong one.

What doesn't go away:

- **KYC or KYB.** The payer still gets verified before money moves.
- **Quotes and cut-off times.** The fiat leg still runs on bank rails with their own hours.
- **Counterparty risk.** While stablecoins sit with the provider, your exposure is to the provider.

One more thing changes, and it's easy to miss. If you hold your own wallet, an onchain mistake is yours to fix. If the provider holds it, recovery depends on the provider's process. Read their failure and refund rules before you sign.

## What changes for the recipient who never touches a wallet?

The recipient gives bank details and receives local currency. They may never know a stablecoin was involved.

For a supplier in Brazil, that means a Pix key or bank details. For a contractor in Mexico, a CLABE. The provider converts the stablecoins and pushes the fiat over the domestic rail. The recipient's experience is a normal bank credit, with a reference they can match to an invoice.

Two things still reach the recipient:

1. **Verification.** Depending on the corridor and amount, the provider may need recipient details for screening.
2. **Rail behavior.** Pix and SPEI run around the clock. ACH and SWIFT have cut-offs. The recipient feels the rail, not the chain.

## How do gas fees work when you don't hold a wallet?

Gas is paid by whoever submits the onchain transaction, in that chain's native token. On Ethereum, [the fee is paid in ether](https://ethereum.org/en/developers/docs/gas/) and is charged "regardless of whether a transaction succeeds or fails." On Solana, [each signature carries a base fee](https://solana.com/docs/core/fees) paid in SOL. In a fully abstracted flow, the provider submits the transaction, pays the gas, and builds the cost into its own fees. If you fund from your own wallet, you still pay gas on whatever you sign yourself.

## When does hiding the wallet not fit?

Hiding the wallet is the right default for most finance teams. It's the wrong one in a few cases.

- **You already run a stablecoin treasury.** If your balances live in your own wallets, moving them into a provider's custody adds a hop and a counterparty. Fund payouts from your own wallet instead.
- **Your policy forbids third-party custody.** Some treasuries can't let a vendor hold keys, even briefly.
- **You want to use the stablecoins onchain.** DeFi, onchain settlement with partners, or holding for yield all need an address you control.
- **You need a chain the provider doesn't support.** Abstraction only covers the networks the provider runs.
- **You need instant onchain recovery.** No provider can reverse a confirmed transfer to the wrong address. Abstraction lowers the odds of that mistake; it doesn't undo it.

## How does BlindPay handle wallets?

BlindPay supports both models, and you can mix them across customers.

A [managed wallet](/docs/store) (`bl_...`) is BlindPay-custodied: BlindPay generates the address and holds the keys, and your customer's balance moves through your API calls with no client-side signing. Managed wallets are in beta, with confirmed support on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, and Solana.

A [blockchain wallet](/docs/blockchain-wallets) (`bw_...`) is an address your customer already controls. It's non-custodial by design: BlindPay cannot access, freeze, or recover funds in it. To fund a payout from one, the sender authorizes the quoted amount. On EVM chains that's an ERC-20 `approve`, the standard [EIP-20](https://eips.ethereum.org/EIPS/eip-20) function that lets a spender withdraw up to a set amount. Solana uses a token delegation, and Stellar a signed payment transaction.

For flows where nobody wants a balance at all:

- **Virtual accounts** give your customer US bank details. Deposits by ACH, wire, or SWIFT convert to USDC or USDT and settle to the linked wallet.
- **[Offramp wallets](/docs/offramp-wallets)** do the reverse. BlindPay manages a deposit address tied to a bank account, and every USDC or USDT deposit converts and pays out automatically.

Recipients get local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO). BlindPay settles across nine networks (Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron), and when you fund from a bank or a managed wallet, the payer never picks one.

## How do you decide whether your users need a wallet?

Answer four questions in order. The first "yes" usually decides it.

1. **Do your users already hold stablecoins they want to keep controlling?** Register their own wallets.
2. **Do your users need a stablecoin balance inside your product?** Use managed wallets, and confirm the provider's chain coverage.
3. **Do your users only need to receive stablecoins and get paid in fiat?** Use auto-converting deposit addresses.
4. **Do your users only move fiat?** Fund from bank transfers and pay out to bank accounts. Nobody on your side needs a wallet.

Write down who holds keys at each step of the flow you pick. That one page answers most of the custody questions your bank partner, auditor, or compliance team will ask.

Ready to try both models? Create a development instance and register a managed wallet and an external wallet side by side using the [store guide](/docs/store).

---

Source: https://blindpay.com/resources/more/how-to-choose-a-virtual-account-provider

---
title: "How to choose a virtual account provider: a 12-point checklist for developers and finance teams"
seoTitle: "How to choose a virtual account provider: 12-point checklist"
description: "Twelve criteria for evaluating a virtual account API, from rails and naming to custody, webhooks, and pricing, plus red flags and a scorecard to copy."
date: "2026-09-27"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How long does it take to integrate a virtual account API?"
    a: "The code is usually the short part: create a customer, link a settlement destination, create the account, and handle a few webhooks. The long part is production approval. Your customers need KYC or KYB, and named accounts go through compliance and bank review. At BlindPay that review has SLAs of 24 hours or 3 to 5 business days depending on the account type."
  - q: "Do I need my own bank to offer virtual accounts?"
    a: "No. A virtual account provider brings the banking relationships and issues accounts on top of them, so your platform integrates one API instead of negotiating with banks. What you do need is a compliance program the provider can rely on: verified customers, a clear account purpose, and documents like source of funds when the bank asks for them."
  - q: "Can I switch virtual account providers later?"
    a: "Yes, but plan for it. Account numbers belong to the provider's banking partner, so switching means issuing new accounts and asking every payer to update their details. Keep your own customer and ledger ids separate from provider ids, and store provider account ids in their own table, so a second provider is a new mapping rather than a rewrite."
  - q: "What compliance documents will I need for virtual accounts?"
    a: "Expect standard KYC or KYB for each customer, plus details the bank reviews for the account itself: business type and industry, purpose of the account, expected volume, and source of funds and source of wealth. Supporting documents are usually recent bank statements, financial statements, tax returns, or contracts that show where the money comes from."
  - q: "Should one provider handle virtual accounts, payouts, and custody?"
    a: "It depends on your stack. One provider for collection and payout keeps reconciliation in one place and avoids moving money between vendors. Some teams still pair a virtual account and payout provider with a separate provider for wallet custody or stablecoin issuance. Map each money movement to a provider before you sign, and check how funds move between them."
---

When choosing a virtual account provider, check five things first: which rails and currencies the accounts can receive, whether accounts are named in your customer's name or pooled, how settlement works (fiat, stablecoin, and which chains), who holds the funds, and how long compliance and bank approval take. Then score the rest: webhooks, docs, sandbox, pricing, and support.

The demo always works. The checklist is for what happens after.

## Key takeaways

- The five criteria that rule a provider in or out are rails, naming, settlement, custody, and approval time.
- Get every answer in writing, per account type, not per marketing page.
- Banking partner redundancy and event design are the two criteria teams forget and regret.
- Score providers with weights that match your business. A payroll platform and a remittance app shouldn't weight the same things.

## What should you look for in a virtual account provider?

Look for a provider whose accounts can receive the rails your payers use, in a name your payers and compliance team accept, settling where your treasury needs the money, with an approval process you can build onboarding around. The 12 criteria below cover both the developer side and the finance side.

| # | Criterion | Why it matters | Question to ask |
| --- | --- | --- | --- |
| 1 | Currencies and rails supported | An account that can't receive your payers' rail is useless to them | Which rails can deposit into the account (ACH, wire, SWIFT, SEPA, local rails), per account type? |
| 2 | Account naming | Named accounts show your customer as beneficiary; pooled accounts show the provider | Whose name does the payer see, and do payouts go out under the customer's name? |
| 3 | Issuance speed and limits | Your onboarding flow waits on it | What's the SLA per account type, what restarts the clock, and how many accounts can one customer hold? |
| 4 | Settlement options | Decides whether you receive fiat, stablecoins, or both, and on which chains | Can deposits settle as fiat, USDC, or USDT? On which networks? Can I change the destination later? |
| 5 | Custody model | Decides who holds funds after settlement and who carries the risk | Do funds settle to a wallet or account my customer controls, or one you hold? |
| 6 | Compliance and KYC/KYB coverage | You can't issue an account to a customer the provider can't verify | Do KYC, KYB, and sanctions screening run inside your API, and which countries can you onboard? |
| 7 | Banking partner redundancy | One bank relationship is one point of failure | How many banking partners issue your accounts, and what happens to my accounts if one exits? |
| 8 | Webhooks and event design | Your ledger runs on these events | Which events fire per account and per deposit? Are they signed, retried, and replayable? |
| 9 | API docs and SDKs | Integration speed, and how many surprises you hit | Is there a public OpenAPI spec? Which languages have official SDKs? |
| 10 | Sandbox and CLI | You need to test deposits before any real bank is involved | Can I create accounts and simulate deposits on a free sandbox? Is there a CLI? |
| 11 | Pricing transparency | Hidden per-deposit fees break unit economics | What's the monthly cost per account, the fee per deposit, and where does each show up? |
| 12 | Support and SLAs | Stuck deposits become your support tickets | Who do I contact when a deposit is on hold, and what are your response times? |

## Why do banking partner redundancy and event design matter?

These two get skipped in most evaluations, and they're the ones that hurt later.

**Banking partner redundancy.** Virtual accounts sit on a bank's infrastructure. If a provider has one banking partner and that bank changes its risk appetite, every account can be affected at once. Ask how many banks issue the provider's accounts, whether customers are eligible on more than one, and what the migration plan is if a partner exits. A provider with several partners can also route customers by eligibility, for example US versus non-US businesses.

**Event design.** Your ledger is only as good as the events feeding it. You want a creation event and a completion event for every account, and a separate record for every deposit, with its own id, amounts, and fees. You want signed payloads, retries, and a replay button. The patterns for consuming them are in [stablecoin API webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation), and what the matching looks like in practice is in [how virtual accounts automate reconciliation](/resources/more/virtual-account-reconciliation).

## What are the red flags?

Walk away, or at least slow down, if you hear any of these:

- **"Global coverage"** with no list of rails per account type.
- **"Instant accounts"** for named accounts, with no mention of review. Either they're pooled, or the review happens later and can claw back what you launched.
- **No answer on whose name the payer sees.**
- **Sandbox behind a sales call.** You should be able to create a test account today.
- **Fees only on the invoice.** If a deposit record doesn't show its own fee, you can't reconcile.
- **Vague on custody.** "Your funds are safe" is not an answer to "in whose name, at which institution?"
- **No position on third-party funds.** A provider that doesn't ask whose money flows through the accounts is a provider whose accounts can get frozen.

## How do you score providers?

Copy this scorecard. Give each criterion a weight from 1 (nice to have) to 5 (dealbreaker) based on your business, score each provider from 1 (poor) to 5 (excellent), and multiply.

| Criterion | Weight (1 to 5) | Provider A score (1 to 5) | Provider A weighted | Provider B score (1 to 5) | Provider B weighted |
| --- | --- | --- | --- | --- | --- |
| Currencies and rails | | | | | |
| Account naming | | | | | |
| Issuance speed and limits | | | | | |
| Settlement options | | | | | |
| Custody model | | | | | |
| Compliance and KYC/KYB | | | | | |
| Banking partner redundancy | | | | | |
| Webhooks and event design | | | | | |
| API docs and SDKs | | | | | |
| Sandbox and CLI | | | | | |
| Pricing transparency | | | | | |
| Support and SLAs | | | | | |
| **Total** | | | | | |

**Illustrative weighting.** A remittance app with foreign senders might weight rails 5 (it needs SWIFT), naming 4, settlement 5 (it pays out in stablecoins), and sandbox 3. A US SaaS company collecting ACH from domestic customers might weight rails 3, pricing 5, and event design 5. Same checklist, different winner.

If you're also evaluating the stablecoin API behind the accounts, [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) covers pre-funding, payout rails, and settlement speed.

## How does BlindPay map to the checklist?

Here's how BlindPay answers each criterion, from the public docs. It's one data point for your scorecard, not a verdict.

| # | Criterion | BlindPay |
| --- | --- | --- |
| 1 | Rails | US virtual accounts receive ACH, wire, and SWIFT, depending on account type. Payouts go out over Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), and other local rails to 100+ countries, with UETR tracking and MT103 confirmations on SWIFT. No IBANs |
| 2 | Naming | Named: each account is issued in one customer's name, and payouts from it go out under that name |
| 3 | Issuance | Compliance review, then bank review. SLA of 24 hours or 3 to 5 business days by account type. A customer can hold several accounts |
| 4 | Settlement | Deposits convert to USDC or USDT and settle to one wallet per account. Token and wallet can be changed later |
| 5 | Custody | Settles to an external blockchain wallet the customer controls |
| 6 | Compliance | KYC, KYB, and sanctions screening in the API. Accounts also need purpose, source of funds, and source of wealth ([requirements](/docs/kb/virtual-accounts)) |
| 7 | Banking partners | Several banking partners, with eligibility based on the customer's country and type |
| 8 | Webhooks | `virtualAccount.new`, `virtualAccount.complete`, and `payin.new`, `payin.update`, `payin.complete` per deposit. Signed, retried, replayable |
| 9 | Docs and SDKs | Public OpenAPI 3.1 spec. Official SDKs for Node.js, Python, Go, PHP, and Swift ([SDKs](/docs/sdks)) |
| 10 | Sandbox and CLI | Free development instance where accounts are approved instantly. A [CLI](/blog/cli) (`blindpay virtual_accounts create`) and an MCP server for AI agents |
| 11 | Pricing | $1.50 per month per account. Each deposit's fee is a field on its payin; plans are on [pricing](/pricing) |
| 12 | Support | Issuance SLAs published per account type in the [virtual accounts docs](/docs/virtual-accounts) |

Two things BlindPay doesn't do, so you can plan around them: it doesn't issue virtual IBANs, and it doesn't allow accounts that collect for your customers' own unverified clients ([nested payments](/docs/kb/nested-payments)). Some teams also pair BlindPay with another provider for wallet custody or stablecoin issuance. That's a normal setup.

For the concepts behind each row, see [what is a virtual account](/resources/more/what-is-a-virtual-account), [virtual account vs virtual IBAN](/resources/more/virtual-account-vs-virtual-iban), and [virtual accounts for cross-border payments](/resources/more/virtual-accounts-cross-border-payments).

## What to do next

Send the 12 questions from the checklist table to every provider on your shortlist, and ask for answers per account type. While you wait, create a test account on a free BlindPay development instance with [create a virtual account](/docs/virtual-accounts-create) and score criteria 8 through 10 yourself. It takes an afternoon.

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

---

Source: https://blindpay.com/resources/more/stablecoin-payout-cut-off-times-weekends-holidays

---
title: "Do stablecoin payouts work on weekends and holidays? Cut-offs and bank calendars by rail"
seoTitle: "Stablecoin payouts on weekends and holidays, by rail"
description: "The stablecoin leg runs 24/7, and so do Pix, SPEI, and RTP. ACH, wire, SEPA, TED, and SWIFT wait for a business day. Cut-offs and calendars by rail."
date: "2026-09-27"
updated: "2026-09-27"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Do stablecoin payouts work on weekends?"
    a: "Partly. The onchain transfer settles any day, and Pix in Brazil, SPEI in Mexico, and RTP in the US also run around the clock, so payouts on those rails can land on a Saturday night. ACH, domestic wire, SEPA, TED, and SWIFT only settle on business days. A weekend payout on one of those rails waits for the next business day of that rail's calendar."
  - q: "Which holiday calendar applies to a SEPA payout?"
    a: "Euro settlement follows the TARGET calendar. The European Central Bank closes TARGET on weekends plus six fixed days: New Year's Day, Good Friday, Easter Monday, 1 May, Christmas Day, and 26 December. A SEPA payout requested on one of those days settles on the next TARGET business day. Your provider's own processing days can add US holidays on top, so ask."
  - q: "What happens to an ACH payout sent the Friday before a US federal holiday?"
    a: "If it is submitted before the 9:00 PM ET ACH cut-off, it enters Friday's processing, but the holiday Monday does not count as a business day. With an estimate of about two business days, a payout sent on Friday, October 9, 2026, ahead of Columbus Day lands around Wednesday, October 14, plus any compliance review time."
  - q: "Can I quote a payout on Friday and execute it on Monday?"
    a: "No. A payout quote is short-lived, often five minutes or less, and each quote backs only one payout. Request the quote when you are ready to send, read expires_at from the response, and execute right away. If the rail is closed, the payout waits for the rail, not the quote."
  - q: "Do Brazilian bank holidays affect Pix payouts?"
    a: "No. Pix runs 24 hours a day, every day of the year, including Carnival and national holidays, so a Pix payout settles in minutes whatever the date. TED transfers and boleto payments do follow the Brazilian banking calendar. A TED or boleto submitted on a holiday, a weekend, or after the cut-off moves to the next banking day."
  - q: "Why did my wire payout arrive a day later than the estimate?"
    a: "The most common reason is the cut-off. A US domestic wire submitted after 3:00 PM ET is processed the next business day, and a SWIFT payout submitted after 10:30 AM ET starts the next business day. Federal Reserve holidays such as Columbus Day and Veterans Day also skip a day. A compliance review step can add time on top."
---

Partly. The stablecoin leg settles at any hour of any day, and so do Pix in Brazil, SPEI in Mexico, and RTP in the US. ACH, domestic wire, SEPA, TED, and SWIFT settle only on business days. A payout sent on one of those rails after the daily cut-off, on a weekend, or on a bank holiday lands on the next business day of that rail's calendar.

**Key takeaways**

- A stablecoin payout is only as weekend-proof as its last mile. The blockchain never closes. Most bank rails do.
- Three calendars matter most: Federal Reserve holidays for USD, TARGET closing days for EUR, and the Brazilian banking calendar for TED and boleto.
- Cut-offs move a payout to the next business day before any holiday does. In Eastern Time: ACH 9:00 PM, domestic wire 3:00 PM, SWIFT 10:30 AM.
- Columbus Day and Veterans Day close the Federal Reserve even though many businesses work. They are the classic payroll surprise.
- Quotes expire in minutes. Quote at send time, never days ahead of a holiday.

Our [settlement times guide](/resources/more/stablecoin-payout-settlement-times) gives the ETA for each rail. This page answers the question finance teams ask on a Thursday afternoon: which calendar does each rail follow, and what happens when we miss the window?

## Which payout rails run 24/7, and which follow business days?

Pix, SPEI, Transfers 3.0, and RTP run around the clock; ACH, wire, SEPA, TED, ACH Colombia, boleto, and SWIFT follow a banking calendar.

| Rail | Country | Runs 24/7 | Calendar that governs it | Daily cut-off | Estimated arrival |
| --- | --- | --- | --- | --- | --- |
| Pix | Brazil | Yes | None | None | Instant |
| SPEI | Mexico | Yes | None | None | Instant |
| Transfers 3.0 | Argentina | Yes | None | None | Instant |
| RTP | United States | Yes | None (USD review step first) | None | Instant |
| ACH | United States | No | Federal Reserve holidays | 9:00 PM ET | ~2 business days |
| Domestic wire | United States | No | Federal Reserve holidays | 3:00 PM ET | ~1 business day |
| SEPA | Euro area | No | TARGET closing days | Not published | ~1 business day |
| TED | Brazil | No | Brazilian banking days | End of Brazilian banking day | ~1 business day |
| Boleto (bill payment) | Brazil | No | Brazilian banking days, 06:30 to 18:30 BRT | 18:30 BRT, or 14:30 BRT above R$250,000 | Same banking day if on time |
| ACH Colombia | Colombia | No | Colombian banking days | Not published | ~1 business day |
| SWIFT (POBO/COBO) | Global | No | Banking days at both ends and every correspondent | 10:30 AM ET | ~5 business days |

Cut-offs and arrival estimates come from BlindPay's [cut-off times reference](https://blindpay.com/docs/kb/cut-off-times) and [bank account docs](https://blindpay.com/docs/bank-accounts). They describe the rails, not a promise for any single payment, and high volume can stretch any of them.

## Why does the stablecoin leg never wait when the bank leg does?

The stablecoin leg never waits because blockchains have no operating day; bank rails settle through systems that close.

A blockchain produces blocks continuously. USDC sent at 2:00 AM on Christmas Day confirms like USDC sent on a Tuesday morning. There is no batch window and no holiday list.

Bank rails are different. ACH and Fedwire run through the Federal Reserve, which publishes a list of [holidays it observes](https://www.federalreserve.gov/aboutthefed/k8.htm). Euro payments settle in TARGET, which the [European Central Bank closes](https://www.ecb.europa.eu/press/pr/date/2000/html/pr001214_4.en.html) on weekends and six fixed days a year.

Instant systems were built to remove that gap. The Clearing House describes the [RTP network](https://www.theclearinghouse.org/payment-systems/rtp) as available "around the clock, including bank holidays, weekends and after hours." Banco de México lists SPEI's operating hours as a [24/7 scheme](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html). [Pix](https://www.bcb.gov.br/en/financialstability/pix_en), run by Banco Central do Brasil, works every day of the year.

So the answer to "is it instant?" depends on the rail at the end, not on the stablecoin.

## Which holidays stop each rail?

Each fiat rail stops on its own country's banking holidays, and SWIFT stops on the holidays of every country it touches.

**United States (ACH, domestic wire, the US leg of SWIFT).** The Federal Reserve's remaining 2026 holidays are Columbus Day (October 12), Veterans Day (November 11), Thanksgiving (November 26), and Christmas (December 25). Two weekend rules matter. When a holiday falls on a Saturday, Federal Reserve Banks open the Friday before. When it falls on a Sunday, they close the Monday after. In 2027, Juneteenth lands on a Saturday and Independence Day on a Sunday, so July 5, 2027 is closed.

**Euro area (SEPA).** TARGET closes on New Year's Day, Good Friday, Easter Monday, 1 May, Christmas Day, and 26 December. In 2027, Good Friday is March 26 and Easter Monday is March 29, so a SEPA payout requested on Thursday evening, March 25, can wait until Tuesday, March 30.

**Brazil (TED and boleto).** Pix ignores holidays. TED and boleto do not. During Carnival, Brazilian banks do not clear TED or boletos on Monday and Tuesday, and in 2027 those fall on February 8 and 9. October 12 is also a national holiday in Brazil.

**Colombia (ACH Colombia).** Colombia moves many public holidays to the following Monday, so long weekends are common. A Friday payout before one can take until Tuesday.

**Mexico (SPEI).** SPEI keeps running on Mexican holidays. A peso payout on a holiday settles in minutes.

**SWIFT.** A SWIFT payout needs a working day at the sending bank, every correspondent in the chain, and the receiving bank. A US holiday, a holiday in the destination country, or a holiday in the currency's home market can each add a day.

## What happens to a payout submitted after the cut-off?

A payout submitted after a rail's cut-off is processed the next business day, and holidays push that day further out.

Here is a worked scenario. Friday, October 9, 2026, 6:00 PM ET. Monday, October 12 is Columbus Day in the US, a national holiday in Brazil, and a public holiday in Colombia. Arrival dates are illustrative estimates based on the published cut-offs and ETAs above, before any review time.

| Payout | What happens | Estimated arrival |
| --- | --- | --- |
| BRL over Pix | Settles immediately | Friday night, minutes |
| MXN over SPEI | Settles immediately | Friday night, minutes |
| USD over RTP | Review step, then settles instantly | As soon as the review clears |
| USD over ACH | Before the 9:00 PM cut-off, so it is submitted Friday; Monday does not count | Around Wednesday, October 14 |
| USD over domestic wire | After the 3:00 PM cut-off, so it goes out the next business day | Tuesday, October 13 |
| USD over SWIFT | After the 10:30 AM cut-off, starts Tuesday; also starts on hold for documents | As late as Tuesday, October 20 |
| EUR over SEPA | October 12 is not a TARGET closing day, but US holidays can count against processing days | Monday, October 12, or Tuesday, October 13 |
| BRL over TED | After the Brazilian banking day; Monday is a Brazilian holiday | Tuesday, October 13 |
| COP over ACH Colombia | Monday is a Colombian holiday | Tuesday, October 13 |

Same Friday evening, same stablecoin, five different arrival days. The rail decides.

## How do quotes, holds, and holidays interact?

Quotes expire in minutes, holds can last weeks, and holidays only move the rail leg, so treat each one separately.

**Quotes.** A payout quote locks the rate and fees for a short window. Five minutes is a common default, some rails return shorter windows, and a quote backs one payout only. Don't quote on Friday to execute on Monday. Quote when you send. The [quotes guide](/resources/more/stablecoin-api-quotes-explained) covers expiry in detail.

**Holds.** Compliance review is a separate clock. At BlindPay, every SWIFT payout starts `on_hold` until its documents are approved, and USD ACH, wire, and RTP payouts pass through `on_hold` as a standard step. A hold can last up to 30 days; a timeout ends in `failed`, and a `failed` payout does not refund automatically. The [payout statuses guide](/resources/more/stablecoin-payout-statuses-explained) explains each state.

**Bills with due dates.** A boleto paid after the 18:30 BRT window, or on a non-banking day, executes the next banking day. If a hold pushes execution past the boleto's due date, the requote should fail instead of paying a bill that can no longer be paid. Requote close to execution.

## How should you schedule payouts around weekends and holidays?

Build the calendar into the payout run, not into the support queue. Seven steps:

1. **Map every recipient to a rail.** The rail, not the country, decides the calendar. A Brazilian recipient with a Pix key is on a 24/7 rail; the same recipient paid by TED is not.
2. **Load next year's calendars now.** The Federal Reserve holiday list, TARGET closing days, the Brazilian banking calendar, and Colombian holidays are all published in advance.
3. **Compute a send-by time per rail.** Take payday, step back to the last business day of that rail's calendar, then subtract the ETA and a review buffer. For SWIFT, the cut-off is 10:30 AM ET, not end of day.
4. **Move urgent payments to 24/7 rails.** If a payday falls on a Monday holiday, Pix, SPEI, and RTP still deliver on time. Ask recipients for a Pix key or a CLABE where you can; [Pix keys, CPF, and CLABE](/resources/more/pix-key-cpf-clabe-payout-details) lists what to collect.
5. **Quote and execute at send time.** Never hold a quote over a weekend.
6. **Show the rail-aware date.** "Arrives Tuesday, October 13" beats "1 to 2 business days." Treat `on_hold` as pending in the UI, not as an error.
7. **Alert on lateness, not on holidays.** Listen for `payout.update` and `payout.complete` webhooks and flag any payout still processing one business day past its estimate. [How to track an off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) lists the references to give the recipient.

## Where does BlindPay fit?

BlindPay is a payout API in the [types of stablecoin APIs](/resources/more/types-of-stablecoin-apis) sense: it converts USDC and USDT from your wallet into local currency over Pix, SPEI, Transfers 3.0, ACH, wire, RTP, SEPA, TED, ACH Colombia, and SWIFT (POBO/COBO), with no pre-funding. Cut-offs, holds, and refund timing are published in the [cut-off times reference](https://blindpay.com/docs/kb/cut-off-times), so your scheduler can read the same rules our operations team works from.

## What to do next

Pull your last three months of payouts and tag each one with its rail. Count how many landed on ACH, wire, TED, or SWIFT the business day before a holiday. Those are the payments to move to a 24/7 rail or to schedule a day earlier. Then add the 2027 Federal Reserve and TARGET calendars to your payout scheduler before December.

*This article is for general information only and is not legal, tax, or financial advice. Holiday calendars and cut-offs change; confirm them with each operator before relying on a date.*

---

Source: https://blindpay.com/resources/more/what-is-a-market-maker-stablecoin-payments

---
title: "What is a market maker in stablecoin payments? How they set the rate on your quote"
seoTitle: "What is a market maker in stablecoin payments?"
description: "A market maker quotes a buy and a sell price and earns the gap. Who they are in stablecoin payments, how they shape your quote, and what to ask."
date: "2026-09-27"
updated: "2026-09-27"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a market maker in stablecoin payments?"
    a: "A market maker is a firm that stands ready to buy and sell a currency pair, such as USDC and Brazilian reais, at prices it quotes. It holds inventory on both sides and earns the gap between its buy and sell price. Payment providers source the local currency behind off-ramps, and the stablecoins behind on-ramps, from market makers or their own desks."
  - q: "How do market makers make money?"
    a: "From the spread. A market maker buys at its bid and sells at its ask, so every round trip earns the difference. In exchange it carries inventory risk: if the currency moves while it holds a position, it can lose money. That risk is why spreads widen when markets are volatile or when a trade is large."
  - q: "Is an automated market maker the same as a market maker?"
    a: "It does the same job with a formula instead of a trading desk. An automated market maker is an onchain pool, such as a Uniswap or Curve pool, that prices swaps from the balances it holds. It provides onchain liquidity between tokens. It does not pay a bank account in reais or pesos, so it is only one piece of an off-ramp."
  - q: "Why do spreads widen on large stablecoin conversions?"
    a: "Because a large order uses up the market maker's best-priced inventory and leaves it holding a bigger position. It quotes a wider spread to cover the extra risk, or routes the remainder to another source at a worse price. You can see this by requesting quotes for several sizes on the same corridor at the same moment and comparing the rate."
  - q: "What is last look in FX?"
    a: "Last look is a practice in electronic trading where the market maker gets a final chance to accept or reject a trade request against its quoted price. The FX Global Code says firms that use it should be transparent and disclose how it works. A binding payout quote means the provider, not you, absorbs that risk inside the window."
---

A market maker is a firm that stands ready to buy and sell at prices it quotes, and earns the gap between its buy and sell price. In stablecoin payments, market makers supply the local currency behind an off-ramp and the stablecoins behind an on-ramp, so their inventory and risk decide the rate on your quote.

You'll almost never talk to one directly. Your payment API does. But the spread they quote, the size they can absorb, and the risk they won't hold all show up in the rate you see. Knowing how they work makes a quote readable.

**Key takeaways**

- A market maker quotes a bid (buy) and an ask (sell), holds inventory, and earns the spread between them.
- In stablecoin payments, market makers include bank FX dealers, crypto OTC desks, order-book traders, and onchain automated market makers.
- Spreads widen with volatility, trade size, lopsided inventory, and the length of time a price must be held.
- A binding payout quote moves the market maker's risk off your plate for the quote window.
- Ask providers about binding windows, rate at size, and itemized margin, not about partner names.

## What does a market maker do?

It stands in the middle of the market and quotes both sides. Nasdaq's [glossary](https://www.nasdaq.com/glossary/m/market-maker) defines a market maker as a dealer who "maintains firm bid and offer prices in a given security by standing ready to buy or sell round lots at publicly quoted prices."

Swap "security" for "currency pair" and you have FX. A market maker in USDC/BRL quotes a price at which it will buy USDC (paying reais) and a higher price at which it will sell USDC (receiving reais). The midpoint of those two is the [mid-market rate](/resources/more/why-google-rate-differs-from-quote) you see on Google. The gap is how the market maker gets paid.

Getting paid comes with a job: holding inventory. When it buys your USDC, it now owns USDC and owes nobody reais until it rebalances. If BRL moves in the meantime, it eats the loss. The [glossary for this cluster](/resources/more/onramp-offramp-liquidity-glossary) defines market maker, bid, ask, and spread the same way.

## Who are the market makers in stablecoin payments?

Several kinds of firms, each covering a different leg of the trip from stablecoin to bank account.

| Type | What it quotes | Where it sits in a payment | Strength | Limit |
| --- | --- | --- | --- | --- |
| Bank FX dealers | Fiat pairs such as USD/BRL | The wholesale FX market behind the local currency | Deep in major pairs | Banking hours, relationship pricing |
| Crypto OTC desks | Stablecoin vs local currency, large tickets | Behind on-ramps and off-ramps | Size in one trade | Often minimum ticket sizes |
| Order-book market makers | Stablecoin pairs on exchanges | Exchange venues | Continuous two-sided prices | Venue access and settlement steps |
| Automated market makers | Token vs token, onchain | Onchain pools | Always on, transparent formula | No bank payout; depth limited to the pool |

Automated market makers are the newest kind. The original [StableSwap paper](https://classic.curve.finance/files/stableswap-paper.pdf) describes Curve as "a fully autonomous market-maker for stablecoins with very minimal price slippage." It's a real market maker. It just quotes token against token, and it never touches a Brazilian bank account.

A payment provider sits on top of these. It sources liquidity from one or more of them, or from its own desk, and turns that into a single quote you can execute. The [liquidity market explainer](/resources/more/what-is-a-liquidity-market-cross-border-payments) covers how those sources fit together, and [types of crypto off-ramps](/resources/more/types-of-crypto-off-ramps) covers who you'd deal with directly.

## How does a market maker set the spread?

By pricing the risk of the trade it's about to take. Five inputs move the number:

1. **Volatility.** The more a currency moves per minute, the wider the spread. A calm USD/EUR afternoon and a jumpy USD/ARS morning are priced differently.
2. **Size.** A large order uses up the best-priced inventory and leaves a bigger position to hedge.
3. **Inventory.** A market maker already holding too much USDC lowers its bid for more USDC. That's called skewing.
4. **Hedge access.** If the other leg (reais, pesos) is hard to source right now, the price reflects it.
5. **Time held.** A price that must stay valid for minutes carries more risk than one valid for seconds.

The currency pair matters too. The BIS [2025 Triennial Survey](https://www.bis.org/press/p250930.htm) found FX trading reached $9.6 trillion per day in April 2025, with the US dollar on one side of 89% of all trades. Dollar pairs are the deepest in the world. Latin American currencies are traded far less, which is one reason their spreads are wider, as [our LatAm liquidity guide](/resources/more/latam-payout-liquidity-partner-pix-spei) explains.

## What does that look like in numbers?

**Illustrative example.** A market maker quotes USDC/BRL at 5.38 bid and 5.42 ask. All numbers are made up for the arithmetic.

- Mid: (5.38 + 5.42) / 2 = 5.40
- Full spread: (5.42 - 5.38) / 5.40 x 10,000 = about 74 bps
- You sell 10,000 USDC at the bid: 10,000 x 5.38 = R$53,800
- At mid it would have been R$54,000, so you paid R$200, or about 37 bps (half the spread)

Now the maker has bought 2,000,000 USDC this morning and wants fewer dollars. It skews its bid down to 5.37:

- The next 10,000 USDC: 10,000 x 5.37 = R$53,700
- Cost vs mid: R$300, or about 56 bps

Same corridor, same size, same minute of the day, a 50% higher cost. Nothing changed in the market. The maker's inventory did. This is why depth tests should repeat across times of day, and why [buy and sell rates differ](/resources/more/why-onramp-and-offramp-rates-differ) even on the same provider.

## What is last look, and why does it matter for a binding quote?

Last look is the market maker's chance to reject a trade after you hit its price. The [FX Global Code](https://www.globalfxc.org/uploads/fx_global.pdf), Principle 17, defines it as a practice in electronic trading "whereby a Market Participant receiving a trade request has a final opportunity to accept or reject the request against its quoted price," and says firms using it should be transparent and disclose how it works.

For a payment, that's a risk someone has to carry. If a provider passes indicative prices straight through, a rejected or repriced trade lands on you as slippage. A binding quote flips that: the provider commits to the price for the window and deals with its liquidity sources on its own. You either execute at the number you saw, or the quote expires and nothing moves.

That commitment is the outside view of real liquidity. A provider that can't count on its market makers can't afford to bind a price for minutes. [On/off-ramp liquidity with live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) goes deeper on why.

## How does a market maker's price become your payout quote?

Through a provider that adds its margin, prices the window, and binds the result. At BlindPay, a [payout quote](/docs/payout-quotes) returns:

- `commercial_quotation`: the raw market rate when the quote was created.
- `blindpay_quotation`: the rate net of BlindPay's fee.
- `sender_amount`, `receiver_amount`, and itemized fee fields, so the margin is visible before you send.
- `expires_at`: payout quotes hold for 5 minutes by default. An expired quote is rejected, not executed at a new rate.

On the on-ramp side, large BRL payins can be priced through BlindPay's OTC desk instead of the standard rate. Those [OTC payin quotes](/docs/payin-quotes) are BRL to USDT only, start at $5,000 USD equivalent, and expire in 10 seconds.

Either way, you never see the market maker. You see one binding number, the fees that make it up, and a deadline.

## What should you ask a provider about its liquidity?

Ask about outcomes, not names. Liquidity partners are rarely disclosed, and you don't need them to judge quality. Six questions:

1. Is every quote binding for a stated window, and what happens when it expires?
2. If a liquidity source rejects or reprices a trade inside the window, who absorbs it?
3. How does the rate change between a $5,000 and a $250,000 quote on the same corridor, at the same minute?
4. Are the market rate and your margin shown as separate fields?
5. Does the window or the rate change at certain times of day on my corridors?
6. Is there an OTC path for large tickets, and what are its minimum and window?

Compare the answers with the [FX desk vs stablecoin provider breakdown](/resources/more/stablecoin-liquidity-provider-vs-fx-desk) if you're coming from a bank.

## What to do next

Request two [payout quotes](/docs/payout-quotes) for the same corridor at once, one small and one large. Compare `commercial_quotation` to `blindpay_quotation` on each. That gap is the market maker's spread plus the provider's margin, measured on your own corridor.

---

Source: https://blindpay.com/resources/more/what-is-real-time-cross-border-settlement

---
title: "What is real-time cross-border settlement? A 2026 guide"
seoTitle: "What is real-time cross-border settlement? (2026)"
description: "Real-time cross-border settlement means the recipient can use the money minutes after you send it. Which rails do it, what it costs, and where it stops."
date: "2026-09-27"
updated: "2026-09-27"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is real-time cross-border settlement?"
    a: "It is a cross-border payment where the recipient's bank account is credited with usable funds within seconds or minutes of the sender confirming, at any hour. In practice that takes two fast legs: a value transfer that doesn't wait on correspondent banks, such as a stablecoin moving on-chain, and an instant local rail such as Pix, SPEI, or RTP that pays the final bank account."
  - q: "Is a SWIFT payment real-time?"
    a: "Usually not end to end. SWIFT carries payment messages between banks, and the money still moves through correspondent accounts that keep banking hours and cut-off times. Some SWIFT payments arrive the same day, but a payment sent after the cut-off or before a weekend can take several business days. BlindPay lists SWIFT at up to 5 business days."
  - q: "Which payment rails settle in real time?"
    a: "Domestic instant payment systems do. Brazil's Pix, Mexico's SPEI, and The Clearing House's RTP network in the US all credit the recipient within seconds or minutes, and Pix and SPEI run 24/7. ACH, TED, SEPA credit transfers, and ACH Colombia settle in about one to two business days, so a route that ends on those rails isn't real-time even if the middle leg is."
  - q: "How much should a cross-border payment cost?"
    a: "The G20 target for retail cross-border payments is a global average of no more than 1% by the end of 2027, with no corridor above 3%. For $200 remittances the target is 3% by 2030. The latest World Bank data, for Q3 2025, puts the actual average for sending $200 at 6.36%, so most routes are still far above target."
  - q: "Do you need crypto to get real-time cross-border settlement?"
    a: "Not as a user. Stablecoins such as USDC and USDT are one way to move value between countries without correspondent banks, but a payment API can hide that leg. The sender funds a payout, the API converts and settles, and the recipient gets local currency in a normal bank account. The recipient never needs a wallet or any token."
  - q: "Is real-time cross-border settlement safe?"
    a: "It can be, as long as compliance runs before the money moves. Fast rails are hard to reverse, so identity checks, sanctions screening, and transaction monitoring have to happen at onboarding and before each payout, not after. A provider should also be clear about custody, refunds, and what happens when a payout is held for review."
---

Real-time cross-border settlement is a cross-border payment where the recipient can use the money within seconds or minutes, at any hour, instead of after one to five business days. It works when the money crosses the border without correspondent banks and lands on an instant local rail such as Pix, SPEI, or RTP. BlindPay does this with stablecoins in the middle and local rails at the edge.

The price gap is still wide. The World Bank's latest [Remittance Prices Worldwide report](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) puts the global average cost of sending $200 at 6.36% (Q3 2025 data).

**Key takeaways**

- "Real-time" means usable funds in the recipient's account in seconds or minutes, at nights and weekends too. A same-day wire isn't real-time.
- It needs two fast legs: a cross-border transfer that skips correspondent banks, and an instant domestic rail at the destination.
- Pix (Brazil), SPEI (Mexico), RTP (US), and Transfers 3.0 (Argentina) are instant. ACH, TED, SEPA, and ACH Colombia take about one to two business days. SWIFT can take up to five.
- The G20 wants retail cross-border payments to average no more than 1% by end-2027. The latest World Bank average for $200 remittances is 6.36%.
- A good provider shows the rate, every fee, and the expected arrival time before you confirm.

## What is real-time cross-border settlement?

Real-time cross-border settlement is the final, usable credit of funds to a recipient in another country within seconds or minutes of the payment being sent. Three words in that definition matter.

**Settlement** means the money has actually moved and the recipient can spend it. A notification that a payment is "on its way" isn't settlement. Neither is a balance that the receiving bank can still pull back.

**Cross-border** means the sender and recipient are in different countries, usually with different currencies. So the payment includes a currency conversion (FX), and it passes through at least two regulatory systems.

**Real-time** means seconds or minutes, at any hour. If the payment waits for Monday morning, it isn't real-time, however fast it moves once the bank opens.

## How is it different from an international wire?

An international wire moves a payment message between banks while the money hops through correspondent accounts on banking hours. Real-time settlement moves value directly and pays out on a domestic instant rail, so nothing waits for a cut-off.

Most international wires travel on SWIFT, a secure messaging network that connects banks around the world. SWIFT itself doesn't hold or move money. Each bank in the chain debits and credits accounts it holds with the next bank, called correspondent or nostro accounts. Each hop can add a fee, a compliance check, and a wait for the next bank's business day.

Real-time cross-border settlement changes the middle and the end of that chain:

- **The middle.** Value moves in one step, for example as USDC on a blockchain, instead of across two to four correspondent banks.
- **The end.** The payout uses the destination country's own instant rail, the same one locals use to pay each other.

The sender's experience changes too. With a wire, you send and wait for a confirmation or a complaint. With an instant route, the quote tells you the exact amount the recipient will get, and the confirmation comes back in minutes.

## Which parts of a cross-border payment can actually be real-time?

Only the legs that run on instant rails or on-chain. A route is as slow as its slowest leg, so the destination rail decides whether "real-time" is honest.

Here's how the rails BlindPay pays out on compare, using the settlement windows in BlindPay's [payment methods](/docs/kb/payment-methods) and [cut-off times](/docs/kb/cut-off-times) docs:

| Rail | Country | Typical payout speed | Hours |
| --- | --- | --- | --- |
| Pix | Brazil | Minutes | 24/7 |
| SPEI | Mexico | Minutes | 24/7 |
| RTP | United States | Instant | 24/7 |
| Transfers 3.0 | Argentina | Minutes | Varies by receiving bank |
| ACH | United States | About 1 to 2 business days (Same-Day ACH cut-off 3:00 PM ET) | Business days |
| Domestic wire | United States | Same business day if sent before 3:00 PM ET | Business days |
| TED | Brazil | About 1 business day | Brazilian banking days |
| ACH Colombia | Colombia | About 1 business day | Business days |
| SEPA | Euro area and SEPA countries | About 1 to 2 business days | Business days |
| SWIFT (POBO/COBO) | 100+ countries | Up to 5 business days (cut-off 10:30 AM ET) | Business days |

The on-chain leg, when there is one, adds seconds to minutes depending on the network. [How long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times) breaks this down by country, and [weekend and holiday cut-offs](/resources/more/stablecoin-payout-cut-off-times-weekends-holidays) covers what happens on a Saturday.

So a USDC payout to a Pix key on a Sunday night is real-time. A USDC payout to a SEPA IBAN on a Friday evening is fast in the middle and slow at the end. Both are cheaper than a wire. Only one is real-time.

## What makes cross-border settlement slow and expensive today?

Correspondent banking chains, banking-hour cut-offs, pre-funded accounts, and FX spreads. Each one adds time, cost, or both.

- **Correspondent chains.** Each bank in the chain charges its own fee and runs its own checks. With some charge codes, those fees come out of the amount the recipient gets.
- **Cut-offs and calendars.** A payment sent after a bank's daily cut-off waits until the next business day. Two countries means two holiday calendars.
- **Pre-funding.** Banks and money transmitters park money in foreign accounts in advance so they can pay out locally. That idle cash has a cost, and someone prices it into your rate. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) shows the math.
- **FX spread.** The gap between the market exchange rate and the rate you get is often the biggest single cost, and the least visible.

[Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) walks through where the days go, hop by hop.

## Which technologies make real-time settlement possible?

Three things changed: most large economies built instant domestic rails, stablecoins made a 24/7 cross-border value leg possible, and bank messaging got better tracking. Real-time cross-border settlement combines the first two.

1. **Instant domestic rails.** Brazil's central bank launched [Pix](https://www.bcb.gov.br/en/financialstability/pix_en) in November 2020. Mexico's SPEI runs around the clock. The Clearing House's RTP network serves the US, and the Federal Reserve's [FedNow service went live](https://www.federalreserve.gov/newsevents/pressreleases/other20230720a.htm) in July 2023. Each one settles a domestic payment in seconds.
2. **Stablecoins.** A stablecoin is a token designed to hold a steady value against a currency, usually the US dollar. USDC and USDT move between wallets in seconds to minutes on networks such as Solana, Polygon, Base, Stellar, and Tron, on weekends too. [What is a stablecoin](/resources/more/what-is-a-stablecoin) covers the basics.
3. **Better bank messaging.** SWIFT gpi added end-to-end tracking with a unique reference (the UETR), and ISO 20022 carries richer payment data. These make wires more predictable, but the money still moves through correspondent accounts on banking hours.

The pattern that works is "stablecoin across, instant rail out". The stablecoin replaces the correspondent chain. The local rail replaces the last bank's batch. [How a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works) follows one payment through each step.

## What do "low fees" mean in numbers?

A low fee is one at or below the G20 targets: 1% on average for retail cross-border payments by end-2027, and 3% for $200 remittances by 2030. Today's averages are well above that.

The Financial Stability Board, which coordinates the G20 roadmap, publishes these [targets for cross-border payments](https://www.fsb.org/work-of-the-fsb/financial-innovation-and-structural-change/cross-border-payments/g20-targets-for-enhancing-cross-border-payments-2/):

| G20 target | Cost | Speed | Deadline |
| --- | --- | --- | --- |
| Retail payments | Global average no more than 1%, no corridor above 3% | 75% of payments available to the recipient within one hour, the rest within one business day | End of 2027 |
| Remittances | Global average for $200 no more than 3%, no corridor above 5% | 75% within one hour in every corridor, the rest within one business day | Cost by 2030, speed by end-2027 |
| Wholesale payments | No cost target | 75% credited within one hour, the rest within one business day | End of 2027 |

The [World Bank's Q3 2025 data](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf), the latest published, shows the gap:

- Global average cost of sending $200: **6.36%**.
- Digital remittance services: **4.59%**. Non-digital: **7.30%**.
- Banks, the most expensive provider type: **14.99%**.

These are consumer remittance prices, not B2B quotes. But the cost drivers are the same: correspondent fees, FX spread, and pre-funding.

**Worked example.** Take a $200 payment. At the 6.36% global average, the sender loses $12.72. At the 3% target, $6.00. At the 1% retail target, $2.00. On a $20,000 supplier payment, the same percentages are $1,272, $600, and $200. The percentage is what matters at scale, and a fee schedule that hides the FX spread hides most of it.

[Stablecoin off-ramp fees vs a bank wire](/resources/more/stablecoin-off-ramp-fees-explained) runs the same comparison at three ticket sizes.

## How do the three settlement routes compare?

A SWIFT wire reaches the most countries but is the slowest. A domestic instant rail is fastest but only works inside one country. A stablecoin leg plus a local instant rail gives cross-border reach at local-rail speed where both exist.

| | BlindPay: stablecoin plus local rail | Local instant rail alone | SWIFT wire via banks |
| --- | --- | --- | --- |
| Crosses borders | Yes | No, domestic only | Yes |
| Typical speed | Minutes on Pix, SPEI, and RTP; about 1 to 2 business days on ACH, TED, SEPA, and ACH Colombia | Seconds | Same day to 5 business days |
| Operating hours | On-chain leg 24/7; payout follows the destination rail | 24/7 on Pix, SPEI, RTP | Business days, with cut-offs |
| Cost visibility | Rate and fees shown in the quote before you confirm | Usually low or free domestically | Fees per bank, with possible deductions in transit |
| Pre-funding | None; each payout is funded when sent | Needs a local account in that country | Banks and providers pre-fund correspondent accounts |
| Coverage | Local rails in the US, Brazil, Mexico, Colombia, Argentina, and the SEPA area, plus SWIFT (POBO/COBO) to 100+ countries | One country | Broadest reach |

SWIFT still wins where no instant rail or off-ramp exists. That's why a good setup uses both, and why BlindPay runs SWIFT payouts alongside local rails. [Stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments) compares the two in more depth.

## Who benefits most from real-time cross-border settlement?

Businesses that pay many people in other countries, pay outside banking hours, or carry pre-funded balances abroad gain the most.

- **Marketplaces and gig platforms** paying sellers, drivers, or creators who expect money the same day. [Marketplace payouts in Latin America](/resources/more/marketplace-stablecoin-payouts-latam) covers the case.
- **Payroll and contractor platforms** paying a team across Brazil, Mexico, Colombia, and Argentina. See [stablecoin payroll for LATAM contractors](/resources/more/stablecoin-payroll-latam-contractors).
- **B2B importers and exporters** paying suppliers who want local currency without SWIFT deductions.
- **Fintechs and neobanks** offering dollar accounts or remittances to users in emerging markets.
- **Treasury teams** tired of parking cash in five countries. [What "no pre-funding" means](/resources/more/no-pre-funding-stablecoin-payouts) explains the alternative.

Who gains less? Companies with only domestic flows, or corridors where the recipient's country has no instant rail and no off-ramp.

## How does BlindPay deliver real-time settlement with low fees?

BlindPay is one API that converts stablecoins to local currency and pays out over local rails or SWIFT, with a quote that shows the rate and fees first. Here's how it works, from the [BlindPay docs](/docs/introduction):

1. **Onboard the customer.** Every payment runs through a customer who has passed KYC or KYB. KYC Standard is automated and takes about 60 seconds.
2. **Add the recipient's bank account.** A Pix key in Brazil, a CLABE in Mexico, an IBAN for SEPA, or SWIFT details for 100+ countries.
3. **Get a live quote.** The [payout quote](/docs/payout-quotes) returns the market rate (`commercial_quotation`), the rate after BlindPay's fee (`blindpay_quotation`), the flat fee, and the exact amount the bank account will receive. It's valid for 5 minutes by default.
4. **Execute the payout.** USDC or USDT moves from the funding wallet. Payouts funded from a wallet you control are non-custodial, so there's no pre-funded balance sitting at BlindPay.
5. **BlindPay pays out locally.** The recipient gets reais over Pix, pesos over SPEI, dollars over RTP, ACH, or wire, or a SWIFT (POBO/COBO) payment with UETR tracking and MT103 confirmations ([POBO/COBO over SWIFT](/pobo-cobo-swift)).

What it costs: plans are published on the [pricing page](/pricing), starting at $499 a month for Basic, with no pre-funding and no minimum volume. Per-payment fees show up in each quote before you confirm, so you can price a corridor before sending anything.

Timing follows the destination rail, and BlindPay publishes the window for each one: minutes on Pix, SPEI, and RTP, about a business day on SEPA and ACH Colombia. Transactions can also be held for compliance review, and USD payouts over ACH, wire, RTP, and SWIFT can land on hold before they release.

## What to do next

Pick your top corridor and check its destination rail in the table above. If it's Pix, SPEI, or RTP, real-time is on the table. Then run a test payout on a free development instance with the [payout quickstart](/docs/quickstart-payout) and compare the quoted amount received against your current wire.

---

Source: https://blindpay.com/resources/more/why-crypto-on-ramp-deposits-fail

---
title: "Why crypto on-ramp deposits fail: missing references, late transfers, holds, and refunds"
seoTitle: "Why crypto on-ramp deposits fail, and where the money goes"
description: "Most failed on-ramps fail on the fiat side: a missing reference, the wrong payer, a late transfer, a hold. What happens to the money in each case."
date: "2026-09-27"
updated: "2026-09-27"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "Why did my crypto on-ramp deposit fail?"
    a: "Usually because the fiat side didn't match what the on-ramp expected. Common causes are a bank transfer sent without the reference code, a payment from someone other than the approved payer, an amount that differs from the quote, or a transfer that arrived after the waiting window closed. Less often, a compliance hold that wasn't answered in time ends in a refund."
  - q: "What happens to my money if an on-ramp fails?"
    a: "It depends on how far the payment got. If the fiat never arrived, nothing moved and there's nothing to return. If the fiat arrived but couldn't be converted, a well-run on-ramp returns it to the sender's bank account, which takes as long as the bank network does and can carry fees. Stablecoins that were already delivered stay in the destination wallet."
  - q: "What is the difference between a failed and a refunded on-ramp payment?"
    a: "A refunded payment means the deposit was returned to the sender. A failed payment means it didn't go through, which can mean the money never arrived or that something needs investigating. On BlindPay both are final statuses, so treat refunded as money on its way back and failed as a case to check before telling the customer anything."
  - q: "Can I get stablecoins back if the on-ramp sent them to the wrong wallet?"
    a: "Usually not. A confirmed stablecoin transfer can't be reversed, and a non-custodial on-ramp has no key to the destination wallet. If the address belongs to someone who cooperates, they can send the funds back. Otherwise they're gone, which is why the address has to be checked when the wallet is registered."
  - q: "How long does an on-ramp wait for my bank transfer?"
    a: "It depends on the rail. On BlindPay, Pix, SPEI, Transfers 3.0, and PSE payins wait up to 30 minutes before failing, and ACH and wire payins wait up to 5 business days. If you pay after the window closes, request a new quote instead of reusing the old instructions."
  - q: "Why was my on-ramp payment put on hold?"
    a: "Transaction monitoring flagged it for a manual review. Common triggers are a first large deposit, an amount out of line with the customer's history, or a sanctions screening match. The provider may ask for the purpose of the payment and the relationship between the payer and the customer. Answer quickly, because an unanswered request can end in a refund."
---

Most crypto on-ramp deposits that fail don't fail on-chain. They fail on the fiat side: a bank transfer sent without its reference, a payment from the wrong person, an amount that doesn't match the quote, a transfer that arrives after the window closed, or a compliance hold nobody answered. Where the money ends up depends on how far it got.

This is the support playbook for those cases. The payout side has its own version in [stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes).

## Key takeaways

- An on-ramp has to match each incoming bank transfer to one quote. Anything that breaks the match (no reference, wrong payer, wrong amount) breaks the deposit.
- Deposits have a waiting window per rail. Minutes for Pix and SPEI, days for ACH. Late money can fail even though it arrived.
- Holds are reviews, not failures. Answer the request for information fast.
- "Refunded" and "failed" are different outcomes for your ledger and for the customer.
- A stablecoin delivered to the wrong address is the one failure nobody can fix after the fact.

## Where does the money go when an on-ramp fails?

Locate the money first. Every failure sits at one of three points.

| Where it stopped | What happened to the fiat | What happened to the stablecoins | What to tell the customer |
| --- | --- | --- | --- |
| Before the deposit arrived | Never left the payer's bank, or never reached the provider | None were sent | Nothing was charged; start over with a new quote |
| After the deposit, before conversion | Held by the provider, then returned to the sender if it can't settle | None were sent | The money is coming back; bank timing applies |
| After delivery | Converted | In the destination wallet | Check the wallet and the network before anything else |

On BlindPay, a payin ends as `completed`, `failed`, or `refunded`. `refunded` means the deposit went back to the sender. Fiat refunds are credited once the bank network returns the funds, which depends on each bank's processing time, and fees may apply. [How a non-custodial model handles this](/resources/more/custodial-vs-non-custodial-off-ramps) matters here: the provider never holds a balance it could lose.

## Failure 1: the transfer has no reference

When many customers pay into one shared bank account, the on-ramp tells them apart by a reference code. On BlindPay that's the `memo_code` shown with the bank details for ACH and wire payins. A transfer without it lands in the right account with nothing to tie it to a quote.

What goes wrong in practice:

- The payer's bank app has a short memo field and truncates the code.
- A finance team pastes the bank details into a payment template and reuses an old code.
- The payer types the code into the "beneficiary name" field instead of the reference field.

The fix is structural: give recurring payers a dedicated account number. With a [virtual account](/resources/more/virtual-account-reconciliation), every deposit to that account number belongs to that customer, so there's no code to forget. BlindPay ignores the memo code for ACH and wire when the customer has an approved virtual account. RTP is the exception and always uses the memo-code path.

## Failure 2: the wrong person paid

Instant rails let an on-ramp check who is paying, and good ones do. On BlindPay a Pix payin quote can list the CPF or CNPJ tax IDs allowed to pay. Transfers 3.0 in Argentina requires the payer's CUIT or CUIL, and PSE in Colombia requires the payer's name, document, email, phone, and bank. The tax IDs are validated when the quote is created, so a malformed CPF fails before anyone sends money.

The failure comes later, when someone else pays. A company quoted under its own CNPJ, and an employee paid from a personal account. A parent paid for a child. The deposit arrives from a payer the quote didn't allow, so it doesn't match the payin it was meant for.

This rule exists for a reason. Regulators expect an on-ramp to know who is really funding each payment, a principle that runs through [FATF's virtual asset guidance](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-rba-virtual-assets-2021.html). Tell payers up front, in your UI, that the transfer must come from their own account. [Pix keys, CPF, and CLABE](/resources/more/pix-key-cpf-clabe-payout-details) covers the identifiers on the payout side.

## Failure 3: the amount doesn't match

The quote fixes a fiat amount. The bank transfer has to match it.

- **Rounded or partial amounts.** The payer sends R$1,000 against a quote for R$1,000.50, or splits it into two transfers.
- **Bank fees taken in transit.** A wire arrives short because an intermediary bank deducted its charge.
- **Fractions on whole-unit rails.** On BlindPay, MXN, COP, and ARS payins settle in whole currency units. A sender-side quote with centavos is rejected with `request_amount_must_be_a_whole_currency_unit`, because a fractional amount would be truncated on arrival and could come back as an invalid payment.
- **Out of range.** Payin quotes enforce a minimum and maximum per currency, and the customer's own per-transaction limit applies on top. Deposits into a virtual account skip the per-currency minimums.

Show the exact amount, with every decimal, next to the instructions. If your users pay from banking apps that round, quote whole amounts.

## Failure 4: the money arrived late

An on-ramp can't wait forever for a deposit, because the quote's rate was locked against a market that kept moving. Each rail gets a waiting window.

| Rail | How long BlindPay waits for the deposit |
| --- | --- |
| Pix (Brazil) | Up to 30 minutes, with a reconciliation check before failing |
| SPEI (Mexico) | Up to 30 minutes |
| Transfers 3.0 (Argentina) | Up to 30 minutes |
| PSE (Colombia) | Up to 30 minutes, since the bank redirect and two-factor step can lag |
| ACH, wire (US) | Up to 5 business days |

Pix and SPEI run around the clock under [Banco Central do Brasil](https://www.bcb.gov.br/en/financialstability/pix_en) and [Banxico](https://www.banxico.org.mx/services/interbanking-electronic-payme.html), so a 30-minute window is generous when the payer acts right away. The usual problem is a payer who copies the Pix code and pays the next morning. One exception helps: if a Transfers 3.0 deposit arrives after the payin was marked `failed` and no stablecoins were sent yet, BlindPay revives it and completes it once the sender's tax ID and amount match.

OTC Pix quotes work differently. They wait until a fixed daily cutoff, and a deposit that never arrives adds a $100.00 penalty to the billing fee. Only quote OTC when the payer is ready to pay.

## Failure 5: the payment went on hold

A hold isn't a failure. It's a review. BlindPay's transaction monitoring flags payins that look unusual, and the compliance team reviews each one. Common triggers, per the [cut-off times reference](/docs/kb/cut-off-times):

- A first deposit, or a pattern that doesn't fit the customer's history
- A large amount relative to past activity
- A sanctions or watchlist screening match
- An open request for information on the customer

If the flag can't be cleared internally, BlindPay sends a request for information asking for the relationship between the payer and the customer, the purpose of the payment, and the expected outcome. If it isn't answered within 24 hours, the payment may be refunded to the sender. Route these requests to someone who can answer the same day. [Real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) explains what the system is looking for.

## Failure 6: the wallet was wrong

This is the expensive one. The on-ramp did everything right and delivered stablecoins to the address on file. The address was wrong.

- **A typo in a pasted address.** On Solana, Stellar, and Tron the address is submitted directly, with no signature to prove ownership.
- **The right address on the wrong network.** EVM addresses look the same on Ethereum, Polygon, Base, and Arbitrum.
- **The wrong token for the network.** USDC isn't deployed on Tron, and USDT isn't on Base, Arbitrum, or Stellar. Quote creation rejects these pairs, so this one is caught early.

A non-custodial on-ramp has no key to the destination wallet. BlindPay can't access, freeze, or recover funds in an external wallet, and an on-chain transfer can't be reversed. On EVM networks, have the customer register the wallet by signing a message so the address is recovered from the signature instead of typed. [What happens on-chain](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) shows why there's no undo.

## Failure 7: the customer wasn't ready

Some payins never get a quote at all:

- **KYC isn't approved.** The customer is still `verifying`, or has an open request for information.
- **Terms of service changed.** When BlindPay updates its terms, quotes for customers who accepted an older version return `please_accept_terms_of_service` until they accept again.
- **Limits.** KYC Standard customers have a $10,000 per-transaction payin limit by default, KYB Standard $30,000, and KYC Enhanced $50,000. Larger deposits need a limit increase first.

These show up as quote errors, not failed payins, which makes them the easiest to handle: catch the error and tell the customer what to do.

## How do you tell a failure from a refund in code?

Handle every final status explicitly.

| Status | Meaning | Your action |
| --- | --- | --- |
| `completed` | Stablecoins delivered | Credit the customer, show the transaction hash |
| `refunded` | Deposit returned to the sender | Mark as returned; tell the customer the bank will credit it back |
| `failed` | Didn't go through | Check whether money arrived before you say anything; open a support case if it did |
| `on_hold` (not final) | Under review | Show "in review"; watch for a request for information |

Payin events arrive as `payin.new`, `payin.update`, and `payin.complete`, and `payin.complete` covers all three final outcomes, so read the status field instead of assuming success. [Stablecoin API webhooks](/resources/more/stablecoin-api-webhooks-reconciliation) covers signature checks and ordering, and [integrating a crypto on-ramp API](/resources/more/how-to-integrate-a-crypto-on-ramp-api) shows the full flow these statuses come from.

## How do you test failure paths before launch?

On a BlindPay development instance, set a payin's `request_amount` to `66600` ($666.00) to force `failed` and `77700` ($777.00) to force `refunded`. Every other amount completes about 30 seconds after creation. Run both outcomes through your webhook handler, your ledger, and your customer emails. Then check that a refunded payin doesn't show as a balance anywhere.

## What to do next

Pull last month's failed and refunded on-ramp payments and tag each one with a failure number from this list. Most teams find two causes account for most of them, usually missing references and late payers. Fix those with virtual accounts and a countdown next to the Pix code, and the support queue shrinks.

Some failures are really pricing surprises, like a wire that arrived short. [Crypto on-ramp fees explained](/resources/more/crypto-on-ramp-fees-explained) covers what the quote includes. For the wider picture of how business on-ramps differ from consumer ones, start with [business vs consumer crypto on-ramps](/resources/more/business-vs-consumer-crypto-on-ramps).

*This article is general information, not legal, tax, or financial advice. Waiting windows, limits, and statuses can change; check the [payins docs](/docs/payins) for current behavior.*

---

Source: https://blindpay.com/resources/more/are-stablecoin-payments-safe

---
title: "Are stablecoin payments safe? The risks businesses should check, and how to reduce them"
seoTitle: "Are stablecoin payments safe? Risks for businesses"
description: "Stablecoin payments are as safe as the issuer, the network, the provider, and your own controls. The seven risks to check, with real incidents and fixes."
date: "2026-09-26"
updated: "2026-09-26"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Are stablecoin payments safe for businesses?"
    a: "They can be, when four things hold: the stablecoin is fully reserved and redeemable, the network is reliable, the provider is licensed and clear about custody, and your own team checks addresses and networks before sending. Most losses come from operational mistakes and fraud, not from the technology failing."
  - q: "Can USDC lose its peg?"
    a: "It has, briefly. In March 2023, USDC traded below 90 cents after Circle disclosed that $3.3 billion of its reserves sat at Silicon Valley Bank, which had just failed. It returned to about $1 within days, once US authorities guaranteed the bank's deposits. The episode showed that reserve quality and where reserves are held matter as much as the 1:1 promise."
  - q: "Are stablecoins FDIC insured?"
    a: "No. A stablecoin is not a bank deposit, and the GENIUS Act bars issuers from marketing payment stablecoins as federally insured. Protection comes from the issuer's reserves and, under the GENIUS Act, from holders' priority claim on those reserves if the issuer fails."
  - q: "Can a stablecoin transaction be frozen?"
    a: "Yes. The major dollar stablecoins, including USDC and USDT, let their issuers block specific addresses, and issuers use this for sanctions and law-enforcement requests. For a business, the practical risk is receiving funds from an address that is later frozen or flagged, which is why providers screen wallet addresses as well as people."
  - q: "What happens if I send stablecoins to the wrong address?"
    a: "The transfer is final on-chain, so there is no bank to call for a recall. If the address belongs to a cooperative party or a known exchange, you can ask them to send it back. If it belongs to no one, or to a scammer, the funds are usually gone. Test with a small amount before a large first transfer."
---

Stablecoin payments are safe when four layers hold: a fully reserved stablecoin, a reliable network, a licensed provider with clear custody, and your own controls on addresses and networks. The technology rarely fails on its own. Losses usually come from a weak issuer, a provider that holds your money without saying so, or a human who pasted the wrong address.

So the useful question isn't "are stablecoins safe?" It's "which of the seven risks below have I covered?"

## What are the risks of stablecoin payments?

| Risk | What can go wrong | How to reduce it |
| --- | --- | --- |
| Issuer and reserves | The stablecoin trades below $1 or redemptions slow down | Use fully reserved, attested stablecoins from regulated issuers |
| Network | The blockchain halts or fees spike | Support more than one network per stablecoin |
| Irreversible errors | Funds go to the wrong address or network | Allowlist addresses, test with small amounts |
| Custody and provider | The provider holding your funds fails or freezes | Know who holds the funds at every step |
| Conversion to cash | You can't off-ramp when you need to | Check corridors, limits, and liquidity before you depend on them |
| Fraud | Address poisoning, malicious approvals, reversed bank deposits | Verify addresses out of band, approve exact amounts, hold risky deposits |
| Compliance | Funds tied to a sanctioned party get frozen | Screen counterparties and wallet addresses, not just customers |

Each one is covered below.

## Can a stablecoin lose its peg?

Yes, and a major one already has. On March 10, 2023, Circle disclosed that $3.3 billion of the reserves backing USDC were held at Silicon Valley Bank, which had just failed. USDC [traded below 90 cents](https://www.axios.com/2023/03/11/circle-usdc-peg-svb) the next day. It returned to about $1 within days, once US authorities said all of the bank's deposits would be protected.

The lesson isn't that USDC is unsafe. It's that a stablecoin is only as good as its reserves and where they sit. Before you hold a balance, check:

- **What backs it.** Cash and short-term government debt, or something riskier.
- **How often reserves are reported.** Monthly reports with an independent accountant's attestation are the norm for the large regulated issuers.
- **Who can redeem, and how fast.** Redemption at par is what holds the peg.

Regulation is tightening this. In the EU, [MiCA](/resources/more/mica-stablecoin-rules-explained) already requires e-money tokens to be fully reserved and redeemable at par. In the US, the GENIUS Act requires 1:1 reserves in cash and short-term Treasuries, with monthly disclosure, once its rules take effect. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares how the two largest issuers report.

Stablecoins are not bank deposits and are not FDIC insured. Treat a stablecoin balance like a claim on the issuer's reserves, because that's what it is.

## What happens if a blockchain network goes down?

Payments on that network stop until it recovers. Solana, for example, [halted block production for about five hours](https://cointelegraph.com/news/solana-network-outage-block-production-halted) on February 6, 2024. Funds weren't lost, but nothing moved.

Outages like that are rare on the major networks, and fee spikes are more common. Both are manageable if you don't depend on a single chain. A provider that settles the same stablecoin on several networks lets you route around a bad day. [What happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) explains what the network does during a transfer.

## Can stablecoin payments be reversed or recovered?

No, not by the network. A confirmed transfer is final. There's no chargeback and no recall message. That finality is useful, since it proves exactly who held the funds and when, but it means mistakes stick.

The common ones:

- **Wrong address.** A typo, or an address copied from the wrong place.
- **Wrong network.** The right address on a chain the receiver doesn't monitor.
- **Unsupported token.** A stablecoin the receiving provider can't accept on that network.

Controls that work: an allowlist of saved recipient addresses, a small test transfer before any large first payment, and a provider that rejects unsupported token and network pairs before anything moves. [Are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible) goes deeper on finality, and [common stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes) lists the errors to block in your code.

## What happens if the provider fails?

That depends on custody. If a provider holds your stablecoins or fiat between steps, you're exposed to its solvency, its banks, and its operations. If the flow is non-custodial, the funds stay in a wallet you control until the payment executes.

Neither model is automatically right. Custodial products can be convenient. What matters is knowing which one you're using, product by product. A provider can be non-custodial for payouts and custodial for a hosted wallet. [Custodial vs non-custodial off-ramps](/resources/more/custodial-vs-non-custodial-off-ramps) walks through what happens in each model when a provider becomes insolvent or loses its bank.

## Can you always convert stablecoins back to cash?

Not everywhere, and not in any amount. Converting stablecoins to local currency needs a licensed off-ramp in the destination country, a local payout rail, and enough liquidity for your volume. Per-transaction and monthly limits apply by verification tier.

The risk shows up when a business holds stablecoins assuming it can exit anytime, then hits a corridor that isn't supported or a limit it didn't plan for. Check the corridors you need, the limits that apply to you, and how liquidity holds up at your largest payment size. [Stablecoin off-ramp limits](/resources/more/stablecoin-off-ramp-limits) and [liquidity risk in global payouts](/resources/more/liquidity-risk-global-payouts) cover both.

## What fraud should businesses watch for?

Three patterns account for most of it.

1. **Address poisoning.** An attacker sends a tiny transfer from an address that looks like one you use, same first and last characters. The next time someone copies an address from transaction history, they copy the attacker's. Verify full addresses against a saved allowlist, never from history.
2. **Malicious approvals.** On EVM chains, a token approval lets a contract spend tokens from your wallet. A phishing site that tricks you into an unlimited approval can drain the wallet later. Approve only the exact amount a payment needs, and revoke approvals you no longer use.
3. **Reversed bank deposits.** A fraudster funds an account by ACH, receives stablecoins, then reverses the ACH while its return window is still open. The stablecoins are gone and the platform eats the loss. This is why providers hold new or unusual bank deposits and monitor the fiat leg continuously.

Identity checks at signup don't catch any of these on their own. Transaction monitoring does. [Real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) covers the rules providers run.

## Can a stablecoin be frozen?

Yes. USDC and USDT both let their issuers block specific addresses, and issuers use it for sanctions and law-enforcement requests. The US Treasury's Office of Foreign Assets Control also lists specific blockchain addresses on its [sanctions list](https://ofac.treasury.gov/specially-designated-nationals-and-blocked-persons-list-sdn-human-readable-lists).

For a legitimate business, the exposure is indirect: taking payment from an address that's later frozen or tied to a sanctioned party. The fix is screening. Providers check wallet addresses against sanctions and risk data, not only the people behind them, and the [travel rule](/resources/more/travel-rule-stablecoin-off-ramps) makes sure identity data moves with transfers between providers.

## Are stablecoin payments safer than wires or cards?

Different, not strictly safer. Each rail puts the risk in a different place.

| | Stablecoin payment | International wire | Card payment |
| --- | --- | --- | --- |
| Reversibility | Final once confirmed | Recall possible, not guaranteed | Chargebacks for months |
| Main fraud risk | Wrong address, phishing, reversed funding | Business email compromise, fake invoices | Stolen cards, friendly fraud |
| Visibility | Every transfer is on a public ledger | Status via tracking, if the banks report it | Processor dashboards |
| Deposit insurance | None | Bank deposits at either end are insured to limits | Card network rules protect the payer |
| Settlement speed | Seconds to minutes | 1 to 5 business days | Days for the merchant |

For a business paying suppliers or contractors, finality is often a feature: the payment can't be clawed back after the goods ship. For a business collecting from strangers, card chargebacks protect the payer, and stablecoins don't.

## How can a business make stablecoin payments safer?

1. Use fully reserved stablecoins from regulated issuers, and check their reserve reports.
2. Know who holds your funds at every step, product by product.
3. Keep an allowlist of recipient addresses and networks. Never copy from history.
4. Send a small test transfer before any large first payment.
5. Approve exact amounts on EVM chains and revoke old approvals.
6. Support more than one network for each stablecoin you rely on.
7. Screen counterparties and wallet addresses, not just your own customers.
8. Confirm corridors, limits, and liquidity before you depend on an off-ramp.

The questions to put to a provider are in [30 due diligence questions](/resources/more/stablecoin-payments-provider-due-diligence).

## How does BlindPay reduce these risks?

BlindPay converts USDC and USDT to and from local currency, with compliance in the payment flow. Payouts from an external wallet are non-custodial: the stablecoins move only when the quoted payout executes, and a refunded payout returns them to the wallet that funded it right away. Managed wallets, in beta, are custodied by BlindPay, and the docs say so.

Every customer is verified with KYC or KYB before their first transaction, and payouts are screened as they run. Payouts to US bank accounts pass through a compliance review step, and a payout that needs a closer look moves to `on_hold` with a webhook, for up to 30 days, as described in [on-hold transactions](/docs/kb/on-hold-transactions). The API rejects unsupported token and network pairs before any funds move, across Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron ([supported chains](/docs/kb/supported-chains)).

BlindPay is registered with FinCEN as a Money Services Business and lists its licenses on the [licenses page](/licenses). Security controls, including SOC 2 Type 2 and independent penetration testing, are on the [security page](/security).

Pick the one risk in the table above you've covered least, and fix that first. For how stablecoin payments work end to end, start with [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

---

Source: https://blindpay.com/resources/more/crypto-on-ramp-compliance-who-owns-what

---
title: "Who owns compliance when you integrate a crypto on-ramp API? KYC, KYB, KYT, and holds"
seoTitle: "Crypto on-ramp compliance: who owns KYC, KYB, and KYT"
description: "An on-ramp API splits compliance between the provider and you. Who runs KYC, KYB, KYT, sanctions, and the travel rule, and what stays on your side."
date: "2026-09-26"
updated: "2026-09-26"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "Does a crypto on-ramp need a license?"
    a: "Generally yes, but which one depends on the jurisdiction. In the US, a business that accepts fiat and transmits virtual currency is usually a money transmitter under FinCEN's rules, which means registering as a money services business and holding state licenses or an exemption. The EU requires authorization as a crypto-asset service provider under MiCA, and Brazil licenses virtual asset service providers through its central bank. Ask a lawyer for your specific setup."
  - q: "If I use an on-ramp API, do I still need to do KYC?"
    a: "You usually collect the KYC data and the provider verifies it. The provider runs the identity checks, sanctions screening, and transaction monitoring because it's the regulated party moving the money. You stay responsible for collecting accurate information, keeping it up to date, and not letting unverified people pay through your account."
  - q: "What is KYT in a crypto on-ramp?"
    a: "KYT, or know your transaction, is ongoing monitoring of each payment after onboarding. It looks at amounts, frequency, counterparties, and patterns to flag activity that doesn't fit the customer's profile. A flagged on-ramp payment is usually held for a manual review instead of being rejected outright."
  - q: "What is the difference between KYC and KYB?"
    a: "KYC verifies an individual: identity document, date of birth, address, and a sanctions check. KYB verifies a business: registration documents, the beneficial owners who own or control it, its directors, and its line of business. KYB usually takes a manual review, while standard KYC can be automated."
  - q: "What happens if my customer's on-ramp payment is flagged?"
    a: "It's put on hold while the provider's compliance team reviews it. If they can't clear it internally, they'll ask you for information such as the purpose of the payment and the relationship between the payer and your customer. Answer quickly: on BlindPay, an unanswered request after 24 hours may end in a refund to the sender."
  - q: "Can a platform use one on-ramp account for all of its customers?"
    a: "Not if those customers' money moves through it unseen. Regulated providers need to see every party whose funds they move. A platform that pools many customers' deposits under its own account without registering them is nesting, which most providers prohibit. Register each customer with the provider instead."
---

A crypto on-ramp is generally regulated as a money transmitter or a virtual asset service provider, so it must run KYC, AML, sanctions screening, and transaction monitoring on everyone who pays in. When you integrate one through an API, the provider runs those checks. You still own the data you collect, the customers you bring, and your own licensing questions.

*This article is general information, not legal advice. Compliance obligations depend on your jurisdiction, your business model, and your contract with the provider. Talk to counsel before you rely on any of it.*

## Key takeaways

- The provider is the regulated party for the conversion. It verifies identities, screens sanctions, monitors transactions, and files reports.
- You collect the data, keep it accurate, and make sure only verified customers pay through your account.
- Every party whose money moves needs to be visible to the provider. Pooling unregistered end customers under your account is nesting.
- Holds are part of the system. Plan who answers a request for information, and how fast.
- Whether you need your own license depends on whether you ever take possession of the money. That's a question for a lawyer, not a blog post.

## What compliance checks does a crypto on-ramp run?

Seven checks, each with a different job.

| Term | What it means | When it runs |
| --- | --- | --- |
| KYC (know your customer) | Verifying an individual's identity | Onboarding, and again when data changes |
| KYB (know your business) | Verifying a company, its owners, and its directors | Onboarding, and on periodic review |
| AML (anti-money laundering) | The program of policies, controls, and reporting that prevents laundering | Always |
| CFT (countering the financing of terrorism) | The same program, aimed at terrorist financing | Always |
| KYT (know your transaction) | Monitoring each payment for unusual patterns | Every transaction |
| Sanctions screening | Checking people, companies, and wallet addresses against lists like OFAC's SDN list | Onboarding and every transaction |
| Travel rule | Passing originator and beneficiary data with a transfer between providers | Transfers above the local threshold |

KYC and KYB answer "who is this?". KYT answers "does this payment make sense for them?". [What is KYB](/resources/more/what-is-kyb) goes deeper on business checks, and [the travel rule for off-ramps](/resources/more/travel-rule-stablecoin-off-ramps) covers thresholds by country.

## What do regulators expect from on-ramps?

Four primary sources set the frame. Read them directly; summaries, including this one, drop detail.

- **FinCEN (US).** The [2019 guidance on convertible virtual currency](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-certain-business-models) treats businesses that accept and transmit virtual currency as money transmitters, with registration, AML program, recordkeeping, and reporting duties. You can check a provider's registration in the [MSB registrant search](https://www.fincen.gov/msb-registrant-search).
- **OFAC (US).** The [sanctions compliance guidance for the virtual currency industry](https://ofac.treasury.gov/media/913571/download?inline) expects screening of customers and wallet addresses, and a risk-based sanctions program.
- **FATF (global).** The [updated guidance on virtual assets and VASPs](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-rba-virtual-assets-2021.html) sets the standard most countries copy: customer due diligence, monitoring, and the travel rule.
- **EU.** [MiCA](https://eur-lex.europa.eu/eli/reg/2023/1114/oj) requires crypto-asset service providers to be authorized, and the [Transfer of Funds Regulation](https://eur-lex.europa.eu/eli/reg/2023/1113/oj) applies the travel rule to crypto transfers with no minimum amount.

The pattern is the same everywhere: know who's paying, watch what they do, screen against sanctions, keep records, and report what looks wrong. [What is a VASP](/resources/more/what-is-a-vasp) explains how the FATF definition maps onto local licenses.

## Who is responsible for what when you integrate an on-ramp API?

The provider runs the regulated checks. You run your business honestly on top of them. The split below is typical; your contract and your jurisdiction decide the real one.

| Task | On-ramp provider | Your company |
| --- | --- | --- |
| Collect identity and business data | Defines what's required | Collects it from your users, accurately |
| Verify identity (KYC) and businesses (KYB) | Runs the checks and decides | Passes the data and the documents through |
| Sanctions screening | Screens customers, payers, and wallets | Doesn't onboard people you know are sanctioned |
| Transaction monitoring (KYT) | Monitors and holds suspicious payments | Answers requests for information |
| Suspicious activity reports | Files them with its regulator | Reports concerns through the provider's channel |
| Travel rule data | Exchanges it with other providers | Supplies accurate sender and recipient details |
| Terms of service | Publishes them | Makes sure each customer accepts them |
| Your own licensing | Not its responsibility | Yours to assess with counsel |
| End customers behind your customers | Requires them to be registered | Registers them; doesn't pool them |

Two rows trip people up. The first is data quality: the provider verifies what you send, so a sloppy onboarding form becomes a compliance problem downstream. The second is the last row, covered next.

## What is nesting, and why do on-ramps prohibit it?

Nesting is moving money for a party the provider can't see. If one customer's account carries deposits that economically belong to many other businesses or people, and the provider never onboarded them, the structure is nested.

Signs of nesting:

- Funds in the account belong to someone other than the onboarded customer.
- Invoices or contracts name a different entity than the account holder.
- One account collects for several underlying businesses.
- Each sub-account or virtual account represents a different third party's money.

Regulators treat this as a way to hide who's really behind a payment, which is why providers prohibit it. The fix is visibility: register each end customer with the provider, or have the business that serves them onboard as its own direct customer.

## Do you need your own license if you use an on-ramp API?

Maybe. It depends on what your product does with the money, and only a lawyer who has read your flow of funds can answer it.

The questions that usually decide it:

1. Does money ever land in an account you control, even for a moment?
2. Do you hold stablecoins or fiat on behalf of users?
3. Do you set the exchange rate, or does the provider?
4. Are your users individuals, businesses, or both, and in which countries?

A product that only passes data to a licensed provider, with funds moving straight from the payer to the provider and stablecoins straight to the user's own wallet, sits in a different place than one that collects funds first. [Do merchants need a license to accept stablecoins](/resources/more/do-merchants-need-a-license-to-accept-stablecoins) walks through a related version of the question.

## What does a good on-ramp compliance flow look like?

Six stages, in order:

1. **Onboarding.** Collect the data, accept the terms, run KYC or KYB.
2. **Risk scoring.** Higher-risk countries, business types, or structures get enhanced review.
3. **Limits.** Each verification tier gets per-transaction, daily, and monthly limits.
4. **Monitoring.** Every payin is screened and scored as it happens.
5. **Holds and requests for information.** Flagged payments pause for a human, who may ask you questions.
6. **Decision.** Release, refund, or escalate, and keep the record.

The stages after onboarding are where integrations break. A product that handles approval but has no screen for "in review" will generate support tickets on day one. [Real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) shows a flagged payment from start to finish.

## How should you think about compliance across countries?

Don't build a table of rules per country. It goes stale. Build a checklist of what varies, and ask the provider how it handles each one in your markets:

- **Licensing regime.** Money transmitter, VASP, payment institution, or something new, like Brazil's VASP rules covered in [PSAV Brazil explained](/resources/more/psav-brazil-explained).
- **Identity documents and tax IDs.** CPF and CNPJ in Brazil, CUIT and CUIL in Argentina, NIT in Colombia.
- **Enhanced review.** Which countries trigger manual checks.
- **Travel rule thresholds.** These differ, and some markets apply the rule with no minimum.
- **Data protection.** Where identity data is stored and who processes it.
- **Stablecoin rules.** Some markets regulate the token itself, like the US under the [GENIUS Act](/resources/more/genius-act-for-businesses) and the EU under MiCA.

## What 12 questions should you ask a provider about compliance?

1. Which licenses or registrations do you hold, in which entities, and where can I verify them?
2. Who verifies identity: you, or a vendor you rely on?
3. Which fields and documents are required for KYC and for KYB?
4. How long do automated and manual reviews take?
5. Which countries trigger enhanced review, and which can't onboard at all?
6. What are the default limits per tier, and how do customers raise them?
7. Do you screen wallet addresses as well as people?
8. How are flagged payments held, and how will you contact us?
9. How long do we have to answer a request for information, and what happens if we don't?
10. Can we answer requests for information through the API?
11. How do you handle end customers of our customers?
12. Which business activities do you prohibit, and which need extra disclosure?

Write the answers into your vendor file. [Stablecoin payments provider due diligence](/resources/more/stablecoin-payments-provider-due-diligence) has the wider set of 30 questions.

## How does BlindPay split compliance with you?

BlindPay handles the compliance layer: you collect the data, and BlindPay verifies it. Every payment flows through a verified customer.

- **KYC and KYB levels.** KYC Standard for individuals is automated and takes about 60 seconds. KYC Enhanced is required for individuals from high-risk countries and is reviewed manually, as is KYB Standard for businesses, in 3 hours to 1 business day.
- **Every customer is registered.** Every customer on your platform must be registered as a customer in BlindPay. If one of your customers is itself a money transmitter, its end customers must be registered too.
- **Terms of service.** Each customer accepts BlindPay's terms before onboarding, and again when the terms change.
- **Limits per tier.** Payins and payouts have separate limits. Per transaction, KYC Standard starts at $10,000, KYB Standard at $30,000, and KYC Enhanced at $50,000, with a limit-increase flow backed by documents.
- **Transaction monitoring with on-hold review.** BlindPay's KYT flags suspicious payins and payouts and puts them `on_hold`. The compliance team reviews each one and may send a request for information. If it isn't answered within 24 hours, the payment may be refunded to the sender.
- **Requests for information through the API.** When a customer's review needs more data, a `customer.update` webhook signals `compliance_request`, and you fetch and answer the request with the RFI endpoints.
- **Nesting rule.** You can't move money through your account for parties BlindPay can't see. A business rejected for nesting can onboard as its own BlindPay instance, at no extra cost, and register its customers there.

The details are in the docs for [KYC requirements](/docs/kb/kyc), [on-hold transactions](/docs/kb/on-hold-transactions), and [nested payments](/docs/kb/nested-payments).

**When BlindPay is the right fit:** you want compliance handled inside the API, with KYC, KYB, monitoring, and holds visible as statuses and webhooks you can build screens around. **When it isn't:** you want to run your own identity verification and only buy liquidity, or your business falls under BlindPay's [prohibited activities](/docs/kb/prohibited-activities).

## What to do next

Draw your flow of funds on one page: where the payer's money goes, who holds it at each step, and whose wallet the stablecoins reach. Mark who verifies each party. Take that page to your provider and your lawyer. Most compliance surprises show up as a box on that page that nobody owns.

If you're still choosing a provider, [business vs consumer crypto on-ramps](/resources/more/business-vs-consumer-crypto-on-ramps) explains why business on-ramps verify more than consumer ones. [Integrating a crypto on-ramp API](/resources/more/how-to-integrate-a-crypto-on-ramp-api) shows where the KYC, hold, and request-for-information statuses appear in code.

*This article is general information, not legal, tax, or financial advice. Regulations change, and obligations depend on your jurisdiction and contracts; confirm with qualified counsel.*

---

Source: https://blindpay.com/resources/more/custodial-vs-non-custodial-off-ramps

---
title: "Custodial vs non-custodial off-ramps: who holds the money, and what happens if the provider fails"
seoTitle: "Custodial vs non-custodial off-ramps: the risk difference"
description: "A custodial off-ramp holds your stablecoins; a non-custodial one pulls them only at payout. What changes in insolvency, de-banking, and failed payouts."
date: "2026-09-26"
updated: "2026-09-26"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between custodial and non-custodial off-ramps?"
    a: "A custodial off-ramp holds your stablecoins in a balance it controls until you pay out. A non-custodial off-ramp leaves them in your own wallet and pulls only the quoted amount at the moment a payout executes. The difference is who controls the funds while they wait."
  - q: "Is a non-custodial off-ramp safer?"
    a: "It removes one risk: the provider holding your balance when something goes wrong with the provider. It doesn't remove the others. During the payout itself the provider controls the funds in either model, and a payout can still be held for compliance review or fail at the bank. Non-custodial shrinks the window of exposure from weeks to the length of a payout."
  - q: "What happens to my stablecoins if a custodial off-ramp goes bankrupt?"
    a: "It depends on the legal structure of the account. In the Celsius bankruptcy, a US court ruled in January 2023 that assets in Earn accounts belonged to the company, which left those customers as unsecured creditors. Ask any custodial provider in writing how customer funds are held, in whose name, and whether its terms treat your balance as your property."
  - q: "Does BlindPay hold customer funds?"
    a: "For payouts from external wallets, no. The stablecoins stay in the customer's wallet until a payout executes, and the on-chain approval is scoped to the quoted amount. BlindPay also offers managed wallets, in beta, which BlindPay custodies on the customer's behalf for teams that don't want to sign transactions. A refunded payout returns the stablecoins to the wallet that funded it."
  - q: "What should I look for in a stablecoin off-ramp provider?"
    a: "Start with risk: where your funds sit between deposit and payout, how many banking partners pay out in each corridor, which licensed entity serves each one, and what happens to funds when a payout fails. Then check the commercial side: published pricing, fee splits in every quote, live quotes with expiry, and an OpenAPI spec with a sandbox that behaves like production."
---

A custodial off-ramp holds your stablecoins in a balance it controls until you pay out. A non-custodial off-ramp leaves them in your wallet and pulls only the quoted amount at the moment a payout executes. For most of the time, that's a small operational difference. It becomes the only difference that matters on the day the provider goes insolvent, loses its bank, or freezes withdrawals.

Every "which off-ramp" comparison lists speed, coverage, and fees. This one is about the other question: whose money is it while it waits?

## What does custody mean in an off-ramp?

Custody is control of the keys, or of the account, that holds the stablecoin between the moment you decide to pay and the moment fiat lands.

In a **custodial** model you deposit stablecoins with the provider first. They sit in the provider's wallets, credited to you on its internal ledger, and you pay out from that balance whenever you want. It's convenient. It's also a claim on the provider, not an asset in your hands.

In a **non-custodial** model the stablecoins stay in a wallet you control. When you want to pay out, you request a quote, authorize the provider to pull that exact amount, and the provider converts it and sends fiat. Before that call, the provider has nothing of yours.

## How does the money move in each model?

| | Non-custodial (BlindPay, external wallet) | Custodial balance |
| --- | --- | --- |
| Where funds sit before payout | Your wallet | The provider's wallets, on its ledger |
| Who can move them | Only you, until you authorize a payout | The provider |
| What you authorize | The quoted amount, per payout | Everything in the balance, once, at deposit |
| If the provider becomes insolvent | Your wallet balance is untouched | You may be a creditor of the estate |
| If the provider loses its bank | Stablecoins stay in your wallet; you can use another off-ramp | Balance can be stuck until banking returns |
| Pre-funding | None | The deposit is pre-funding |
| Convenience | An approval step per payout, unless you use a managed wallet | No signing per payout |

Neither model makes the provider's job disappear. During the payout itself, both hand the funds to the provider: it collects the stablecoin, converts it through a liquidity provider, and sends fiat from its own bank account. What non-custodial changes is how long that exposure lasts. Minutes per payout, instead of however long a balance sits.

## What happens if the provider becomes insolvent?

This isn't hypothetical. In the Celsius bankruptcy, a US bankruptcy court ruled in January 2023 that the crypto in customers' Earn accounts belonged to Celsius under its terms of use. Those customers became unsecured creditors in their own money. FTX's collapse in November 2022 showed the other failure: customer balances that were not where the ledger said they were.

A payments provider isn't a lending platform, and most custodial off-ramps don't lend out balances. But the legal question is the same. When a custodian fails, what you get back depends on how the balance was held: segregated or pooled, in your name or the provider's, and what the terms of service say about ownership. Stablecoin laws focus mostly on issuers and their reserves. An intermediary holding your tokens is a separate question.

A non-custodial payout sidesteps it. Funds that never left your wallet aren't part of anyone else's estate.

## What happens if the provider loses its bank?

Off-ramps need banks to send fiat, and banks drop fintech and crypto clients faster than most people expect. In March 2023, Silvergate announced its wind-down and Signature Bank was closed within days of each other, and a long list of crypto companies lost their US dollar rails over a single weekend.

For a **custodial** customer, a de-banked provider means a balance you can see and can't use until the provider finds a new bank. For a **non-custodial** customer, it means one off-ramp stopped working. The stablecoins are still in your wallet, and you can route the next payout through another provider the same day.

That's why banking-partner concentration belongs on every due-diligence list, custodial or not.

## What does non-custodial not protect you from?

Be honest about the limits.

- **Compliance holds.** A payout that is being reviewed is in the provider's hands. On BlindPay, a hold can last up to 30 days before it's approved or fails.
- **Failed payouts.** A refunded payout returns the stablecoins to the funding wallet right away. A failed one doesn't refund automatically and needs support. [Are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible) explains why the on-chain leg is final once it confirms.
- **Rail and liquidity partners.** Someone still converts the stablecoin and someone still sends the bank transfer. A non-custodial model doesn't change how many partners sit behind each corridor.
- **Your own key management.** If your wallet is compromised, a non-custodial provider can't help. Custody moves to you, along with the responsibility.

## What 8 questions should you ask an off-ramp provider about risk?

1. **Where do my funds sit between deposit and payout?** A good answer names the wallet and who controls it, for every product. "In your wallet until you execute" and "in our omnibus wallet, credited to your ledger" are both honest answers. Vague ones aren't.
2. **If you custody funds, in whose name, and are they segregated?** Ask for the terms of service clause that governs ownership, not a sales summary.
3. **What happens to my balance if you become insolvent?** A good answer references a legal structure, not a promise.
4. **How many banking partners pay out in each of my corridors?** One bank per corridor is a single point of failure. Ask what happened the last time a partner changed.
5. **Which licensed entity serves each corridor?** Check it against a published [licenses page](/licenses), and see [what is a VASP](/resources/more/what-is-a-vasp) for what the licenses mean.
6. **What happens to funds when a payout fails, and how fast?** The answer should distinguish a refund of the stablecoin from a failure that needs manual work, and give timings for each.
7. **Do you require pre-funded balances?** Pre-funding is custody by another name. [What no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) covers the models.
8. **Can I leave without moving a balance?** If your funds already live in your own wallet, switching providers is an integration project, not a withdrawal.

These sit on top of the commercial checks: corridor coverage, live quotes, settlement speed, and API quality, covered in [how to choose an on/off ramp provider](/resources/more/how-to-choose-on-off-ramp-provider) and [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api). Compliance depth is its own topic: [the travel rule for off-ramps](/resources/more/travel-rule-stablecoin-off-ramps) and [off-ramp limits](/resources/more/stablecoin-off-ramp-limits).

## How does BlindPay handle custody?

BlindPay supports both models and says which one each product uses.

- **External wallets (non-custodial).** The stablecoins stay in the customer's wallet until a payout executes. The customer authorizes only the quoted amount: an ERC-20 approve on EVM chains, a signed transaction on Stellar, or a token delegation on Solana. See [payouts](/docs/payouts).
- **Managed wallets (custodial, beta).** BlindPay custodies the balance on the customer's behalf, so there's no client-side signing. Useful for teams that don't want to run key management.
- **Offramp wallets.** Deposit addresses that BlindPay creates and manages, which convert each deposit to fiat as it lands; see [what is an off-ramp wallet](/resources/more/what-is-an-off-ramp-wallet).

A refunded payout returns the stablecoins to the wallet that funded it, and nothing has to be parked in advance for an external-wallet payout. For wires, BlindPay sends SWIFT payments on behalf of the customer (POBO/COBO), with UETR tracking and MT103 confirmations, from the same API.

Pick the model per flow, not per company. Put payouts you control on an external wallet, and use managed or offramp wallets only where the convenience is worth the custody. Then run the eight questions above against every provider on your shortlist, including us.

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

---

Source: https://blindpay.com/resources/more/on-ramp-or-off-ramp-which-does-your-product-need

---
title: "On-ramp, off-ramp, or both? How to tell which stablecoin API your product needs"
seoTitle: "On-ramp vs off-ramp: which stablecoin API do you need?"
description: "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."
date: "2026-09-26"
updated: "2026-09-26"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do I know if my product needs an on-ramp or an off-ramp?"
    a: "Follow the money. If it starts in a bank account and has to end up as USDC or USDT in a wallet, you need an on-ramp. If it starts as stablecoins and has to land in someone's bank account in local currency, you need an off-ramp. If your product collects from one party in fiat and pays another party in fiat, you need both."
  - q: "Does a payroll platform need an on-ramp or an off-ramp?"
    a: "Mostly an off-ramp. A payroll platform that already holds stablecoins, or funds pay runs in stablecoins, only needs to pay workers in their local currency over rails like Pix, SPEI, or ACH. It needs an on-ramp too if the employer funds payroll by bank transfer in dollars. In that case the on-ramp runs once per pay run, and the off-ramp once per worker."
  - q: "What happens if a stablecoin off-ramp payment cannot settle?"
    a: "The payout ends in a terminal status, and what happens to the money depends on which one. A refund returns the stablecoins to the wallet that funded the payout. A failed status means the payout did not complete, and with some providers it is not refunded automatically, so your operations team has to open a case. Ask each provider which outcome applies to bank rejections."
  - q: "Is it cheaper to use one provider for both the on-ramp and the off-ramp?"
    a: "Often, but not always. One provider means one KYB, one ledger, one webhook format, and no fee for moving stablecoins between two vendors. It also means the provider prices both conversions, so compare the total cost of the round trip, not each leg alone. Two specialist providers can win on a single corridor where one has deeper liquidity."
  - q: "Do on-ramps and off-ramps have the same compliance requirements?"
    a: "The core checks are the same: verify the customer, screen against sanctions lists, and monitor transactions. What changes is the counterparty. On an on-ramp, the provider checks who sent the bank transfer. On an off-ramp, it checks who receives the money and the bank account details. Both directions can trigger Travel Rule data collection when a transfer crosses between providers."
  - q: "How long does an on-ramp take compared with an off-ramp?"
    a: "Both are usually set by the bank rail, not the blockchain. Instant rails such as Pix and SPEI move in seconds to minutes in either direction. ACH and wires follow business days and cut-offs, so a deposit sent late Friday may not arrive until the next banking day. The onchain leg on most payment chains confirms in seconds to minutes."
---

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](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp) covers the definitions, and [types of stablecoin APIs](/resources/more/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-ramp | Off-ramp |
| --- | --- | --- |
| Direction | Bank account to wallet | Wallet to bank account |
| Input | Fiat bank transfer | USDC or USDT |
| Output | Stablecoins in a wallet | Local currency in a bank account |
| Typical rails | ACH, wire, Pix, SPEI, SWIFT in | Pix, SPEI, ACH, RTP, SEPA, SWIFT out |
| Typical user | Merchants, employers funding payroll, treasuries | Payroll platforms, marketplaces, importers |
| Key risk | Deposits that arrive without the right reference | Wrong bank details or a recipient name mismatch |
| Example product | A US virtual account that settles deposits to USDC | Paying 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 case | Direction | Why | Test first |
| --- | --- | --- | --- |
| Contractor payroll | Off-ramp (on-ramp if the employer funds in fiat) | Workers want local currency | A batch with one invalid bank account |
| Remittance | Both | Sender pays in fiat, recipient gets fiat | Total cost of both conversions on one corridor |
| Marketplace seller payouts | Off-ramp, often both | Buyers pay by card or bank, sellers want local currency | Payouts to many new recipients in one day |
| Merchant collections | On-ramp | Customers pay by bank transfer, the merchant settles in stablecoins | A deposit missing its reference code |
| B2B collections from abroad | On-ramp | Foreign clients wire dollars to a named account | A SWIFT deposit with intermediary fees deducted |
| Supplier payments | Off-ramp | Suppliers invoice in local currency | Name matching on business accounts |
| Treasury funding | On-ramp | Moving bank cash into stablecoins | Large deposits near the rail's cut-off |
| Treasury exit | Off-ramp | Moving stablecoins back to a bank | Per-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](https://www.banxico.org.mx/services/interbanking-electronic-payme.html) payments should take no more than 30 seconds. ACH follows banking days; [Nacha](https://www.nacha.org/content/how-ach-payments-work) 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](https://www.bcb.gov.br/en/financialstability/pix_en), 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](/resources/more/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](/resources/more/how-to-choose-on-off-ramp-provider) has the scoring method.

On compliance, both legs carry the same core checks. FATF's [guidance on virtual assets](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-rba-virtual-assets-2021.html) 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.

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

BlindPay answers these per rail in its docs: [payins](/docs/payins) for the on-ramp side and [payouts](/docs/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.

---

Source: https://blindpay.com/resources/more/stablecoin-card-fees-explained

---
title: "Stablecoin card fees explained: spread, FX markup, ATM, and hidden costs"
seoTitle: "Stablecoin card fees: spread, FX markup, ATM costs"
description: "How to calculate the real cost of a stablecoin card: spread, FX markup, top-up, ATM, and inactivity fees, with a worked $1,500 example and a checklist."
date: "2026-09-26"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to calculate the all-in cost of a stablecoin card"
  steps:
    - name: "Estimate monthly spend"
      text: "Write down total monthly card spend, the share spent in a currency other than the stablecoin's, and expected ATM withdrawals."
    - name: "Price the conversion spread"
      text: "Compare the card's conversion rate with the mid-market rate on the same day and apply the difference to all spend."
    - name: "Add the FX markup"
      text: "Apply the card's FX markup to the share of spend in foreign currencies."
    - name: "Add top-up and ATM fees"
      text: "Apply load fees above any free allowance, and ATM fees above any free monthly quota."
    - name: "Add fixed fees"
      text: "Include subscription, inactivity, card issuance, and reissue fees spread over a month."
    - name: "Divide by money moved"
      text: "Divide total monthly cost by the total amount spent and withdrawn to get the effective rate, then compare cards on that number."
faq:
  - q: "What fees does a stablecoin card charge?"
    a: "The usual cost items are the conversion spread between the card's rate and the mid-market rate, an FX markup on foreign-currency purchases, top-up or load fees on prefunded cards, ATM fees above a free quota, and fixed fees such as subscriptions, inactivity, and card reissue. Not every card charges all of them."
  - q: "Is a zero-fee crypto card really free?"
    a: "Rarely. A card can advertise no transaction fee or no FX fee and still earn on the conversion spread. Coinbase, for example, advertises no transaction fees on Coinbase Card spending but notes that a spread applies when crypto is converted. Compare the effective rate, not the headline fee."
  - q: "How much FX markup do crypto cards charge?"
    a: "NGIBANK's March 2026 crypto debit card guide puts FX markup at commonly 1.5% to 3% on crypto cards, versus 0% to 1% on good fintech debit cards. Some cards charge less: KAST's fee page lists 0.5% to 1.75% on non-USD spend. Check the live fee page before choosing."
  - q: "How much are ATM fees on a stablecoin card?"
    a: "Many cards give a small free monthly quota, then charge a percentage. NGIBANK's March 2026 guide gives an example of about EUR 200 a month free, then 1.5% to 2%. KAST's fee page lists $3 plus 2% per ATM withdrawal. The ATM operator may add its own fee on top."
  - q: "What is the conversion spread on a stablecoin card?"
    a: "The conversion spread is the difference between the rate the card uses to turn your stablecoins into the purchase currency and the mid-market rate at the same moment. It is often not listed as a fee, which is why a card can say 'no fees' and still cost you money on every purchase."
---

The real cost of a stablecoin card is the sum of five items: the conversion spread, the FX markup on foreign purchases, top-up fees, ATM fees, and fixed fees like subscriptions or inactivity charges. "No fee" cards often move cost into the spread. Compare cards on one number: total monthly cost divided by money spent.

This guide shows how to calculate that number, with a worked example and a checklist of questions to send any card provider. If you are new to how these cards work, start with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card).

**Key takeaways**

- FX markup is commonly 1.5% to 3% on crypto cards, versus 0% to 1% on good fintech debit cards, per [NGIBANK's crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide) (March 2026).
- Prefunded cards often charge 1% to 2% per load above a free monthly allowance, per the same guide.
- "No FX fee" can mean the cost sits in the conversion spread instead.
- ATM withdrawals usually have a small free quota, then 1.5% to 2% (NGIBANK), plus any fee the ATM operator adds.
- Always compare the effective rate on your own spending pattern, not the headline fee.

## What fees does a stablecoin card charge?

Most stablecoin cards charge some mix of five cost items. Some are listed as fees, and some are built into the exchange rate.

| Cost item | What it is | Typical range or example | Where to find it |
| --- | --- | --- | --- |
| Conversion spread | Difference between the card's rate and the mid-market rate | Often not published; compare rates yourself | Transaction history vs a mid-market rate |
| FX markup | Extra percentage on purchases in a currency other than the card's | 1.5% to 3% on crypto cards, 0% to 1% on good fintech debit cards (NGIBANK, March 2026) | Fee schedule |
| Top-up or load fee | Charge to load a prefunded card | 1% to 2% per load above a free allowance (NGIBANK, March 2026) | Fee schedule |
| ATM fee | Charge per cash withdrawal | Small free quota, then 1.5% to 2% (NGIBANK); KAST lists $3 + 2% | Fee schedule, plus ATM operator |
| Fixed fees | Subscription, issuance, inactivity, reissue | Varies by provider and tier | Terms and fee page |

**Mid-market rate:** the midpoint between the buy and sell price of a currency pair at a given moment. It is the fairest reference rate and the one to compare a card's rate against.

**FX markup:** a percentage a card adds to the network's exchange rate when you pay in a foreign currency.

## Why can a "zero fee" card still cost money?

Because the spread is a cost even when it is not called a fee. A card that charges nothing per transaction can still give you a worse rate than the market.

Coinbase is a clear example of how the wording works. It advertises no transaction fees on Coinbase Card spending, and its [fee help page](https://help.coinbase.com/en/coinbase/trading-and-funding/coinbase-card/cb-card-fees-tax) notes that a spread applies when crypto is converted. That is a fair disclosure, but it means "no fees" and "no cost" are different claims.

The same applies to "no FX fee". Gnosis Pay is listed by [Coin Bureau's card roundup](https://coinbureau.com/analysis/best-crypto-debit-cards) (updated March 2026) as adding no FX markup beyond the Visa exchange rate. KAST's [fee page](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts) lists 0% on USD card spend and 0.5% to 1.75% on non-USD spend. Both are specific, checkable claims. Fees change, so read the live page before you choose.

## How do you calculate the all-in cost of a stablecoin card?

Add every cost for a typical month, then divide by the money you moved. That gives you an effective rate you can compare across cards.

1. **Estimate monthly spend.** Total card spend, the share in a foreign currency, and ATM withdrawals.
2. **Price the conversion spread.** Compare the card's rate with the mid-market rate on the same day. Apply the difference to all spend.
3. **Add the FX markup.** Apply it only to foreign-currency purchases.
4. **Add top-up and ATM fees.** Only on amounts above the free allowance or quota.
5. **Add fixed fees.** Subscriptions, inactivity, and reissue fees, spread across the month.
6. **Divide by money moved.** Total cost divided by total spend plus withdrawals.

[Stablecoin FX slippage and live quotes](/resources/more/stablecoin-fx-slippage-live-quotes) explains how to read the gap between a quoted rate and the rate you actually get.

## Worked example: two cards at $1,500 a month

This example is illustrative. The cards are hypothetical and the numbers show the method, not any real provider's pricing.

Assume a cardholder who holds USDC and each month spends $1,500 by card, $600 of it at merchants abroad in another currency, and withdraws $200 from an ATM. Total money moved: $1,700.

**Card A, "no FX fee", just-in-time.** No load fee. Conversion spread of 1.0% on all money moved. No advertised FX markup, but a further 1.5% spread on foreign-currency purchases. ATM 2% with no free quota.

**Card B, prefunded.** Load fee of 1.5% above a $1,000 monthly free allowance. Conversion spread of 0.5% at load. FX markup of 2%. ATM withdrawals free up to $250 a month.

| Cost item | Card A | Card B |
| --- | --- | --- |
| Conversion spread | 1.0% of $1,700 = $17.00 | 0.5% of $1,700 = $8.50 |
| FX cost on $600 foreign spend | 1.5% hidden in rate = $9.00 | 2% markup = $12.00 |
| Load fee | $0 | 1.5% of $700 above allowance = $10.50 |
| ATM fee on $200 | 2% = $4.00 | $0 (within quota) |
| Total monthly cost | $30.00 | $31.00 |
| Effective rate on $1,700 | 1.76% | 1.82% |

The two cards land within a dollar of each other, even though Card A advertises "no FX fee" and Card B shows four fee lines. Change the pattern and the gap opens. A cardholder who spends $1,000 at home and never uses an ATM pays $10 on Card A and $5 on Card B. A traveler who spends all $1,500 abroad and withdraws $200 pays $43.50 on Card A and $49.00 on Card B.

That is the whole point of the method: the cheapest card depends on how you use it. For card programs that also fund and pay out through bank rails, [stablecoin off-ramp fees explained](/resources/more/stablecoin-off-ramp-fees-explained) covers the cost on the cash-out side.

## Which fees depend on the card type?

The funding model and card type decide which fees apply. Prefunded cards charge to load. Just-in-time cards usually charge through the spread at each purchase.

| Card type | Fees most likely to apply |
| --- | --- |
| Just-in-time stablecoin card | Conversion spread per purchase, FX markup, ATM |
| Prefunded or top-up card | Load fee above allowance, spread at load, FX markup, ATM, inactivity |
| Exchange-linked crypto debit card | Spread on the crypto sold, FX markup, possible tier or staking requirements |
| Self-custodial spend card | Network fees to move funds into the card account, FX at network rate or with markup |

[Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards) explains the two funding models, and the [comparison of card types](/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit) covers the rest.

## What should you ask a stablecoin card provider about fees?

Ask for numbers, in writing, for each cost item. A provider that cannot answer these is hiding cost somewhere.

1. What rate do you use to convert stablecoins at purchase, and how does it compare with the mid-market rate?
2. Is there an FX markup on foreign-currency purchases, and how much?
3. Do you charge to load or top up, and is there a free allowance?
4. What are the ATM fees, and what is the free monthly quota?
5. Are there subscription, tier, or staking requirements to get the advertised rates?
6. Is there an inactivity fee, and after how long?
7. What does a replacement or reissued card cost?
8. Which stablecoins and chains can I fund from, and what does each deposit cost?

## Where does BlindPay fit?

For card program operators, the card fee is only part of the cost. Moving money in from bank accounts and out to local bank accounts has its own spread and fees.

BlindPay covers those two legs. On the way out, it converts USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO). Every payout starts with a [live quote](/docs/payout-quotes) that shows the rate and fees before the stablecoins move, so the operator sees the full cost up front. BlindPay has published plans with no volume floor, and per-transaction fees vary by rail and network and appear in the quote. On the way in, [US virtual accounts](/docs/virtual-accounts) cost $1.50 a month per account and convert each bank deposit into USDC or USDT.

[Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) breaks down the spread and fee items on the API side.

## How to compare stablecoin cards today

Pull your last three months of card spending, apply the six-step method to two or three candidate cards, and choose the one with the lowest effective rate on your own pattern. Then check the live fee page again before you fund it.

If you run a card program and need to price the funding and payout legs, request a live quote on a free BlindPay development instance through the [payout quickstart](/docs/quickstart-payout). For the full picture of how card programs are built, see [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Sources

- NGIBANK, [Crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide), March 3, 2026
- Coin Bureau, [Best crypto debit cards](https://coinbureau.com/analysis/best-crypto-debit-cards), updated March 11, 2026
- KAST, [Fees and conditions for KAST cards and accounts](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts)
- Coinbase, [Coinbase Card fees and taxes](https://help.coinbase.com/en/coinbase/trading-and-funding/coinbase-card/cb-card-fees-tax)

---

Source: https://blindpay.com/resources/more/stablecoin-card-issuing-platforms-compared

---
title: "Stablecoin card issuing platforms compared: Bridge, Rain, Stripe Issuing, and where BlindPay fits"
seoTitle: "Stablecoin card issuing platforms compared (2026)"
description: "Bridge, Rain, and Stripe Issuing with Bridge compared layer by layer from their own pages, plus the funding and payout layer BlindPay runs around a card."
date: "2026-09-26"
updated: "2026-09-26"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are the main stablecoin card issuing platforms in 2026?"
    a: "Three documented options stand out. Bridge issues stablecoin-linked Visa cards through one API, with cards issued by Lead Bank. Rain says it is a Visa and Mastercard principal member that settles with the networks daily in stablecoins. Stripe Issuing integrates with Bridge so cards spend just in time from a stablecoin wallet. Each one runs the card layer, and a payments provider such as BlindPay handles bank funding and local payouts."
  - q: "What is the difference between Bridge cards and Stripe Issuing with Bridge?"
    a: "Both use Bridge for the stablecoin side. With Stripe Issuing, per Stripe's docs, customers and the KYC cards endorsement live in Bridge, while cards and spend webhooks run on the Stripe API. Funding can come from a Bridge custodial wallet, a Privy non-custodial wallet, or another non-custodial wallet with an onchain approval. Teams already building on Stripe usually pick this path."
  - q: "Does Rain settle card transactions in stablecoins?"
    a: "Rain says it does. Its homepage states that Rain settles card transactions with card networks daily using stablecoins, and that it holds principal memberships with Visa and Mastercard. Its own explainer adds that settlement happens every day, including weekends and holidays, so partners do not need to pre-fund several days of spending. Those are Rain's claims, so confirm terms in your contract."
  - q: "Which stablecoin card platform is best for local-currency payouts?"
    a: "None of the card issuers is built around local-currency payouts, because their job is the card. For moving stablecoins out to bank accounts over Pix, SPEI, ACH, RTP, SEPA, or SWIFT (POBO/COBO), BlindPay is the strongest fit in a card stack. It also funds stablecoin balances from US bank transfers through virtual accounts, with KYC and KYB inside the same API."
  - q: "How should I compare stablecoin card issuing platforms fairly?"
    a: "Compare layers, not logos. Ask who holds the card network membership, who the BIN sponsor bank is, whether settlement with the network runs in stablecoins or fiat, which custody models are supported, where KYC happens, and which countries are live today. Then check the layers around the card: how money gets into the stablecoin balance and how it leaves to local bank accounts."
  - q: "Can I use more than one provider in a stablecoin card program?"
    a: "Yes, and most programs do. A common setup is a card issuer for the card, wallet, and network settlement, plus a separate provider for bank deposits into stablecoins and payouts to local bank accounts. The layers connect through wallets and webhooks, so each provider does the job it was built for and you avoid building banking rails yourself."
---

*Reading time: about 8 minutes.*

**Summary:** The leading documented stablecoin card issuing platforms in 2026 are Bridge, Rain, and Stripe Issuing with Bridge. All three run the card layer: issuance, network connection, and spending from a stablecoin balance. The layers around the card, funding from bank deposits and paying out to local bank accounts, are where BlindPay fits.

**Key takeaways**

- Bridge issues stablecoin-linked Visa cards through one API. Its card is issued by Lead Bank and managed by Bridge Ventures, LLC, per Bridge.
- Rain says it is a Visa and Mastercard principal member and settles with the networks daily in stablecoins.
- Stripe Issuing with Bridge splits the work: customers and KYC in Bridge, cards and spend webhooks in Stripe.
- No card issuer covers every layer. Compare them on who holds which role, custody, settlement, and live countries.
- BlindPay runs the funding and local payout layer next to any of them.


This comparison uses only each provider's own published pages, dated where they carry a date. It does not rank providers on price, because none of the three publishes a self-serve card price list on the pages reviewed. If you are new to the topic, start with [what a stablecoin card is](/resources/more/what-is-stablecoin-card-issuing) and the [developer guide to issuing cards through an API](/resources/more/how-to-issue-stablecoin-cards-api).

## What does a stablecoin card platform actually provide?

A stablecoin card platform gives you a card that spends from a stablecoin balance, plus the bank and network relationships behind it. The merchant still gets paid in local currency. What differs between platforms is which roles they hold directly and how the stablecoin side works.

A card program has a few layers. Terms first:

- **BIN sponsor:** the licensed bank that owns the card number range (BIN) and carries regulatory responsibility for every card on it.
- **Issuer-processor:** the system that receives each authorization request and approves or declines it.
- **Program manager:** the company that designs the card product and owns the cardholder relationship.
- **Network settlement:** the daily movement of money between the issuer and the card network, in fiat or, for some programs, in stablecoins.
- **Funding layer:** how money gets into the stablecoin balance the card spends from.
- **Payout layer:** how money leaves the stablecoin balance to a bank account in local currency.

A card platform covers the first four. The last two are a separate job. For a walkthrough of a single purchase across these layers, see [the developer guide to issuing cards through an API](/resources/more/how-to-issue-stablecoin-cards-api).

## How do Bridge, Rain, and Stripe Issuing compare on the card layer?

All three issue cards that spend from stablecoins. Bridge leads with a Visa partnership and a single API. Rain leads with its own network memberships and daily stablecoin settlement. Stripe Issuing with Bridge leads with Stripe's card APIs on top of Bridge wallets.

| Card layer | Bridge | Rain | Stripe Issuing with Bridge |
|---|---|---|---|
| Card network | Visa, per Visa and Bridge | Visa and Mastercard principal member, per Rain | Visa cards via Bridge, per Stripe and Bridge |
| Issuing bank | Lead Bank issues the Prepaid Debit Visa Card, managed by Bridge Ventures, LLC, per Bridge | Rain describes holding the network memberships directly | Stripe works with its BIN sponsor and partners, per Stripe's docs; commercial cardholders accept Lead Bank terms |
| Network settlement | Card transactions can settle onchain with Visa through Bridge's partnership with Lead Bank, per Visa (March 2026) | Daily settlement with the networks in stablecoins, including weekends and holidays, per Rain | Bridge pulls funds onchain at authorization; network settlement handled by the program partners |
| Custody models | Custodial (issuer holds funds) or non-custodial (smart contracts pull at purchase), per Bridge | Check with Rain | Bridge custodial wallet, Privy non-custodial wallet, or any non-custodial wallet with an onchain approval, per Stripe |
| Live countries | 18 countries in March 2026 (Visa); 30 countries with one integration in April 2026 (Bridge) | Check with Rain | Same Bridge country set, per Bridge's April 2026 post |
| Who runs KYC | Bridge | Check with Rain | Bridge: KYC and cards endorsement in the Bridge Dashboard, per Stripe |
| Onboarding time | Check with Bridge | Check with Rain | Live launch 6 to 8 weeks after onboarding starts, per Stripe's docs |

Three details matter more than they look.

**Country counts move fast.** Visa reported Bridge cards live in 18 countries on March 3, 2026. Bridge reported 30 on April 29, 2026, with a goal of 100+ by the end of the year. Ask for the live list on the day you sign.

**Settlement method is a balance sheet question.** A fiat-settled program parks cash at the issuing bank to cover settlement lag. Rain says fiat settlement with the network "typically takes two business days" and that companies keep "three to five days of projected spending volume in reserve". Daily stablecoin settlement shrinks that buffer.

**KYC timing is strict on the Stripe path.** Stripe's docs say the Bridge cards endorsement requires KYC within the past 24 hours and is revoked after 24 hours if no card is created. Build card creation into the onboarding flow, not as a later step.

## How do the platforms handle the money around the card?

The card platforms are built for spending. Getting bank money into the stablecoin balance, and getting stablecoins out to a local bank account, are separate flows. Here is the funding and payout layer, with BlindPay first.

| Funding and payout layer | What it covers |
|---|---|
| BlindPay | US virtual accounts in the customer's own name that convert ACH, wire, and SWIFT deposits into USDC or USDT in a linked wallet. Payins from Pix, SPEI, Transfers 3.0, and PSE. Payouts to local bank accounts over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, Domestic Wire, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations. KYC and KYB in the same API. |
| Bridge | Orchestration and virtual accounts alongside its card program, per Bridge's product pages. The [BlindPay vs. Bridge comparison](/compare/bridge) covers its rails. |

A card stack usually needs both directions. A cardholder in Mexico tops up with SPEI. A freelancer in Brazil spends part of a USDC balance on the card and sends the rest to a bank account over Pix. The card platform handles the swipe. The funding and payout provider handles the bank legs.

## Which platform is best for which job?

Pick by the job, not by the brand. Each provider below is the strongest documented option for one part of a card program.

1. **BlindPay: best for local-currency payouts and bank-deposit funding in a card stack.** Use it when cardholders need to top up from a bank account or cash out to Pix, SPEI, ACH, SEPA, or SWIFT (POBO/COBO).
2. **Bridge: best for a stablecoin-linked Visa card through one API.** Use it when you want the card, wallets, and onchain Visa settlement from one provider across its live countries.
3. **Rain: best for programs that want an issuer with its own network memberships.** Use it when daily stablecoin settlement with Visa or Mastercard and a smaller settlement reserve are the priority, per Rain's own claims.
4. **Stripe Issuing with Bridge: best for teams already on Stripe.** Use it when you want Stripe's card APIs, spending controls, and webhooks, with Bridge handling the stablecoin wallet and KYC.

## How do you run a fair comparison for your own program?

Write your requirements first, then score each provider against the same list. A demo shows the happy path. The questions below show the edges.

1. List your cardholder countries and card currencies. Remove any provider that is not live there today.
2. Ask each provider which roles it holds directly: network membership, BIN sponsorship, processing, program management.
3. Ask how settlement with the network works, in stablecoins or fiat, and how many days of reserve you need.
4. Ask which custody models are supported and who holds the stablecoins between top-up and spend.
5. Ask where KYC runs, how long approval takes, and what happens to rejected cardholders.
6. Map the funding and payout flows: how cardholders top up from a bank, and how they cash out to one.
7. Run a sandbox authorization, a decline, and a refund on every shortlisted provider before signing.

Score each answer from 1 to 3 and keep the notes. A provider that cannot answer question 2 in writing is telling you something. For where settlement with the networks stands today, see [stablecoin settlement at the network level](/resources/more/what-is-stablecoin-card-issuing#stablecoin-settlement-at-the-network-level).

## Where does BlindPay fit?

BlindPay is the funding, conversion, and local payout layer around a stablecoin card program. The card issuer runs the card. BlindPay moves money into and out of the stablecoin balance behind it.

On the way in, each cardholder or business can get a [US virtual account](/virtual-accounts) in its own name. ACH, wire, and SWIFT deposits convert to USDC or USDT and arrive in the wallet linked at creation. In Latin America, payins over Pix, SPEI, Transfers 3.0, and PSE do the same with local payment instructions.

On the way out, stablecoins convert to local currency over Pix, SPEI, ACH Colombia, Transfers 3.0, ACH, RTP, Domestic Wire, SEPA, and SWIFT (POBO/COBO). Every quote shows the fee breakdown and the exact amount the recipient receives before you execute. Payouts are funded at send time, with no pre-funded balance per country. KYC and KYB run inside the same API, and BlindPay is registered with FinCEN as a Money Services Business.

Read the [payouts documentation](/docs/payouts) or [talk to the team](/contact).

## What to read next

- [What is stablecoin card issuing?](/resources/more/what-is-stablecoin-card-issuing)
- [How to issue stablecoin-funded cards through an API](/resources/more/how-to-issue-stablecoin-cards-api)
- [Crypto debit card vs. stablecoin card for business](/resources/more/crypto-debit-card-vs-stablecoin-card-for-business)
- [Compliance for stablecoin card issuing](/resources/more/stablecoin-card-issuing-compliance)

## Sources

- Bridge, [Global card issuance with stablecoins explained](https://bridge.xyz/learn/stablecoin-payments-global-card-issuance) (March 16, 2026)
- Bridge, [Stablecoin-backed cards are now integrated with Stripe Issuing](https://bridge.xyz/blog/stablecoin-backed-cards-are-now-integrated-with-stripe-issuing) (April 29, 2026)
- Visa, [Bridge-enabled stablecoin-linked cards live in 18 countries](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.22206.html) (March 3, 2026)
- Rain, [homepage](https://www.rain.xyz) and [Fiat vs. stablecoin cards](https://www.rain.xyz/resources/fiat-vs-stablecoin-cards)
- Stripe, [Issue stablecoin-backed cards with Bridge](https://docs.stripe.com/issuing/bridge-stablecoin-cards)

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

---

Source: https://blindpay.com/resources/more/what-is-stablecoin-infrastructure

---
title: "What is stablecoin infrastructure? The 8 layers of a stablecoin payments stack"
seoTitle: "What is stablecoin infrastructure? The 8 layers explained"
description: "Stablecoin infrastructure is the stack that issues, moves, converts, secures, and checks stablecoins. Here are its 8 layers and who provides each."
date: "2026-09-26"
updated: "2026-09-26"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is stablecoin infrastructure in simple terms?"
    a: "Stablecoin infrastructure is everything that lets a business use a stablecoin like a normal payment method: the issuer and its reserves, the token contract, the blockchain, wallets and custody, payment APIs, on-ramps and off-ramps, compliance checks, and the local bank rails at each end. A business rarely runs all of it. It picks which layers to own and which to buy."
  - q: "Who provides stablecoin infrastructure?"
    a: "Different companies at each layer. Issuers such as Circle and Tether mint and redeem the tokens. Blockchain networks such as Ethereum, Solana, and Tron move them. Wallet and custody providers hold keys. Payment APIs and ramps convert between stablecoins and local currency, and banks or payment institutions connect to rails like ACH, Pix, and SPEI. Compliance vendors or the payment provider itself run KYC, KYB, and screening."
  - q: "Do you need a crypto wallet to use stablecoin infrastructure?"
    a: "Not always. Some payment APIs let a business send a bank transfer in and pay a bank account out, with the stablecoin leg happening behind the API. Others expect you to hold stablecoins in a wallet you control and sign each transfer. The choice changes who holds funds at each step, so ask every provider to draw the flow and mark custody on it."
  - q: "Is stablecoin infrastructure the same as a stablecoin API?"
    a: "No. A stablecoin API is one layer of the stack, the interface your software calls to quote, send, receive, or convert stablecoins. Stablecoin infrastructure is the whole stack underneath it, including issuance, the blockchain, custody, compliance, and the bank rails at each end. A good API hides several of those layers, but they still exist and still carry risk."
  - q: "How big is the stablecoin payments market in 2026?"
    a: "Allium's State of Stablecoins and Payments report, published September 15, 2026, puts stablecoin payments at $401 billion to $527 billion for January to August 2026, up 42% to 63% year over year. The same report finds $85 trillion of total transfer volume but only $4.0 trillion of real economic activity once exchange, DeFi, and infrastructure transfers are removed."
  - q: "Should a company build its own stablecoin infrastructure?"
    a: "Only if money movement is the product and you can carry the licensing, liquidity, and bank relationships yourself. Most fintechs buy the conversion, compliance, and local rail layers from a payment API, and build only the parts customers see. Building on the chain directly is fast to start and slow to finish, because the bank and compliance layers take the longest."
---

Stablecoin infrastructure is the set of systems that issue, move, convert, secure, and check stablecoins so a business can use them like any other payment method. It runs from the issuer's reserves through the blockchain to the local bank rail that pays the recipient. Most companies buy most of it and build only what their customers touch.

Think of it like card payments. A merchant doesn't run Visa's network, the issuing bank, or the fraud models. It plugs into a processor that stitches those pieces together. Stablecoin payments work the same way, with different pieces.

**Key takeaways**

- A stablecoin payments stack has eight layers: issuance and reserves, smart contracts, blockchain networks, wallets and custody, payment APIs, on-ramps and off-ramps, compliance, and local payment rails.
- The blockchain is the fast part. The slow, regulated parts are the bank rails and compliance at each end.
- Each layer has a different owner, and each owner can fail in its own way. Map custody at every step.
- Allium counted $85 trillion in stablecoin transfers from January to August 2026 but only $4.0 trillion of real economic activity, so read market numbers carefully.
- Most businesses buy conversion, compliance, and local payouts from one API and build the product layer themselves.

## What is stablecoin infrastructure?

Stablecoin infrastructure is the full stack behind a stablecoin payment: the token, the network it moves on, whoever holds it, the software that moves it, and the banks and checks that connect it to real currency.

A **stablecoin** is a token designed to hold a steady value against a currency, usually the US dollar, backed by reserves the issuer holds. [What is a stablecoin](/resources/more/what-is-a-stablecoin) covers the token itself. This page is about everything around it.

The word "infrastructure" matters because a stablecoin on its own pays nobody. A supplier in São Paulo wants reais in a bank account. A contractor in Mexico City wants pesos. Getting from a dollar balance to that bank credit takes several layers, and each layer is a business decision.

## What are the 8 layers of a stablecoin payments stack?

Eight layers sit between a sender's dollars and a recipient's local currency. Every stablecoin payment touches all eight, even when one provider hides most of them.

| Layer | What it does | Who typically provides it | Question to ask a vendor |
| --- | --- | --- | --- |
| 1. Issuance and reserves | Mints tokens against deposits, redeems them for cash, holds the backing assets | Regulated issuers such as Circle (USDC) and Tether (USDT) | Which stablecoins do you support, and who issues them? |
| 2. Smart contracts | The token contract that records balances and enforces rules such as freezes | The issuer, deployed on each chain | Do you use the issuer's native token contract on each chain, or a bridged version? |
| 3. Blockchain networks | Records and finalizes transfers | Public chains such as Ethereum, Solana, Tron, Polygon, Base, and Stellar | Which networks do you settle on, and for which tokens? |
| 4. Wallets and custody | Holds the private keys that control funds | The business itself, a custodian, or an embedded wallet provider | Who holds the keys at each step of a payment? |
| 5. Payment APIs and orchestration | Quotes, routes, executes, and reports payments through one interface | Stablecoin payment APIs and orchestration platforms | What does one API call cover, end to end? |
| 6. On-ramps and off-ramps | Converts local currency to stablecoins and back | Ramp providers, exchanges, payment APIs | Is the rate locked in a quote, and for how long? |
| 7. Compliance | KYC, KYB, sanctions screening, transaction monitoring, Travel Rule | The payment provider, compliance vendors, or both | Which checks do you run, and which stay with us? |
| 8. Fiat and local payment rails | Delivers or collects local currency in bank accounts | Banks and licensed institutions connected to ACH, Pix, SPEI, SEPA, and SWIFT | Which rails do you pay out on, and how fast do they land? |

A few notes on the layers that cause the most surprises:

- **Issuance** is a credit decision. The token is only as good as the reserves and the redemption process behind it. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares the two largest.
- **Networks** differ in fees, speed, and which tokens exist on them. [The best network to off-ramp stablecoins](/resources/more/best-network-to-off-ramp-stablecoins) walks through the trade-offs.
- **Custody** decides who is exposed if a provider fails. [Custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets) explains the three models.
- **Payment APIs** come in several types, from issuer APIs to payout APIs. [The types of stablecoin APIs](/resources/more/types-of-stablecoin-apis) sorts them.

## How does money move through the stack?

Money moves through the stack in a fixed order: local currency in, stablecoin across, local currency out, with compliance checks at each handoff. Here's a US business paying a supplier in Brazil.

1. **The business is onboarded.** The provider runs KYB on the company and its owners. Nothing moves until this clears (layer 7).
2. **The supplier is added.** The business registers the supplier's payout details, for Brazil usually a Pix key. The provider screens the recipient (layers 7 and 8).
3. **A quote is created.** The business asks to pay a fixed amount of reais. The provider returns the exchange rate, fees, and the stablecoin amount needed, valid for a short window (layer 5).
4. **Dollars become stablecoins.** If the business holds dollars, an on-ramp converts them into USDC or USDT (layers 1 and 6). If it already holds stablecoins, this step is skipped.
5. **Stablecoins move on-chain.** The tokens transfer to the provider's settlement address on a chosen network and reach finality in seconds to minutes (layers 2, 3, and 4). [What happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) breaks this step down.
6. **Stablecoins become reais.** An off-ramp sells the stablecoins for BRL at the quoted rate (layer 6).
7. **Reais land over Pix.** A licensed local institution sends the reais to the supplier's account over Pix, Brazil's instant payment system (layer 8).
8. **Everyone reconciles.** The business receives status updates and references it can match to its ledger (layer 5).

With a payout API such as BlindPay, steps 3 through 8 are a quote and a payout call: stablecoins go in, and Pix comes out. [How to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) shows the same flow from the sender's side.

## What does the stablecoin payments market look like?

Stablecoin payments are growing fast from a small base, and headline transfer volumes overstate them by a wide margin.

Allium's [State of Stablecoins and Payments report](https://www.allium.so/reports/state-of-stablecoins-and-payments-september-2026), published September 15, 2026, counts:

| Measure (January to August 2026 unless noted) | Allium figure |
| --- | --- |
| Total stablecoin transfer volume | $85 trillion |
| Real economic activity after removing exchange-internal, DeFi, and infrastructure transfers | $4.0 trillion |
| Stablecoin payments | $401 billion to $527 billion, up 42% to 63% year over year |
| Share of payments received by businesses | 58% to 64% |
| Business-to-business payments, the largest lane | $137 billion to $153 billion |
| Share of geo-attributed payment volume that is domestic | 61% |
| Cross-border growth in 2025 | 64% for stablecoin payments vs 9% for conventional fiat rails |
| Stablecoin share of global retail cross-border payment value | 0.31% |
| Stablecoin supply, August 2026 | $303 billion, with Tether and Circle at 85% |

Two readings follow from those numbers. First, the gap between $85 trillion and $4.0 trillion means most on-chain volume is trading and plumbing, not payments. Be careful with any vendor that quotes raw transfer volume. Second, 0.31% of retail cross-border value is still a sliver. The growth is real, and the market is early.

## Who needs stablecoin infrastructure, and who doesn't?

Companies that move money across borders, hold dollars for users in other countries, or need payments outside banking hours get the most from it. Companies with only domestic, low-value, card-based flows usually don't.

**Good fits:**

- Fintechs and neobanks offering dollar accounts or cross-border transfers to users in Latin America and other emerging markets.
- Platforms paying contractors, sellers, or creators in many countries.
- Companies paying suppliers in corridors where wires are slow or FX spreads are wide.
- Businesses that already hold stablecoins and need to pay bills or payroll in local currency.

**Limitations and poor fits:**

- **Domestic card or ACH flows.** If both sides are in the US and a card or ACH works, a stablecoin adds steps without much gain.
- **Regulated entities with restrictions.** Some banks and funds can't hold or transact in stablecoins under their own rules or their regulator's.
- **Corridors without a good off-ramp.** The on-chain leg is fast everywhere. The local payout isn't available everywhere.
- **Teams that can't own compliance.** KYC, KYB, sanctions, and Travel Rule still apply. If no provider in your stack covers them, you do.
- **Issuer and network risk.** A stablecoin can lose its peg, and an issuer can freeze addresses. Those risks don't disappear because the payment is fast.

[When not to use blockchain payments](/resources/more/when-not-to-use-blockchain-payments) goes deeper on the poor fits.

## What are the build vs buy options?

There are three ways to put the stack together: build directly on the chains, assemble several vendors, or use one API that covers conversion, compliance, and payouts. The right one depends on how much of the stack is your product.

| Option | What you own | Pros | Cons | Time to launch | Compliance burden |
| --- | --- | --- | --- | --- | --- |
| Build on chains directly | Wallets, keys, node access, liquidity, bank partners, licenses | Full control, no vendor margin | Licensing and bank relationships per country; custody risk is yours | Longest, often a year or more | Highest: you run the program |
| Assemble multiple vendors | The integrations and the logic between them | Pick a specialist per layer | Several contracts, reconciliation across vendors, gaps between their compliance scopes | Medium | Split, and the gaps are yours |
| One payout and collection API | The product and customer experience | One integration, one contract, one reconciliation source | Less control over routing; you depend on the provider's corridors | Shortest | Shared, with the split written down |

[Build vs buy for stablecoin payments](/resources/more/build-vs-buy-stablecoin-payments) has the longer version of this table. Whichever you pick, the [stablecoin provider due diligence questions](/resources/more/stablecoin-payments-provider-due-diligence) are the checklist for each vendor.

## Which regulations shape stablecoin infrastructure?

Rules for issuers shape which tokens a stack can use, and rules for payment and virtual asset providers shape who can run the ramps and payouts.

In the US, the [GENIUS Act](https://www.congress.gov/119/bills/s1582/BILLS-119s1582enr.htm), signed July 18, 2025, creates a federal framework for payment stablecoins and their issuers. In the EU, [MiCA (Regulation (EU) 2023/1114)](https://eur-lex.europa.eu/eli/reg/2023/1114/oj) governs stablecoins as e-money tokens and asset-referenced tokens. Each country with a local rail also has its own rules for the institution that pays out. [The GENIUS Act for businesses](/resources/more/genius-act-for-businesses) and [MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) cover the two big frameworks, and the [2026 stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) follows the rest.

This section is for information only and is not legal advice.

## How does BlindPay fit into stablecoin infrastructure?

BlindPay sits in layers 5 through 8: one API for quotes, on-ramps and off-ramps, compliance checks on customers, and local payouts. It isn't a stablecoin issuer, a consumer wallet, or a card issuer.

What that covers, from the [BlindPay docs](/docs/introduction):

- **Payouts** from USDC or USDT to bank accounts over Pix, SPEI, ACH, RTP, SEPA, Transfers 3.0 in Argentina, ACH Colombia, and SWIFT (POBO/COBO), funded from an external wallet or a managed wallet balance ([payment methods](/docs/kb/payment-methods)).
- **Payins** over ACH, wire, SWIFT, Pix, SPEI, and other local rails, delivered as stablecoins to a wallet.
- **Nine networks**: Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron, with token support that varies by chain ([supported chains](/docs/kb/supported-chains)).
- **Compliance in the flow**: every payment runs through a customer that has passed KYC or KYB.
- **Quotes that lock rate and fees** for a short window before you execute.

On custody: payouts funded from an external blockchain wallet stay non-custodial, since BlindPay can't access or freeze funds in a wallet you control. Managed wallets, a beta product, are BlindPay-custodied. When a payout ends as `refunded`, the stablecoins return to the funding source; a `failed` payout isn't refunded automatically ([payouts](/docs/payouts)).

Want to see the layers working? Run a test payout from the [payout quickstart](/docs/quickstart-payout) on a free development instance.

---

Source: https://blindpay.com/resources/more/why-google-rate-differs-from-quote

---
title: "Why is the rate on Google different from my off-ramp quote?"
seoTitle: "Why the Google exchange rate differs from your quote"
description: "Google shows a delayed mid-market reference. An off-ramp quote is a price you can execute. Why the two differ, and how to measure the gap in bps."
date: "2026-09-26"
updated: "2026-09-26"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Why is the exchange rate on Google different from what I get?"
    a: "Google shows a mid-market reference rate from a data provider, delayed by a few minutes and shown for information. Your quote is a price you can execute: it sits on one side of the market, includes the provider's spread and fees, and holds for a window. Those four things open a gap even when nobody is overcharging you."
  - q: "Is the Google exchange rate the real rate?"
    a: "It is a real reference, not a real price. The mid-market rate is the midpoint between wholesale buy and sell prices, and nobody executes at a midpoint for free. Google itself says it cannot guarantee the accuracy of the rates displayed and that you should confirm current rates before making any transaction."
  - q: "Can I get the Google rate when I off-ramp stablecoins?"
    a: "Not as a free executed price. Someone has to cover the spread, the fees, and the risk of holding the price while you confirm. Some providers advertise the mid-market rate and charge a separate fee, others build the cost into the rate. Compare the amount that lands in the bank account, not the headline rate."
  - q: "How do I compare an off-ramp quote to the market rate?"
    a: "Capture the reference rate and the quote in the same minute. Then compute the gap in basis points: (reference rate minus your effective rate) divided by the reference rate, times 10,000. At BlindPay, compare commercial_quotation to the reference first, then blindpay_quotation to commercial_quotation, so you can tell data timing apart from margin and fees."
  - q: "What is commercial_quotation in a BlindPay quote?"
    a: "It is the raw market exchange rate at the moment BlindPay created the quote. Next to it, blindpay_quotation is the rate net of BlindPay's fee. The difference between the two is the provider's cost on the conversion, visible before you execute. The amount the bank account receives is in receiver_amount, in minor units."
---

The rate on Google is a delayed mid-market reference: the midpoint between wholesale buy and sell prices, shown for information. An off-ramp quote is a price you can actually execute, on one side of the market, with the provider's spread, fees, and risk for the quote window built in. So the two rarely match, and they shouldn't.

The useful question isn't "why is it different?" It's "how much of the difference is fair?" This guide splits the gap into its parts, shows the arithmetic on a USDC to BRL payout, and gives a rule for when a gap is a red flag.

**Key takeaways**

- Google shows currency prices from a data provider with a short delay, and says to confirm rates before you transact.
- The mid-market rate is a reference. Nobody executes at the midpoint for free.
- An off-ramp quote differs because of side of the market, spread, fees, timing, and the risk of holding the price for a window.
- Measure the gap in basis points, captured in the same minute, against the amount that actually lands.
- On a BlindPay quote, `commercial_quotation` vs `blindpay_quotation` shows the provider's cost before you send.

## What rate does Google actually show?

A mid-market reference rate, slightly delayed. Google's [finance data disclaimer](https://www.google.com/googlefinance/disclaimer/) says currency prices are provided by Morningstar, lists a delay of 3 minutes for currencies, and states that "Google cannot guarantee the accuracy of the exchange rates displayed. You should confirm current rates before making any transactions."

The mid-market rate is the midpoint between the price buyers bid and the price sellers ask in the wholesale market. Wise's [guide to the mid-market rate](https://wise.com/gb/blog/mid-market-rate) describes it the same way, and notes it is the rate you see when you search a currency pair online. The [glossary for this cluster](/resources/more/onramp-offramp-liquidity-glossary) uses the same definition.

Two words matter there: midpoint and reference. A midpoint is not a price anyone sells at. A reference is not a commitment. Central banks say this out loud: the ECB publishes its [euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) around 16:00 CET each working day "for information purposes only" and strongly discourages using them for transactions.

## Why doesn't an off-ramp quote match the Google rate?

Because a quote is a price you can execute, and executing has costs that a reference rate doesn't carry. Six things open the gap:

| Source of the gap | What happens | How to see it on a quote |
| --- | --- | --- |
| Side of the market | You sell USDC for BRL, so you get the buy (bid) side, not the midpoint | Compare the quote's market rate to the reference |
| Provider margin | The provider earns a spread on the conversion | Market rate vs rate after fees |
| Fees | Flat or percentage fees, plus any partner markup your platform adds | Itemized fee fields |
| Timing | The reference is minutes old. The quote is priced now | Capture both in the same minute |
| Window risk | The provider holds the price for minutes and prices that risk in | Expiry time on the quote |
| Size | Large amounts can run past the cheapest liquidity | Quote two sizes at once |

None of these is a trick on its own. The first three are the cost of the service. The last three are physics: markets move, and depth is finite. Why buy and sell rates differ at all is covered in [why on-ramp and off-ramp rates differ](/resources/more/why-onramp-and-offramp-rates-differ).

What would be a problem is a gap you can't see. A provider that shows an [indicative rate](/resources/more/indicative-rate-vs-binding-quote-api) and settles later at a worse one adds a seventh source: slippage, which you never agreed to. The [FX slippage guide](/resources/more/stablecoin-fx-slippage-live-quotes) shows how to spot it.

## How do you measure the gap fairly?

Measure it in basis points, against the same minute, on the amount that actually lands. One basis point is 0.01%.

1. **Open the reference and request the quote in the same minute.** A 3-minute delay on a volatile day is enough to move BRL by several basis points.
2. **Compare the quote's market rate to the reference.** At BlindPay that's `commercial_quotation`, the raw market rate when the quote was created. A small gap here is data timing, not margin.
3. **Compare the rate after fees to the market rate.** That's `blindpay_quotation` against `commercial_quotation`. This is the provider's cost on the conversion.
4. **Check the delivered amount.** `receiver_amount` is what the bank account gets, in minor units. It's the only number the recipient cares about.

The formula for each step:

gap_bps = (reference rate - effective rate) / reference rate x 10,000

**Illustrative example.** You off-ramp 1,000 USDC to BRL. All numbers are made up for the arithmetic.

| Rate | Value | BRL for 1,000 USDC |
| --- | --- | --- |
| Google reference | 5.4000 | 5,400.00 |
| `commercial_quotation` | 5.3980 | 5,398.00 |
| `blindpay_quotation` (fees reflected in the rate here) | 5.3710 | 5,371.00 |

- Timing and data gap: (5.4000 - 5.3980) / 5.4000 x 10,000 = about 3.7 bps
- Provider cost: (5.3980 - 5.3710) / 5.3980 x 10,000 = about 50 bps
- All-in gap vs Google: (5,400.00 - 5,371.00) / 5,400.00 x 10,000 = about 53.7 bps, or R$29 on this payout

Split this way, the R$29 stops being a mystery. About R$2 is the reference being a few minutes old. About R$27 is the price of the conversion, shown before you sent anything. To put that 50 bps in context across a whole payout, [stablecoin off-ramp fees explained](/resources/more/stablecoin-off-ramp-fees-explained) compares per-transaction costs with a bank wire.

## Which reference rate should a finance team use?

It depends on the job. Pick one per job and write it down, so nobody argues about it at month end.

| Reference | What it is | Good for | Not for |
| --- | --- | --- | --- |
| Quote's market rate (`commercial_quotation`) | Raw market rate when the quote was created | Per-payment cost analysis | Accounting policies that name an official fix |
| Google or a currency site | Delayed mid-market reference | Sanity checks, rough estimates | Measuring cost to the basis point |
| Central bank fix (for example ECB) | One published rate per working day | Accounting and reporting policies that name it | Pricing a payment you send at 15:00 |

The quote's own market rate has one big advantage: it's timestamped to the exact quote. The other two are fine references, just not for a payout you priced at a specific minute.

## When is the gap a red flag?

When you can't see where it comes from. Three patterns are worth a closer look:

- **The "market rate" is far from the public reference in the same minute.** A few basis points is timing. A wide, persistent gap on a liquid pair means the market rate itself may already carry margin.
- **The rate settles worse than shown.** That's slippage. On a binding quote executed inside its window, it should be zero.
- **No itemized fees.** If the only number is a rate, you can't split margin from fees, and comparing providers becomes guesswork.

Decision rule: compare providers on delivered amount, captured in the same minute, for the same size. A quote that looks worse on rate can land more money if its fees are lower. The [USDC to BRL routes guide](/resources/more/usdc-to-brl-routes-2026) compares the paths a dollar takes into reais.

## What does the Google rate get right?

Plenty. It's free, it's everywhere, and it tells you the direction and the rough level of a currency at a glance. If your quote is 5% away from Google on USD to BRL, something is wrong, and Google is how you notice.

Just don't treat it as a price. The [USDC to BRL corridor page](/usdc-to-brl) shows an indicative rate for the same reason Google does: orientation, not execution.

## What to do next

Request a [payout quote](/docs/payout-quotes) for your corridor, open Google in the same minute, and run the three-step split above. If the provider cost on your corridor is a number you can live with, that's the rate you'll get, every time you execute inside the window.

---

Source: https://blindpay.com/resources/more/best-stablecoin-for-card-spending

---
title: "Which stablecoin is best for card spending? USDC vs USDT vs euro stablecoins"
seoTitle: "Best stablecoin for card spending: USDC, USDT, EURC"
description: "Which stablecoins power crypto cards in 2026: USDC vs USDT vs euro stablecoins and synthetic dollars, compared on reserves, rules, chains, and support."
date: "2026-09-25"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Which stablecoin is used most for card spending?"
    a: "USDC. An August 2026 a16z crypto analysis of Paymentscan onchain data found USDC carried about 58% of crypto card volume and USDT about 26%. Euro-denominated EURe, which carried about 88% in early 2024, had fallen to about 2%. Dollar stablecoins now dominate card spending."
  - q: "Is USDC or USDT better for a crypto card?"
    a: "For most cardholders, the better choice is the one your card supports on the cheapest network, with the clearer reserve reporting. USDC leads card volume, and the EU and US now both have dedicated stablecoin rules. USDT has the deepest liquidity in many emerging markets. Check which token and chain your card accepts before you fund it."
  - q: "Can I use a euro stablecoin like EURC on a card?"
    a: "Some programs accept euro stablecoins, mainly in Europe. Spending a euro stablecoin at a euro merchant avoids a currency conversion. Euro stablecoins are now a small share of card volume, though: a16z crypto's August 2026 data put EURe at about 2%, so fewer cards support them."
  - q: "Do yield-bearing or synthetic dollars like USDe work on cards?"
    a: "Card support for synthetic or yield-bearing dollar tokens is limited and varies by program. These tokens use a different design from fiat-reserve stablecoins, so their risks differ. If a card accepts one, read how the program converts it at checkout and what happens if the token trades below one dollar."
  - q: "Does the blockchain matter when funding a stablecoin card?"
    a: "Yes. The chain decides transfer fees and confirmation time, and each card supports only certain chains. a16z crypto's August 2026 data shows card volume concentrated on Optimism at about 29%, with Solana and Base at about 19% each. Sending the right token on the wrong chain can delay or lose a deposit."
---

The best stablecoin for card spending is usually USDC or USDT on a low-fee chain your card supports. Dollar stablecoins now carry most card volume: an August 2026 [a16z crypto analysis](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend) of Paymentscan data put USDC at about 58% and USDT at about 26%. Euro stablecoins fit euro spending but have fewer cards.

The token matters less than three practical questions: does your card accept it, on which chain, and how clear are its reserves and legal status. This guide compares the main options on those points. For how a stablecoin balance turns into a card payment, see [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card).

**Key takeaways**

- USDC carried about 58% of crypto card volume and USDT about 26%, per a16z crypto (August 7, 2026), citing Paymentscan onchain data.
- Euro-backed EURe fell from about 88% of card volume in early 2024 to about 2%, per the same analysis.
- Card volume clusters on a few chains: Optimism about 29%, Solana about 19%, and Base about 19%.
- MiCA has applied to EU stablecoins since June 30, 2024, and the US GENIUS Act became law on July 18, 2025.
- Pick the token your card supports on the cheapest chain you can reach, then check reserve reporting and regulatory status.

## Which stablecoins do crypto cards actually use?

Mostly dollar stablecoins. USDC leads, USDT is second, and euro stablecoins are now a small share.

**Stablecoin:** a token designed to hold a steady value against a currency, usually the US dollar, backed by reserves such as cash and short-term government debt.

The a16z crypto analysis tracked monthly crypto card volume using onchain data from Paymentscan. It found $759 million of card volume in July 2026, about 2.5 times the $306 million a year earlier. Within that volume, the token split was:

| Stablecoin | Share of card volume | Trend |
| --- | --- | --- |
| USDC | About 58% | Leading token |
| USDT | About 26% | Second |
| EURe | About 2% | Down from about 88% in early 2024 |

Source: a16z crypto, August 7, 2026, citing Paymentscan. Shares are of tracked onchain card volume, not of all stablecoin spending.

The EURe shift tells the story of the market. Early stablecoin cards were mostly European self-custodial programs that spent euro tokens. Growth since then has come from dollar-denominated programs serving users who want dollar balances.

## How do USDC, USDT, euro stablecoins, and synthetic dollars compare?

They differ on what backs them, who regulates them, and where cards accept them. The table below compares them at a high level.

| Factor | USDC | USDT | Euro stablecoins (EURC, EURe) | Synthetic or yield-bearing dollars (such as USDe) |
| --- | --- | --- | --- | --- |
| Currency | US dollar | US dollar | Euro | US dollar target |
| Backing design | Reserves reported by the issuer | Reserves reported by the issuer | Reserves reported by the issuer | Crypto collateral and hedging, not cash reserves |
| Card volume share (a16z, Aug 2026) | About 58% | About 26% | EURe about 2% | Not reported |
| Best for | Dollar spending, broad card support | Dollar spending in USDT-heavy markets | Spending at euro merchants | Holding, not everyday spending |

The [USDC vs USDT comparison for payments](/resources/more/usdc-vs-usdt-for-payments) goes deeper on reserves, attestation, and liquidity between the two dollar tokens. [What is USDC](/resources/more/what-is-usdc) covers how USDC is issued and redeemed.

## Is USDC or USDT better for spending on a card?

For most people, USDC is the safer default for cards, and USDT is the practical choice where it is the local standard. The card's own support list settles it.

USDC has the larger share of card volume, and both the EU and the US now have dedicated rules for stablecoins like it. That makes it the token more card programs are built around. USDT has deep liquidity in many emerging markets, so users who are paid or save in USDT may prefer a card that spends it directly, avoiding a swap.

Three checks matter more than brand:

1. **Card support.** Confirm the card accepts the token on the chain you plan to use.
2. **Conversion cost.** Spending a dollar token at a dollar merchant needs no FX. Spending it at a euro or peso merchant adds a conversion, and that is where most of the cost sits.
3. **Reserve reporting.** Read the issuer's latest reserve report and who audits or attests it.

## When does a euro stablecoin make sense on a card?

A euro stablecoin makes sense when you earn or hold euros and spend at euro merchants. It removes the currency conversion at checkout.

The catch is availability. With EURe at about 2% of tracked card volume in a16z crypto's August 2026 data, far fewer programs are built around euro tokens than around dollar tokens. EURC, Circle's euro stablecoin, and EURe are the names most often seen, but support differs by card.

If you spend mostly in euros, compare two setups on the same monthly spend: a euro stablecoin card with no FX, and a USDC card with a low FX markup. Euro-area users should also check that the card provider holds a license under MiCA, which [MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) covers.

## What about yield-bearing and synthetic dollars like USDe?

Treat them as a different asset class. Synthetic dollars such as USDe aim to track one dollar using crypto collateral and hedging positions, not a pool of cash and short-term bills.

That design can pay a yield, but it also adds risks that fiat-reserve stablecoins do not carry in the same way, such as the hedging positions losing value or funding rates turning negative. Card support for these tokens is limited and varies by program. If a card accepts one, read how it is converted at authorization and what the program does if the token trades below one dollar. For spending money, a fiat-reserve stablecoin is the simpler choice.

## How does regulation affect which stablecoin a card can use?

Regulation decides which stablecoins a licensed program can offer in a market. The EU and the US now have dedicated stablecoin rules.

In the EU, the stablecoin titles of [MiCA, Regulation (EU) 2023/1114](https://eur-lex.europa.eu/eli/reg/2023/1114/oj/eng), have applied since June 30, 2024, and the rest of the regulation since December 30, 2024. Licensed providers in the EU have to check which stablecoins meet MiCA before offering them, and ESMA keeps an [interim MiCA register](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica) of authorized issuers and providers.

In the US, the [GENIUS Act, Public Law 119-27](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm), was signed on July 18, 2025 and frames how payment stablecoins are issued. [The GENIUS Act explained for businesses](/resources/more/genius-act-for-businesses) covers what it means for companies that use stablecoins.

For a cardholder, the effect is simple: a card offered by a licensed program in your country will usually support only tokens that fit local rules.

## Which blockchain should you use to fund a stablecoin card?

Use a chain your card supports with low fees and fast confirmation. Card volume is concentrated on a handful of chains.

According to a16z crypto's August 2026 analysis, Optimism carried about 29% of tracked card volume, Solana and Base about 19% each, and Gnosis about 2%. Those shares reflect where the largest card programs run, not a ranking of chains.

Before funding, check:

- The exact token contract and chain the card lists for deposits.
- Network fees and confirmation time on that chain.
- Whether the program converts deposits on arrival (prefunded) or keeps them as stablecoins until purchase. [Just-in-time vs prefunded stablecoin cards](/resources/more/just-in-time-vs-prefunded-stablecoin-cards) explains the difference.

## Where does BlindPay fit?

BlindPay moves USDC and USDT in and out of bank accounts, which covers the money that a card cannot spend. Rent, payroll, and supplier invoices usually need a bank transfer.

BlindPay converts USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with a live quote that locks the rate and fees before the stablecoins move. Per the [supported chains reference](/docs/kb/supported-chains), USDC payouts run on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, and Solana, and USDT payouts on Ethereum, Polygon, Solana, Tempo, and Tron.

In the other direction, BlindPay [US virtual accounts](/docs/virtual-accounts) receive ACH, wire, or SWIFT deposits and convert each one into USDC or USDT in the linked wallet. That wallet can then fund a card program that accepts the same token and chain.

## How to choose

1. List the cards you can get in your country and the tokens and chains each accepts.
2. Match them to the stablecoin you already hold or are paid in, to avoid a swap.
3. Prefer the currency you spend in: dollar tokens for dollar spending, euro tokens for euro spending.
4. Pick the cheapest supported chain you can reach from where your funds sit.
5. Read the issuer's latest reserve report before holding a large balance.

To move the same USDC or USDT into a local bank account instead of a card, try a test payout on a free BlindPay development instance with the [payout quickstart](/docs/quickstart-payout). For the bigger picture of card programs, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Sources

- a16z crypto, [Charts: payment card stablecoin spend](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend), August 7, 2026
- European Union, [Regulation (EU) 2023/1114 on markets in crypto-assets](https://eur-lex.europa.eu/eli/reg/2023/1114/oj/eng)
- US Government Publishing Office, [Public Law 119-27 (GENIUS Act)](https://www.govinfo.gov/content/pkg/PLAW-119publ27/html/PLAW-119publ27.htm), July 18, 2025
- ESMA, [Markets in Crypto-Assets Regulation (MiCA) and interim register](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica)
- Paymentscan, [Crypto card tracker](https://paymentscan.xyz)

---

Source: https://blindpay.com/resources/more/genius-act-for-businesses

---
title: "The GENIUS Act explained for businesses that use stablecoins"
seoTitle: "GENIUS Act explained: what it means for businesses"
description: "What the GENIUS Act means if your business sends, receives, or holds stablecoins: who it regulates, the dates that matter, and what to do before 2027."
date: "2026-09-25"
updated: "2026-10-12"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What is the GENIUS Act in simple terms?"
    a: "The GENIUS Act is the US federal law for payment stablecoins, signed on July 18, 2025. It decides who may issue a dollar stablecoin, requires 1:1 reserves in cash and short-term Treasuries with monthly disclosure, bans issuers from paying interest, and, from July 18, 2028, limits the stablecoins that platforms can offer to people in the US."
  - q: "When does the GENIUS Act take effect?"
    a: "On January 18, 2027. The law takes effect on the earlier of 18 months after signing or 120 days after regulators issue final rules. No final rule was issued before September 20, 2026, the cut-off that could have moved the date earlier, so January 18, 2027 is the date."
  - q: "Do businesses need a license to use stablecoins under the GENIUS Act?"
    a: "Not to use them. The Act licenses issuers and sets rules for the platforms that offer stablecoins, not for businesses that send, receive, or hold them through a provider. Other laws still apply: a business that moves money for other people may need money transmitter licenses, and every business keeps its sanctions obligations."
  - q: "Is USDC compliant with the GENIUS Act?"
    a: "There is no final answer yet, because the licensing rules are still proposals and no issuer has been approved under them. What a business can check today is how each issuer backs and reports its reserves, and which licensing path it has said it will take. Ask your providers which stablecoins they expect to keep offering after July 18, 2028."
  - q: "Can stablecoin issuers pay interest under the GENIUS Act?"
    a: "No. Permitted issuers may not pay holders any interest or yield for simply holding, using, or keeping a payment stablecoin. Whether affiliates and platforms can offer rewards on stablecoin balances is still debated, and it was one of the disputes that stalled the CLARITY Act in the Senate."
  - q: "Did the CLARITY Act pass?"
    a: "No. The House passed the CLARITY Act in July 2025, but on September 15, 2026 the Senate vote to begin debate failed 49 to 50, short of the 60 votes needed. As of late September 2026 it is not law, and the GENIUS Act remains the federal framework for stablecoins."
---

The GENIUS Act is the US federal law for payment stablecoins, signed on July 18, 2025. It regulates the companies that issue dollar stablecoins and, from July 18, 2028, the platforms that offer them to people in the US. A business that simply sends, receives, or holds stablecoins through a provider doesn't need a GENIUS license. Its core rules take effect on January 18, 2027.

So the law mostly lands on your suppliers: the issuer behind each stablecoin you use, and every exchange, custodian, or payout provider that handles it for you. What changes for you is which stablecoins will be available, and what to ask the companies in your chain.

*This article summarizes the law and the proposed rules as of September 25, 2026. It is general information, not legal advice. Confirm your own obligations with counsel.*

## Who does the GENIUS Act apply to?

| Party | Examples | What the Act requires |
| --- | --- | --- |
| Permitted payment stablecoin issuer | A bank subsidiary, a federally approved nonbank issuer, or a state-approved issuer with up to $10 billion outstanding | Licensing, 1:1 reserves, monthly disclosure, AML and sanctions programs, no interest to holders |
| Foreign issuer | A stablecoin issuer based outside the US | Can be offered in the US only if its home regime is found comparable and it meets US conditions |
| Digital asset service provider | Exchanges, custodians, brokers, and other platforms that offer stablecoins as a business | From July 18, 2028, may only offer or sell stablecoins from permitted issuers to people in the US |
| Business user | A company that pays suppliers, collects payments, or holds a treasury balance in stablecoins through a provider | No license under the Act. Other laws, like money transmission and sanctions, still apply |
| Holder | Anyone holding a payment stablecoin | Priority claim on the issuer's reserves if it fails. No deposit insurance |

The Act also clarifies that a payment stablecoin issued by a permitted issuer is not a security or a commodity under federal law. That settles a question that kept many regulated companies away from stablecoins before 2025.

## What are the reserve, disclosure, and yield rules?

**Reserves.** Every payment stablecoin must be backed at least 1:1 by permitted assets, such as US coins and currency, demand deposits at insured banks, Treasuries with 93 days or less to maturity, overnight repurchase agreements backed by Treasuries, and government money market funds invested in those assets. Commercial paper and algorithmic backing don't qualify.

**Disclosure.** Issuers must publish the composition of their reserves every month, with the report examined by a registered public accounting firm. Issuers with more than $50 billion outstanding must also publish audited annual financial statements.

**Yield.** A permitted issuer may not pay holders any interest or yield for holding, using, or keeping the stablecoin. According to the U.S. Faster Payments Council's [July 2026 report](https://fasterpaymentscouncil.org/userfiles/2080/files/CBPWG_DAWG_Stablecoins%20as%20a%20Cross-Border%20Payment%20Method2_07-22-2026%20Final.pdf), the OCC's proposed rules go further and presume that affiliate or white-label reward arrangements violate the ban unless the issuer shows otherwise.

**Marketing.** Issuers can't present a payment stablecoin as legal tender, as guaranteed by the US government, or as federally insured. It isn't any of those. If an issuer fails, holders get priority over other creditors on the reserves, which is the protection the Act offers instead of insurance.

**Compliance.** Issuers are financial institutions under the Bank Secrecy Act. They need AML and sanctions programs, and the technical ability to freeze or block tokens when a lawful order requires it.

## What is the GENIUS Act timeline?

| Date | What happened or happens |
| --- | --- |
| July 18, 2025 | Signed into law |
| September 2025 | Treasury asks for public comment on how to implement the Act |
| December 19, 2025 | FDIC proposes how bank subsidiaries apply to issue stablecoins |
| February 25, 2026 | OCC proposes its main rule for issuers it supervises |
| April 2026 | FDIC proposes prudential standards; FinCEN and OFAC propose AML and sanctions rules for issuers; Treasury proposes principles for state regimes |
| July 18, 2026 | Statutory deadline for final rules. Missed |
| August 18, 2026 | Treasury proposes rules on issuing, offering, and selling stablecoins in the US, with comments due October 19 |
| September 24, 2026 | Federal Reserve proposes reserve, capital, and application rules for the issuers it supervises |
| January 18, 2027 | Core provisions take effect |
| July 18, 2028 | Platforms may only offer payment stablecoins from permitted issuers to people in the US |

The effective date is settled by arithmetic. The law takes effect on the earlier of 18 months after signing or 120 days after final regulations. Only a final rule issued before September 20, 2026 could have pulled the date forward, and none came. The OCC has said it aims to finalize its rule by November.

The primary documents: the [law's text on congress.gov](https://www.congress.gov/bill/119th-congress/senate-bill/1582/text), the [OCC proposal](https://www.occ.gov/news-issuances/news-releases/2026/nr-occ-2026-9.html), [Treasury's August proposal](https://www.federalregister.gov/documents/2026/08/18/2026-16796/genius-act-regulations-on-payment-stablecoin-issuance-offer-and-sale), and the [Federal Reserve's September proposals](https://www.federalreserve.gov/newsevents/pressreleases/bcreg20260924a.htm).

## What should businesses using stablecoins do now?

Most of the work is asking the right questions of your suppliers.

1. **List every stablecoin you touch, and who issues it.** For each one, find out which licensing path the issuer has said it will take: bank subsidiary, federal nonbank, state regime, or foreign issuer.
2. **Ask each provider what happens after July 18, 2028.** Exchanges, custodians, and payout providers will have to drop stablecoins that aren't from permitted issuers. Ask which ones they expect to keep.
3. **Read the reserve reports.** Check what backs each stablecoin you hold and how often it's reported. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares how the two largest issuers report.
4. **Don't plan around issuer yield.** If a provider offers rewards on stablecoin balances, have counsel review how the program is structured.
5. **Write down who handles compliance.** Split KYC, KYB, sanctions screening, and monitoring between your provider and your own team, in writing.
6. **Keep an audit trail.** Record who approved each payment, the counterparty, and the stablecoin and network used.
7. **Know your exit.** If a stablecoin you hold stops being offered, how fast can you convert it, and through whom?

[30 due diligence questions for a stablecoin payments provider](/resources/more/stablecoin-payments-provider-due-diligence) covers the provider side in more depth.

## What doesn't the GENIUS Act change?

- **AML and sanctions duties.** Anyone moving money for others keeps Bank Secrecy Act obligations, and every US person must follow OFAC sanctions. The FPC report puts it plainly: compliance requirements are the same for stablecoins as for cash-based payments.
- **Money transmission.** A business that moves stablecoins or dollars on behalf of other people may still need FinCEN registration and state money transmitter licenses. [Do merchants need a license to accept stablecoins](/resources/more/do-merchants-need-a-license-to-accept-stablecoins) covers where that line sits.
- **Deposit insurance.** A stablecoin is not a bank deposit and is not FDIC insured.
- **Rules outside the US.** The EU's [MiCA](/resources/more/mica-stablecoin-rules-explained), Brazil's [PSAV regime](/resources/more/psav-brazil-explained), and the [travel rule](/resources/more/travel-rule-stablecoin-off-ramps) still apply to cross-border flows.
- **Tax.** The Act doesn't address how stablecoin transactions are taxed.

## What is the difference between the GENIUS Act and the CLARITY Act?

| | GENIUS Act | CLARITY Act (H.R. 3633) |
| --- | --- | --- |
| Covers | Payment stablecoins and their issuers | Market structure for digital assets, including how the SEC and CFTC split oversight |
| Status as of September 25, 2026 | Law since July 18, 2025, with rules being written | Passed the House in July 2025. On September 15, 2026 the Senate vote to begin debate failed 49 to 50 |
| What it means for payment businesses | Decides which stablecoins can circulate in the US | Would have set rules for trading platforms and token classification |

The two are often mentioned together because the CLARITY Act touched stablecoins at the edges, most visibly on whether platforms can pay rewards on stablecoin balances. With it stalled, the GENIUS Act and its rules are the federal framework for now. The [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) compares it with the EU, Brazil, and Japan.

## How does BlindPay fit?

BlindPay is not a stablecoin issuer. It converts USDC and USDT to and from local currency, and pays out over Pix, SPEI, ACH, and SWIFT (POBO/COBO), with compliance built into the payment flow. BlindPay is registered with FinCEN as a Money Services Business (NMLS #2745309) and publishes its US and non-US license status on its [licenses page](/licenses).

KYC, KYB, sanctions screening, and travel rule checks run inside the API before money moves, so a business using BlindPay doesn't build those controls from scratch. Payouts from an external wallet are non-custodial: the stablecoins stay in the customer's wallet until the quoted payout executes. The customer requirements are in the [KYC reference](/docs/kb/kyc).

Start with step 1 of the checklist this week: list every stablecoin you hold or accept, and the issuer behind each one. Then send your providers the July 18, 2028 question. For how stablecoin payments work end to end, see [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

For how the Act and Visa's USDC settlement affect card programs, see [stablecoin cards in the United States](/resources/more/stablecoin-cards-united-states-regulation).

*This article is for general information only and is not legal advice.*

---

Source: https://blindpay.com/resources/more/how-to-choose-a-blockchain-payment-api

---
title: "How to choose a blockchain payment API: a technical buyer's checklist"
seoTitle: "How to choose a blockchain payment API: 7-point checklist"
description: "Seven checks for a blockchain payment API: SDKs, OpenAPI quality, abstraction level, networks, built-in compliance, local payout rails, and pricing."
date: "2026-09-25"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is a blockchain payment API?"
    a: "A blockchain payment API lets a product move money over stablecoin networks through ordinary REST calls. You create quotes, payins, and payouts; the provider handles wallets, chains, conversion between fiat and stablecoins, and the local bank rails at each end. Most business use is bank to bank, with the blockchain acting as the settlement layer in the middle."
  - q: "Do I have to pick a blockchain to use a blockchain payment API?"
    a: "Not if the API offers an abstracted mode. In BlindPay's Abstracted flavor you work with virtual accounts, payins, and bank payouts, and stablecoins settle in the linked wallet behind the scenes. Teams that want to choose the chain and token, hold their own keys, or move stablecoins cross-chain use the Advanced flavor of the same API."
  - q: "Which blockchain networks should a payment API support?"
    a: "At minimum, the major EVM chains, Solana, and Stellar, with both USDC and USDT where the network supports them, plus a testnet for each. BlindPay settles on Ethereum, Polygon, Tempo, and Solana (USDC and USDT), Base, Arbitrum, Arc, and Stellar (USDC), and Tron (USDT)."
  - q: "Should KYC and KYB be part of the payment API or a separate vendor?"
    a: "Built in is easier to run. When verification lives in the same API, every payment is tied to a verified customer and cannot execute without one, and the audit trail joining identity to money movement already exists. A separate vendor means you build and maintain that join yourself, including status syncing and re-verification."
  - q: "What is the most useful question to ask a blockchain payment API vendor?"
    a: "Ask them to show a payout that failed at the receiving bank: which status it landed in, which webhook fired, and where the funds went. The answer tests failure handling, webhook design, and whether the custody model works the way the sales deck says, all in one demo."
---

A blockchain payment API lets your product move money over stablecoin networks through ordinary REST calls. You create quotes, payins, and payouts. The provider handles wallets, chains, conversion, and the bank rails at each end. Picking one comes down to seven checks, and most of them can be done with the docs and a sandbox key before anyone books a sales call.

This checklist is for the engineering lead or PM who will live with the integration for years. The commercial questions (pre-funding, settlement speed, contract terms) are covered in [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api). This page is about the API surface itself: what you'll actually type, test, and debug.

Each section says why the criterion matters, what a good answer looks like, and how [BlindPay](/global-payments) handles it. The summary table is at the end.

## 1. Which languages do the SDKs cover?

SDKs decide how much glue code you write and how fast you notice a breaking change. A good answer is an official SDK in your backend language, versioned, and built from the same spec the API is validated against, so a field can't exist in one and not the other. Typed amounts and typed webhook payloads are a bonus that pays for itself the first time someone mixes up cents and dollars.

**BlindPay:** five official SDKs (Node.js/TypeScript, Python, Go, PHP, and Swift) wrap the same REST API. For any other language, generate a typed client from the OpenAPI spec. There is also a CLI and an MCP server for AI coding agents. How one spec keeps the SDKs in sync is covered in [stablecoin API SDKs](/resources/more/stablecoin-api-openapi-sdks).

## 2. Is the REST API documented by a real OpenAPI spec?

A downloadable, machine-readable spec lets you generate types, mock the API in tests, and diff versions in CI. Hand-written reference pages drift. Look for five things:

- An OpenAPI 3.x spec you can download without logging in
- Idempotency on every mutating request, so a retry after a timeout can't create a second payout
- Signed webhooks with a stable event ID you can deduplicate on
- Amounts as integers in minor units, never floats
- A sandbox that behaves like production, including failure states

**BlindPay:** the OpenAPI 3.1 spec downloads from `https://api.blindpay.com/doc`. Any `POST`, `PUT`, `PATCH`, or `DELETE` accepts an `Idempotency-Key` header of up to 255 characters, and a retry only replays when the body is byte-identical ([idempotency](/docs/learn/idempotency)). Webhooks are signed with `svix-id`, `svix-timestamp`, and `svix-signature` headers, and `svix-id` stays the same across redeliveries ([webhook verification](/docs/learn/webhooks-verification)). Amounts are minor units: `10000` is $100.00. The practical side of both is in [idempotency keys](/resources/more/stablecoin-api-idempotency-keys) and [webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation).

## 3. Does the API hide the blockchain, or expose it?

This is the criterion most checklists skip, and it splits buyers into two groups.

A payroll, remittance, or B2B payments product wants bank-shaped building blocks: an account number in, a bank payout out, the chain invisible. A wallet, exchange, or treasury product wants to pick the chain and token, hold its own keys, and sign authorizations. An API built for only one group forces the other into workarounds. The good answer is both, on one engine, with no second contract or second set of keys.

**BlindPay:** the docs come in two flavors of the same API. Both run on the same authentication, instances, and webhooks, and switching between them changes nothing about your account or key ([introduction](/docs/introduction)).

| Verb | Abstracted | Advanced |
| --- | --- | --- |
| Store | Value settles as stablecoin in the linked wallet | Managed wallet or external blockchain wallet |
| Receive | Bank transfer in (payin) | On-ramp: fiat in, stablecoin delivered to a wallet |
| Send | Payout to a bank account | Off-ramp: stablecoin pulled from a wallet, fiat out |
| Transfer | Not applicable | Cross-chain stablecoin transfer |

Advanced exposes the on-chain mechanics: ERC-20 `approve` on EVM chains, a signed XDR on Stellar, token delegation on Solana. Abstracted never asks you to sign anything.

## 4. Which networks does it settle on, and who picks the network?

Network choice affects fees, confirmation time, which stablecoins are available (USDT dominates on Tron, for example), and which wallets your customers already hold. For the end user, though, it's mostly noise. A good API covers the major networks, gives you a testnet for each, and lets you keep the network out of the user's way in bank-to-bank flows.

**BlindPay:**

| Network | Tokens | Testnet |
| --- | --- | --- |
| Ethereum | USDC, USDT | `sepolia` |
| Polygon | USDC, USDT | `polygon_amoy` |
| Base | USDC | `base_sepolia` |
| Arbitrum | USDC | `arbitrum_sepolia` |
| Tempo | USDC, USDT | `tempo_testnet` |
| Arc | USDC | `arc_testnet` |
| Solana | USDC, USDT | `solana_devnet` |
| Stellar | USDC | `stellar_testnet` |
| Tron | USDT | None |

Tron has no testnet. Development instances use USDB, a test token that simulates transactions without real funds, on every testnet above ([supported chains](/docs/kb/supported-chains)). USDC can move cross-chain between managed wallets through Circle's CCTP v2. What actually happens on each network between "sent" and "confirmed" is in [what happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment).

## 5. Is compliance built into the API or bolted on?

If KYC, KYB, and sanctions screening live with a separate vendor, you own the plumbing between them: status syncing, document uploads, re-verification, and the audit trail that links an identity to a payment. Built in means every payment object belongs to a verified customer and can't execute for an unverified one. Look for verification statuses in the API, a way to answer requests for information programmatically, and documented review states on payments.

**BlindPay:** every payment flows through a customer that has completed KYC. You collect the data, BlindPay verifies it. Standard KYC takes about 60 seconds; KYB takes 3 hours to 1 business day because a person reviews it ([cut-off times and SLAs](/docs/kb/cut-off-times)). Payments that need review sit in an `on_hold` status you can see and react to. More on the automation side in [how to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments).

## 6. Which local payout rails are live in production?

The stablecoin leg is the easy part. The rail at the end decides whether the recipient gets paid in minutes or in a week. A good answer names each rail, publishes a settlement window and cut-off for each, and documents the required fields per rail. "Coming soon" doesn't count.

**BlindPay:** Pix and TED in Brazil, SPEI in Mexico, Transfers in Argentina, ACH COP in Colombia, ACH, wire, and RTP in the US, SEPA in Europe, and SWIFT (POBO/COBO) to 100+ countries with UETR tracking and MT103 confirmations. Pix, SPEI, Transfers, and RTP are instant; wire, SEPA, and ACH COP take about 1 business day; ACH about 2; SWIFT about 5 ([bank accounts](/docs/bank-accounts)). The per-country breakdown is in [stablecoin payout settlement times](/resources/more/stablecoin-payout-settlement-times).

## 7. Can you see the price before you sign, and is there a volume floor?

You'll model unit economics per corridor, so you need numbers you can reproduce. Watch for three things: a minimum monthly volume commitment, a pre-funding requirement (capital parked in the provider's accounts is a cost even when it isn't a line item), and a blended rate that hides the FX spread inside one number.

**BlindPay:** plans are listed on the [pricing page](/pricing). There is no setup fee and no monthly minimum, and development instances are free. Transaction fees vary by rail and corridor, so every payin, payout, and transfer quote itemizes the fee before you execute, and the fee is locked for the life of the quote ([billing](/docs/learn/billing)). Payouts don't require pre-funding. For how to read a quote line by line, see [stablecoin API pricing](/resources/more/stablecoin-api-pricing-explained).

## What should you ask on the technical evaluation call?

Three questions, and each one exposes a different weak spot.

1. **"Show me a payout that failed at the receiving bank."** Which status did it land in, which webhook fired, and where did the money go? At BlindPay, a payout the bank rejects or returns ends `refunded` and the stablecoins go back to the wallet that funded it. A payout that ends `failed`, for example after a rejected compliance check, does not refund on its own and needs a support follow-up. A vendor that can't draw that line clearly hasn't thought about it.
2. **"Can I have the OpenAPI spec and a sandbox key today?"** If either requires a contract, your evaluation just got two weeks longer.
3. **"Which of your listed rails and networks are live in production for a company like mine, and which are beta?"** Marketing pages list everything. Production access is often narrower, and it can depend on where your company and your customers are based.

## The checklist at a glance

| Criterion | What a good answer looks like | BlindPay |
| --- | --- | --- |
| SDKs | Official SDKs in your language, generated from the spec | Node.js, Python, Go, PHP, Swift, plus CLI and MCP server |
| API design | Public OpenAPI spec, idempotency, signed webhooks, minor units | OpenAPI 3.1, `Idempotency-Key`, Svix-signed webhooks |
| Abstraction | Bank-shaped and chain-level modes on one engine | Abstracted and Advanced flavors of one API |
| Networks | EVM, Solana, Stellar, USDC and USDT, testnets | Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Solana, Stellar, Tron |
| Compliance | KYC, KYB, screening, and review states in the API | KYC in about 60 seconds, KYB in 3 hours to 1 business day |
| Payout rails | Named rails with published settlement windows | Pix, TED, SPEI, Transfers, ACH COP, ACH, wire, RTP, SEPA, SWIFT (POBO/COBO) |
| Pricing | Public plans, itemized quotes, no volume floor | Plans on /pricing, fee in every quote, no monthly minimum |

## What to do next

Run the checklist against a live sandbox, not a slide deck. Create a free BlindPay development instance, download the spec, and push one payin and one payout through end to end with the [payout quickstart](/docs/quickstart-payout). Then force a failure (a payout quote for $777.00 returns `refunded` in development) and watch what your webhook handler does with it. That hour tells you more than any vendor call.

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

---

Source: https://blindpay.com/resources/more/indicative-rate-vs-binding-quote-api

---
title: "Indicative rate vs binding quote: how to show a live price before the user commits"
seoTitle: "Indicative rate vs binding quote in a payments API"
description: "An indicative rate previews a price. A binding quote locks it. How to show a live price while the user types, then lock it before they pay."
date: "2026-09-25"
updated: "2026-09-25"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is an indicative exchange rate?"
    a: "An indicative exchange rate is a price shown for information. The provider tells you roughly what a conversion would cost right now, but does not commit to it, does not give it an ID, and does not hold it for any window. If you convert later, you get whatever the market says at that moment, not the indicative number."
  - q: "What is a binding quote in a payments API?"
    a: "A binding quote is a price the provider commits to execute at, for a stated window. It comes with a quote ID and an expiry time. If you submit the payment with that ID before it expires, the conversion settles at the quoted rate and fees. At BlindPay, payin and payout quotes stay binding for 5 minutes by default."
  - q: "Can I execute a payment at an indicative rate?"
    a: "No. An indicative rate has no ID, so there is nothing to execute against. At BlindPay, the preview endpoint POST /payin-quotes/fx returns a rate and an amount without creating anything. To move money you create a payin quote, then create the payin with that quote's ID before the quote expires."
  - q: "Why is my quote different from the preview I saw a second ago?"
    a: "Because the preview reserved nothing. The market can move between the two calls, your partner fee is not part of BlindPay's preview, the fee direction you set on the quote changes which side absorbs the fee, and MXN, COP, and ARS amounts round to whole units. Always show the quote's numbers on the confirm screen."
  - q: "How long does a BlindPay quote stay binding?"
    a: "Payin, payout, and transfer quotes expire 5 minutes after creation by default. OTC payin quotes, which are BRL only, expire in 10 seconds, and SEPA payout quotes can be shorter than 5 minutes. Read expires_at from each response, in epoch milliseconds, instead of hardcoding a window into your app."
---

An indicative rate is a price preview: the provider shows what a conversion would cost right now but does not commit to it. A binding quote is a price the provider will execute at, for a stated window, under a quote ID. Good payment UX uses both: the preview while the user types, the quote when they commit.

Most teams get this backwards. Some create a binding quote on every keystroke, which burns quotes and requests for nothing. Others show a cached rate and settle at a different one, which is [slippage](/resources/more/stablecoin-fx-slippage-live-quotes) with extra steps. This guide covers the two-call pattern, what each BlindPay response contains, and the four reasons a preview and a quote disagree.

**Key takeaways**

- An indicative rate is information. A binding quote is a commitment with an ID and an expiry.
- Show the indicative rate while the user types. Create the binding quote when they reach the confirm screen.
- At BlindPay, `POST /payin-quotes/fx` returns an indicative rate and creates nothing. `POST /payin-quotes` returns a quote that holds for 5 minutes.
- A preview can differ from the quote one second later. The confirm screen shows the quote's numbers, never the preview's.
- Locking a price has a cost, and the cost grows with the lock. That's why binding windows are measured in minutes.

## What is the difference between an indicative rate and a binding quote?

An indicative rate tells you where the price is. A binding quote tells you what you will get. The [glossary for this cluster](/resources/more/onramp-offramp-liquidity-glossary) defines both the same way: a firm (binding) quote is a price the provider commits to execute at, and an indicative rate is shown for information only.

FX markets treat the line between the two as a conduct issue. The [FX Global Code](https://www.globalfxc.org/uploads/fx_global.pdf) (updated December 2024), Principle 9, says market participants handling orders should "make clear whether the prices they are providing are firm or merely indicative." Payment APIs should be just as clear.

| | Indicative rate | Binding quote |
| --- | --- | --- |
| Provider commits to it? | No | Yes, for the stated window |
| Has an ID you can execute against? | No | Yes |
| Has an expiry? | No | Yes (`expires_at`) |
| Stored by the provider? | No | Yes |
| Who carries a market move? | You, at execution | The provider, inside the window |
| Right place in the UI | Amount field, calculators, corridor pages | Confirm screen, approval lists |
| BlindPay payin endpoint | `POST /payin-quotes/fx` | `POST /payin-quotes` |

## Why not create a binding quote on every keystroke?

Because a binding quote is a commitment, and commitments are not free. Each one asks the provider to stand behind a price for minutes, and almost all of them will expire unused if you create one per keystroke.

Three practical problems follow:

1. **Request volume.** A user typing "25000" fires five requests. On BlindPay development instances, requests are capped at roughly 100 per minute per instance, and going over returns a `429` with a `Retry-After` header ([sandbox vs production](/docs/learn/sandbox-vs-production)). A busy amount field gets there fast.
2. **Wasted windows.** The quote's clock starts at creation. A quote created while the user is still typing has already spent part of its 5 minutes before anyone looks at it.
3. **Noisy metrics.** If you track how many quotes expire before confirmation, keystroke quotes bury the real signal. You can't tell an abandoned checkout from a typo.

## How does the two-call pattern work?

Preview while the amount changes, lock when the user commits. Five steps:

1. **Amount screen opens.** Nothing is priced yet.
2. **User types.** Debounce input by 300 to 500 ms, then call the indicative endpoint and show the result as an estimate ("about 1,834 USDC").
3. **User taps Continue.** Create the binding quote. Show the quoted amounts and a countdown built from `expires_at`.
4. **User confirms.** Create the payin (or payout) with the quote ID before it expires.
5. **Quote expires first.** Request a new quote, update the numbers, and highlight the change only if the amount moved.

The [on/off-ramp liquidity guide](/resources/more/on-off-ramp-liquidity-live-quotes) explains why the window length shapes which of these screens you can afford.

## What does BlindPay's indicative endpoint return?

`POST /instances/{instance_id}/payin-quotes/fx` returns an indicative rate and amount without creating a payin quote. Per the [payin quotes docs](/docs/payin-quotes), it doesn't persist anything and doesn't reserve pricing.

```bash
curl https://api.blindpay.com/v1/instances/in_000000000000/payin-quotes/fx \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "from": "BRL",
  "to": "USDC",
  "request_amount": 10000,
  "currency_type": "sender"
}'
```

| Field | Direction | What it means |
| --- | --- | --- |
| `from` | Request | The fiat currency the payer sends, for example `BRL` |
| `to` | Request | The stablecoin the destination receives: `USDC`, `USDT`, or `USDB` on development |
| `request_amount` | Request | Minor units, minimum 500 ($5.00). MXN, COP, and ARS sender amounts must be whole units |
| `currency_type` | Request | `sender` or `receiver`, same meaning as on a payin quote |
| `commercial_quotation` | Response | The raw market rate |
| `blindpay_quotation` | Response | The rate including BlindPay's fee |
| `result_amount` | Response | The other side of the conversion |
| `instance_flat_fee` | Response | The flat-fee component |
| `instance_percentage_fee` | Response | The percentage fee, in basis points |

The preview covers the payin direction: `from` is a fiat currency and `to` is a stablecoin. On the payout side, the [payout quote](/docs/payout-quotes) itself is what you show on the confirm screen.

## What does the binding quote add?

An ID, an expiry, and every fee line. A payin quote response carries `id`, `expires_at` (epoch milliseconds), `sender_amount`, `receiver_amount`, `commercial_quotation`, `blindpay_quotation`, `flat_fee`, `partner_fee_amount`, `billing_fee_amount`, and `is_otc`.

It holds for 5 minutes by default. OTC payin quotes, BRL only and priced through BlindPay's OTC desk, hold for 10 seconds. Payout quotes also default to 5 minutes, and SEPA payout quotes can be shorter because the rail's own deadline can be tighter ([cut-off times](/docs/kb/cut-off-times)). An expired quote is rejected when you try to use it, and nothing moves. The field-by-field tour lives in [stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained).

## Why can the preview and the quote disagree?

Four reasons, and only the first one is the market.

- **Time.** The preview reserved nothing. If BRL moves between the two calls, the quote reflects the new price.
- **Partner fees.** The `/fx` endpoint takes no `partner_fee_id`, so `instance_percentage_fee` never includes your own markup. If your platform adds a partner fee, the preview looks better than the quote. Add your markup to the preview yourself.
- **Fee direction.** The binding quote takes `cover_fees`, which decides whether the payer pays the fee on top or the recipient absorbs it. Make sure your preview math assumes the same direction you'll send on the quote.
- **Rounding.** MXN, COP, and ARS payins settle in whole currency units, so small differences show up on peso amounts.

**Illustrative example.** A payer types R$10,000 at 09:00:00. The preview shows a `blindpay_quotation` of 5.45 BRL per USDC:

- Preview: 10,000 / 5.45 = 1,834.86 USDC
- The payer taps Continue at 09:00:40. The quote comes back at 5.46: 10,000 / 5.46 = 1,831.50 USDC
- Difference: 1,834.86 - 1,831.50 = 3.36 USDC
- In basis points: 3.36 / 1,834.86 x 10,000 = about 18 bps

That 18 bps is not slippage. The payer never agreed to 1,834.86. They agree to 1,831.50, and that is what lands. Label the preview as an estimate and nobody feels cheated.

## What does locking a price cost?

Locking a price means someone carries the market risk for the length of the lock, so longer locks cost more. Stripe's [FX Quotes API](https://docs.stripe.com/payments/currencies/localize-prices/fx-quotes-api) makes the trade-off visible: a `lock_duration` of `none` returns an informational rate at no charge, while 5-minute, 1-hour, and 24-hour locks add a duration premium. For BRL, MXN, and COP, which sit in Stripe's second currency group, that premium is 0.12% for 5 minutes, 0.15% for 1 hour, and 0.30% for 24 hours.

**Illustrative example.** On a R$50,000 conversion, a 0.12% lock costs R$60 and a 0.30% lock costs R$150. The 24-hour lock costs 2.5 times the 5-minute lock for the same money. Short windows are cheap because the provider carries little risk, which is why binding quotes across the industry last minutes, not days. If you want the treasury view of longer locks, see [live quote vs forward contract vs fixed rate](/resources/more/live-quote-vs-forward-contract-vs-fixed-rate).

## When is an indicative rate enough on its own?

Whenever nobody confirms a number they expect to pay or receive. That covers:

- Marketing pages and calculators, such as the [USDC to BRL corridor page](/usdc-to-brl).
- Dashboards and internal treasury estimates.
- Reporting, where a daily reference rate is the right tool. The ECB says its [euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) are published for information purposes only and strongly discourages using them for transactions.

Decision rule: if a person confirms an amount, require a binding quote. If a person is only browsing, an indicative rate is fine, as long as it is labeled as an estimate. Why buy and sell prices differ in the first place is covered in [why on-ramp and off-ramp rates differ](/resources/more/why-onramp-and-offramp-rates-differ), and the [on-ramp integration guide](/resources/more/how-to-integrate-a-crypto-on-ramp-api) shows where the payin quote sits in the full flow.

## What to do next

Wire the two calls into your amount screen on a free development instance: debounce `/payin-quotes/fx` for the typing phase, then create the binding quote on Continue. The [payin quotes reference](/docs/payin-quotes) has both requests and every field.

---

Source: https://blindpay.com/resources/more/latam-payout-liquidity-partner-pix-spei

---
title: "Choosing a liquidity partner for LatAm payouts: Pix, SPEI, and beyond"
seoTitle: "Choosing a liquidity partner for LatAm payouts"
description: "How to choose a liquidity partner for payouts into Latin America: how Pix and SPEI work, how a stablecoin liquidity layer replaces local bank accounts, and a checklist for coverage, pricing, and compliance."
date: "2026-09-25"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is Pix?"
    a: "Pix is Brazil's instant payment system, run by the Banco Central do Brasil. It settles transfers in seconds, 24 hours a day, every day, and is used by over 150 million Brazilians. Payments are addressed with a Pix key (a CPF or CNPJ tax number, phone number, email, or random key) or with standard bank routing details."
  - q: "What is SPEI?"
    a: "SPEI is Mexico's interbank electronic payment system, developed and operated by Banco de México. It runs around the clock, and Banco de México says SPEI payments should not take more than 30 seconds. Accounts are identified by an 18-digit CLABE, and SPEI is the standard rail for interbank transfers in Mexico."
  - q: "Can I send stablecoin payouts directly to a Pix or SPEI account?"
    a: "Yes, through an off-ramp provider. You send USDC or USDT, the provider converts it to reais or pesos at a quoted rate, and the recipient receives a normal Pix or SPEI transfer in their bank account. The recipient never touches a stablecoin. At BlindPay, Pix and SPEI payouts are instant once the conversion completes."
  - q: "Do I need a local bank account in Brazil or Mexico to pay out there?"
    a: "Not with a stablecoin liquidity partner. The partner holds the local currency and the connection to Pix or SPEI, so you fund each payout from a stablecoin wallet or a US dollar account and never open a Brazilian or Mexican bank account yourself. Your recipients still need their own local accounts to receive the funds."
  - q: "Which is faster, Pix or SPEI?"
    a: "Both are instant for practical purposes. Pix settles in seconds, and Banco de México says SPEI transfers should not take more than 30 seconds. In a stablecoin payout, total time is set mostly by the conversion step before the rail, which typically takes a few minutes."
---

Latin America is where payout liquidity gets tested. Every major market has its own instant rail (Pix in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina), its own account identifiers, its own tax ID rules, and in some cases currency controls. The traditional way in has been correspondent banking, and the BIS [found](https://www.bis.org/publications/new-correspondent-banking-data-decline-continues-slower-pace) that Latin America lost correspondent relationships faster than any other region between 2011 and 2019.

So choosing a liquidity partner for LatAm payouts comes down to one question: can it get local currency onto Pix and SPEI, reliably, without you parking cash in every country? This guide covers how that works and what to check.

## Why is Latin America a distinct liquidity challenge?

Three reasons.

**Fragmented rails.** There is no regional rail. Brazil runs Pix and TED. Mexico runs SPEI. Argentina runs Transfers 3.0 to CBU accounts. Colombia runs ACH Colombia for payouts and PSE for collections. A partner that covers one country well can be useless in the next.

**Currency controls in some markets.** Argentina has a long history of restrictions on buying and moving foreign currency. Rules like these change what a local balance is worth and how easily it comes back out. [USDC to ARS routes](/resources/more/usdc-to-ars-routes-2026) covers how that plays out for Argentine payouts.

**Expensive correspondent routes.** Fewer correspondent relationships means longer chains, more fees deducted in transit, and multi-day settlement into markets where recipients are used to instant local transfers. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) works through what the pre-funded alternative costs.

## How does a stablecoin liquidity layer work for LatAm payouts?

It replaces a local bank account in each country with one funding source and conversion at payment time.

1. **Funds in.** You hold USDC or USDT in a wallet, or send dollars by ACH, wire, or SWIFT to a US virtual account that converts them to stablecoins.
2. **Quote.** You request a quote for the payout. It locks the rate, fees, and the exact reais or pesos the recipient gets, for a short window.
3. **On-chain move.** The stablecoins move to the liquidity partner in seconds, at any hour.
4. **Conversion.** The partner converts them into local currency from its own inventory or local liquidity.
5. **Local payout.** The partner pays the recipient over Pix, SPEI, or the local rail.

You never open a Brazilian or Mexican bank account. The partner holds the local liquidity and the rail connection, pooled across its customers. For the underlying concepts, read [what a liquidity market is in cross-border payments](/resources/more/what-is-a-liquidity-market-cross-border-payments).

One detail matters here: at BlindPay, virtual accounts are US dollar accounts. They are how dollars get in. The payout to Brazil or Mexico goes out over the local rail from BlindPay's side, not from a local account in your name.

## How do the main LatAm payout rails work?

### Pix (Brazil)

Pix is Brazil's instant payment system, run by the Banco Central do Brasil. It settles in seconds, 24/7, and is used by over 150 million Brazilians. A Pix payout is addressed with a Pix key, which can be a CPF or CNPJ tax number, a phone number, an email, or a random key, or with the recipient's bank routing details.

What a liquidity partner needs to pay out reliably on Pix:

- **Direct or near-direct Pix access**, so the payout lands in seconds after conversion instead of waiting on a partner bank.
- **Support for both addressing modes.** At BlindPay, a `pix` bank account takes a Pix key, and `pix_safe` takes bank routing details (CPF or CNPJ, the bank's ISPB code, branch, and account number) for recipients who don't share a key.
- **A fallback rail.** TED settles the same banking day, but only during banking hours.
- **Local regulatory standing.** Brazil's authorization regime for virtual asset service providers, under Banco Central do Brasil Resolutions 519, 520, and 521, took effect on February 2, 2026. [PSAV in Brazil](/resources/more/psav-brazil-explained) explains what it covers.

BlindPay pays out over Pix and PIX Safe instantly once the conversion completes. [How to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) walks through the full path.

### SPEI (Mexico)

SPEI is Mexico's interbank electronic payment system, developed and operated by [Banco de México](https://www.banxico.org.mx/services/interbanking-electronic-payme.html). It runs around the clock, and Banco de México says SPEI payments should not take more than 30 seconds. Accounts are identified by an 18-digit CLABE.

What a liquidity partner needs to pay out reliably on SPEI:

- **A SPEI participant connection**, directly or through a local institution, with enough peso liquidity to fill payouts at size.
- **CLABE validation** before the first payout. An 18-digit CLABE includes a check digit, so a typo can be caught on entry instead of at the bank.
- **Beneficiary name matching**, since the payout carries the recipient's name as well as the CLABE.

At BlindPay, a SPEI payout uses the `spei_bitso` bank account type with the recipient's CLABE and name, and settles instantly. [USDC to MXN routes](/resources/more/usdc-to-mxn-routes-2026) compares the ways to reach Mexican pesos from stablecoins.

### Beyond Pix and SPEI

- **Argentina: Transfers 3.0.** Instant transfers to CBU accounts. BlindPay pays out over Transfers 3.0 in minutes.
- **Colombia: ACH Colombia.** Payouts to Colombian bank accounts settle in about 1 business day. PSE is the collection side, for receiving pesos, not paying out.

[How long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times) has the full table by rail.

## What should you evaluate in a LatAm payout liquidity partner?

Use this checklist in every vendor call, and ask for the answers in writing.

- **Published pricing with no volume floor.** Can you price a Pix or SPEI payout before signing, and is there a monthly minimum you have to clear?
- **Local rail coverage, by name.** Which rails in each country: Pix, PIX Safe, TED, SPEI, Transfers 3.0, ACH Colombia? A country on a coverage map is not a rail.
- **Settlement window per rail, in writing.** Including nights, weekends, and local holidays.
- **Compliance handled per market.** Who verifies the recipient, how CPF and CNPJ checks work in Brazil, and whether sanctions screening runs before money moves.
- **Custody model.** Non-custodial or custodial, and who holds the funds between your treasury and the recipient's bank.
- **Binding quotes.** Does each payout carry a quote id and expiry, and is the quoted amount the delivered amount?
- **Per-rail minimums and maximums.** Small payouts should not be gated by a platform-wide floor.
- **Beneficiary validation.** Pix key and CLABE checks before the first payout, not after a bounce.
- **Refund path.** Where funds go when a payout can't settle, and how fast.
- **Status webhooks.** Signed events for every state change, so your ops team isn't polling.

For a marketplace-specific version of this evaluation, see [marketplace payouts in Latin America](/resources/more/marketplace-stablecoin-payouts-latam). For payroll, see [stablecoin payroll for LATAM contractors](/resources/more/stablecoin-payroll-latam-contractors).

## Why does volume flexibility matter so much in LatAm?

Because most LatAm-focused fintechs start small. A payroll startup paying 40 contractors in Brazil, or a marketplace with its first 200 sellers in Mexico, sends modest volume at first and scales corridor by corridor.

Providers built for banks and large enterprises often set a monthly volume minimum, a high per-transaction minimum, or a sales process that only starts above a certain size. That shuts out exactly the teams that need instant local payouts most. Look for published pricing, per-rail minimums instead of a platform floor, and a sandbox you can test in before any contract.

## How does BlindPay fit?

BlindPay is a stablecoin liquidity layer for payouts into Latin America and beyond. It pays out over Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina, and ACH Colombia, alongside ACH, RTP, and wire in the US, SEPA in Europe, and international SWIFT.

Each payout is funded when you create it, from a stablecoin wallet, a managed wallet, or a US virtual account, with no local bank account needed in any destination country. Quotes lock the rate and fees for five minutes by default. BlindPay operates as a non-custodial payment processor, and a refunded payout returns the stablecoins to the funding source. KYC and KYB run inside the API before money moves. [Pricing is published](/pricing), with per-rail minimums and no volume floor.

## What to do next

Pick the LatAm country where you have the most recipients and run the checklist against your current provider. Then check today's rate on the [USDC to BRL](/usdc-to-brl) or [USDC to MXN](/usdc-to-mxn) corridor page, or [request a demo](/contact) to walk through your Pix and SPEI payouts with the BlindPay team.

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

---

Source: https://blindpay.com/resources/more/types-of-stablecoin-apis

---
title: "Types of stablecoin APIs: issuer, wallet, orchestration, payout, and non-custodial APIs compared"
seoTitle: "Types of stablecoin APIs: issuer, wallet, and payout APIs"
description: "The five types of stablecoin APIs, what each one does, and who holds the funds and the compliance work in each. Plus how they differ from exchange APIs."
date: "2026-09-25"
updated: "2026-09-25"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What are the main types of stablecoin APIs?"
    a: "There are five: issuer APIs that mint and redeem a stablecoin, custodial wallet APIs that hold balances for your users, orchestration APIs that route payments across several providers, payout and collection APIs that connect stablecoins to bank rails, and non-custodial payment APIs that convert and settle without holding the customer's funds between steps. Many providers combine two or three of these."
  - q: "Is a stablecoin issuer API the same as a payment API?"
    a: "No. An issuer API, such as Circle Mint for USDC, mints new stablecoins against a fiat deposit and redeems them back to fiat, usually for institutional customers with a linked bank account. It does not pay a supplier in Mexico or collect a Pix transfer in Brazil. A payment API sits on top of issuers and connects stablecoins to local bank rails."
  - q: "Who carries compliance when I use a stablecoin API?"
    a: "It depends on the type. A custodial wallet provider that holds value for your users acts like a money transmitter under FinCEN's 2019 guidance and runs its own KYC. A payout API usually verifies the customers and recipients it moves money for. An orchestration layer often leaves screening to the providers it routes to. Ask each provider for the split in writing."
  - q: "What does non-custodial mean for a stablecoin API?"
    a: "A non-custodial stablecoin API never holds the customer's funds as a balance between steps. The stablecoins stay in a wallet the customer controls until the customer authorizes a specific, quoted amount, and the provider converts and settles that amount only. Definitions vary by provider, so ask at which moment funds leave the customer's wallet and who holds them after that."
  - q: "How is a stablecoin API different from a crypto exchange API?"
    a: "A crypto exchange API places orders on an order book, holds balances in exchange accounts, and is built for trading. A stablecoin API is built for payments: it quotes a conversion, moves a fixed amount to a named recipient, and pays out over a bank rail such as ACH, Pix, or SPEI. Exchanges optimize for price discovery; payment APIs optimize for delivery and reconciliation."
  - q: "Can one product use more than one type of stablecoin API?"
    a: "Yes, and most do. A common setup pairs a wallet API for user balances with a payout API for bank withdrawals, or uses an issuer for treasury minting and a payment API for supplier payments. The risk is that every extra provider adds another KYC flow, another webhook format, and another place where funds sit. Map the custody of each step before adding one."
---

There are five main types of stablecoin APIs: issuer APIs that mint and redeem, custodial wallet APIs that hold balances, orchestration APIs that route across providers, payout and collection APIs that connect stablecoins to bank rails, and non-custodial payment APIs that convert without holding the customer's funds. The type decides who holds custody and who carries compliance.

> **Definition.** A **stablecoin API** is a programming interface that lets software create, move, convert, or settle stablecoins such as USDC and USDT without the developer running blockchain nodes or banking relationships directly.

**Key takeaways**

- "Stablecoin API" covers five different products. Two vendors using the same label can do completely different jobs.
- The first question for any of them is custody: at which step does a third party hold your customer's money?
- Custody drives compliance. Under FinCEN's 2019 guidance, a hosted wallet provider is a money transmitter. Someone using their own unhosted wallet to pay for things is not.
- Issuers mint and redeem. They do not pay a supplier in Mexico. Payout and collection APIs do that part.
- Most products combine two types. Draw the fund flow before you sign with a second provider.

If you need the basics first, start with [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api). This page sorts the category into types.

## What are the five types of stablecoin APIs?

The five types are issuer, custodial wallet, orchestration, payout and collection, and non-custodial payment APIs, and they differ mainly in who holds the funds.

| Type | What it does | Example use | Who holds custody | Who carries compliance |
| --- | --- | --- | --- | --- |
| Issuer API | Mints a stablecoin against fiat and redeems it back | An exchange minting USDC with a bank wire | Issuer holds the reserves; your account holds the minted tokens | Issuer onboards you as an institutional customer |
| Custodial wallet API | Creates wallets and holds balances for your users | A neobank showing a USDC balance | Provider holds the keys or the balance | Provider, as the host of the value, plus your own program |
| Orchestration API | Routes one payment request across several providers | A PSP picking the cheapest off-ramp per corridor | Usually the downstream providers | Split; often left to the providers it routes to |
| Payout and collection API | Converts stablecoins to local currency and back over bank rails | Paying contractors in Brazil over Pix | Varies; ask per step | Provider verifies customers and recipients |
| Non-custodial payment API | Converts and settles a quoted amount without holding a balance | A fintech paying suppliers from its own wallet | Customer until it authorizes the exact amount | Provider screens each payment; you own your customer relationship |

The last two overlap. A payout API can be custodial or non-custodial, and some providers offer both models in the same product.

## What does an issuer API do?

An issuer API mints new stablecoins when you send fiat and redeems them when you send stablecoins back. It is the primary market.

[Circle Mint](https://developers.circle.com/circle-mint) is the clearest example. Circle describes it as a product for institutional customers minting USDC or EURC: you deposit fiat from a linked bank account, convert it to USDC, and send the tokens to blockchain wallets. USDC redeems 1:1 for US dollars through the same account.

What an issuer API does not do: pay a person in Colombia, collect a Pix transfer, or screen your end customers. You are the customer. Your end users are your problem.

In the US, who may issue a payment stablecoin is now set by the GENIUS Act. The [GENIUS Act explainer](/resources/more/genius-act-for-businesses) covers what that changes for companies that move stablecoins without issuing them.

## What does a custodial wallet API do?

A custodial wallet API creates blockchain wallets for your users and holds the keys or the balance on their behalf. Your users see a balance; the provider moves it.

[Circle Wallets](https://developers.circle.com/wallets) is one example. Circle offers developer-controlled and user-controlled wallets and says developers do not manage raw private keys; keys are secured with MPC or passkeys depending on the product. That distinction matters. In a developer-controlled wallet, you (through the provider) control the funds. In a user-controlled one, the user signs.

The regulatory line follows control. FinCEN's [2019 guidance on convertible virtual currency](https://www.fincen.gov/system/files/2019-05/FinCEN%20Guidance%20CVC%20FINAL%20508.pdf) calls hosted wallet providers "account-based money transmitters." It also says a person using an unhosted wallet to buy goods or services on their own behalf is not a money transmitter.

So the custody model of your wallet API can change your own licensing posture. [Custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets) walks through the trade-offs.

## What does an orchestration API do?

An orchestration API sends one payment request to whichever underlying provider fits best, by corridor, price, or uptime. It is a routing layer, not a rail.

Orchestrators usually do not hold funds; the providers they route to do. They also tend to pass compliance down the chain, which leaves gaps if nobody owns screening for the whole payment. [What is payment orchestration](/resources/more/what-is-payment-orchestration) covers the routing logic in depth.

Use one when you already have three or more providers and the routing decision is costing you engineering time. Skip it when one provider covers your corridors.

## What does a payout and collection API do?

A payout and collection API connects stablecoins to bank accounts: it pays out USDC or USDT as local currency over rails like ACH, Pix, or SPEI, and collects bank deposits back into stablecoins. This is the off-ramp and on-ramp layer.

These APIs typically verify the customer (KYC or KYB), store the recipient's bank details, lock a rate on a short-lived quote, and fire webhooks as the payment moves. The quote is the core object: it fixes the rate, the fees, and the amount the recipient gets, and it expires fast.

Custody varies more here than anywhere else. Some providers require you to pre-fund a balance they hold. Others pull the exact quoted amount from your wallet at execution. Ask which.

## What makes a stablecoin payment API non-custodial?

A stablecoin payment API is non-custodial when the customer's stablecoins stay in a wallet the customer controls until the customer authorizes one specific, quoted payment. No pooled balance sits with the provider between payments.

BlindPay works this way for payouts funded from an external wallet. The customer holds USDC or USDT in its own wallet, BlindPay returns a payout quote that expires in 5 minutes, and on EVM chains the customer approves the token contract to release exactly the quoted amount. BlindPay then pays out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT (POBO/COBO). BlindPay also offers managed wallets (in beta), and those are custodial: BlindPay holds the keys.

That nuance is the point. "Non-custodial" describes a flow, not a company. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) has the questions to ask a provider that uses the term.

## Who holds the money at each step of a stablecoin API request?

Custody can change hands several times in one cross-border payment, and the API type decides who holds the money at each step. Here is a payout from a US fintech to a supplier's bank account in Brazil, step by step, in a non-custodial flow.

1. **Customer onboarding.** The fintech's business customer passes KYB. Funds: still at the customer's bank or in the customer's wallet. Nobody new holds anything.
2. **Quote.** The API locks a rate and fee for a short window (often minutes). Funds: still with the customer. A quote moves no money.
3. **Authorization or deposit.** The customer approves the exact stablecoin amount, or wires fiat if it starts in dollars. Funds: still with the customer until execution in an approval flow. In a pre-funded flow, they now sit with the provider.
4. **Conversion.** Stablecoins are exchanged for local currency through a liquidity provider. Funds: in transit through the provider's settlement path for minutes.
5. **Onchain transfer.** The stablecoin leg settles on the chain the quote named. Funds: onchain, final once the chain confirms.
6. **Local payout.** The provider sends BRL over Pix to the supplier's account. Funds: with the receiving bank, then the supplier.
7. **Webhook confirmation.** The API notifies the fintech that the payout completed, or that it failed or was refunded. Funds: with the supplier on success, or back in the funding wallet on a refund.

Picture it as a horizontal diagram: customer wallet on the left, provider in the middle, Brazilian bank on the right, with a shaded band over each step marking the custody holder. In a pre-funded custodial flow, the provider's band starts at step 3 and runs for days or weeks. In a non-custodial flow, it covers only steps 4 and 5.

## How is a stablecoin API different from a traditional payment API or an exchange API?

A stablecoin API is built to deliver a fixed amount to a named recipient across borders, a traditional payment API moves money inside the banking system, and an exchange API trades assets on an order book.

| | Stablecoin API | Traditional payment API | Crypto exchange API |
| --- | --- | --- | --- |
| Main job | Convert and deliver cross-border | Move money between bank accounts | Buy, sell, and hold assets |
| Settlement layer | Blockchain plus local rails | Card networks, ACH, wires | Exchange ledger |
| Operating hours | Chain runs 24/7; bank legs follow the rail | Rail hours and business days | 24/7 |
| Core object | Quote, then payout or payin | Charge or transfer | Order |
| Price | Locked quote | Fee schedule | Order book |
| Who it fits | Fintechs paying or collecting abroad | Domestic merchants and billers | Traders and treasuries |

A fourth thing gets confused with all three: crypto checkout gateways for merchants, which accept payments at a point of sale and rarely pay anyone out.

## Which type of stablecoin API does your product need?

Pick the type by the job, then check custody. These illustrative scenarios map common jobs to types.

- **A wallet app that shows users a dollar balance.** Custodial wallet API, plus a payout API for bank withdrawals.
- **A payroll platform paying contractors in Latin America.** Payout API. Non-custodial if you want funds to stay in your wallet until each pay run.
- **A PSP with five off-ramp providers.** Orchestration API, or your own routing layer.
- **An exchange that needs fresh USDC supply.** Issuer API.
- **An importer paying suppliers in Mexico from USDC it already holds.** Non-custodial payment API.
- **A marketplace collecting from US buyers and paying sellers abroad.** Collection plus payout API, ideally from one provider so one KYB covers both directions.

## What are the risks and limits?

Every type shares five limits, whatever the vendor says.

- **Regulation.** Rules differ by country and are still moving. Confirm your own obligations with qualified counsel before launch.
- **Depegging.** A stablecoin can trade below $1 under stress. Short payment windows reduce exposure; balances held for weeks increase it.
- **Corridor liquidity.** A provider can list a country and still have thin liquidity for large amounts there.
- **Off-ramp coverage.** Minting is global; paying out in local currency is not. Check that the rail you need is live in production.
- **Lock-in.** Custodial balances and proprietary wallet formats are slow to move. Ask how you exit.

## How do you get started with a stablecoin API?

Start from the fund flow, not the vendor list.

1. **Write down the job.** Direction (in, out, or both), corridors, currencies, and average payment size.
2. **Mark every custody moment.** For each step, note who holds the funds and under which license.
3. **Shortlist by type.** Use the table above, then [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) to compare vendors within the type.
4. **Test in a sandbox.** Run a success, a failure, an expired quote, and a duplicate webhook before anything else.
5. **Get the compliance split in writing.** Who verifies customers, who screens recipients, who files reports.

BlindPay's development instances run on testnets with a test stablecoin, so step 4 costs nothing, and its [SDKs](/docs/sdks) cover Node.js, Python, Go, PHP, and Swift.

---

Source: https://blindpay.com/resources/more/just-in-time-vs-prefunded-stablecoin-cards

---
title: "Just-in-time vs prefunded stablecoin cards: which funding model is better?"
seoTitle: "Just-in-time vs prefunded stablecoin cards"
description: "Just-in-time vs prefunded stablecoin cards for users and program operators: when conversion happens, top-up fees, float, declines, and tax timing compared."
date: "2026-09-24"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is just-in-time funding on a stablecoin card?"
    a: "Just-in-time funding means the stablecoins stay in the cardholder's wallet or account until a purchase happens. At authorization, the program checks the balance, converts the amount at the current rate, and reserves it. Nothing is converted ahead of time, so there is no separate fiat card balance to top up or reconcile."
  - q: "What is a prefunded or top-up stablecoin card?"
    a: "A prefunded card works like a prepaid card. The cardholder loads stablecoins first, the program converts them into a fiat card balance, and purchases spend that fiat balance later. Conversion happens at load time, not at checkout, and NGIBANK's March 2026 guide says prefunded cards often charge 1% to 2% per load above a free monthly allowance."
  - q: "Which funding model is cheaper for a cardholder?"
    a: "It depends on the fee schedule, not the model name. Just-in-time cards usually skip load fees but may build cost into the conversion spread at each purchase. Prefunded cards may charge per load and then nothing per purchase. Compare the effective rate on the same monthly spend, including load, spread, FX markup, and ATM fees."
  - q: "Why do just-in-time stablecoin cards sometimes decline purchases?"
    a: "A just-in-time card checks the onchain or ledger balance at the moment of authorization. If the wallet holds less than the purchase amount plus any buffer the program reserves for rate moves, the issuer declines. Hotels and fuel pumps that pre-authorize a larger amount than the final bill are a common trigger."
  - q: "Does the funding model change when a card purchase is taxable?"
    a: "It can change the timing. Where spending crypto counts as a disposal, as the IRS and HMRC describe, a just-in-time card disposes of stablecoins at each purchase while a prefunded card disposes of them at load. With dollar stablecoins the gain is usually near zero, but each event still needs a record. This is general information, not tax advice."
---

A just-in-time stablecoin card keeps the money in stablecoins until the moment of purchase and converts only the authorized amount. A prefunded card converts stablecoins into a fiat card balance first, then spends that balance later. Just-in-time avoids load fees and idle balances. Prefunded gives predictable fiat spending but ties up money ahead of time.

Neither model is better in general. The right one depends on who you are: a cardholder deciding where to keep money, or a program operator deciding where to hold float. This guide compares both from each side. For the basics of how a card spends a stablecoin balance, start with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card).

**Key takeaways**

- Just-in-time funding converts at authorization. Prefunded funding converts at load time, before any purchase.
- Prefunded cards often charge 1% to 2% per load above a free monthly allowance, according to [NGIBANK's crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide) (March 2026).
- Just-in-time cards carry rate exposure between authorization and settlement. Prefunded cards move that exposure to the load date.
- For operators, prefunding is a working capital decision: money parked in card balances is money not available for payouts or treasury.
- Where spending crypto is a disposal for tax, the funding model decides when the disposal happens.

## What do "just-in-time" and "prefunded" mean on a stablecoin card?

They describe when the stablecoin becomes fiat. Just-in-time converts during the purchase. Prefunded converts before it.

**Just-in-time funding:** the stablecoin stays in the cardholder's wallet or custodial account. When a merchant requests authorization, the issuer processor checks the balance, converts the purchase amount at the current rate, places a hold, and approves or declines in seconds.

**Prefunded (top-up) funding:** the cardholder loads stablecoins into the card program. The program converts them into a fiat balance at load time. Card purchases then draw down that fiat balance like a prepaid card.

**Float:** money sitting in a balance waiting to be spent or settled. In a prefunded program, float is the sum of all unspent card balances. In a just-in-time program, float is mostly the pool the program needs to settle with the card network.

The difference looks small on a checkout screen. It changes fees, declines, tax records, and how much capital the operator has to hold. The [step-by-step guide to how stablecoin card transactions settle](/resources/more/how-stablecoin-card-transactions-settle) walks through authorization, clearing, and settlement in detail.

## How do just-in-time and prefunded cards compare side by side?

The two models trade convenience for predictability. Just-in-time is more flexible and keeps money in stablecoins longer. Prefunded is more predictable at checkout and simpler to account for in fiat.

| Factor | Just-in-time | Prefunded (top-up) |
| --- | --- | --- |
| When conversion happens | At each authorization | At each load |
| Where money sits before spending | Stablecoin wallet or account | Fiat card balance |
| Top-up fees | Usually none, since there is no load step | Often 1% to 2% per load above a free allowance (NGIBANK, March 2026) |
| Conversion cost | Spread applied per purchase | Spread applied once per load |
| Rate exposure | Between authorization and settlement, usually carried by the program | Fixed at load; cardholder carries none afterward |
| Declines from balance | When the wallet drops below the hold amount | When the fiat card balance runs out |
| Idle balance | None on the card side | Unspent loads sit as fiat float |
| Tax event timing (where spending is a disposal) | At each purchase | At each load |
| Best for | Users who want to keep money in stablecoins until they spend | Users and teams who want a fixed fiat budget |

The fee row is where most comparisons go wrong. A card with no load fee can still cost more per purchase if the conversion spread is wide. [Stablecoin FX slippage and live quotes](/resources/more/stablecoin-fx-slippage-live-quotes) explains how a quoted rate turns into the rate you actually get.

## How does just-in-time funding work at checkout?

At checkout, the program converts only what the merchant asks for. The rest of the balance stays in stablecoins.

1. **Authorization request.** The merchant's terminal sends the amount through the card network to the issuer processor.
2. **Balance check.** Custodial programs check an internal ledger. Self-custodial programs check an onchain balance in a smart account. Gnosis Pay, for example, gives each user a Safe smart account and uses a Roles Module to enforce spending allowances, per its [documentation](https://docs.gnosispay.com/concepts/safe/overview).
3. **Conversion and hold.** The program converts the purchase amount at the current rate and reserves it.
4. **Approval.** The issuer approves or declines in seconds.
5. **Clearing.** The merchant submits the final amount, which can differ from the authorized one (tips, hotels, fuel). The hold is adjusted.
6. **Settlement.** Usually the next business day, the program settles with the card network.

The gap between steps 3 and 6 is where rate exposure lives. With dollar stablecoins spent in dollars, that exposure is close to zero. With dollar stablecoins spent in euros or pesos, the program either absorbs the move or prices it into the spread.

## How does a prefunded card work?

A prefunded card front-loads the conversion. The cardholder decides how much to load, and checkout becomes a normal prepaid transaction.

The cardholder sends stablecoins to the program, the program converts them, and the card shows a fiat balance. From then on, the card behaves like any prepaid debit card. A purchase never touches the stablecoin wallet.

That predictability has a cost. NGIBANK's March 2026 guide notes that prefunded cards often charge 1% to 2% per load above a free monthly allowance. Money loaded and not spent also stays in fiat, outside the stablecoin wallet, until the cardholder withdraws it or spends it.

## Which model should a cardholder choose?

Choose just-in-time if you want money to stay in stablecoins until you spend it. Choose prefunded if you want a fixed fiat budget and are fine paying to load it.

A simple test:

- **You spend in many small amounts and keep most of your balance in stablecoins.** Just-in-time avoids load fees and idle fiat.
- **You want a hard monthly spending limit.** Prefunded makes the limit physical: load $800, spend $800.
- **You worry about declines at hotels or fuel pumps.** A prefunded balance with headroom is simpler. With just-in-time, keep a buffer above the largest pre-authorization you expect.
- **You track tax per disposal.** Just-in-time creates one record per purchase. Prefunded creates one record per load.

The [comparison of stablecoin cards, crypto debit cards, prepaid, and credit](/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit) puts these models next to the other card types.

## What does each model cost a program operator?

For an operator, the funding model decides where capital sits. Prefunded programs hold customer float in fiat. Just-in-time programs need a settlement pool to pay the network while stablecoins are converted.

**Prefunded programs** collect and convert money before anyone spends it. The operator holds the fiat float, reconciles loads against card balances, and handles refunds of unspent money. Revenue can include load fees, but the operator also carries the operational weight of balances that may sit for weeks.

**Just-in-time programs** convert on demand. Settlement with the network usually happens the next business day. In the traditional model, the program converts stablecoins to fiat and settles with the network over banking rails. In the emerging model, issuers settle with Visa directly in stablecoins. Visa [launched USDC settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html) in December 2025, with broader availability planned through 2026. Either way, the operator still has to pre-position money for settlement, which is its own working capital question.

Card programs are growing fast enough that this matters. Visa reported that stablecoin-linked cards processed about $5.2 billion in 2025, up 319% year over year, across more than 130 programs in more than 50 countries, per its [March 2026 stablecoin card report](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement).

## Where does pre-funding hurt outside the card?

Pre-funding hurts most on the payout leg. Card spending is only one way money leaves a stablecoin program. Rent, payroll, supplier invoices, and cash-outs to a bank account usually need a local transfer, not a card.

Traditional cross-border payouts ask the sender to park money in destination-country accounts first. That is the same problem as a prefunded card, at a larger scale: capital sits idle in many places to cover payments that have not happened yet. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) explains why that capital gets trapped, and [what "no pre-funding" means in a stablecoin API](/resources/more/no-pre-funding-stablecoin-payouts) shows the alternative.

## Where does BlindPay fit?

BlindPay covers the money movement around a card program. A card issuer handles cards. BlindPay handles funding in and paying out.

On the payout side, BlindPay converts USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with no pre-funding. A [live quote](/docs/payout-quotes) locks the rate and fees before the stablecoins move, and the stablecoins leave the sender's wallet only for the payout that was authorized. That keeps capital in stablecoins until a payment actually happens, the same idea as just-in-time funding on a card.

On the funding side, [US virtual accounts](/docs/virtual-accounts) give each customer an account number that receives ACH, wire, or SWIFT and converts each deposit into USDC or USDT in the linked wallet. A card program can use that as the bank-transfer entry point for loading balances.

## How to decide

1. Write down where your users keep money today: stablecoins, fiat, or both.
2. Estimate monthly spend per user and the share spent in a currency other than the stablecoin's.
3. Price both models on that spend: load fees, spread per purchase, FX markup, and ATM fees.
4. For operators, add the cost of capital for fiat float (prefunded) or the settlement pool (just-in-time).
5. Pick the model that is cheaper on that number, then check decline behavior and tax records.

If your program also needs local payouts or bank-transfer funding, test both on a free BlindPay development instance with the [payout quickstart](/docs/quickstart-payout). For the full picture of how card issuing works, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Sources

- NGIBANK, [Crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide), March 3, 2026
- Visa, [How stablecoin-linked cards are modernizing money movement](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement), updated March 31, 2026
- Visa, [Visa Launches Stablecoin Settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html), December 16, 2025
- Gnosis Pay, [GP Safe Account](https://docs.gnosispay.com/concepts/safe/overview)
- IRS, [Digital assets](https://www.irs.gov/filing/digital-assets)
- HMRC, [Cryptoassets Manual CRYPTO22100](https://www.gov.uk/hmrc-internal-manuals/cryptoassets-manual/crypto22100)

---

Source: https://blindpay.com/resources/more/liquidity-risk-global-payouts

---
title: "Managing liquidity risk in global payouts: a practical guide for fintechs and PSPs"
seoTitle: "Managing liquidity risk in global payouts"
description: "Liquidity risk in payouts is the chance funds aren't available at the right rate, in the right currency, when a payout settles. Its four sources and a six-step framework to manage them."
date: "2026-09-24"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is liquidity risk in payments?"
    a: "Liquidity risk in payments is the risk that funds are not available, at the right rate, in the right currency, at the moment a payment needs to settle. It shows up as delayed payouts, payouts that settle at a worse rate than quoted, or payouts that fail and have to be recovered and re-sent. Its main sources are FX volatility, thin liquidity on some currency pairs, partner failure, and compliance holds."
  - q: "How does automated KYC reduce liquidity risk?"
    a: "It moves compliance review to before a payout is due, instead of after funds are committed. When a recipient is verified at onboarding, the payout itself does not wait on a manual identity check, so money is not stuck in flight while someone reviews documents. At BlindPay, standard KYC completes automatically in about 60 seconds, and KYB review takes 3 hours to 1 business day."
  - q: "What is the difference between custodial and non-custodial liquidity risk?"
    a: "With a custodial provider, your funds sit in the provider's accounts between steps, so a delay or a provider failure leaves them exposed on someone else's balance sheet. With a non-custodial flow, funds stay under your control and the provider only touches the amount of the transaction it is executing. The non-custodial model shortens the time your money is exposed to a third party, though it does not remove rail or compliance delays."
  - q: "What causes cross-border payouts to fail?"
    a: "The common causes are incorrect beneficiary or bank account details, a receiving bank rejecting the payment, a closed or restricted account, and compliance requirements not being met. Most can be caught before the first payout by verifying the recipient and validating bank details at onboarding."
  - q: "How long can a compliance hold delay a payout?"
    a: "It varies by provider and case. At BlindPay, a payin or payout placed on hold for compliance review can take up to 30 days to resolve, and a request for information that goes unanswered for 24 hours can lead to the transaction being refunded to the sender. Answering requests for information quickly is the single best way to keep holds short."
---

Liquidity risk in global payouts is the risk that funds are not available, at the right rate, in the right currency, at the moment a payout needs to settle. It is not only a treasury problem. For a fintech or PSP sending recurring payouts, it shows up as a contractor paid two days late, a seller who gets less than they were promised, or a payroll run with forty exceptions to chase by hand.

This guide covers where liquidity risk comes from in cross-border payouts, a framework to manage it, and how a non-custodial model changes the risk profile.

## What are the main sources of liquidity risk in cross-border payouts?

Four sources account for most of it.

**1. FX volatility between quote and settlement.** Currencies move. If the rate is set at one moment and the payout settles at another, the difference lands on someone. With indicative rates it lands on you or your recipient, as [FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes).

**2. Thin liquidity in less-common currency pairs.** Deep pairs fill large orders at stable rates. Thinner pairs don't. A payout that clears easily at 5,000 dollars can get a noticeably worse rate at 200,000 dollars, or wait while the provider sources the currency.

**3. Counterparty and banking-partner failure.** Every balance held at a bank or a provider is exposed to that institution. In March 2023, Circle disclosed that about 3.3 billion dollars of USDC reserves sat at Silicon Valley Bank when regulators closed it, and USDC traded as low as 87 cents on some exchanges before the peg recovered within days. The reserves were real. The risk was concentration.

**4. Compliance holds that delay settlement.** A payout under review is a payout not settled. If identity checks, sanctions screening, or a request for information happen after funds are committed, a compliance delay becomes a liquidity delay. At BlindPay, a held payin or payout can take up to 30 days to resolve, and an unanswered request for information can lead to a refund after 24 hours.

Two smaller sources stack on top: rail cut-offs and bank holidays, which push settlement into the next business day, and bad beneficiary data, which turns a payout into a refund cycle.

## How do you manage liquidity risk in global payouts?

Six steps, in order of impact for most payout businesses.

1. **Price every payout with a live, lockable FX quote and execute it inside the quote window, so rate risk between quote and settlement stays with the provider instead of your treasury.**
2. **Avoid concentrating liquidity with a single banking, custody, or stablecoin partner, so one failure can't freeze every corridor at once.**
3. **Run automated KYC and KYB at onboarding, so compliance review finishes before a payout is due instead of holding it after funds are committed.**
4. **Validate beneficiary bank details before the first payout, because a rejected account becomes a refund cycle that can take days on the fiat side.**
5. **Monitor settlement success rates by corridor and rail every day, and alert on drops before customers notice them.**
6. **Write a playbook for each payout status (on hold, failed, refunded) that names who acts and by when, so exceptions don't sit in a queue.**

A few notes on applying them.

**On step 1.** A quote without an id and an expiry is not lockable. Ask your provider what happens when you submit against an expired quote; the right answer is a clean rejection, not execution at a new rate.

**On step 2.** Diversification applies to stablecoins too. Holding both USDC and USDT, or keeping operating dollars in more than one bank, limits the damage from a single issuer or bank event. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares the two issuers' track records.

**On step 3.** Compliance speed is a liquidity variable. At BlindPay, standard KYC for individuals completes automatically in about 60 seconds, while KYC Enhanced (for high-risk countries) and KYB are manual reviews that take 3 hours to 1 business day. Onboarding recipients days before their first payout means that review time never touches payroll day. [Automated KYC/KYB vs manual onboarding](/resources/more/automated-kyc-kyb-vs-manual-onboarding) goes deeper.

**On step 5.** Track three numbers per corridor: the share of payouts that complete on the first attempt, the median time from creation to completion, and the share that land on hold. A drift in any of them is an early warning.

**On step 6.** Payout statuses are the inputs to your playbook. [Stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) maps what each one means and what to do next.

## How does a non-custodial model change the risk profile?

It shortens the time your funds are exposed to a third party.

With a custodial intermediary, funds move into the provider's accounts before the payout and wait there between steps. If a payout stalls, the money sits on the provider's balance sheet. If the provider has a problem, so do your funds.

With a non-custodial flow, funds stay under your control until the moment of the transaction. The provider only touches the amount it is executing, when it executes it. BlindPay operates this way: each payout is funded when you create it, from your wallet, a managed wallet, or a virtual account, and a payout that ends up `refunded` returns the stablecoins to the funding source. Stablecoin refunds process immediately. Fiat refunds depend on the returning bank's processing time, and fees may apply.

Two honest caveats. First, a payout that ends as `failed`, or sits in review, does not refund automatically; at BlindPay, you contact support to resolve it. Second, BlindPay's optional managed wallets are custodied by BlindPay, which suits teams that want to hold a balance between payins and payouts, but changes the custody picture for those funds. Pick the funding source with the risk profile in mind.

A non-custodial model also doesn't remove rail delays or compliance holds. It changes where your money sits while they happen.

## What does this look like in practice? An illustrative example

This example is illustrative. The company and numbers are invented to show how the framework works; it is not a customer case study.

A payroll platform pays 1,500 contractors every two weeks across Brazil, Mexico, and Colombia.

**Before.** Contractors submit bank details in a free-text form. Identity checks are manual and run in the days before payroll. Rates are indicative and set the morning of the run. On a typical payroll day:

- About 3 percent of payouts bounce because of bad bank details, and each takes several days to recover and re-send.
- Around 30 contractors are still waiting on identity review, so their payouts are held.
- The rate moves between the morning estimate and execution, and support fields complaints about amounts that don't match the payslip.

**After.** The platform applies steps 1, 3, 4, and 5 of the framework:

- Contractors complete automated KYC at signup, weeks before their first payout.
- Bank details are validated on entry: an 18-digit CLABE for SPEI, a Pix key or bank routing for Brazil.
- Each payout is quoted live and executed inside the quote window, so the amount on the payslip is the amount that lands.
- Ops tracks first-attempt completion by corridor every payroll day.

In this scenario, bounced payouts fall below 0.5 percent, identity holds on payroll day go to zero because review happened at signup, and amount complaints stop because the quoted amount is the settled amount. The remaining exceptions are real edge cases, like a closed account, and the status playbook tells ops exactly who handles them.

## What to do next

Pull last quarter's payout exceptions and sort them into the four sources above. Most teams find one source dominates, and that is where to start. Then read the [KYC requirements](/docs/kb/kyc) and [on-hold transactions](/docs/kb/on-hold-transactions) docs to see how verification and holds work at BlindPay, or [request a demo](/contact) to walk through your corridors with the team.

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

---

Source: https://blindpay.com/resources/more/travel-rule-stablecoin-off-ramps

---
title: "What is the travel rule for stablecoin off-ramps? Thresholds, data, and failed checks"
seoTitle: "The travel rule for stablecoin off-ramps, explained"
description: "The travel rule makes off-ramps pass sender and receiver data with transfers. Thresholds by country, required data, and what happens when checks fail."
date: "2026-09-24"
updated: "2026-09-24"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What is the travel rule in crypto?"
    a: "It's the requirement that virtual asset service providers obtain, keep, and pass along information about the sender and the receiver of a transfer, the same way banks do for wires. FATF extended its Recommendation 16 to virtual assets in 2019, and countries implement it through their own AML rules."
  - q: "At what amount does the travel rule apply to stablecoin transfers?"
    a: "It depends on the country. FATF recommends a threshold of USD or EUR 1,000. The EU applies the rule with no minimum since December 30, 2024. The US applies it at USD 3,000 under the Bank Secrecy Act. Singapore uses SGD 1,500, and the UK applies it to all transfers with a reduced data set below EUR 1,000."
  - q: "Does the travel rule apply when I off-ramp from my own wallet?"
    a: "Differently. A self-hosted wallet has no provider on the other side to exchange data with, so the off-ramp collects and keeps the information about its own customer instead. In the EU, for transfers above EUR 1,000 involving a self-hosted wallet, the provider must also verify that the wallet is owned or controlled by its customer."
  - q: "Is off-ramping crypto legal?"
    a: "Yes, in most countries, when it runs through a licensed or registered provider. In the US that means a money services business with state money transmitter licenses, in the EU a crypto-asset service provider under MiCA, and in Brazil an authorized virtual asset provider under the Central Bank's PSAV rules. The travel rule is one of the obligations that comes with those licenses."
  - q: "What happens if my off-ramp transaction fails compliance checks?"
    a: "It stops before or during the payout, depending on the check. A customer or bank account in a prohibited country is blocked outright. A possible sanctions match, or missing or unclear information, usually leads to a hold and a request for information. On BlindPay a hold can last up to 30 days; approval resumes the payout, and a timeout or rejection fails it. A refunded payout returns the stablecoins to the wallet that funded it, while a failed payout doesn't refund automatically and needs support."
---

The travel rule requires a provider that moves virtual assets to collect information about the sender and the receiver and pass it along with the transfer, the same way banks do for wires. For a stablecoin off-ramp, it means the provider knows who sent the stablecoin, who gets the fiat, and can prove both to a regulator. The threshold depends on the country: USD or EUR 1,000 under FATF guidance, USD 3,000 in the US, and no minimum at all in the EU.

It's the least visible compliance check in an off-ramp. It's also the one people ask about least until a payout stalls.

## What does the travel rule require?

FATF's Recommendation 16 has applied to wires for decades. In 2019 FATF extended it to virtual asset service providers, the category covered in [what is a VASP](/resources/more/what-is-a-vasp). The provider sending a transfer must obtain and pass on:

| Data | Below threshold | At or above threshold |
| --- | --- | --- |
| Originator name | Yes | Yes |
| Originator account or wallet address | Yes | Yes |
| Originator address, national ID number, customer ID, or date and place of birth | No | Yes |
| Beneficiary name | Yes | Yes |
| Beneficiary account or wallet address | Yes | Yes |

The receiving provider must collect the same data, check it, and keep it. Below the threshold the data doesn't have to be verified unless something looks suspicious. At or above it, it does.

Providers exchange this data through messaging networks built for it, mostly on a common data model called IVMS 101. The details of which network matter less than the fact that one exists: travel rule data moves beside the transfer, not inside it. The blockchain transaction itself carries none of it.

## What are the travel rule thresholds by country?

| Jurisdiction | Threshold | Notes |
| --- | --- | --- |
| FATF recommendation | USD or EUR 1,000 | Countries set their own threshold |
| European Union | None | Transfer of Funds Regulation, since December 30, 2024 |
| United States | USD 3,000 | Bank Secrecy Act recordkeeping and travel rule |
| Singapore | SGD 1,500 | |
| United Kingdom | All transfers | Reduced data set below EUR 1,000 |

Thresholds move. Treat this table as a snapshot and check the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) for the wider rules in each market, including [MiCA](/resources/more/mica-stablecoin-rules-explained) in the EU and the [PSAV regime](/resources/more/psav-brazil-explained) in Brazil.

## Where does the travel rule show up in an off-ramp?

An off-ramp sits between two regimes: crypto on one side, banking on the other. The rule touches each leg differently.

1. **Stablecoin arrives from an exchange or another provider.** That provider is a VASP, so it sends travel rule data about the sender. The off-ramp receives it, checks it against its own records, and keeps it.
2. **Stablecoin arrives from a self-hosted wallet.** There's no provider on the other side, so no travel rule message. The off-ramp relies on its own customer's KYC and records who controls the wallet. In the EU, above EUR 1,000, it has to verify that its customer owns or controls that wallet.
3. **Fiat goes out to a bank account.** The bank transfer carries its own payment data under the banking rules for that rail. On a wire, the originator and beneficiary details travel in the payment message, which is where the original travel rule came from.

The practical upshot: the off-ramp has to know the sender and the receiver well before the payout executes. That's why onboarding comes first.

## How is the travel rule different from KYC, KYB, and sanctions screening?

They answer different questions and run at different moments.

| Check | What it answers | When it runs |
| --- | --- | --- |
| KYC | Is this person who they say they are? | Onboarding, then refreshed |
| KYB | Is this business real, and who owns and controls it? | Onboarding, then refreshed |
| Sanctions screening | Is anyone involved on a sanctions list, or in a prohibited country? | Onboarding and on every transaction |
| Transaction monitoring | Does this payment fit the customer's normal pattern? | Continuously |
| Travel rule | Does the originator and beneficiary data move with the transfer? | On every transfer that crosses the threshold |

KYC and KYB establish identity once. Screening and monitoring watch every payment. The travel rule makes sure identity data follows the money between providers. [Real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) and [compliance agents for cross-border payments](/resources/more/compliance-agents-cross-border-stablecoin-payments) cover the ongoing side.

## What happens when a compliance check fails?

It depends on which check and how badly. On BlindPay:

- **Prohibited country.** Customer or bank account creation fails outright. There's no override and no manual exception.
- **Missing or unclear information.** Compliance opens a request for information on the customer. The customer moves to `compliance_request`, and only one request is open at a time.
- **Held payout.** A payout that needs a closer look, including a possible sanctions or watchlist match, moves to `on_hold`. A hold can last up to 30 days. Approval resumes the normal flow, and a timeout without a decision fails the payout.
- **Refunded.** The stablecoins go back to the wallet that funded the payout, instead of being converted to fiat. Stablecoin refunds process right away.
- **Failed.** The payout didn't complete. A failed payout doesn't refund automatically; contact support.

Each outcome has its own status, covered in [stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained). Most holds clear with a document, so fast responses matter more than anything else. Large payouts are also shaped by [off-ramp limits](/resources/more/stablecoin-off-ramp-limits), which bound what a customer can move before a hold is even in question.

## Does a small business need a license to accept stablecoin payments?

Usually not, if it's selling its own goods or services and uses a licensed provider to convert. Exchanging stablecoins for fiat on behalf of other people is the regulated activity, and that's what the off-ramp does. [Do merchants need a license to accept stablecoins](/resources/more/do-merchants-need-a-license-to-accept-stablecoins) goes through where that line sits.

## How does BlindPay handle the travel rule?

BlindPay runs KYC, KYB, sanctions screening, and travel rule compliance inside the API flow. Every customer is verified before their first transaction: KYC Standard in about 60 seconds for eligible individuals, and manual review for KYC Enhanced and KYB. Checks run before money moves, so a problem shows up as a blocked request or a held payout with a status and a webhook, not a transfer that disappears for a week. The customer requirements are in the [KYC reference](/docs/kb/kyc) and the hold process in [on-hold transactions](/docs/kb/on-hold-transactions).

Before you integrate, map which of your flows cross which threshold, and collect full sender and receiver details from day one. Data you collect at onboarding is data nobody has to chase during a hold.

*This article is for general information only and is not legal advice.*

---

Source: https://blindpay.com/resources/more/types-of-crypto-off-ramps

---
title: "What are the types of crypto off-ramps? Payment APIs, off-ramp wallets, exchanges, OTC desks, and wallet ramps compared"
seoTitle: "Types of crypto off-ramps: API, exchange, OTC, wallet ramp"
description: "The five kinds of crypto off-ramp compared: who each serves, who holds funds, limits, trade-offs, consumer vs business, and why stablecoins win."
date: "2026-09-24"
updated: "2026-09-24"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is a crypto off-ramp?"
    a: "A crypto off-ramp is any service that converts crypto into fiat currency and pays it into a bank account. For example, USDC on Solana goes in and Brazilian reais arrive over Pix. Exchanges, OTC desks, wallet apps, and payment APIs all offer off-ramps. They differ in who they serve, who holds the funds along the way, how much you can convert, and whether you can pay third parties."
  - q: "What is the best type of off-ramp for a business?"
    a: "It depends on the job. For paying suppliers, contractors, or customers in local currency from your own product, a payment API fits, because it handles business verification, third-party payouts, and webhooks. For converting stablecoins that clients send you, an off-ramp wallet converts each deposit on its own. For occasional treasury cash-outs to your own account, an exchange works. For single very large blocks, an OTC desk."
  - q: "Can I off-ramp crypto to someone else's bank account?"
    a: "With a business payment API, usually yes. Payouts to suppliers, employees, and contractors are the point of it, with the relationship recorded on each bank account. Consumer exchanges and wallet apps typically only let you withdraw to an account in your own name. OTC desks settle to the counterparty that signed their agreement. Check this first if you're building payouts, since it rules out most consumer options."
  - q: "Why do businesses off-ramp stablecoins instead of Bitcoin?"
    a: "Because the amount has to stay the same between sending and converting. A stablecoin like USDC is designed to hold one dollar, so a 10,000 USDC invoice converts to about 10,000 dollars of local currency at the quoted rate. Bitcoin can move several percent in the minutes or hours a transfer takes. Stablecoins carry their own risks, such as a depeg or issuer problems, which is why reserve quality matters."
  - q: "Is a virtual account an off-ramp?"
    a: "No, it's the reverse. A virtual account receives a bank transfer and converts it into stablecoins, which makes it an on-ramp. The off-ramp version of the same idea is an off-ramp wallet: a deposit address where every stablecoin transfer converts automatically and pays out to a linked bank account. Many businesses use both, one for collecting and one for paying out."
  - q: "Are crypto off-ramps regulated?"
    a: "In most countries, converting crypto to fiat as a business is a regulated activity. In the US it falls under money transmission rules, and internationally under the FATF's virtual asset service provider category, which countries implement through local licenses such as Brazil's PSAV regime or MiCA in the EU. Ask any off-ramp which licenses cover the country you pay out to, and check them."
---

A crypto off-ramp converts crypto into fiat and pays it into a bank account: USDC on Solana in, BRL via Pix out. There are five kinds: payment APIs, off-ramp wallets, crypto exchanges, OTC desks, and wallet-embedded ramps. They differ on who they serve, who holds the funds along the way, how much you can move, and whether you can pay someone else.

Picking the wrong type is the expensive mistake. Most teams find out at the first third-party payout.

## Key takeaways

- Consumer off-ramps (exchanges, wallet ramps) withdraw to your own account. Business off-ramps (payment APIs, off-ramp wallets) pay third parties.
- Custody differs by type. Exchanges and most OTC desks hold your funds before converting. Some payment APIs only pull funds at payout.
- Stablecoins are the standard asset to off-ramp because the amount doesn't move between send and conversion.
- Check eight things before any off-ramp: license, custody, tokens and networks, rails, limits, quotes, compliance, and tracking.

## What are the main types of crypto off-ramps?

| Type | Best for | Who holds the funds | Limits to check | Main trade-off |
| --- | --- | --- | --- | --- |
| Payment API | Fintechs and platforms paying suppliers, contractors, or users in local currency | Varies. Non-custodial APIs pull funds only at payout | Per-transaction, daily, and monthly limits by KYB or KYC tier | Takes an integration. Built for businesses, not one-off personal use |
| Off-ramp wallet | Businesses receiving stablecoins from clients or third parties | The provider, from deposit to payout | Minimum deposit and fixed fee per network | Converts every deposit automatically, so no choosing when to sell |
| Crypto exchange | Occasional treasury cash-outs to your own account | The exchange, from deposit until you withdraw | Withdrawal limits by verification level | Usually your own account only. Funds sit on the exchange |
| OTC desk | Single large blocks, often six or seven figures | Varies by desk. Often prefunded on one side | Minimum trade size | Negotiated, manual, and slow to set up |
| Wallet-embedded ramp | Letting consumers cash out inside a wallet app | The ramp provider, during the conversion | Consumer limits, often low | Consumer flows only. The ramp owns the end customer |

BlindPay sits in the first two rows: a payment API for quote-then-execute payouts, plus off-ramp wallets for stablecoins that arrive from third parties.

One type that gets listed by mistake: virtual accounts. They take bank transfers in and settle stablecoins out, so they're on-ramps. [What is a virtual account](/resources/more/what-is-a-virtual-account) covers that direction.

## How does each type work?

### Payment API

You call an API: create a customer, add a recipient's bank account, request a quote, send the stablecoins, and get status by webhook. The provider runs conversion, compliance, and the local payout. This is the only type designed for high volumes of payouts to people who aren't you. The [stablecoin off-ramp explainer](/resources/more/what-is-a-stablecoin-offramp) walks through the flow.

### Off-ramp wallet

A deposit address linked to one bank account. Anything sent to it converts and pays out, with no quote or payout call on your side. Useful when clients pay invoices in USDC or USDT and you want local currency, not a crypto balance. The [off-ramp wallet explainer](/resources/more/what-is-an-off-ramp-wallet) covers fees and minimums per network.

### Crypto exchange

You deposit stablecoins, sell them on the order book or at a quoted price, and withdraw fiat to a bank account in your name. Simple for a treasury team that cashes out once a month. Not built for paying 400 contractors.

### OTC desk

A trading desk that quotes a price for one large block, settles bilaterally, and wires the fiat. Good pricing on size, but manual: onboarding, a chat thread, a confirmation, a wire. The [liquidity provider vs FX desk comparison](/resources/more/stablecoin-liquidity-provider-vs-fx-desk) explains where desks fit next to API liquidity.

### Wallet-embedded ramp

A widget inside a consumer wallet app. The user taps "sell", passes the ramp's own KYC, and gets paid to their bank. The wallet doesn't run the money flow, and the ramp provider usually owns the customer relationship.

## Consumer off-ramp or business off-ramp: what changes?

Almost everything except the blockchain part.

| | Consumer off-ramp | Business off-ramp |
| --- | --- | --- |
| Verification | KYC on one person | KYB on the company, plus its beneficial owners |
| Who gets paid | Your own bank account | Suppliers, contractors, employees, customers |
| Volume | Small, occasional | Recurring, often batched |
| Integration | App or widget | API, webhooks, idempotency, sandbox |
| Records | A withdrawal receipt | Rail references (Pix E2E ID, UETR) for reconciliation |
| Extra checks | Rare | Source of funds and purpose of payment when risk rises |

The business column comes with paperwork. [Source of funds for off-ramps](/resources/more/source-of-funds-crypto-off-ramps) covers what gets asked and when, and [off-ramp limits](/resources/more/stablecoin-off-ramp-limits) covers how verification tiers cap volume.

## Why do businesses off-ramp stablecoins rather than Bitcoin?

Because the number on the invoice has to be the number that arrives.

A stablecoin is built to hold a fixed value. The US GENIUS Act, for example, defines a [payment stablecoin](https://www.congress.gov/bill/119th-congress/senate-bill/1582/text) as a digital asset used for payment or settlement that the issuer must redeem for a fixed amount of money. So 10,000 USDC sent today converts to about 10,000 dollars' worth of local currency at the quoted rate, whether the transfer takes five seconds or five minutes. [What is a stablecoin](/resources/more/what-is-a-stablecoin) covers how the peg is held.

Bitcoin works as an asset, not as a payment unit. Its price can move several percent between sending and conversion, so someone eats the difference. That makes it fine to sell from a treasury, and awkward to pay a supplier with.

Stablecoins aren't risk-free, and an honest off-ramp choice accounts for three things:

1. **Depeg risk.** USDC briefly traded below 90 cents in March 2023, when part of its reserves sat at a failed bank. It recovered within days. [USDC vs USDT](/resources/more/usdc-vs-usdt-for-payments) compares how both held up under stress.
2. **Issuer and regulatory risk.** Which stablecoin you hold decides where you can use it. In the EU, MiCA keeps unauthorized tokens out of regulated channels, as the [MiCA explainer](/resources/more/mica-stablecoin-rules-explained) covers.
3. **Network choice.** The same token on different chains has different fees and finality. [Which network to off-ramp on](/resources/more/best-network-to-off-ramp-stablecoins) compares nine of them.

## Which type fits which job?

- **If you pay many third parties in local currency from your product,** use a payment API.
- **If clients pay you in stablecoins and you want fiat,** use an off-ramp wallet on your bank account.
- **If you cash out your own treasury now and then,** an exchange is enough.
- **If you're moving one very large block,** ask an OTC desk for a quote and compare it with an API quote for the same amount.
- **If your consumer wallet app needs a sell button,** embed a wallet ramp.

For the rail side of the decision, the [US](/resources/more/how-to-off-ramp-usdc-to-us-bank-account) and [SEPA](/resources/more/how-to-off-ramp-usdc-to-euros-sepa) off-ramp guides cover dollars and euros, and the [USDT guide](/resources/more/how-to-off-ramp-usdt-latin-america) covers Latin America.

## What should you check before using an off-ramp?

Eight questions, whatever the type.

1. **License.** Which money transmission or virtual asset license covers the country you pay out to?
2. **Custody.** Who holds the funds before conversion, and what happens if the payout fails? [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers what changes when the provider never holds your balance.
3. **Tokens and networks.** Does it take your stablecoin on the chain your funds already sit on?
4. **Rails and countries.** Which local rails are live in production, not on the roadmap?
5. **Limits.** Per transaction, per day, per month, and how to raise them.
6. **Quotes.** Is the rate locked before you send, for how long, and are fees itemized?
7. **Compliance.** Who runs KYB, KYC, sanctions screening, and the [travel rule](/resources/more/travel-rule-stablecoin-off-ramps), and what documents will they ask for?
8. **Tracking.** Does each payout come back with a status and a rail reference? [How to track a payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) lists the reference per rail.

For a full vendor review, the [30 due diligence questions](/resources/more/stablecoin-payments-provider-due-diligence) go further.

## Where does BlindPay fit?

BlindPay is a payment API for businesses. It converts USDC and USDT and pays out over Pix, SPEI, Transfers 3.0, ACH Colombia, ACH, RTP, domestic wire, SEPA, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations. Payouts from an external wallet are non-custodial: you approve the quoted amount and BlindPay pulls it only when the payout executes, with no pre-funding. Off-ramp wallets cover stablecoins that arrive from third parties. Managed wallets, in beta, are custodied by BlindPay. KYB, KYC, and sanctions screening run inside the flow. BlindPay isn't an exchange, an OTC desk, or a consumer wallet.

Try it in the sandbox with the [payout quickstart](/docs/quickstart-payout).

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

---

Source: https://blindpay.com/resources/more/why-onramp-and-offramp-rates-differ

---
title: "Why are on-ramp and off-ramp rates different? Bid, ask, and the round-trip cost"
seoTitle: "Why on-ramp and off-ramp rates differ: bid, ask, round trip"
description: "Buying stablecoins and selling them back happen at two prices. How bid, ask, and mid-market rates work, and how to calculate a round-trip cost."
date: "2026-09-24"
updated: "2026-09-24"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Why is the off-ramp rate lower than the on-ramp rate?"
    a: "Because a provider buys and sells at two different prices. When you on-ramp reais into USDC, you buy dollars at the ask, above the mid-market rate. When you off-ramp USDC into reais, you sell dollars at the bid, below it. The gap between the two is how the provider gets paid for holding inventory and carrying risk."
  - q: "What is the bid-ask spread in currency exchange?"
    a: "The bid-ask spread is the gap between the price a dealer pays to buy a currency and the price it charges to sell it. The mid-market rate sits halfway between. In wholesale markets the gap is tiny: Brazil's PTAX buy and sell dollar rates on September 23, 2026 were about 1.2 basis points apart. Retail and API prices sit wider."
  - q: "How do I calculate the round-trip cost of converting to stablecoins and back?"
    a: "Start with an amount, apply the on-ramp quote and its fees, then apply the off-ramp quote and its fees to the result. Round-trip cost is one minus the final amount divided by the starting amount. With a 0.5% margin on each side plus small flat fees, R$ 54,000 comes back as about R$ 53,389, a 1.13% round-trip cost."
  - q: "Does converting USD to USDC have a bid-ask spread?"
    a: "Not in the FX sense. USDC is designed to be redeemable 1:1 for US dollars, so dollars to USDC is not a currency exchange. What you pay is the provider's fee for collecting the bank transfer and delivering the stablecoin. The bid-ask spread shows up when a local currency like reais or pesos is on one side."
  - q: "How can I see both spreads on a BlindPay quote?"
    a: "Both BlindPay payin quotes and payout quotes return commercial_quotation, the raw market rate, next to blindpay_quotation, the rate after BlindPay's fee. The gap on each quote is that leg's margin. Request a payin quote and a payout quote for the same corridor at the same moment to measure the round trip, then add the listed fee lines."
---

On-ramp and off-ramp rates differ because a provider buys and sells at two prices. The ask, what you pay to get dollars or stablecoins, sits above the mid-market rate. The bid, what you get when you sell them, sits below it. Convert one way and straight back and you pay both gaps plus fees. That total is the round-trip cost.

People notice this the first time they on-ramp R$ 54,000, off-ramp it a minute later, and get back less. Nothing is broken. Two spreads and two sets of fees did exactly what they are built to do. Every term below is defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

**Key takeaways**

- Every conversion has a side. Buying dollars uses the ask, selling dollars uses the bid.
- The mid-market rate is a reference point between the two, not a price anyone fills you at.
- A round trip pays both spreads and both sets of fees. Two 0.5% margins plus small fees come to about 1.13%.
- Dollars to USDC is not an FX conversion. Its cost is a fee line, not a spread.
- Measure both legs at the same moment, on the same corridor and size, or the comparison is noise.

## What are bid, ask, and mid-market rates?

The bid is the price a dealer pays to buy a currency from you. The ask is the price it charges to sell that currency to you. The mid-market rate sits halfway between them.

Wholesale markets publish both sides. Brazil's central bank releases a daily buy and sell PTAX dollar rate in its [open data portal](https://dadosabertos.bcb.gov.br/dataset/dolar-americano-usd-todos-os-boletins-diarios). On September 23, 2026, the buy rate was 5.14080 BRL per USD and the sell rate was 5.14140. That is a gap of 0.0006 reais, about 1.2 basis points around the midpoint.

That is the interbank end of the market, at size, between dealers. Any price you get through an app or an API sits wider, because the provider adds its own margin on each side. The ECB makes the same point about its [euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html): they are published for information purposes only, and using them for transactions is strongly discouraged.

## Why does a provider quote two different prices?

Because it gets paid in the gap. A provider that fills conversions on demand has to hold inventory in both currencies, hedge the risk of holding it, move money over local rails, and run compliance on every customer.

Four costs end up in the spread:

1. **Inventory risk.** Reais held overnight can lose value against the dollar. The provider charges for carrying them.
2. **Hedging.** Offsetting that risk in the market has its own cost.
3. **Rails and banking.** Local payment systems, bank accounts, and settlement all cost money to run.
4. **Flow imbalance.** On many corridors more customers sell dollars than buy them, or the reverse. The provider prices each side to keep inventory balanced, so the two margins are not always equal.

[What is a liquidity market](/resources/more/what-is-a-liquidity-market-cross-border-payments) explains where that inventory comes from.

## Which side of the market does each ramp use?

The direction of the conversion decides the side. This table uses BRL per USD, the way Brazilian rates are usually quoted.

| Flow | You are | Rate you get | Compared with mid |
| --- | --- | --- | --- |
| On-ramp, BRL to USDC | Buying dollars with reais | Ask | More reais per USDC than mid |
| Off-ramp, USDC to BRL | Selling dollars for reais | Bid | Fewer reais per USDC than mid |
| On-ramp, USD to USDC | Moving dollars into a dollar stablecoin | No FX | Fee line only |
| Off-ramp, USDC to USD | Moving a dollar stablecoin into dollars | No FX | Fee line only |

The last two rows matter. USDC is designed to be [redeemable 1:1 for US dollars](https://www.circle.com/usdc), so dollars in and USDC out is not a currency exchange. The cost there is a fee, not a spread. [Virtual account fees](/resources/more/virtual-account-fees) breaks those fees down.

## How do you calculate the round-trip cost?

Apply each leg's quoted rate and fees in order, then compare the end amount with the start.

Round-trip cost % = (1 - final amount / starting amount) x 100

**Illustrative example.** A company on-ramps R$ 54,000 into USDC and off-ramps it straight back. Mid-market is 5.40 BRL per USDC. Each leg carries a 0.5% margin, plus a small flat fee. All numbers are made up for the arithmetic, not BlindPay pricing.

| Step | Rate or fee | Running amount |
| --- | --- | --- |
| Start | | R$ 54,000.00 |
| On-ramp at the ask | 5.427 BRL per USDC (mid + 0.5%) | 54,000 / 5.427 = 9,950.25 USDC |
| On-ramp flat fee | 10 USDC | 9,940.25 USDC |
| Off-ramp at the bid | 5.373 BRL per USDC (mid - 0.5%) | 9,940.25 x 5.373 = R$ 53,408.96 |
| Off-ramp flat fee | R$ 20 | R$ 53,388.96 |
| Round-trip cost | | R$ 611.04, or 1.13% |

Two margins of 50 basis points each make about 100 basis points. The flat fees add the rest. On a real corridor the two margins may differ, which is why you measure both.

## When do businesses pay a round trip without noticing?

More often than you would guess. Three patterns show up again and again.

- **Domestic money through a cross-border pipe.** A platform collects reais from Brazilian customers, on-ramps them to USDC, then off-ramps to pay Brazilian sellers. The money never needed to leave the currency, but it paid two spreads.
- **Treasury parked in the wrong currency.** A company holds USDC between a BRL receivable and a BRL payable a week later. It pays the round trip, plus a week of FX exposure in each direction.
- **Testing with real money.** Teams send small amounts out and back to "check the rails" and then read the loss as a pricing problem.

The fix is the same each time: use stablecoins for the leg that crosses a border, and keep same-currency flows in that currency. [Where the exchange rate gets fixed](/resources/more/where-is-the-exchange-rate-set-onramp-offramp) shows which step of each flow sets the rate.

## How do you read both sides on a BlindPay quote?

Both quote types show the margin directly. A [payin quote](/docs/payin-quotes) returns `commercial_quotation`, the raw market rate, and `blindpay_quotation`, the rate including BlindPay's fee. A [payout quote](/docs/payout-quotes) returns the same two fields, with `blindpay_quotation` net of the fee.

To measure one leg:

1. Read `commercial_quotation` and `blindpay_quotation` from the quote.
2. Margin % = absolute difference / `commercial_quotation` x 100.
3. Add the fee lines: `flat_fee`, `partner_fee_amount` if your platform adds a markup, and `billing_fee_amount` if the fee is invoiced at month end.

To measure the round trip, request a payin quote and a payout quote for the same corridor and amount at the same moment, and run the arithmetic from the table above. A quote from this morning and another from this afternoon measures market movement, not spread.

Instance owners and admins can also see the fee schedule per rail and per network, with payin and payout fees listed separately, through the [billing fees endpoint](/docs/learn/billing). [Live quote vs forward vs fixed rate](/resources/more/live-quote-vs-forward-contract-vs-fixed-rate) covers what to do when the timing, not the spread, is the risk.

## What to do next

Request one payin quote and one payout quote on the same corridor, at the same minute, and compute the round trip from `commercial_quotation` and `blindpay_quotation`. The [payin quotes docs](/docs/payin-quotes) show the request and every response field.

---

Source: https://blindpay.com/changelog/2026-09-23-instance-business-details-api

---
title: 'Read your instance business details through the API'
description: 'Three read-only endpoints now expose the business details, business profile and ownership information you entered during onboarding, so you can sync your instance data into your own systems.'
date: 2026-09-23
category: Product Update
categoryType: update
contributors:
  - andreMayer
isChangelog: true
---

The business information you entered when onboarding your instance is now readable through the API and the MCP server.

<!--more-->

## What's new

Three read-only endpoints under `/v1/instances/{instance_id}/onboarding/` are now part of the public reference and the SDK:

- `GET .../business_details`: legal name, tax ID, entity type, state of incorporation, formation date, trading names and registered address.
- `GET .../business_profile`: industry, website, business scenario and expected volume.
- `GET .../ownership_documents`: owners and ownership documents.

They authenticate with your regular instance API key. Use them to keep the records you hold about your own instance in sync with what BlindPay has on file. Updating this information still happens through the dashboard.

---

Source: https://blindpay.com/resources/more/custodial-vs-self-custodial-stablecoin-cards

---
title: "Custodial vs. self-custodial stablecoin cards: who actually holds your money?"
seoTitle: "Custodial vs. self-custodial stablecoin cards"
description: "Who holds the stablecoins behind your card: custodial vs. self-custodial models, smart-account allowances, failure modes, and what August 2026 showed."
date: "2026-09-23"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is the difference between a custodial and a self-custodial crypto card?"
    a: "With a custodial card, the provider holds the stablecoins in wallets it controls and tracks your share on a ledger. With a self-custodial card, the stablecoins stay in a wallet you control, and the card can only spend within an allowance you grant. Custodial is simpler to recover; self-custodial keeps funds out of the provider's hands."
  - q: "How does Gnosis Pay work?"
    a: "Gnosis Pay gives each user a Safe smart account that the user controls. A Roles Module sets a spending allowance the card can draw from, and a Delay Module puts a 25-hour delay on direct transactions through it, per Gnosis Pay's documentation. The card is a Visa debit card that spends from that account."
  - q: "Can you spend from your own wallet with a card?"
    a: "Yes, with a self-custodial card. The stablecoins stay in a smart account or wallet you control, and you authorize the card program to spend up to a limit. You still go through identity checks, because card rails require the issuer to identify every cardholder even when the wallet itself is permissionless."
  - q: "Who holds the keys on a crypto card?"
    a: "On a custodial card, the provider or its custodian holds the keys to the wallets where your stablecoins sit. On a self-custodial card, you hold the keys, often through a smart account with recovery options. Read the card terms: they should say who controls the wallet and what happens to your balance if the provider fails."
  - q: "Are self-custodial crypto cards safer?"
    a: "They remove one risk and add another. Your balance does not depend on the provider staying solvent, and in the August 2026 Rain-managed Solana contract incident self-custodial wallets were reported unaffected. But you take on key management, and smart contract modules can have bugs of their own, as Gnosis Pay's June 2026 post-mortem showed."
---

A custodial stablecoin card keeps your USDC or USDT in wallets the provider controls and tracks your balance on its ledger. A self-custodial card leaves the stablecoins in a wallet you control and lets the card spend only within an allowance you set. Custodial is easier to recover. Self-custodial means the provider never holds your money.

The card in your hand looks the same either way. What changes is who can move the funds, what happens if the company behind the card fails, and what you lose if you lose your phone.

This guide explains both models, how smart-account allowances work, and what a real incident in August 2026 showed about shared infrastructure. For the basics, read [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card) and the issuing view in [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Custodial: the provider holds the stablecoins; you hold a claim on its ledger.
- Self-custodial: you hold the stablecoins in a wallet or smart account; the card spends within an allowance.
- Both models still require identity checks, because card issuers must identify every cardholder.
- In the August 2026 Rain-managed Solana contract incident, card balances in the affected contract were hit and self-custodial wallets were reported unaffected.
- Neither model is risk-free. Self-custodial setups move the risk to keys and smart contract code.

## What do custodial, self-custodial, and non-custodial mean?

Three terms describe who controls the money at each point. They are often mixed up, so here are plain definitions.

- **Custodial.** A company holds the assets on your behalf. It controls the private keys to the wallets, and your balance is an entry on its books.
- **Self-custodial.** You control the wallet and its keys. No company can move the funds without your authorization, within whatever rules the wallet's code sets.
- **Non-custodial payment processing.** A payment company executes a transaction you authorize from your own wallet, for that exact amount, without holding a balance for you before or after.

A card can be custodial or self-custodial. A payout or collection service sitting next to the card can be non-custodial. The three describe different jobs.

## How does a custodial stablecoin card work?

In a custodial program, you send stablecoins to the provider and it keeps them in wallets it controls. When you tap the card, the program checks its ledger, places a hold, and approves in milliseconds.

1. **Deposit.** You send USDC to a deposit address the provider gives you, or buy stablecoins inside its app.
2. **Ledger credit.** The provider credits your account on its books. The actual stablecoins sit in pooled or segregated wallets it controls.
3. **Purchase.** The authorization reads your ledger balance and writes a hold.
4. **Settlement.** The provider converts from its own wallets to fund settlement with the network.
5. **Withdrawal.** To take money out, you ask the provider to send stablecoins to an outside wallet or to pay out to a bank.

This is how most exchange-linked cards work. Coinbase Card, for example, spends from a Coinbase account balance, per [Coinbase's card page](https://www.coinbase.com/card).

## How does a self-custodial stablecoin card work?

In a self-custodial program, the stablecoins stay in a wallet you control, usually a smart account. You grant the card a spending allowance, and the program can only pull up to that limit.

neobankbeat's [explainer on stablecoin cards](https://www.neobankbeat.com/blog/stablecoin-cards-explained) (November 2025) describes this as a spending allowance enforced by the smart contract. It also makes a point people miss: "Even fully self-custodial programmes must identify cardholders... The wallet may be permissionless; the plastic isn't."

Gnosis Pay is the best documented example. Per [its documentation](https://docs.gnosispay.com/concepts/safe/overview):

- Each user gets a **Safe smart account** they control.
- A **Roles Module** sets the spending allowance the card can draw from.
- A **Delay Module** adds a 25-hour transaction delay, set long on purpose to discourage direct use of the module.

[Coin Bureau's card roundup](https://coinbureau.com/analysis/best-crypto-debit-cards) (updated March 2026) describes Gnosis Pay as a self-custodial spend card focused on the EEA and UK, with no added FX markup beyond the Visa rate.

## How do custodial and self-custodial cards compare?

The trade-off is control against convenience. Custodial cards are easier to use and recover. Self-custodial cards keep the provider from ever holding your funds.

| | Custodial card | Self-custodial card |
| --- | --- | --- |
| Who holds the stablecoins | The provider or its custodian | You, in a wallet or smart account |
| Balance check at purchase | Internal ledger | Onchain balance and allowance |
| Convenience | High; works like a fintech app | Good, but you manage a wallet |
| Recovery if you lose access | Provider resets your login | Depends on your wallet's recovery setup |
| If the provider fails | Your balance depends on how it held and segregated funds | Your stablecoins stay in your wallet |
| If the smart contract has a bug | Provider's own contracts and wallets at risk | Your account modules may be at risk |
| Identity check | Required | Required |
| Deposit insurance | No | No |

Neither column has deposit insurance. The FDIC's [fact sheet on crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html) says its insurance does not apply to crypto assets and does not protect against the failure of non-bank entities such as crypto custodians and exchanges.

## What happened in the August 2026 Rain card contract incident?

On August 28, 2026, attackers made unauthorized withdrawals from card balances held in a Rain-managed Solana contract. Rain said the vulnerability affected a small number of programs using an outdated version of its Solana contracts, and affected users were reimbursed.

The public timeline, from the companies' statements and SpendNode's coverage:

1. **August 28.** Unauthorized withdrawals begin. Rain later upgraded the contracts the same day.
2. **August 29.** Tria reported 636 affected users and $431,945, with every affected user being refunded in full and wallets untouched, per [SpendNode](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/). Rain confirmed repayment.
3. **August 30.** Avici reported $500,859 across 1,685 users and said "refunds are processed in full, with an extra 10% cashback", per [SpendNode](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/).

Rain's own [statement](https://x.com/raincards/status/2093435073081053518) described the scope as "a small number of programs using an outdated version of our Solana contracts." It would be wrong to assume every program on the same issuer was exposed. Rain had not published a full post-mortem by late August.

The useful lesson is about shared infrastructure. Card balances sat in a common contract that several programs used, so one bug reached users of several brands at once. Self-custodial wallets sat outside that contract and were reported unaffected.

## Do self-custodial cards have their own risks?

Yes. Self-custody moves the risk from the provider's balance sheet to your keys and the code that sets your allowance. That code can fail too.

Gnosis Pay published a [post-mortem](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit) on a June 1, 2026 exploit involving its Delay and Roles modules. Per that post-mortem, attackers extracted $1.5 million, and Gnosis absorbed the losses and restored all funds to users. It is still a reminder that the modules protecting a self-custodial card are software, and software gets audited, patched, and sometimes exploited.

The other self-custody risk is personal. Lose your keys without a recovery setup, and no support team can restore them.

## Which model should you choose?

Choose based on what you fear more: a provider failing, or yourself losing access. Most people are better served by one model, and a few use both.

- **Pick custodial** if you want a simple app, password resets, and support, and you are comfortable trusting a regulated provider with the balance.
- **Pick self-custodial** if you already manage a wallet, want your stablecoins out of any company's hands, and accept key management.
- **Keep the card balance small** in either case. Hold what you plan to spend this month on the card wallet, and keep larger amounts elsewhere.

Before choosing, read the card terms for the issuer's name, how funds are held and segregated, and what happens to balances if the provider winds down.

## How does non-custodial payout processing fit next to a card?

The card covers spending. Funding the card wallet and cashing out to a bank are separate movements, and they can also be designed so no provider holds your money in between.

BlindPay is a stablecoin API for global payments that works this way for payouts. It operates as a non-custodial payment processor for payout flows from customer-controlled wallets: you authorize the exact amount and BlindPay executes that single transaction. If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic; USD payouts and payouts whose review times out are refunded after an operator review. Optional BlindPay-managed wallets (beta) are custodial when you choose that path.

For a card program, that means users can move stablecoins from the wallet behind their card into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) without parking a balance with another provider first. The [BlindPay introduction](/docs/introduction) covers the model, and the [payout quickstart](/docs/quickstart-payout) runs a test payout on a free development instance.

## Sources

- neobankbeat, [Stablecoin cards explained](https://www.neobankbeat.com/blog/stablecoin-cards-explained), November 18, 2025
- Gnosis Pay, [GP Safe Account](https://docs.gnosispay.com/concepts/safe/overview)
- Gnosis Pay, [Post-mortem: Gnosis Pay vulnerability exploit](https://gnosispay.com/blog/post-mortem-gnosis-pay-vulnerability-exploit)
- Coin Bureau, [Best crypto debit cards](https://coinbureau.com/analysis/best-crypto-debit-cards), updated March 11, 2026
- SpendNode, [Tria details Rain card vulnerability](https://www.spendnode.io/blog/tria-rain-solana-card-vulnerability-636-users-refund-august-2026/), August 29, 2026
- SpendNode, [Avici completes refunds with 10% cashback](https://www.spendnode.io/blog/avici-solana-card-refunds-complete-10-percent-cashback-august-2026/), August 30, 2026
- Rain, [statement on X](https://x.com/raincards/status/2093435073081053518), August 2026
- Coinbase, [Coinbase Card](https://www.coinbase.com/card)
- FDIC, [What the public needs to know about FDIC deposit insurance and crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html), July 28, 2022

---

Source: https://blindpay.com/resources/more/live-quote-vs-forward-contract-vs-fixed-rate

---
title: "Live quote vs forward contract vs fixed rate: which FX tool fits a cross-border payout?"
seoTitle: "Live quote vs forward contract vs fixed rate: which to use"
description: "A live quote holds a rate for minutes, a forward locks one for a future date, a fixed rate holds a day. How each prices risk, and when treasury uses each."
date: "2026-09-23"
updated: "2026-09-23"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between a live quote and a forward contract?"
    a: "A live quote prices a conversion now and holds that price for a short window, minutes at most, for a payment you are about to make. A forward contract fixes an exchange rate today for a conversion on a set date in the future, often weeks or months out. One is a payment tool, the other is a hedging tool."
  - q: "Is a fixed exchange rate cheaper than a live quote?"
    a: "Usually not. A provider that honors one rate for a whole day carries every market move during that day, so it builds a buffer into the rate to cover the risk. You pay for that stability through a wider spread. A live quote carries risk for minutes, so the margin needed to cover it is smaller."
  - q: "How is a forward exchange rate calculated?"
    a: "A forward rate starts from today's spot rate and adjusts for the interest rate difference between the two currencies over the contract's term. The higher-yielding currency trades at a forward discount. With spot at 5.40 BRL per USD, BRL rates at 14%, USD rates at 4%, and 90 days, a simplified calculation gives about 5.53. Banks add their own margin on top."
  - q: "Can I hedge a future BRL payable and still pay it with a stablecoin payout?"
    a: "Yes. The hedge and the payment are separate layers. A bank forward or non-deliverable forward fixes your economic rate for the due date. On the due date you pay the supplier with a live quote, and the forward's gain or loss offsets the difference between the live rate and the hedged rate. The payout handles delivery, the forward handles price risk."
  - q: "How long does a live quote last at BlindPay?"
    a: "BlindPay payout and payin quotes expire 5 minutes after creation by default, OTC payin quotes expire in 10 seconds, and SEPA payout quotes can be shorter. Each response carries expires_at in epoch milliseconds. Executing before that time settles at the quoted rate and fees. After it, the quote is rejected and you request a new one."
---

A live quote prices a conversion now and holds that price for minutes. A forward contract fixes a rate today for a conversion on a set future date. A fixed rate is a provider-set price honored for a day or longer. Payouts you send today fit a live quote; known future bills fit a forward.

Finance teams tend to blur the three because all of them "lock a rate". They lock it for very different lengths of time, and that length decides who carries the market risk and where you pay for it. Definitions for every term here are in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

**Key takeaways**

- A live quote is a payment tool: binding for minutes, executed right away.
- A forward is a hedging tool: binding for weeks or months, priced off the interest rate gap between the two currencies.
- A fixed rate moves the market risk to the provider for a day, and the provider charges for it in the spread.
- The tools stack. Hedge a future payable with a forward, then pay it with a live quote on the due date.
- The longer a rate is held, the more someone has to charge for holding it.

## What is a live quote?

A live quote is a binding price for one conversion, calculated when you request it and held for a stated window. Execute before the window closes and the conversion settles at the quoted rate and fees.

At BlindPay, payout and payin quotes expire 5 minutes after creation by default, OTC payin quotes expire in 10 seconds, and SEPA payout quotes can be shorter. An expired quote is rejected, never executed at a new rate. Each quote shows `commercial_quotation`, the market rate, next to `blindpay_quotation`, the rate after BlindPay's margin, so the cost of the conversion is visible before you confirm. [Where the exchange rate gets fixed](/resources/more/where-is-the-exchange-rate-set-onramp-offramp) maps that moment step by step.

## What is a forward contract?

A forward contract is an agreement to exchange two currencies on a set future date at a rate fixed today. Nothing changes hands until the date arrives.

Forwards are common. In the BIS [2025 Triennial Survey](https://www.bis.org/press/p250930.htm), outright forwards made up 19% of global FX turnover and spot 31%, out of $9.6 trillion traded per day in April 2025. The BIS notes that swaps and forwards are the instruments commonly used to hedge currency risk.

Offshore, some currencies, the Brazilian real among them, are often hedged with non-deliverable forwards. The BIS [describes an NDF](https://www.bis.org/publ/qtrpdf/r_qt1612h.htm) as a contract for the difference between an agreed rate and the actual spot rate at maturity, settled with a single payment. No reais change hands. It lists the real among the currencies with large NDF markets.

Forwards usually come from banks and FX brokers. Expect a credit line or collateral, a framework agreement, and a minimum size.

## What is a fixed rate?

A fixed rate is a price a provider sets on a schedule, often once a day, and honors for every conversion until the next update. It looks simple on a pricing page. The cost hides in the buffer.

The provider carries every market move between updates. To survive a bad day, it sets the fixed rate further from the market than a live quote would be. Public reference rates work the same way: the ECB updates its [euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) around 16:00 CET each working day, publishes them for information purposes only, and strongly discourages using them for transactions.

## How do live quotes, forwards, and fixed rates compare?

They differ on how long the rate holds, and everything else follows from that.

| | Live quote | Forward contract | Fixed rate |
| --- | --- | --- | --- |
| When the rate is set | At request time | At trade date, for a future date | At the provider's update time |
| How long it holds | Seconds to minutes | Days to months | Usually a day |
| Who carries market risk | Provider, inside the window | Each side, against the agreed rate | Provider, until the next update |
| Where the cost sits | Spread shown on the quote | Forward points plus bank margin | Buffer built into the rate |
| What you need | An API or dashboard | Bank relationship, credit line or collateral | An account with the provider |
| Best for | Payouts sent now | Known future payables or receivables | Low-value flows where simplicity beats price |

[Stablecoin FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes) covers a fourth case you should avoid: an indicative rate that nobody commits to, where the risk lands on you.

## How is a forward rate calculated?

A forward rate starts from today's spot rate and adjusts for the interest rate gap between the two currencies until the delivery date. The currency with the higher interest rate trades at a forward discount, so you get more of it per dollar at the forward date than today.

The simplified formula, using simple interest and a 360-day year:

Forward = Spot x (1 + quote currency rate x days / 360) / (1 + base currency rate x days / 360)

**Illustrative example.** A US importer owes a Brazilian supplier R$ 1,000,000 in 90 days. Spot is 5.40 BRL per USD. Assume BRL interest rates at 14% and USD at 4%. These are made-up inputs for the arithmetic, and real forwards in reais use their own conventions and a bank margin.

- Forward = 5.40 x (1 + 0.14 x 90/360) / (1 + 0.04 x 90/360)
- Forward = 5.40 x 1.035 / 1.01 = 5.40 x 1.02475 = about 5.534 BRL per USD
- Dollars needed at the forward rate: 1,000,000 / 5.534 = $180,701

Now compare what happens with no hedge, paying on day 90 with a live quote:

| Spot on day 90 | Dollars needed unhedged | Versus the forward |
| --- | --- | --- |
| 5.10 | $196,078 | $15,377 more |
| 5.534 | $180,701 | Same |
| 5.80 | $172,414 | $8,287 less |

The forward does not make the bill cheaper. It makes it known. That is the job.

## When should a treasury team use each one?

Use a decision rule, not a preference.

- **Choose a live quote** when the payment goes out now and the recipient must receive a known amount: supplier payments, payroll, marketplace payouts. You confirm, you send, done.
- **Choose a forward** when you have a firm obligation in a foreign currency weeks or months away, large enough that a 5% move would hurt the budget.
- **Choose a fixed rate** only when the flow is small and predictable enough that a wider spread costs less than the effort of comparing quotes.

Most teams that pay out across borders use the first one every day and the second one a few times a quarter.

## Can you hedge with a forward and still pay with a live quote?

Yes, and it is the usual setup. Think of two layers.

The **hedge layer** fixes your economic rate. A bank forward or NDF covers the R$ 1,000,000 due in 90 days at about 5.534.

The **payment layer** moves the money. On day 90 you request a live quote and pay the supplier over Pix. If spot moved to 5.10, the live quote costs more dollars than planned, and the hedge pays out roughly the difference. If spot moved to 5.80, the live quote costs fewer dollars, and you pay the difference on the hedge.

The net cost lands close to the forward rate either way, and the supplier gets the exact reais amount on the day. BlindPay runs the payment layer: a binding quote, a payout over the local rail, and a receiver amount you can show before anything moves.

## Why not just ask for a longer quote window?

Because someone has to carry the risk for every extra minute, and they will charge for it. A 5-minute window covers a confirmation screen. A 90-day window is a forward, and forwards are priced off interest rates and credit, not off a payout fee.

Design your payment flow around the window you get. Request the quote right before the user confirms, read `expires_at` from the response, and re-quote when it lapses. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers expiry and fee direction in the API. The [cut-off times reference](/docs/kb/cut-off-times) lists BlindPay's quote windows by type.

## What to do next

Price your next payout with a live quote and compare `commercial_quotation` with `blindpay_quotation` to see the margin. The [payout quotes docs](/docs/payout-quotes) show every field in the response.

---

Source: https://blindpay.com/resources/more/pix-key-cpf-clabe-payout-details

---
title: "What details do you need to pay someone in Brazil or Mexico? Pix keys, CPF, and CLABE"
seoTitle: "Payout details for Brazil and Mexico: Pix key, CPF, CLABE"
description: "What a payout to Brazil or Mexico needs from the recipient: Pix key types, CPF and CNPJ formats, the 18-digit CLABE, and the checks that stop a bad payout."
date: "2026-09-23"
updated: "2026-09-23"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to collect payout details for a recipient in Brazil or Mexico"
  steps:
    - name: "Record who owns the account"
      text: "Note whether the account belongs to your customer or to a third party such as an employee, contractor, or supplier, and collect the account holder's full legal name."
    - name: "Collect the Brazilian identifier"
      text: "Ask for a Pix key: a CPF, CNPJ, mobile number, email, or random key. If the recipient has no key, collect the CPF or CNPJ, the bank code, the branch, and the account number with its check digit."
    - name: "Collect the Mexican identifier"
      text: "Ask for the 18-digit CLABE and the account holder's name. A debit card number or phone number also works, together with the bank's institution code."
    - name: "Validate before you save"
      text: "Strip formatting, then check lengths and check digits: 11 digits for a CPF, 14 characters for a CNPJ, 18 digits for a CLABE with a valid final digit. Reject malformed values in the form, not at payout time."
    - name: "Save the account and send a first payout"
      text: "Store the validated details as a bank account with your payout provider, send a small first payout, and reuse the stored account for every payout after that."
faq:
  - q: "What is a Pix key?"
    a: "A Pix key is an alias that points to a Brazilian bank or payment account. It can be a CPF, a CNPJ, a mobile number, an email address, or a random key generated by the bank. The Banco Central do Brasil runs the directory that resolves each key to an account, so the payer needs only the key, not the bank, branch, and account number."
  - q: "How many digits is a CLABE?"
    a: "18. The first three identify the bank, the next three the city, the next eleven the account, and the last one is a check digit calculated from the other seventeen. A mistyped digit almost always breaks the check digit, so validating it catches most typos before any money moves."
  - q: "What is the difference between a CPF and a CNPJ?"
    a: "A CPF is the 11-digit tax number for individuals in Brazil. A CNPJ is the 14-character tax number for companies: an 8-character root, a 4-character branch number (0001 for the head office), and 2 check digits. Since July 31, 2026, Receita Federal issues new CNPJs that can include letters; existing numeric CNPJs stay valid."
  - q: "Can I pay a Pix key that isn't in my customer's name?"
    a: "Yes, if your provider supports third-party payouts. On BlindPay, a customer can pay out to a bank account that belongs to someone else, such as an employee, contractor, or supplier, by setting the recipient relationship on the bank account. The recipient still needs a valid Pix key or bank details, and the payout still goes through compliance screening."
  - q: "Do I need the recipient's RFC to pay them over SPEI?"
    a: "Not for the SPEI payment itself. A SPEI payout needs the CLABE, or a debit card or phone number, plus the account holder's name. The RFC, Mexico's tax ID, is for your tax and invoicing records. A SWIFT payout to a Mexican beneficiary is different: BlindPay requires the beneficiary's local tax ID and phone number there."
---

To pay someone in Brazil, you need their full name and a Pix key: a CPF, CNPJ, mobile number, email, or random key. Without a key, you need their CPF or CNPJ plus the bank code, branch, and account number. To pay someone in Mexico, you need their name and an 18-digit CLABE. Validate every identifier when you save it, before the first payout.

That's the whole list. Most failed payouts to Latin America don't fail because of the stablecoin. They fail on one digit.

## What do you need to pay someone in Brazil?

A name and one of three sets of details, depending on the rail.

| Rail | What you collect | When to use it |
| --- | --- | --- |
| Pix by key | Account holder's name, Pix key | The default. Instant, 24/7 |
| Pix by bank details | Name, CPF or CNPJ, bank ISPB code, branch, account number with check digit, account type | The recipient has no Pix key, or you want to pay one specific account |
| TED | Name, CPF or CNPJ, bank COMPE code, branch, account number with check digit, account type | Older bank transfer rail. Settles the same banking day if sent before the cut-off |

[Pix](https://www.bcb.gov.br/en/financialstability/pix_en) is Brazil's instant payment system, run by the Banco Central do Brasil since November 2020. It settles in seconds and runs 24/7, including weekends and holidays. TED doesn't. A TED sent after the end of the Brazilian banking day waits for the next one, which can push it past a weekend.

### What are the five types of Pix key?

| Key type | Format | Belongs to |
| --- | --- | --- |
| CPF | 11 digits, written 000.000.000-00 | An individual |
| CNPJ | 14 characters, written 00.000.000/0000-00 | A company |
| Mobile number | +55, area code, number | Whoever registered it |
| Email | A regular email address | Whoever registered it |
| Random key | A long code the bank generates | Whoever registered it, with no personal data exposed |

Under the Central Bank's rules, an individual can register up to 5 keys per account and a company up to 20. Each key points to one account at a time.

Keys move. A recipient can delete a key or port it to a different bank, so a phone key that paid the right account in March can point somewhere else in September. When a recipient says they changed banks, ask for the key again.

When a person pays a Pix key in a banking app, the app shows the recipient's name and part of their tax number before they confirm. An automated payout has no one looking at that screen. Collect the account holder's legal name up front and treat a mismatch as a reason to stop, not a reason to retry.

### How are CPF and CNPJ numbers built?

A **CPF** has 11 digits. The last two are check digits calculated from the first nine, so a random typo fails validation.

A **CNPJ** has 14 characters: an 8-character root that identifies the company, a 4-character number for the establishment (0001 is the head office), and 2 check digits.

One change matters for anyone writing validation code. Since July 31, 2026, Receita Federal issues [new CNPJs that can contain letters](https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/acoes-e-programas/programas-e-atividades/cnpj-alfanumerico) as well as numbers. They keep 14 characters and numeric check digits, and existing numeric CNPJs don't change. A form that only accepts `^\d{14}$` will reject a valid company registered this year.

### When do you need bank details instead of a Pix key?

When the recipient doesn't have a key, or when a supplier's invoice lists a bank account instead. Pix can still pay by account details. You need the recipient's CPF or CNPJ, the bank's code, the branch, and the account number.

Two bank codes exist in Brazil, and they're easy to mix up. The **ISPB** is an 8-digit code that identifies an institution in the Central Bank's systems, and it's what Pix uses. The **COMPE** code is the 3-digit bank number people know from checkbooks and TED transfers. Account numbers usually end in a check digit after a hyphen, like `12345-6`. Leave it off and the payment has nowhere to go.

## What do you need to pay someone in Mexico?

A name and a CLABE, in almost every case.

| Destination | What you collect | Notes |
| --- | --- | --- |
| CLABE | Account holder's name, 18-digit CLABE | The default for SPEI |
| Debit card | Account holder's name, card number, bank institution code | Useful for recipients who only know their card |
| Phone number | Account holder's name, phone number, bank institution code | Only if the account is linked to the number |

[SPEI](https://www.banxico.org.mx/services/interbanking-electronic-payme.html) is Mexico's interbank payment system, run by Banco de México since 2004. It settles in seconds and runs 24/7, so a payout on a Sunday night lands like one on a Tuesday morning.

### How is a CLABE built?

| Positions | Digits | Meaning |
| --- | --- | --- |
| 1 to 3 | 3 | Bank code |
| 4 to 6 | 3 | City (plaza) code |
| 7 to 17 | 11 | Account number |
| 18 | 1 | Check digit |

The check digit is what makes a CLABE safe to type. To verify one:

1. Multiply each of the first 17 digits by a repeating weight of 3, 7, 1.
2. Keep only the last digit of each product.
3. Add them up and take the last digit of the sum.
4. Subtract that from 10. The result, with 10 counted as 0, must equal the 18th digit.

It takes a few lines of code and catches every single-digit typo and most swapped pairs. The first three digits also tell you the bank, so you can show "BBVA México" or "Banorte" next to the field and let the recipient spot a wrong account before you do.

### Does a Mexican payout need the RFC or CURP?

Not for SPEI routing. The RFC is Mexico's tax ID, 13 characters for individuals and 12 for companies, and the CURP is an 18-character personal registry code. Neither moves the money. Collect the RFC if your finance team needs it for tax records or supplier invoices.

## What about paying Brazil or Mexico over SWIFT?

It's possible and slower, and it needs more data. A USD payout over SWIFT to a Brazilian or Mexican beneficiary needs the beneficiary's full address, the bank's SWIFT code and address, the account number, and on BlindPay the beneficiary's local tax ID and phone number. SWIFT payouts have a 100 USD minimum and can take up to 5 business days.

Local rails ask for less and settle faster. Unless the recipient specifically wants dollars in a dollar account, pay in reais over Pix or pesos over SPEI. [USDC to MXN routes](/resources/more/usdc-to-mxn-routes-2026) and [USDC to BRL routes](/resources/more/usdc-to-brl-routes-2026) compare the options for each currency.

## Which details break payouts most often?

- **Formatting left in.** Dots, slashes, dashes, and spaces in a CPF, CNPJ, or CLABE. Strip them before validating, and keep letters for new CNPJs.
- **Phone keys without the country code.** A Brazilian mobile key needs +55 in front.
- **A card number pasted into the CLABE field.** 16 digits where 18 belong. Length checks catch this instantly.
- **The trade name instead of the legal name.** Brazilian and Mexican banks register a company's legal name, not the brand on its website.
- **A missing account check digit** on Brazilian bank details.
- **An old Pix key** that now points to a different account, or to nothing.
- **Assuming TED runs on weekends.** It doesn't. Pix and SPEI do.

Each one turns into a returned or failed payout days later if nobody catches it in the form. [Common stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes) covers the stablecoin-side errors that sit next to these.

## How does BlindPay handle Brazil and Mexico payout details?

Each recipient is a bank account on a customer. BlindPay validates the data on creation (format, length, and country rules) the same way on development and production instances, so a bad CLABE fails in testing, not on payday.

- **Pix** needs a name and a Pix key.
- **PIX Safe** pays by bank details instead of a key: CPF or CNPJ, ISPB bank code, branch, and account number with check digit. It settles instantly.
- **TED** uses the same fields keyed by the COMPE code, and settles in about one business day.
- **SPEI** takes a CLABE, a debit card number, or a phone number, plus the beneficiary name, with the institution code for card and phone payouts.

You don't have to hardcode any of this. `GET /available/bank-details?rail=...` returns each rail's fields with validation patterns and bank picklists, and it's public, so your recipient form can check what BlindPay checks. Third-party accounts are supported through the recipient relationship field: an employee, a contractor, a supplier. The full field list is in [bank accounts](/docs/bank-accounts), and the rails by country are in [payment methods](/docs/kb/payment-methods).

Pix and SPEI payouts at BlindPay are instant. [How to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) walks through a full payout, and [how to off-ramp USDT in Latin America](/resources/more/how-to-off-ramp-usdt-latin-america) covers the stablecoin side for each country.

## What should you do next?

Build your recipient form from the bank-details endpoint, add the CLABE and CPF check digits client-side, and accept alphanumeric CNPJs. Then send your first Pix and SPEI payouts on a free development instance with the [payout quickstart](/docs/quickstart-payout), or check today's rate on the [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn) pages. For how the whole flow fits together, start with [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

---

Source: https://blindpay.com/resources/more/stablecoin-cross-border-payments-savings

---
title: "How businesses use stablecoins for cross-border payments (and where the savings come from)"
seoTitle: "Stablecoin cross-border payments: where savings come from"
description: "Correspondent hops, FX markup, and pre-funding: what stablecoin settlement does to each cost of a cross-border payment, with a $50,000 example to Brazil."
date: "2026-09-23"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do businesses use stablecoins for cross-border payments?"
    a: "They convert dollars into a stablecoin like USDC, move it across the border on a blockchain, and convert it into local currency at the other end, usually through one payment provider. The supplier or employee receives an ordinary bank deposit in their own currency, and the paying company never has to hold or manage the stablecoin itself."
  - q: "Where do the savings in a stablecoin cross-border payment come from?"
    a: "From three places. Correspondent bank hops and their deductions are replaced by one on-chain transfer. The FX conversion happens once, at a rate quoted before sending, instead of at a markup that shows up only on the statement. And the provider does not need capital parked in foreign accounts, which removes a cost that traditional providers pass on in their pricing."
  - q: "Do we have to choose a blockchain network to pay a supplier with stablecoins?"
    a: "No. In BlindPay's Abstracted flavor, you create a payout to a bank account and the stablecoins settle behind the scenes. BlindPay settles on networks including Polygon, Base, Arbitrum, Ethereum, Solana, Stellar, and Tron, and the paying company never has to pick one."
  - q: "What happens if a cross-border stablecoin payment cannot settle?"
    a: "At BlindPay, if the receiving bank rejects or returns the payout, it ends refunded and the stablecoins go back to the wallet that funded it, rather than sitting with the provider. A payout that ends failed, for example after a rejected compliance check, does not refund automatically and needs a follow-up with support."
  - q: "What should a finance team check before choosing a stablecoin payments provider?"
    a: "Whether it requires pre-funding, whether quotes show the rate and fees before you send, where funds sit between payments, which local payout rails are live in production, how compliance holds are handled, and whether a failed payout returns funds automatically. Ask for answers in writing and test them on a sandbox."
---

Businesses use stablecoins for cross-border payments by converting dollars into a stablecoin like USDC, moving it across the border on a blockchain, and converting it into local currency on the other side, usually through a single provider. The recipient gets an ordinary bank deposit. The savings come from three cost centers in a traditional cross-border payment that this route removes or shrinks: correspondent bank hops, FX markup, and capital pre-funded in foreign accounts.

This isn't fringe anymore. In EY's June 2025 survey of 350 financial institutions and corporates, 13% already used stablecoins, and 54% of the rest expected to start within six to twelve months. Among current users, cross-border payments were the top use case: 70% of financial institutions and 55% of corporates named it. Artemis data analyzed by McKinsey in early 2026 put business-to-business stablecoin payments at about $226 billion a year, up 733% year over year.

Here's each cost center, what it costs today, and what changes. Then a worked $50,000 example.

## Cost center 1: correspondent banking hops

A SWIFT wire rarely goes straight from the sending bank to the receiving bank. Unless the two have a direct relationship, it passes through one or more correspondent banks that hold accounts for each other. Each hop can deduct a fee from the amount in transit.

What that looks like on a statement:

- **Sending fee.** Large US banks charge roughly $25 to $50 for an outgoing international wire, depending on the bank and whether it's sent online or in a branch.
- **Intermediary deductions.** Industry estimates put them at roughly $10 to $30 per hop. They're taken from the payment itself, so the supplier receives less than the invoice and nobody on the sending side sees it coming.
- **Receiving fee.** The beneficiary's bank may charge again to credit the funds.

**What stablecoin settlement changes:** the correspondent chain is replaced by one on-chain transfer. The network fee on Polygon, Base, Arbitrum, Stellar, or Tron is typically a few cents. BlindPay settles on those networks plus Ethereum and Solana, and in bank-to-bank flows the customer never picks one: you create a payout to a bank account, and the network choice happens behind the scenes.

## Cost center 2: FX markup

Most of the cost of a cross-border payment usually hides in the exchange rate, not the fees. A bank converting dollars to reais or pesos applies its own rate, and the gap between that rate and the market rate rarely appears as a line item. Industry estimates put bank FX markups on business-size payments at roughly 1.5% to 3.5%, and higher on small transfers, depending on the currency and the customer.

**What stablecoin settlement changes:** the conversion happens once, at the off-ramp, at a rate you see before you commit. At BlindPay, a payout quote locks the rate and fees for five minutes, and the quote itemizes the fee rather than folding it into the rate ([payout quotes](/docs/payout-quotes)). You can compare BlindPay's rate against the commercial rate on live corridor pages like [USDC to BRL](/usdc-to-brl). How to read the fee fields line by line is in [stablecoin API pricing](/resources/more/stablecoin-api-pricing-explained).

## Cost center 3: pre-funded nostro and vostro accounts

To pay out quickly in another country, traditional providers and many PSPs keep money sitting in bank accounts there, called nostro accounts (ours, held at your bank) and vostro accounts (yours, held at ours). That money has to be there before the payment, and it has to be topped up with the same slow wires the system is trying to avoid.

The cost is invisible on any single payment, but real. Say a platform pays out $50,000 a day into Brazil and keeps five business days of payouts pre-funded as a buffer. That's $250,000 sitting in reais at all times. At a 4% short-term Treasury yield, it gives up about $10,000 a year in interest, and it carries the FX risk of holding a quarter million dollars in a foreign currency. Providers that pre-fund pass that cost on somewhere in their pricing.

**What stablecoin settlement changes:** the payout is funded at the moment you send it. BlindPay doesn't require pre-funding: the value arrives as stablecoin and leaves as local currency at quote time. The funding models are compared in [what does no pre-funding mean](/resources/more/no-pre-funding-stablecoin-payouts).

## Worked example: a $50,000 supplier payment from the US to Brazil

A US importer pays a Brazilian supplier's $50,000 invoice. The ranges below are the industry estimates above. The stablecoin column uses an illustrative all-in cost, not a BlindPay price: your quote depends on the corridor and amount, and you'll see it before you send.

| | SWIFT wire | Stablecoin rails |
| --- | --- | --- |
| Sending fee | $25 to $50 | Domestic ACH or wire to fund the payment, at your bank's rate |
| Intermediary deductions | $10 to $60 (one or two hops) | None; one on-chain transfer, typically cents |
| FX cost | $750 to $1,750 (1.5% to 3.5% markup) | Quoted spread plus provider fee, shown before sending (illustrative: $250 to $500, 0.5% to 1%) |
| **Total cost** | **$785 to $1,860 (1.6% to 3.7%)** | **About $250 to $500 plus funding cost** |
| Supplier sees | Less than invoiced, amount unknown until arrival | Exact reais amount locked in the quote |
| Time to supplier's account | Hours to 5 business days | Seconds over Pix once the funding clears |

Swift's own numbers show why the timing column matters. In October 2024 it reported that 90% of payments on its network reached the recipient's bank within an hour, but only 43% reached the end customer's account in that time.

Excluded from both columns: any receiving bank fee in Brazil and Brazil's IOF tax on FX, which depend on the supplier's bank and the nature of the transaction. The structure is the point. Two of the three cost centers shrink to near zero, and the third, FX, becomes a number you can see and compare. The full SWIFT comparison, including where wires still win, is in [stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments).

## Why does non-custodial matter for cross-border payments?

Cheaper doesn't help if your money is stuck with the provider when something breaks. BlindPay is non-custodial: funds stay under the customer's control until a payment executes, and BlindPay never takes custody beyond the single transaction it's asked to run ([overview](/docs/overview)).

That matters most when a payment can't land. If the Brazilian supplier's bank rejects or returns the transfer, the payout ends `refunded` and the stablecoins go back to the wallet that funded it. There's no provider balance to chase. One precise exception: a payout that ends `failed`, for example after a rejected compliance check, doesn't refund automatically and needs a follow-up with support ([payouts](/docs/payouts)). Why custody decides who carries the risk is in [non-custodial payments explained](/resources/more/non-custodial-payments-explained).

## Where don't stablecoins save money?

- **Domestic payments on a fast rail.** Paying a Brazilian supplier from a Brazilian account? Use Pix directly.
- **The funding leg.** If you fund each payment with a standard ACH transfer, that leg can take up to a few business days. RTP or an existing stablecoin balance removes the wait.
- **Compliance reviews.** US ACH, wire, RTP, and SWIFT payouts pass through an `on_hold` review as a standard step. Plan for it.
- **Thin currencies.** The off-ramp spread depends on local liquidity. Major Latin American currencies are deep; smaller ones cost more.

## A checklist for finance teams evaluating a stablecoin payments provider

Ask each provider these, in writing:

1. Do you require pre-funding, a minimum balance, or a minimum monthly volume?
2. Does every quote show the rate, the fee, and the exact amount the recipient receives before we commit?
3. Where do our funds sit between payments, and in whose name?
4. If the receiving bank returns a payment, where does the money go, and is that automatic?
5. Which payout rails are live in production for our corridors, with published settlement windows?
6. How do compliance holds work, how long can they last, and how are we notified?
7. Can we reconcile each payment to a bank reference and an on-chain transaction hash?
8. Can we test all of the above on a free sandbox before signing?

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin payments API for cross-border payouts and collections, moving $2.5 billion in annualized volume across 100+ countries. Payouts go out over Pix and TED in Brazil, SPEI in Mexico, Transfers in Argentina, ACH COP in Colombia, ACH, wire, and RTP in the US, SEPA in Europe, and SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations. There's no pre-funding and no monthly minimum, every quote shows its fee before you execute, and KYC and KYB run inside the API.

## What to do next

Pull last quarter's three largest supplier wires. For each, compare the invoice amount with what actually arrived, then get a live quote for the same corridor and amount. The difference is your real cost of correspondent banking. A free development instance and the [payout quickstart](/docs/quickstart-payout) get you quoting in minutes.

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

---

Source: https://blindpay.com/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit

---
title: "Stablecoin card vs. crypto debit card vs. prepaid vs. credit: which type of crypto card is which?"
seoTitle: "Stablecoin card vs. crypto debit, prepaid, and credit cards"
description: "Four kinds of crypto card compared: funding source, when conversion happens, tax timing, volatility, fees to check, and who each one suits."
date: "2026-09-22"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is a crypto card a debit card or a credit card?"
    a: "Most crypto cards are debit or prepaid cards: they spend money you already hold, either straight from a balance or after you load the card. A smaller group are credit-style cards that let you spend against a credit line, sometimes secured by crypto you lock up. The card terms say which one you have."
  - q: "What is the difference between a stablecoin card and a crypto debit card?"
    a: "A stablecoin card spends a dollar or euro stablecoin such as USDC or USDT, so the value you spend barely moves between buying and spending. A volatile-asset crypto debit card can spend assets such as bitcoin or ether, whose price can move a lot, so each purchase is a sale at that day's price."
  - q: "What is a prefunded crypto card?"
    a: "A prefunded or top-up card makes you convert crypto into a card balance before you spend. The balance then sits in fiat or a fixed amount until used. NGIBANK's March 2026 card guide notes that prefunded cards often charge 1% to 2% per load above a free monthly allowance."
  - q: "Are crypto cards real Visa or Mastercard cards?"
    a: "Yes. Stablecoin and crypto debit cards are issued by a licensed bank or e-money institution and run on Visa or Mastercard like any other card. Merchants are paid in local currency and see an ordinary card payment. The crypto side lives with the card program, not the merchant."
  - q: "Which type of crypto card has the fewest tax events?"
    a: "Spending a dollar stablecoin on a dollar card usually produces a gain or loss close to zero, but tax authorities such as the IRS and HMRC still treat using crypto to pay for goods as a disposal that may need records. Volatile-asset cards can create a real gain or loss on every purchase."
---

There are four kinds of crypto card. A stablecoin card spends USDC or USDT directly. A crypto debit card can spend volatile assets like bitcoin. A prefunded card makes you load a balance first. A credit-style card spends against a credit line. They differ on when conversion happens, how much price risk you carry, and how many tax records each purchase creates.

All four can look identical in your wallet app. A Visa or Mastercard logo, a tap at the terminal, a merchant paid in local currency. The differences sit behind the card, and they decide what each purchase costs you.

This page compares the four types side by side for people choosing a card. For the basics of how the stablecoin version works, read [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card). For the business view, there is a separate [comparison of crypto debit and stablecoin cards for companies](/resources/more/crypto-debit-card-vs-stablecoin-card-for-business).

**Key takeaways**

- Stablecoin cards spend a dollar or euro stablecoin, so each purchase carries almost no price change.
- Volatile-asset debit cards sell crypto at each purchase, so every swipe can be a taxable gain or loss.
- Prefunded cards convert first and charge for loads more often; NGIBANK cites 1% to 2% per load above a free allowance.
- Credit-style cards spend borrowed money and add interest and repayment terms to the comparison.
- Most crypto cards are debit or prepaid products, so check what purchase protections the terms give you.

## What are the four types of crypto card?

The four types are defined by what you spend and when it turns into fiat. Here are short definitions before the comparison.

- **Stablecoin card.** Spends a stablecoin balance, usually USDC or USDT, held in a wallet or with the provider. Conversion happens at purchase or at settlement.
- **Volatile-asset crypto debit card.** Spends from a balance that can include bitcoin, ether, or other assets whose price moves. Each purchase sells some of the asset at the current price.
- **Prefunded or top-up card.** You convert crypto into a card balance before spending. The card then spends that loaded balance.
- **Credit-style crypto card.** Spends against a credit line. Some lines are secured by crypto you lock as collateral; others pay rewards in crypto on a normal credit card.

One provider can offer more than one type. Coinbase Card, for example, is a Visa debit card that spends from a Coinbase account balance, and that balance can hold USDC or other assets, per [Coinbase's card page](https://www.coinbase.com/card).

## How do the four types compare side by side?

The comparison comes down to six columns. The funding source and the conversion timing decide most of the rest.

| | Stablecoin card | Crypto debit card (volatile assets) | Prefunded / top-up card | Credit-style card |
| --- | --- | --- | --- | --- |
| Funding source | USDC or USDT balance | Crypto balance, often several assets | Fiat or fixed balance loaded from crypto | Credit line, sometimes crypto-secured |
| When conversion happens | At purchase or settlement | At purchase | At top-up, before spending | No conversion at purchase; at repayment if paid in crypto |
| Tax event timing | At purchase, gain or loss near zero | At purchase, real gain or loss possible | At top-up, when crypto is sold | At repayment or when collateral is sold |
| Volatility exposure | Low on a same-currency card | High, until each purchase | None after loading | Collateral value can move |
| Fees to check | Spread, FX markup, ATM | Spread, FX markup, ATM | Load fees, FX markup, ATM, inactivity | Interest, annual fee, liquidation terms |
| Best for | Spending dollar balances day to day | Spending crypto gains directly | Budgeting a fixed amount | Users who want credit, not spending from savings |

The tax column is general. Rules differ by country, and the [IRS](https://www.irs.gov/filing/digital-assets) and [HMRC](https://www.gov.uk/hmrc-internal-manuals/cryptoassets-manual/crypto22100) both list paying for goods or services with crypto as a disposal. This is general information, not tax advice.

## Is a crypto card debit, prepaid, or credit?

Most crypto cards are debit or prepaid cards. They spend money you already hold, either straight from a balance or after loading it. Credit-style crypto cards exist, but they are a smaller group.

The card's own terms say which one it is, usually in the first lines of the cardholder agreement. Look for the words "debit card", "prepaid card", or "credit card", and the name of the issuing bank or e-money institution.

The distinction matters for protections. Debit and prepaid cards spend your own balance, so a disputed charge comes out of money you already had while the dispute runs. Credit cards spend the issuer's money first. What protections apply depends on the issuer, the network rules, and your country's law, so read the dispute section of the terms before relying on a card for large purchases.

## What is the difference between a prefunded card and a direct-balance card?

A prefunded card converts before you spend. A direct-balance card converts when you spend. That one timing difference changes your fees, your exposure, and your taxes.

NGIBANK's [crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide) (March 2026) explains the trade-off this way: prefunded cards often charge 1% to 2% per load above a free monthly allowance, while direct-balance cards spend from the crypto balance at the point of sale.

1. **Prefunded.** You sell 500 USDC into a card balance on Monday. You pay any load fee once. Your spending money is now fixed and does not move with the crypto market.
2. **Direct balance.** You keep 500 USDC in the wallet. Each purchase converts only what you spend, when you spend it. No load fee, but each purchase goes through a conversion.

For a stablecoin, the gap between the two is mostly fees, since USDC barely moves against the dollar. For a volatile asset, it is a bet: prefunding locks in today's price, direct spending sells at each purchase's price.

## Which card type carries the most price risk?

A volatile-asset crypto debit card carries the most. The stablecoin card on a same-currency card carries the least. Prefunded cards remove price risk after loading.

Picture three cards each holding $1,000 of value on Monday, with a $300 purchase on Friday.

| Card | Balance held | If the asset falls 10% by Friday | What the $300 purchase costs |
| --- | --- | --- | --- |
| Stablecoin card (USDC, USD card) | 1,000 USDC | No change | About 300 USDC plus fees |
| Crypto debit card (ETH) | $1,000 of ETH | Worth $900 | $300 of ETH at Friday's price |
| Prefunded card | $1,000 loaded | No change | $300 from the loaded balance |

These numbers are illustrative. A stablecoin card spending USDC on a euro card still has currency exposure, since the dollar and the euro move against each other.

## What fees should you check on each type?

Each type has its own fee hot spots. The advertised "no fee" line rarely tells you the full cost, because some costs sit in the exchange rate.

1. **Conversion spread.** The gap between the rate you get and the mid-market rate. Applies to stablecoin and crypto debit cards at each purchase, and to prefunded cards at each load.
2. **FX markup.** For purchases in another currency. NGIBANK puts it at 1.5% to 3% on many crypto cards, against 0% to 1% on good fintech debit cards.
3. **Load or top-up fee.** Mainly on prefunded cards, 1% to 2% per load above a free allowance per NGIBANK.
4. **ATM fees.** Often a small free quota, then 1.5% to 2% per NGIBANK.
5. **Interest and liquidation terms.** On credit-style cards, the interest rate and what happens to collateral if its value drops.

Fees change often. Check the provider's live fee page before you choose. Some providers advertise zero fees on spending in one currency and charge in another; KAST's [fee page](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts), for example, lists 0% on USD card spend and 0.5% to 1.75% on non-USD.

## Which crypto card type suits which person?

Pick by what you want to spend and how predictable you need it to be. One card type rarely fits everyone.

- **You get paid in USDC and spend in dollars.** A stablecoin card. Low price risk, few surprises.
- **You hold bitcoin and want to spend gains.** A volatile-asset debit card, with careful tax records.
- **You want a fixed monthly budget.** A prefunded card, if the load fees are within its free allowance.
- **You want credit and rewards.** A credit-style card, judged like any credit card on interest and fees.
- **You need to pay rent or bills.** Usually none of them. Landlords and utilities often need a bank transfer, which means converting stablecoins into a bank account instead.

## How do card type choices affect funding and payouts?

The card type decides how money gets onto the card and how it comes back out. Programs that ignore those two legs end up with users who can spend but can't top up or withdraw easily.

Prefunded cards need a reliable way to turn crypto or bank money into a card balance. Stablecoin and crypto debit cards need users to get stablecoins into the wallet in the first place. All of them need a way back to a bank account for rent, payroll, and bills.

BlindPay is a stablecoin API for global payments that handles those legs for card programs and wallets of any type. [US virtual accounts](/docs/virtual-accounts) turn ACH, wire, and SWIFT deposits into USDC or USDT in the linked wallet. [Payouts](/docs/payouts) convert USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with a live quote that locks the rate and fees before the stablecoins move. [Stablecoin-funded virtual cards](/resources/more/stablecoin-virtual-cards-cross-border-payouts) shows the same pairing for business payouts.

## How should you choose?

Start with what you will hold and spend, then check the conversion timing and fees. The type of card follows from those answers.

If you hold dollar stablecoins, compare stablecoin cards on effective rate and FX markup. If you hold volatile assets, decide whether to sell before spending or at each purchase. If you run a card program and need funding and payout rails for your users, start with the free development instance in the [BlindPay payout quickstart](/docs/quickstart-payout). The issuing side is covered in [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Sources

- NGIBANK, [Crypto debit card guide](https://www.ngibank.com/en/blog/crypto-debit-card-guide), March 3, 2026
- IRS, [Digital assets](https://www.irs.gov/filing/digital-assets)
- HMRC, [Cryptoassets Manual, CRYPTO22100](https://www.gov.uk/hmrc-internal-manuals/cryptoassets-manual/crypto22100), updated November 28, 2025
- Coinbase, [Coinbase Card](https://www.coinbase.com/card)
- KAST, [Fees and conditions for KAST cards and accounts](https://concierge.kast.xyz/hc/en-us/articles/9850062738703-What-Are-the-Fees-and-Conditions-for-KAST-Cards-and-Accounts)

---

Source: https://blindpay.com/resources/more/stablecoin-fx-slippage-live-quotes

---
title: "Stablecoin FX slippage: how live quotes turn the quoted rate into the rate you get"
seoTitle: "Stablecoin FX slippage and live quotes explained"
description: "FX slippage is the gap between the rate a stablecoin on-ramp or off-ramp shows and the rate that settles. Why quote freshness is a liquidity signal, and how to check a quote-then-execute flow."
date: "2026-09-22"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a live FX quote?"
    a: "A live FX quote is a binding price for a currency conversion, calculated at the moment you request it and held for a stated window. It carries an id and an expiry time. If you execute against it before it expires, the conversion settles at the quoted rate and fees, and the recipient gets the quoted amount."
  - q: "How is a live quote different from a fixed exchange rate?"
    a: "A fixed exchange rate is set by a provider or a government and stays the same until someone changes it, regardless of the market. A live quote follows the market: each request returns a fresh rate, locked for a few minutes. Fixed rates are simpler to display, but the provider protects itself with a wider spread, so you pay for that stability either way."
  - q: "Why does quote freshness matter for stablecoin payouts?"
    a: "Because the older the rate, the more the market has moved since it was calculated, and someone absorbs that move. With a live, binding quote, the provider absorbs it inside the window. With a stale or indicative rate, the gap lands on you or your recipient as slippage, and it only shows up after the payout settles."
  - q: "What is FX slippage in a stablecoin payment?"
    a: "FX slippage is the difference between the exchange rate you were shown and the rate at which your conversion actually settled. It happens when a provider displays an indicative or cached rate and executes later at the market. Unlike a spread, which is a known cost in the quote, slippage is a cost you did not agree to."
  - q: "How do you calculate FX slippage?"
    a: "Subtract the settled rate from the quoted rate, divide by the quoted rate, and multiply by 10,000 to get basis points. If you were quoted 5.40 reais per USDC and the conversion settled at 5.37, slippage is about 56 basis points. On a binding live quote executed inside its window, slippage should be zero."
---

An on-ramp converts fiat money into stablecoins: dollars in a bank account become USDC in a wallet. An off-ramp does the reverse: USDC or USDT becomes local currency in a bank account, over a rail like Pix or SPEI. Every on-ramp and off-ramp payment has an exchange rate, and FX slippage is the gap between the rate you were shown and the rate that actually settled.

A live quote is how a provider closes that gap. How fresh the quote is, and whether it is binding, tells you more about a provider's liquidity than any coverage map.

## What is FX slippage in a stablecoin payment?

FX slippage is the difference between the quoted exchange rate and the settled exchange rate. It shows up when a provider displays one rate, executes the conversion later, and settles at whatever the market says at that later moment.

The formula is short:

`slippage (bps) = (quoted rate - settled rate) / quoted rate x 10,000`

An illustrative example. An app shows a user 5.40 reais per USDC on a 10,000 USDC off-ramp, so the screen says 54,000 reais. The provider executes a minute later at 5.37. The recipient gets 53,700 reais. That is 300 reais missing, about 56 basis points of slippage, and nobody agreed to it.

Slippage can run in your favor too. It doesn't matter. A cost that moves randomly is still a cost you can't price, reconcile, or promise to a customer.

## What is the difference between a live, indicative, and stale quote?

| Quote type | What it is | Is it binding? | Who carries the rate risk |
| --- | --- | --- | --- |
| Live quote | Calculated at request time, with an id and an expiry | Yes, inside the window | The provider, until expiry |
| Indicative quote | An estimate based on a recent market rate | No; execution happens later at market | You, or your recipient |
| Stale quote | A rate that was live once, then cached or shown past its expiry | No | You, and you may not know it |

A stale quote is the sneaky one. It looks like a live quote on screen. The number just stopped being true a while ago. The most common cause is an application that fetches a rate when a page loads and lets the user sit on it for ten minutes.

For the full quote lifecycle, including what happens when a quote expires and how window length should shape your UX, read [on/off ramp liquidity with live quotes](/resources/more/on-off-ramp-liquidity-live-quotes).

## Why is quote freshness a liquidity signal?

Because a provider can only commit to a rate it can fill. Freshness and bindingness are what real liquidity looks like from the outside.

A provider that holds local-currency inventory, or has direct access to market makers who do, can price a trade and hold that price for a few minutes. It knows it can deliver. A provider that has to go find the reais after you confirm can't make that promise, so it gives you an indicative rate instead and settles at whatever it gets.

Three things to read from a provider's quotes:

- **Does it bind at all?** No quote id, no expiry, no liquidity commitment.
- **How long is the window?** Very short windows, under 10 seconds on a consumer flow, usually mean thin liquidity or a provider pushing its risk onto you.
- **Does the rate hold across sizes?** A spread that stays flat from 500 to 50,000 dollars means the depth is real. A spread that widens fast means the good inventory runs out early.

This is the same test as in [what a liquidity market is](/resources/more/what-is-a-liquidity-market-cross-border-payments): the quote is the visible edge of the liquidity behind it.

## How does a provider build a live quote?

A live quote has four ingredients, calculated in one synchronous request:

1. **A reference rate.** The current market rate for the pair, from interbank FX feeds and trading venues.
2. **The provider's source of liquidity.** Its own inventory, market makers, or local exchange partners, at the size requested.
3. **Spread and fees.** The provider's margin on the rate, plus any flat or percentage fees and network costs.
4. **A lock window.** How long the provider will honor the result. The provider carries the market risk inside that window, which is why windows are minutes, not hours.

A well-built quote response shows the first and third ingredients side by side, so you can see the spread. At BlindPay, every payout quote returns `commercial_quotation` (the market rate) next to `blindpay_quotation` (the rate after BlindPay's margin), plus `sender_amount`, `receiver_amount`, and each fee. The gap between the two rates is the spread, on every quote. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) walks through every field.

## Spread vs slippage: which one are you paying?

Both, possibly. They are different kinds of cost.

- **Spread** is the provider's margin, visible in the quote, agreed before you send.
- **Slippage** is an unagreed difference that shows up after the payment settles.

A binding live quote converts potential slippage into visible spread. The provider prices its risk for the window into the rate, and you see that price before you say yes. So a live quote with a slightly wider spread can cost less than a tight indicative rate plus slippage. The only way to know is to compare settled amounts, not screen rates. [Stablecoin liquidity providers vs bank FX desks](/resources/more/stablecoin-liquidity-provider-vs-fx-desk) covers the rest of the hidden-cost list.

## What should you check before trusting a quote-then-execute flow?

Run through this list against any provider's docs and sandbox:

1. **Rate lock duration.** The quote response states an expiry, and you read it from the response instead of hardcoding it.
2. **Slippage tolerance.** The payment executes at the quoted rate or is rejected. Any tolerance band, even 0.5 percent, means the quote is not binding.
3. **Settlement guarantee.** The recipient gets the quoted `receiver_amount`, not an amount recalculated at execution.
4. **Expiry behavior.** Submitting against an expired quote fails with a distinct error code, so your client knows to re-quote instead of retrying blindly.
5. **Mid-transaction expiry.** You know what happens when a slow step, like an on-chain approval, outlasts the window. The safe answer is to re-quote before executing.
6. **One quote per payment.** A quote id backs a single payment, which adds a second layer against double-sends on top of your idempotency keys.
7. **Itemized fees.** Rate, spread, flat fee, and network fee are separate fields, so the amount on screen matches the amount that settles.
8. **Sandbox parity.** Expiry and rejection behave the same in sandbox as in production, or your failure paths ship untested.

BlindPay's answers, for reference: payout quotes expire five minutes after creation by default (SEPA quotes can be shorter), with `expires_at` in epoch milliseconds. A quote backs one payout, and an expired quote is rejected rather than executed at a new rate. The payout runs on the quote's numbers when you create it inside the window.

## What does a quote-then-execute flow look like in an API?

A typical REST flow for an off-ramp payout has five steps. This is BlindPay's shape, but most stablecoin APIs follow the same pattern.

**Step 1. Request a quote.**
`POST /v1/instances/{instance_id}/quotes` with the destination `bank_account_id`, `request_amount` in minor units (10000 means 100.00), `currency_type` (which side the amount is on), `cover_fees` (who pays), and the funding `network` and `token`.

**Step 2. Read the response and show it.**
The response returns the quote `id`, `expires_at`, `commercial_quotation`, `blindpay_quotation`, `sender_amount`, `receiver_amount`, and fees. Display `receiver_amount` with a countdown driven by `expires_at`.

**Step 3. Authorize the funding, if needed.**
For a self-custodied EVM wallet, sign the ERC-20 `approve` for the exact amount in the quote's `contract` payload. A BlindPay-managed wallet skips this step.

**Step 4. Execute against the quote.**
`POST /v1/instances/{instance_id}/payouts/evm` with the `quote_id` and the sender wallet address, before `expires_at`. If the quote expired, request a new one, show the new numbers, and execute against the new id.

**Step 5. Confirm settlement.**
Listen for the `payout.complete` webhook, which fires when the payout reaches `completed`, `failed`, or `refunded`. Store the quoted and delivered amounts together for reconciliation.

The same flow runs from the terminal with the BlindPay CLI (`blindpay quotes create`, then `blindpay payouts create --quote-id qu_...`) and from the official SDKs for Node.js, Python, and Go, as well as PHP and Swift.

## How do you measure slippage in production?

Log three numbers on every payout: the quoted rate at confirmation, the quoted `receiver_amount`, and the amount that actually landed. Then track, per corridor:

- **Realized slippage.** Delivered amount against quoted amount. On a binding quote, this should be zero, every time.
- **Expiry rate.** The share of quotes that expire before the user confirms. A high rate means your UX fetches quotes too early or the window is too short.
- **Re-quote delta.** How much the amount moves between an expired quote and its replacement. Large deltas on a corridor are a volatility warning.

If realized slippage is ever non-zero on a "live" quote, you have learned something important about your provider.

## What to do next

Pick one corridor and run the eight-point checklist in a sandbox: request a quote, let it expire, submit it anyway, and confirm you get a clean expiry error. Then read the [payout quotes documentation](/docs/payout-quotes) for the full request and response, or follow the [payout quickstart](/docs/quickstart-payout) to run the whole flow on a development instance.

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

---

Source: https://blindpay.com/resources/more/stablecoin-off-ramp-limits

---
title: "Stablecoin off-ramp limits: per-transaction, daily, and monthly caps explained"
seoTitle: "Stablecoin off-ramp limits: KYC tiers and how to raise them"
description: "Why off-ramps cap how much you can convert per transaction, day, and month, how the caps map to KYC and KYB tiers, and the documents that raise them."
date: "2026-09-22"
updated: "2026-09-22"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Why do stablecoin off-ramps have limits?"
    a: "Because anti-money laundering rules are risk-based. A provider sizes each customer's limits to how much it has verified about them: identity, business, source of funds. More verification supports higher limits. Limits also cap the damage from fraud or a compromised account, since no single payout can drain more than the tier allows."
  - q: "What are BlindPay's default off-ramp limits?"
    a: "KYC Standard individuals start at $10,000 per transaction, $50,000 per day, and $100,000 per month. KYB Standard businesses start at $30,000, $100,000, and $250,000. KYC Enhanced individuals start at $50,000, $100,000, and $500,000. Limits are calculated on the stablecoin amount, payouts and payins are counted separately, and each customer can request higher limits."
  - q: "How do I increase my off-ramp limit?"
    a: "Submit a limit increase request with the per-transaction, daily, and monthly amounts you need and up to five supporting documents, such as bank statements, tax returns, financial statements, or contracts. Compliance reviews the request and can approve lower amounts than requested. On BlindPay only one request can be in review per customer at a time."
  - q: "Does no pre-funding mean there is no limit on off-ramp size?"
    a: "No. No pre-funding describes where the money sits before a payout: in your wallet, not in a balance parked with the provider. Limits describe how much a verified customer may move. A provider can source liquidity per quote and still cap each customer at their verification tier."
  - q: "What happens if an off-ramp payout is over my limit?"
    a: "The quote is rejected before any money moves, so nothing gets stuck. Request a limit increase ahead of the payment date rather than trying to route around the cap. Payouts inside the limit can still be held for compliance review if they are large or unusual for that customer."
---

Off-ramp limits cap how much a customer can convert from stablecoins to fiat per transaction, per day, and per month. They exist because anti-money laundering rules are risk-based: a provider sizes each customer's limits to how much it has verified about them. More verification, higher limits. On BlindPay, a verified business starts at $30,000 per transaction, $100,000 per day, and $250,000 per month, and can request more with supporting documents.

Limits are a compliance setting, not a liquidity one. That distinction matters later.

## Why do off-ramps cap how much you can convert?

Three reasons, in order of importance.

**Risk-based compliance.** The FATF standards that national AML rules start from ask providers to match controls to risk. A customer verified with a government ID and a selfie is a known person. A customer who has also shown bank statements and tax returns is a known person with a known source of money. The second one can move more before anything looks unusual.

**Damage control.** If an account is taken over or a customer turns out to be fronting for someone else, the per-transaction and daily caps bound how much leaves before monitoring catches it. [Real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) covers what watches the payments inside the limits.

**Faster onboarding.** Tiers let a provider approve people quickly at a low limit and ask for more paperwork only when someone needs more room. That's why an individual can pass automated KYC in about a minute instead of waiting days for a manual review. It's also why onboarding drop-off stays low: nobody uploads a tax return to send $500. The tradeoffs of automated versus manual review are in [automated KYC/KYB vs manual onboarding](/resources/more/automated-kyc-kyb-vs-manual-onboarding).

## How do off-ramp limits map to verification tiers?

BlindPay's defaults, from the [KYC reference](/docs/kb/kyc):

| | KYC Standard (individual) | KYB Standard (business) | KYC Enhanced (individual) |
| --- | --- | --- | --- |
| Per transaction | $10,000 | $30,000 | $50,000 |
| Daily | $50,000 | $100,000 | $100,000 |
| Monthly | $100,000 | $250,000 | $500,000 |
| Review | Automated, about 60 seconds | Manual, 3 hours to 1 business day | Manual, 3 hours to 1 business day |

A few details that trip people up:

- **Limits are counted on the stablecoin amount**, not the local-currency amount the recipient gets.
- **Payouts and payins have separate limits.** Receiving $80,000 in a month doesn't use up any of your monthly off-ramp room.
- **Enhanced isn't optional for everyone.** Individuals from high-risk countries must use KYC Enhanced, and a driver's license isn't accepted as their ID. The tiers per country are in [supported countries](/docs/kb/supported-countries).
- **Businesses have one tier.** KYB Standard covers the company, and each beneficial owner is verified with individual KYC fields. [What is KYB](/resources/more/what-is-kyb) explains what gets checked.

## Which limit do you hit first?

Usually the monthly one, and usually later in the month than you'd expect.

Take a marketplace on KYB Standard that settles sellers every day, about $15,000 a day. Each payout is well under the $30,000 per-transaction cap. Each day is well under the $100,000 daily cap. The monthly cap is $250,000. Sixteen days in, the total is $240,000, and day 17's payout would push it to $255,000. So day 17 fails at the quote, and so does every day after it.

Payroll hits it differently. Paying 40 contractors $3,000 each on the 1st is $120,000 in one day, over the daily cap even though every single payout is small. The [LATAM contractor payroll guide](/resources/more/stablecoin-payroll-latam-contractors) covers how teams schedule runs.

Model a month of real volume against all three caps before launch. It takes ten minutes and saves a support fire drill on day 17.

## How do you raise an off-ramp limit?

On BlindPay, through a [limit increase request](/docs/learn/limit-increase):

1. **Ask for specific numbers.** Send the per-transaction, daily, and monthly amounts you need.
2. **Attach evidence.** Up to five documents. Individuals can send bank statements, tax returns, proof of income, pay stubs, employment letters, investment statements, or exchange and wallet statements. Businesses can send bank statements, financial statements, tax returns, contracts, accounts receivable, merchant processor statements, or shareholder loan documents.
3. **Wait for review.** Compliance reviews the request and returns approved amounts, which can be lower than requested. Read the approved numbers, not the ones you asked for.

Only one request can be in review per customer at a time, and the customer must already be approved. What compliance expects each document to show is in the [source of funds guide](/docs/kb/source-of-funds). On development instances, every request auto-approves at the requested amounts, so you can test the flow end to end.

The documents that work best tell a simple story: this is where the money comes from, and this is why the volume is about to grow. A signed contract with a new client does that better than three random bank statements.

## Does no pre-funding mean no limit?

No. They answer different questions.

No pre-funding is about where money sits before a payout. The funds stay in your wallet until the payout executes, instead of sitting in a balance with the provider or in a bank account in the destination country. [What no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) walks through the models, and [on/off ramp liquidity with live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) explains how liquidity gets sourced per quote.

Limits are about how much a verified customer may move. A provider can source liquidity on demand for every quote and still cap each customer at their tier. Both are true at once.

Rails also have floors, which are a different thing again. On BlindPay, SWIFT payouts need at least $100, SEPA payouts need at least 11 USDC (or 10 EUR by receiver amount), and a Tron [off-ramp wallet](/resources/more/what-is-an-off-ramp-wallet) needs at least 200 USDT. Those are minimums set by fees and rail rules, not compliance caps.

## Can a payout inside the limit still be held?

Yes. Limits are the outer fence. Inside it, a payout can still be held for review if it's unusual: a first withdrawal, a pattern that doesn't match the customer's history, an amount large relative to past activity, or a possible sanctions match. On BlindPay, US ACH, wire, RTP, and SWIFT payouts also pass through `on_hold` as a standard step after the crypto is collected. A hold can last up to 30 days; approval resumes the payout, and a timeout without a decision fails it. The [on-hold transactions guide](/docs/kb/on-hold-transactions) has the details.

A payout over the limit is different. It's rejected at the quote, before any money moves, so nothing gets stuck in the middle.

## What to do next

Take your expected monthly off-ramp volume and your largest single payment. Check both against the default tier for your customer type. If either one is close, file the limit increase now, with documents that explain the growth, instead of the week a payout fails.

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

---

Source: https://blindpay.com/resources/more/where-is-the-exchange-rate-set-onramp-offramp

---
title: "Where does the exchange rate get fixed in an on-ramp and off-ramp? A step-by-step map"
seoTitle: "Where the rate gets fixed in an on-ramp and off-ramp"
description: "A USD on-ramp and a USDC to BRL Pix off-ramp, step by step: who does what, where the exchange rate is locked, where fees apply, and what expiry changes."
date: "2026-09-22"
updated: "2026-09-22"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to lock the exchange rate on a USDC to BRL off-ramp over Pix"
  steps:
    - name: "Add and approve the recipient's Pix bank account"
      text: "Register the recipient's Pix details as a bank account for a customer who has completed KYC. A payout quote can only be created against an approved bank account."
    - name: "Create a payout quote"
      text: "Call the quote endpoint with the bank account, the amount in minor units, the side the amount is in, who pays the fee, and the network and token you send from. This is the moment the rate and fees are fixed."
    - name: "Show the receiver amount with a countdown"
      text: "Display receiver_amount in BRL and count down to expires_at, which is in epoch milliseconds. Ask the user to confirm inside that window."
    - name: "Authorize the stablecoin amount"
      text: "From your own EVM wallet, approve the contract.amount returned by the quote for BlindPay's contract address. The approval moves no money and does not change the rate."
    - name: "Execute the payout before the quote expires"
      text: "Create the payout with the quote_id and your sender wallet address. BlindPay collects the quoted stablecoin amount and pays BRL over Pix at the locked rate."
    - name: "Track settlement through webhooks"
      text: "Listen for payout.new when the stablecoins are captured and payout.complete when Pix confirms the deposit at the recipient's bank."
faq:
  - q: "Where is the exchange rate set in a stablecoin off-ramp?"
    a: "At quote creation. The payout quote locks the exchange rate and every fee before any stablecoins move. Authorizing the tokens, executing the payout, the on-chain transfer, and the local rail all happen at that locked rate, as long as you execute before the quote's expires_at. After expiry the quote is rejected and you need a new one."
  - q: "Does a US virtual account deposit have an exchange rate?"
    a: "No currency changes hands. A dollar deposit into a US virtual account becomes USDC or USDT, both dollar stablecoins, so there is no FX conversion to price. The cost is a fee. At BlindPay, the fee on deposits below $100 accrues to your monthly invoice, and on deposits of $100 or more it is deducted when the deposit converts."
  - q: "What happens if my quote expires before I execute the payout?"
    a: "The payout is rejected and nothing moves. Request a new quote, show the user the new receiver amount, and execute against the new quote ID. On EVM chains, check that your token approval still covers the new quote's amount, because the amount can change when the rate does."
  - q: "Do I need to interact with the blockchain to off-ramp USDC?"
    a: "Less than you think. Funding from your own EVM wallet takes one signed approval per payout, and the quote returns the exact payload to sign. BlindPay handles the conversion, the liquidity, and the delivery over Pix. With a BlindPay managed wallet, which is in beta and custodial, payouts skip the approval step entirely."
  - q: "How fast does a USDC to BRL payout over Pix arrive?"
    a: "Pix itself is instant and runs 24 hours a day, every day. BlindPay's corridor table lists Pix payouts as instant with up to 5 minutes to confirm. Most of the end-to-end time is the on-chain transfer of the stablecoins, which depends on the network you send from."
---

In a quote-based on-ramp or off-ramp, the exchange rate is fixed once: when the quote is created. A payout quote locks the rate and fees before any stablecoins move, and a payin quote locks them before the payer sends money. Every later step, from the on-chain transfer to the local rail, moves money at that locked rate.

One flow has no exchange rate at all. A dollar deposit into a US virtual account becomes USDC or USDT without a quote, because no currency changes hands. The cost there is a fee, not a rate. This guide maps both flows step by step, using the terms defined in the [on/off-ramp liquidity glossary](/resources/more/onramp-offramp-liquidity-glossary).

**Key takeaways**

- The rate is set at quote creation, not at execution and not at settlement.
- Authorizing tokens, the on-chain transfer, and the local rail never change the rate inside the window.
- A USD to USDC on-ramp has no FX conversion. Its cost is a fee line.
- An expired quote is rejected, not repriced. Nothing moves until you create a new one.
- On a USDC to BRL Pix payout, most of the elapsed time is the on-chain leg. Pix itself is instant.

## Where does the exchange rate get fixed?

At quote creation. Before the quote exists, any rate you see is indicative. Once it exists, the rate, the fees, the sender amount, and the receiver amount are locked until `expires_at`.

BlindPay's docs group the flows as Receive (payins, the on-ramp side) and Send (payouts, the off-ramp side), with the stablecoins held in a wallet in between. On the Send side, the [payout quote](/docs/payout-quotes) locks the exchange rate and the fee split, and a payout can only execute against a valid, unexpired quote. On the Receive side, the [payin quote](/docs/payin-quotes) locks the amount, method, fees, and destination before the payer sends anything.

At BlindPay, payout and payin quotes expire 5 minutes after creation by default. OTC payin quotes expire in 10 seconds. Read `expires_at` (epoch milliseconds) from each response rather than hardcoding the window.

## How does a USD on-ramp through a virtual account work?

A [US virtual account](/docs/virtual-accounts) is a bank account in your customer's name with its own routing and account number. Each deposit creates a payin, and BlindPay sends USDC or USDT to the wallet linked to the account.

1. **You** create the virtual account for a customer who passed KYC and link a destination wallet. The account goes through a compliance review and a bank review.
2. **The payer** sends an ACH, wire, or SWIFT transfer to the account's routing and account number, like any other bank account.
3. **BlindPay** sees the deposit and creates a payin. Your endpoint receives a `payin.new` webhook.
4. **BlindPay** converts the deposit and sends USDC or USDT to the linked wallet on its network.
5. **Your endpoint** receives `payin.complete` when the stablecoins land.

Where is the rate set? Nowhere, because there is no FX. USDC is designed to be [redeemable 1:1 for US dollars](https://www.circle.com/usdc), so dollars in and dollar stablecoins out is not a currency exchange. What you pay is a fee: at BlindPay, deposits below $100 accrue the fee to your monthly invoice (`billing_fee_amount`), and deposits of $100 or more have it deducted when the deposit converts (`transaction_fee_amount`).

Timing depends on the rail the payer chose. BlindPay's [corridor table](/docs/overview) lists RTP as instant and ACH and wire deposits at up to 5 business days. [Stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained) covers the account itself.

## How does a USDC to BRL off-ramp over Pix work?

This is the flow where the rate matters, because USDC becomes Brazilian reais.

1. **You** add the recipient's Pix details as a [bank account](/docs/bank-accounts). It must be approved before you can quote against it.
2. **You** create a payout quote with the bank account, `request_amount` in minor units, `currency_type`, `cover_fees`, `network`, and `token`. **The rate and fees are fixed here.**
3. **Your app** shows `receiver_amount` in BRL with a countdown to `expires_at`.
4. **The sender** authorizes the stablecoins. From your own EVM wallet, that means calling `approve` with the `contract` payload from the quote. See [payout with EVM](/docs/payout-evm).
5. **You** execute the payout with `quote_id` and `sender_wallet_address` before the quote expires. BlindPay collects the quoted stablecoin amount, and `payout.new` fires once the funds are captured.
6. **Pix** delivers the reais to the recipient's bank. `payout.complete` fires when the deposit is confirmed.

Pix is Brazil's instant payment system and runs 24 hours a day, every day, according to the [Banco Central do Brasil](https://www.bcb.gov.br/en/financialstability/pix_en). BlindPay's corridor table lists Pix payouts as instant, with up to 5 minutes to confirm.

## Which step sets the rate, and which steps charge fees?

Only one step sets the rate. Fees are also fixed at that step, then applied when money moves.

| Step | What happens | Who acts | Where the rate is set | Where fees apply |
| --- | --- | --- | --- | --- |
| 1. Bank account | Pix details registered and approved | You, BlindPay | Not yet | None |
| 2. Payout quote | Rate, fees, and both amounts locked | BlindPay | **Here** | Fees calculated and shown |
| 3. Confirmation screen | Receiver amount and countdown shown | Your app | Already fixed | None |
| 4. Authorization | Token approval signed | Sender's wallet | Already fixed | Network gas for the approval |
| 5. Execution | Stablecoins collected | BlindPay, blockchain | Already fixed | Quoted fees taken |
| 6. Delivery | BRL paid over Pix | Pix | Already fixed | None beyond the quote |

On the virtual account on-ramp, step 2 does not exist. The fee is applied at step 4 of that flow, or on your invoice for deposits under $100.

## What happens if the quote expires?

It is rejected, and nothing moves. An expired quote is never executed at a new rate.

Request a new quote, show the user the new `receiver_amount`, and ask them to confirm again. Do not resubmit the old quote ID in a retry loop. If you fund from an EVM wallet, check that your approval still covers the new quote's `contract.amount`, since the amount can shift when the rate does. If an approval transaction is slow to mine, quote again rather than executing against a quote that is about to lapse.

Expiry is a normal path, not an error. [Stablecoin FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes) explains why a binding window is what keeps slippage at zero.

## What do you not have to touch?

The conversion, the liquidity, and the local rail. You do not choose a market maker, hold reais, open a Brazilian bank account, or connect to Pix.

You touch the blockchain once per payout when you fund from your own wallet: a single signed approval, with the payload handed to you in the quote. With a BlindPay managed wallet, which is in beta and custodial, payouts skip the approval step entirely. [What happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) shows the transactions behind the scenes.

## What do the numbers look like on one payout?

**Illustrative example.** A company off-ramps 10,000 USDC to a supplier's Pix account, with `cover_fees: false`. The rates and fee are made up for the arithmetic, not BlindPay pricing.

| Moment | Number | Arithmetic |
| --- | --- | --- |
| Quote created | Market rate 5.40, quoted rate 5.373 BRL per USDC | Margin (5.40 - 5.373) / 5.40 = 0.50% |
| Quote created | Receiver amount before flat fee: 53,730 BRL | 10,000 x 5.373 |
| Quote created | Flat fee 20 BRL, receiver amount 53,710 BRL | 53,730 - 20 |
| Approval and execution | 10,000 USDC collected | Sender amount from the quote |
| Pix delivery | 53,710 BRL credited | Same as the quote |

Now suppose the user waits too long and the quote expires. The new quote comes back at 5.360. The new receiver amount is 10,000 x 5.360 - 20 = 53,580 BRL, which is 130 BRL less than the first screen. The user sees that number before anything moves, and decides again.

For reference, Brazil's central bank publishes daily buy and sell [PTAX dollar rates](https://dadosabertos.bcb.gov.br/dataset/dolar-americano-usd-todos-os-boletins-diarios). They are a sanity check, not an executable price.

## What to do next

Create one payout quote on a development instance and map each field to the six steps above. The [payout quotes docs](/docs/payout-quotes) show the full request and response.

---

Source: https://blindpay.com/resources/more/best-network-to-off-ramp-stablecoins

---
title: "Which network should you use to off-ramp stablecoins? Finality, fees, and confirmations by chain"
seoTitle: "Best network to off-ramp USDC or USDT: finality and fees"
description: "How Ethereum, Polygon, Base, Arbitrum, Solana, Tron, Stellar, Tempo, and Arc compare for off-ramps: time to finality, fee model, and which tokens work."
date: "2026-09-21"
updated: "2026-09-21"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is the cheapest network to off-ramp USDC?"
    a: "Usually a low-fee chain the provider supports natively: Polygon, Base, Arbitrum, Solana, Stellar, Tempo, or Arc. Gas on these is small next to the payment; Arc targets about $0.001 per transfer. Check the provider's own per-network fees too. On BlindPay offramp wallets, Polygon, Base, Arbitrum, Tempo, and Arc carry no additional per-deposit fee, while Ethereum adds 1 USDC and Solana 0.50 USDC."
  - q: "How many confirmations does a crypto off-ramp wait for?"
    a: "It depends on the chain and the provider. Chains with deterministic finality, such as Stellar, Polygon PoS since Heimdall v2, Tempo, and Arc, are final within seconds, so there is little to count. On Ethereum a block is final after about 15 minutes. On Tron a block is solidified after 19 of 27 super representatives build on it, about a minute. Ask your provider which point it waits for."
  - q: "Is Tron or Polygon better for off-ramping USDT?"
    a: "For small and mid-sized payments, Polygon is usually cheaper. Tron is where a lot of USDT already sits, especially in Latin America, but its fixed per-deposit costs eat into small amounts. On BlindPay offramp wallets, Tron has a 200 USDT minimum and a 15 USDT fee per deposit, while Polygon has no fixed minimum and no additional fee. For large payments the gap matters less."
  - q: "Does a faster blockchain make the off-ramp faster?"
    a: "Only the on-chain part. The total time is the on-chain clock plus the fiat rail. A Solana transfer that finalizes in seconds still waits about two business days if the payout goes out over ACH. A slower chain feeding Pix or SPEI can beat a fast chain feeding SWIFT. Pick the network for cost and support, and pick the rail for speed."
  - q: "What happens if I send stablecoins on the wrong network?"
    a: "The transfer lands on a chain the deposit address wasn't set up for, so the provider doesn't see it as a payment. On EVM chains the same address format exists on every network, which makes this mistake easy. Recovery depends on whether anyone controls that address on the other chain. Always confirm network and token with the recipient, not just the address."
  - q: "Do I need the chain's native token to off-ramp stablecoins?"
    a: "If you send from your own wallet, usually yes. On Ethereum, Base, and Arbitrum the gas is paid in ETH, on Polygon in POL, on Solana in SOL, on Tron in TRX or staked energy, and on Stellar in XLM. Arc uses USDC as its gas token and Tempo charges fees in USD stablecoins, so a stablecoin balance alone can cover the transaction there."
---

The best network for a crypto off-ramp is the cheapest one both you and the provider support for your token. For USDC that usually means Polygon, Base, Arbitrum, Solana, Stellar, Tempo, or Arc. For USDT it means Polygon, Solana, or Tron. Ethereum is fine for large payments but costs more gas and takes about 15 minutes to finalize.

The network sets the on-chain clock and part of the fee. The bank rail sets everything after that.

## Key takeaways

- An off-ramp has two clocks: the chain reaching finality, then the fiat rail paying out. The rail is almost always the slower one.
- Finality ranges from under a second (Arc, Tempo) to a few seconds (Stellar, Polygon PoS) to about 15 minutes (Ethereum).
- Network gas is cents or less on most chains. The provider's per-network fees and minimums often matter more.
- Choose by token support first, then by fee, then by finality. Don't choose by block time alone.

## How does the network affect an off-ramp?

It decides how long the stablecoin leg takes and what the transfer costs. Everything else, from the FX rate to the payout rail, is the same whatever chain you send on.

Think of it as two clocks. Clock one is on-chain: your transfer lands in a block and that block becomes final, meaning it can't be reorganized away. Clock two is the fiat payout over Pix, SPEI, ACH, SEPA, or SWIFT. The [settlement times by rail](/resources/more/stablecoin-payout-settlement-times) cover clock two. This article is about clock one.

The gap between "submitted" and "final" is also where provider SLAs get vague. The [SLA and finality explainer](/resources/more/stablecoin-api-sla-settlement-finality) calls these T1 and T2.

## How long does each network take to finalize?

| Network | Block time | When a transfer is final | About how long |
| --- | --- | --- | --- |
| Ethereum | 12-second slots | After two epochs of validator votes ([Gasper](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/gasper/)) | [About 15 minutes](https://ethereum.org/roadmap/single-slot-finality/) |
| Polygon PoS | A few seconds | When a milestone is agreed by 2/3+ of validators ([Heimdall v2](https://docs.polygon.technology/pos/concepts/finality/finality/)) | 2 to 5 seconds |
| Base | 2 seconds, 200 ms preconfirmations | When the batch is final on Ethereum ([Base finality](https://docs.base.org/base-chain/network-information/transaction-finality)) | About 2 minutes to post, about 20 minutes to L1 finality |
| Arbitrum One | 250 ms | Soft finality from the sequencer, hard finality once the batch is final on Ethereum ([Nitro](https://docs.arbitrum.io/how-arbitrum-works/inside-arbitrum-nitro)) | Soft is instant, hard follows Ethereum finality |
| Solana | Sub-second slots | "Finalized" after 31+ confirmed blocks on top ([commitments](https://docs.anza.xyz/consensus/commitments)) | [About 12.8 seconds](https://solana.com/upgrades/alpenglow) |
| Tron | 3 seconds | When 19 of 27 super representatives have produced blocks at or above it ([consensus](https://developers.tron.network/docs/concensus)) | [About 1 minute](https://developers.tron.network/docs/tron-protocol-transaction) |
| Stellar | About 5 seconds | When the ledger closes under SCP ([Stellar](https://stellar.org/learn/stellar-consensus-protocol)) | About 5 seconds |
| Tempo | About 600 ms | Deterministic finality under Simplex BFT ([Tempo](https://tempo.xyz/developers/docs/protocol/blockspace/consensus)) | Under a second |
| Arc | Sub-second | Deterministic finality under Malachite BFT ([Arc](https://docs.arc.io/arc-chain)) | Under a second |

Two kinds of finality sit in that table.

**Deterministic finality** (Stellar, Polygon PoS milestones, Tempo, Arc) means a block is final once consensus signs it. There's nothing to wait for after that. Stellar's consensus is built to stall rather than fork, which is the trade you want for payments.

**Economic or probabilistic finality** (Ethereum, Solana, Tron, and the rollups that inherit Ethereum's) means the chance of a block being replaced shrinks as more blocks pile on, until a checkpoint makes reverting it prohibitively expensive. On Ethereum, undoing a finalized block would require destroying at least a third of all staked ETH.

Reorgs are not theoretical. Polygon PoS had a [157-block reorg in February 2023](https://forum.polygon.technology/t/157-block-reorg-at-block-height-39599624/11388). Its current milestone finality makes blocks final within seconds. Solana's planned Alpenglow upgrade targets about 150 ms finality, so its row will change.

## How many confirmations does an off-ramp wait for?

Each provider sets its own rule. Some count blocks per chain. Some wait for the chain's finalized state. Some release fiat earlier for small amounts and wait longer for large ones.

What you should do: don't count blocks yourself to decide whether money arrived. Read the provider's status. On BlindPay, the payout's `tracking_transaction` step moves to `completed` once the stablecoin leg is done, and the top-level status tells you where the fiat is. BlindPay doesn't publish a per-chain confirmation count, so build against statuses and webhooks. The [payout tracking guide](/resources/more/how-to-track-a-crypto-off-ramp-payout) shows what each status should say to the recipient.

## What does each network cost to send on?

Gas is the smaller part on most chains. Here is what each one charges for, in its own words.

| Network | Gas paid in | Fee model |
| --- | --- | --- |
| Ethereum | ETH | Base fee plus priority tip under EIP-1559 ([blocks](https://ethereum.org/en/developers/docs/blocks/)). Rises with demand |
| Polygon PoS | POL | EIP-1559 style gas: a base fee plus a priority tip |
| Base | ETH | L2 execution fee plus an L1 security fee, usually the larger part ([Base fees](https://docs.base.org/base-chain/network-information/network-fees)) |
| Arbitrum One | ETH | L2 gas plus an L1 data fee for posting to Ethereum ([Arbitrum fees](https://docs.arbitrum.io/how-arbitrum-works/gas-fees)) |
| Solana | SOL | 5,000 lamports per signature plus an optional priority fee. Creating a new token account also needs rent ([Solana fees](https://solana.com/docs/core/fees)) |
| Tron | TRX or staked energy | Energy and bandwidth. Burning TRX costs 100 sun per energy unit, and activating a new account costs 1 TRX ([Tron resources](https://developers.tron.network/docs/paying-for-resources)) |
| Stellar | XLM | Base fee of 100 stroops per operation, higher under surge pricing ([Stellar fees](https://developers.stellar.org/docs/networks/resource-limits-fees)) |
| Tempo | USD stablecoins | Paid in TIP-20 stablecoins. Around $0.0006 at the cap for a 50,000-gas transfer ([Tempo fees](https://tempo.xyz/developers/docs/protocol/fees/)) |
| Arc | USDC | USDC is the gas token, with a target of about $0.001 per ERC-20 transfer ([Arc fees](https://docs.arc.io/arc/references/gas-and-fees)) |

The provider's per-network fee is often the bigger number. On BlindPay [offramp wallets](/docs/offramp-wallets), for example, each deposit carries a fixed fee by chain: 15 USDT on Tron (200 USDT minimum), 0.50 USDC on Solana (50 USDC minimum), 1 USDC on Ethereum, and nothing on Polygon, Base, Arbitrum, Tempo, or Arc.

A fixed fee hurts small payments and disappears on large ones:

1. **250 USDT on Tron:** 15 USDT is 6% of the payment.
2. **1,000 USDT on Tron:** 1.5%.
3. **10,000 USDT on Tron:** 0.15%.
4. **Any amount on Polygon:** 0% additional fee.

The [off-ramp wallet explainer](/resources/more/what-is-an-off-ramp-wallet) runs a full 100 USDT example with every fee line.

## Which networks support which stablecoin?

Not every token is on every chain, and a quote for an unsupported pair fails. Per BlindPay's [supported chains reference](/docs/kb/supported-chains):

| Token | Networks |
| --- | --- |
| USDC | Ethereum, Polygon, Base, Arbitrum, Solana, Stellar, Tempo, Arc |
| USDT | Ethereum, Polygon, Solana, Tron, Tempo |

USDC isn't on Tron. USDT isn't on Base, Arbitrum, Stellar, or Arc.

One more trap: "USDC" on a chain can mean native USDC issued by Circle or an older bridged version. They have different contract addresses and aren't interchangeable. Check the contract against [Circle's list of USDC addresses](https://developers.circle.com/stablecoins/usdc-contract-addresses) before you send. For which token to hold at all, see [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments).

## How do you pick a network?

Work down this list and stop at the first rule that decides it.

1. **Use the chain the funds already sit on, if the provider supports it.** Bridging adds a transaction, a fee, and a new way to fail.
2. **If you send many small payouts, use a low-fee chain with fast finality.** Polygon, Base, Arbitrum, Solana, Stellar, Tempo, or Arc.
3. **If your counterparties pay you in USDT in Latin America, expect Tron.** It works, but batch small amounts or ask them to send on Polygon. The [USDT off-ramp guide](/resources/more/how-to-off-ramp-usdt-latin-america) covers this corridor by corridor.
4. **If you move large treasury amounts, Ethereum is fine.** Gas is small relative to the payment, and 15 minutes to finality rarely matters next to a bank rail.
5. **If the payout is in euros, check the rail's own list.** SEPA payouts take USDC only, from a subset of chains. The [SEPA off-ramp guide](/resources/more/how-to-off-ramp-usdc-to-euros-sepa) lists them.
6. **If you need the payout fast, pick the rail, not the chain.** Pix and SPEI pay out in minutes. ACH takes about two business days whatever chain you sent on.

## What goes wrong with network choice?

| Problem | Cause | How to avoid it |
| --- | --- | --- |
| Funds sent but no payout | Token sent on the wrong network. EVM addresses look the same on every EVM chain | Confirm network and token with the recipient, not just the address |
| Transfer rejected or not credited | Bridged token instead of native USDC | Check the contract address against the issuer's list |
| Deposit not converted | Below the network's minimum, or smaller than the fees | Know the per-network minimums before you share an address |
| Approve or transfer won't send | Wallet holds the stablecoin but no gas token | Keep ETH, POL, SOL, TRX, or XLM in the sending wallet |
| Payout slower than expected | The rail, not the chain | Set ETA copy per rail |

The [payout mistakes guide](/resources/more/stablecoin-payout-mistakes) goes deeper on each one.

## How does BlindPay handle networks?

BlindPay pays out from nine networks: Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, Solana, and Tron. You pass `network` and `token` on the [payout quote](/docs/payout-quotes), and the quote fails fast on an unsupported pair. From an external wallet you authorize the exact quoted amount (an ERC-20 approve on EVM chains, a signed transaction on Stellar, a token delegation on Solana) and BlindPay pulls the funds only when the payout executes. Offramp wallets cover the same chains except Stellar, and every deposit pays out on its own.

Start in the sandbox with the [payout quickstart](/docs/quickstart-payout).

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

---

Source: https://blindpay.com/resources/more/how-stablecoin-card-transactions-settle

---
title: "How does a stablecoin card transaction work? Authorization, clearing, and settlement step by step"
seoTitle: "How a stablecoin card transaction works, step by step"
description: "A $4.50 coffee and a $200 hotel hold, followed from tap to merchant payout: authorization, clearing, T+1 settlement, and how USDC becomes fiat at checkout."
date: "2026-09-21"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How a stablecoin card purchase moves from tap to merchant payout"
  steps:
    - name: "Authorization"
      text: "The merchant's request travels through the card network to the issuer processor, which checks the cardholder's stablecoin balance, converts the amount at the current rate, places a hold, and approves or declines in seconds."
    - name: "Clearing"
      text: "The merchant submits the final amount, which can differ from the authorized one because of tips, hotel incidentals, or fuel. The program adjusts the hold to match."
    - name: "Settlement"
      text: "Usually the next business day, the network settles with the issuer. The program funds that obligation by converting stablecoins to fiat, or by settling directly in a stablecoin where the network supports it."
    - name: "Merchant payout"
      text: "The acquirer pays the merchant in local currency on its normal schedule. The merchant never handles the stablecoin."
faq:
  - q: "How long does a stablecoin card transaction take to settle?"
    a: "Approval takes seconds at checkout. Clearing usually happens the same day, when the merchant submits the final amount. Settlement between the network and the issuer usually runs the next business day (T+1), and the merchant is paid on its acquirer's normal schedule after that. The stablecoin side does not change those card network timings."
  - q: "How does USDC become fiat at checkout?"
    a: "At checkout, the program converts the purchase amount at its current rate and reserves that much USDC as a hold. The actual sale of stablecoins for fiat usually happens later, when the program funds its settlement with the network. Some issuers now settle with Visa directly in USDC, and Visa converts on its side."
  - q: "What happens when the final amount differs from the authorized amount?"
    a: "The program adjusts the hold at clearing. For a hotel that authorized $200 and later charged $236.40, the program reserves the extra $36.40 of stablecoin, or declines it under its own rules if the balance is too low. If the final amount is lower, the unused part of the hold is released back to the balance."
  - q: "Does a stablecoin card check the blockchain at every purchase?"
    a: "It depends on custody. Custodial programs check an internal ledger, which answers in milliseconds. Self-custodial programs check an onchain balance and a spending allowance on a smart account the cardholder controls. Either way, the approval has to fit inside the few seconds a card authorization allows, so the check is designed for speed."
  - q: "Do stablecoin cards settle with Visa in USDC?"
    a: "Some do. Visa announced on December 16, 2025 that US issuer and acquirer partners could settle with Visa in USDC, starting with Cross River Bank and Lead Bank over Solana. Other programs still convert stablecoins to fiat first and settle over bank rails. Both models give the merchant the same local currency payout."
---

A stablecoin card transaction runs in four steps: authorization at checkout, which takes seconds; clearing, when the merchant confirms the final amount; settlement between the network and the issuer, usually the next business day; and payout to the merchant in local currency. The stablecoin is checked and reserved at authorization and converted to fiat by settlement.

The four steps are the same as any card. What changes is where the money behind the card sits, and when it turns from USDC or USDT into dollars, euros, or reais.

This guide follows two real-world purchases end to end: a $4.50 coffee that settles cleanly, and a $200 hotel hold where the final bill comes in higher. If you need the basics first, start with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card). For the issuing side of the business, see [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- Authorization takes seconds, clearing usually happens the same day, and settlement usually runs at T+1.
- The stablecoin is checked and held at authorization. The conversion to fiat that actually funds the merchant usually happens at settlement.
- Final amounts can differ from authorized amounts. Hotels, fuel, and tips are the common cases.
- Custodial programs check a ledger. Self-custodial programs check an onchain balance and allowance.
- Visa supports two settlement models: fiat over bank rails, or USDC directly with the network for US partners.

## What happens in each step of a stablecoin card transaction?

Each step has one job and one owner. Authorization asks "can this card pay?", clearing fixes the final number, settlement moves money between institutions, and payout pays the merchant.

A few definitions used below:

- **Issuer processor.** The company that receives each authorization request for the issuer and answers yes or no in real time.
- **Hold.** An amount reserved from the cardholder's balance so it cannot be spent twice before the purchase clears.
- **Acquirer.** The merchant's bank or payment provider, which pays the merchant.
- **T+1.** One business day after the transaction date.

| Step | When | Who acts | What happens to the stablecoin |
| --- | --- | --- | --- |
| Authorization | Seconds, at checkout | Issuer processor and program | Balance checked, amount converted at current rate, hold placed |
| Clearing | Usually same day (T+0) | Merchant and acquirer submit final amount | Hold adjusted up or down to the final amount |
| Settlement | Usually next business day (T+1) | Card network and issuer | Program converts to fiat, or settles in USDC where supported |
| Merchant payout | Acquirer's normal schedule | Acquirer | None; merchant receives local currency |

## Worked example 1: how does a $4.50 coffee settle?

A $4.50 coffee settles exactly like a normal debit purchase, with one extra conversion step. The amount at authorization and at clearing is the same, so the hold simply turns into a final debit.

1. **Tap, 08:02:05.** The café's terminal sends a $4.50 request through the network to the issuer processor.
2. **Balance check, about one second later.** The program sees the cardholder holds 120 USDC. It converts $4.50 at its current rate, places a 4.50 USDC hold, and approves.
3. **Approval on screen.** The terminal shows approved. The cardholder's app shows a pending $4.50 charge.
4. **Clearing, same evening.** The café's acquirer submits the batch with the final $4.50. No tip, no change. The hold becomes a final debit.
5. **Settlement, next business day.** The network nets the issuer's purchases for the day. The program funds its share, including this $4.50.
6. **Payout.** The café receives $4.50, minus its usual card processing fees, on its acquirer's schedule.

For a USD card spending USDC, the conversion is close to one to one. The cost shows up in the program's spread and fees, not in currency risk.

## Worked example 2: what happens when a hotel bill changes the amount?

A hotel authorizes an estimate, then charges a different final amount. The program has to adjust the hold at clearing, and it needs enough stablecoin balance to cover any increase.

1. **Check-in.** The hotel authorizes $200 for one night. The program reserves 200 USDC.
2. **During the stay.** The guest orders room service and uses the minibar. The hotel adds charges to the folio but sends nothing to the card yet.
3. **Check-out.** The final bill is $236.40. The hotel submits $236.40 for clearing against the original authorization.
4. **Hold adjustment.** The program needs another $36.40. If the balance covers it, the program reserves the extra stablecoin and finalizes the debit. If not, how the program handles the gap is set by its own rules and the network's.
5. **Settlement and payout.** The issuer settles $236.40 with the network at T+1, and the hotel is paid in its local currency.

If the final bill is lower, say $180, the program releases the unused $20 of the hold back to the balance. Fuel pumps and restaurants with tips follow the same pattern with smaller numbers.

| Purchase | Authorized | Final | Hold change at clearing |
| --- | --- | --- | --- |
| Coffee | $4.50 | $4.50 | None |
| Hotel, higher bill | $200.00 | $236.40 | +$36.40 reserved |
| Hotel, lower bill | $200.00 | $180.00 | $20.00 released |
| Restaurant with tip | $50.00 | $58.00 | +$8.00 reserved |

These numbers are illustrative.

## How does the program check the balance: ledger or blockchain?

Custodial programs check an internal ledger. Self-custodial programs check a balance and an allowance onchain. Both have to answer inside the few seconds a card authorization allows.

**Ledger check.** In a custodial program, the provider holds the stablecoins in its own wallets and keeps a ledger of what each cardholder owns. The authorization reads that ledger and writes a hold. It is fast and simple, and the cardholder trusts the provider with the funds.

**Onchain check.** In a self-custodial program, the stablecoins stay in a wallet the cardholder controls. Gnosis Pay, for example, gives each user a Safe smart account with a spending allowance enforced by a Roles Module, per [its documentation](https://docs.gnosispay.com/concepts/safe/overview). The card can spend up to that allowance. A Delay Module adds a 3-minute hold on non-card transactions out of the account.

neobankbeat's [stablecoin cards explainer](https://www.neobankbeat.com/blog/stablecoin-cards-explained) puts the trade-off simply: the wallet may be permissionless, but the card rails still require the cardholder to be identified.

## How does USDC become fiat at checkout?

At checkout the stablecoin is reserved, not yet sold. The conversion that pays for the purchase usually happens at settlement, when the program funds what it owes the network.

There are two models for that funding step today.

**Model 1: convert, then settle in fiat.** The program sells stablecoins for fiat through a liquidity partner and pays the network over bank rails, like any other issuer. Most programs work this way.

**Model 2: settle with the network in a stablecoin.** The issuer pays Visa directly in USDC, and Visa handles the conversion on its side. Visa [announced on December 16, 2025](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html) that US issuer and acquirer partners could settle in USDC, with Cross River Bank and Lead Bank as initial participants settling over Solana. On [April 29, 2026](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), Visa said the pilot supported nine blockchains and had reached a $7 billion annualized settlement run rate, up 50% from the previous quarter.

That $7 billion is settlement activity between institutions. It is a different measure from card spending and should never be added to card volume.

## Is the card timeline different from a bank card?

No. The card network timeline is identical. The difference sits inside the program: when it converts, what rate it uses, and how much liquidity it keeps ready.

| Moment | Bank debit card | Stablecoin card |
| --- | --- | --- |
| Checkout | Bank checks deposit balance | Program checks stablecoin balance and converts at current rate |
| Same day | Clearing, hold adjusted | Clearing, stablecoin hold adjusted |
| T+1 | Bank settles with network in fiat | Program converts stablecoins and settles in fiat, or settles in USDC |
| Merchant payout | Local currency | Local currency |

## Where do live quotes and liquidity fit in a card program?

A stablecoin card program needs fiat ready every settlement day and a reliable rate every time it converts. That makes conversion and payout liquidity part of the card's daily operations.

Three operational questions decide whether a program runs smoothly:

1. **What rate does the program convert at?** The rate at authorization should match what the program can actually get at settlement, or the spread absorbs the difference.
2. **Where does settlement cash come from?** The program has to turn stablecoins into fiat on time for each settlement cycle.
3. **How do users move money in and out?** Top-ups from a bank account and withdrawals to one sit outside the card network entirely.

BlindPay is a stablecoin API for global payments that covers those money movements around the card. Its [payout quotes](/docs/payout-quotes) lock the rate and fees before the stablecoins move, and payouts convert USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with no pre-funding. [How live quotes work for on- and off-ramp liquidity](/resources/more/on-off-ramp-liquidity-live-quotes) explains why a locked quote matters when rates move between authorization and settlement.

## What can go wrong between authorization and settlement?

Most problems come from the gap between the authorized amount and the final one, or from the balance changing during that gap. Programs design their hold rules around these cases.

- **Final amount above the balance.** The hotel example, when the extra charge exceeds what is left. The program's rules decide what happens.
- **Balance moved after authorization.** In self-custodial programs, the stablecoins stay in the user's wallet, so the program needs controls such as allowances and withdrawal delays to keep pending purchases covered.
- **Rate moves.** For a euro card funded with USDC, the rate can move between authorization and settlement. For a USD card funded with USDC, this exposure is small.
- **Refunds.** A merchant refund comes back through the network as a credit, and the program credits the cardholder's balance under its own terms.

For card payments, chargebacks follow card network rules. Onchain stablecoin transfers have no chargeback at all, which [are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible) covers in detail.

## What should builders take from this?

Treat the card network timeline as fixed and design the stablecoin side around it. Your program's real work is the hold logic, the conversion rate, and having settlement cash ready every business day.

If you run a card program or wallet and need the conversion and local payout legs handled through one API, start with the free development instance in the [BlindPay payout quickstart](/docs/quickstart-payout).

## Sources

- Visa, [Visa launches stablecoin settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html), December 16, 2025
- Visa, [Visa accelerates stablecoin momentum: adding five blockchains for settlement](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), April 29, 2026
- Gnosis Pay, [GP Safe Account](https://docs.gnosispay.com/concepts/safe/overview)
- neobankbeat, [Stablecoin cards explained](https://www.neobankbeat.com/blog/stablecoin-cards-explained), November 18, 2025

---

Source: https://blindpay.com/resources/more/how-to-add-stablecoin-payments-to-your-wallet-integration

---
title: "How to add stablecoin payments to your wallet integration"
seoTitle: "Add stablecoin payments to a wallet integration in 9 steps"
description: "Connect the wallets you already run to bank deposits and local payouts: register addresses, open virtual accounts, quote, authorize, and track webhooks."
date: "2026-09-21"
updated: "2026-09-21"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to add stablecoin payments to an app that already has wallets"
  steps:
    - name: "Decide your flows"
      text: "Choose pay-in, payout, or both. Pay-ins only need the wallet to receive. Payouts need the wallet to authorize each quoted amount."
    - name: "Onboard the customer"
      text: "Run KYC for individuals or KYB for businesses. Quotes can only be created once the customer is approved."
    - name: "Link the customer's wallet"
      text: "Register the wallet address with a signed message on EVM, or by direct address for smart-contract wallets, Stellar, Solana, and Tron."
    - name: "Create a virtual account"
      text: "Issue US bank details linked to the wallet, so each bank deposit converts to USDC or USDT and settles to it as a payin."
    - name: "Quote, show, then execute"
      text: "Request a live quote, show the rate, fee, and received amount to the user, and execute before the quote expires."
    - name: "Authorize and send the payout"
      text: "Have the wallet authorize the quoted amount with the chain's method, then create the payout to a local rail such as Pix or SPEI."
    - name: "Listen to webhooks"
      text: "Verify each signed webhook, deduplicate events, and map payin and payout statuses to your order states."
    - name: "Handle failures"
      text: "Credit the wallet back on refunded payouts, escalate failed ones to support, and re-quote when a quote expires."
    - name: "Test in a sandbox and go live"
      text: "Run every path on testnets with a test stablecoin, including forced failures and refunds, then switch keys and networks for production."
faq:
  - q: "How do I add stablecoin payments to an app that already has wallets?"
    a: "Register each customer's wallet address with a stablecoin payments API, create virtual accounts so bank deposits convert and settle to those wallets, and pay out by requesting a quote that the wallet authorizes. The wallet provider keeps holding keys and signing. The payments layer handles bank rails, conversion, compliance, and payout status webhooks."
  - q: "Do I need to pre-fund a balance before sending stablecoin payouts?"
    a: "Not with a non-custodial payout flow. The stablecoins stay in the customer's own wallet, and the provider pulls only the quoted amount when the payout executes. The wallet does need to hold that amount at execution time, plus the network's gas token for the authorization transaction on most EVM chains. Arc is an exception, since it uses USDC for gas."
  - q: "Can a smart-contract wallet fund stablecoin payouts?"
    a: "Yes. Smart-contract wallets, such as ERC-4337 accounts or multisigs, can't produce the standard signed message used to prove ownership, so they are registered by submitting the address directly. For an EVM payout, the smart account then sends the ERC-20 approve for the quoted amount like any other wallet, through its own transaction flow."
  - q: "Why do stablecoin payment APIs use quote then execute?"
    a: "A quote locks the exchange rate and fees for a short window, so the user can confirm the exact amount the recipient will get before any money moves. If the quote expires, you request a new one and nothing has moved. Without the quote step, the rate shown on screen and the rate applied at execution can drift apart."
  - q: "What happens if a stablecoin payout fails?"
    a: "It depends on the final status. A refunded payout returns the stablecoins to the wallet that funded it, so your ledger should credit that wallet again. A failed payout, for example after a rejected compliance check, does not refund automatically and needs a follow-up with support. Don't retry a failed payout with a new quote until that is resolved."
  - q: "How do I test stablecoin payments without real money?"
    a: "Use a development instance on testnets with a test stablecoin. On BlindPay, development instances use USDB on networks like Base Sepolia and Solana Devnet, payins complete automatically about 30 seconds after creation, and payout amounts of $666.00 and $777.00 force failed and refunded outcomes, so you can test every path before launch."
---

To add stablecoin payments to an app that already has wallets, register each customer's wallet address with a payments API, route bank deposits into it through virtual accounts, and pay out from it with a quote that the wallet authorizes. The wallet keeps holding keys and signing. The payments layer handles bank rails, conversion, and compliance.

This tutorial assumes the wallets already exist, from an embedded SDK, a wallet API, or your users' own wallets. [How to integrate a stablecoin API](/resources/more/how-to-integrate-a-stablecoin-api) covers the full flow from a blank project. This guide covers the seams between the wallet you have and the payments you're adding: address registration, who signs what, and how failures land back in the wallet.

## Step 1: Decide your flows: pay-in, payout, or both

**Outcome:** you know which direction money moves, and what the wallet has to do in each direction.

A pay-in collects bank money and delivers stablecoins to a wallet. A payout takes stablecoins from a wallet and delivers local currency to a bank account. Most products need both eventually, but the first release rarely does.

| Flow | Money moves | The wallet's job | Wallet signs? |
| --- | --- | --- | --- |
| Pay-in (collect) | Bank deposit, converted to USDC or USDT, delivered to the wallet | Receive | No |
| Payout (send) | Stablecoins from the wallet, converted, sent to a bank account | Authorize the quoted amount | Yes, once per payout |
| Both | A contractor platform funding by ACH and paying out over Pix | Receive, then authorize | For payouts only |

Pay-ins are the easier first release, because the wallet never has to sign anything. If your wallets are held by users on phones, starting with pay-ins lets you ship before you've designed a single signing prompt. [What is crypto wallet integration](/resources/more/what-is-crypto-wallet-integration) explains the layers if you need the wider view.

## Step 2: Onboard the customer (KYC or KYB) before any money moves

**Outcome:** every customer is verified before a quote can be created for them.

KYC, know your customer, verifies an individual's identity. KYB, know your business, verifies a company, its registration, and the people who own and control it. Stablecoin payment providers run both because they move money between bank accounts and blockchains for someone else.

On BlindPay, each of your users becomes a customer with a `kyc_status`. New customers start at `verifying`. With Standard KYC, the status typically moves to `approved` or `rejected` automatically within about 60 seconds, unless the compliance team needs a manual review. Payin and payout quotes require `approved` or `approved_rfi`, so gate your payment screens on that status, not on your own signup state.

Store the customer ID next to your internal user ID and the wallet provider's wallet ID. You'll need all three in every support ticket. [How to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the verification flow in detail.

## Step 3: Link the customer's wallet

**Outcome:** each customer wallet is registered with the payments layer, and you've confirmed it belongs to that customer.

The payments layer needs to know which address to deliver pay-ins to and which address will fund payouts. BlindPay calls this a [blockchain wallet](/docs/blockchain-wallets) (`bw_...`): an external wallet the customer controls, whose keys BlindPay never holds. There are two ways to register one, and the right one depends on the wallet type.

| Wallet type | Registration method | Why |
| --- | --- | --- |
| EVM wallet that can sign messages (most embedded, browser, and MPC wallets) | Signed message, `is_account_abstraction: false` | BlindPay recovers the address from the signature, which proves control |
| Smart-contract wallet (ERC-4337 account, multisig) | Direct address, `is_account_abstraction: true` | Contract wallets validate signatures through [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) and can't produce the standard signed message |
| Stellar, Solana, or Tron wallet | Direct address, `is_account_abstraction: true` | The signed-message flow is EVM-only |

For the signed-message flow, fetch the message, have the wallet sign it, and submit the signature. The request below is illustrative, with field names from the docs; check the [API reference](/docs/api/reference) for the full list.

```bash
# 1. Get the fixed message to sign
curl https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/blockchain-wallets/sign-message \
  --header 'Authorization: Bearer YOUR_API_KEY'

# 2. Sign it with the customer's wallet, then register the wallet
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/blockchain-wallets \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Main wallet",
    "network": "base",
    "is_account_abstraction": false,
    "signature_tx_hash": "0x..."
  }'
```

The direct-address flow checks the address format, not ownership. So never take the address from a text field. Read it server-side from your wallet provider's API, where you already know which user owns it. A stablecoin delivered to the wrong address can't be recovered by anyone. A `blockchainWallet.new` webhook fires when the wallet is created.

## Step 4: Create a virtual account so bank deposits settle to the wallet

**Outcome:** the customer has US bank details, and every deposit lands in their wallet as USDC or USDT.

A virtual account is a bank account issued in the customer's name, with its own routing and account number. Each virtual account belongs to one customer and settles to one wallet, set by `blockchain_wallet_id`. A customer can hold more than one. Each deposit creates a payin, which you track like any other payment.

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "banking_partner": "YOUR_ELIGIBLE_PARTNER",
    "token": "USDC",
    "blockchain_wallet_id": "bw_000000000000"
  }'
```

Plan for a review before the account works. A new virtual account starts in `pending_review` for compliance review, moves to `verifying` for the banking partner's approval, and only shows rail numbers once approved. US virtual accounts accept ACH, wire, and SWIFT deposits, and each costs $1.50 per month per account ([virtual accounts](/docs/virtual-accounts)). If you settle in USDT, the linked wallet has to be on a network that supports it.

For one-off collections instead of a standing account, create a payin quote with `blockchain_wallet_id` and share the payment instructions it returns, such as a Pix code or a SPEI CLABE. [Stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained) compares the two.

## Step 5: Request a live quote, show the rate and fees, then execute

**Outcome:** the user sees the exact rate, fee, and received amount before anything moves.

A quote locks the exchange rate and fees for a payout. On BlindPay, a payout quote is created against a bank account and a `network` and `token` pair, and it expires 5 minutes after creation. Amounts are integers in minor units, so `10000` means $100.00.

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/quotes \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "bank_account_id": "ba_000000000000",
    "currency_type": "sender",
    "cover_fees": false,
    "request_amount": 10000,
    "network": "base",
    "token": "USDC"
  }'
```

Quote-then-execute prevents surprise pricing. The user confirms a firm number, the rate can't drift between the confirmation screen and execution, and an expired quote costs nothing: request a new one, since no funds moved. Show the fee breakdown from the response, not a number you computed yourself. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers expiry, fee direction, and minor units.

## Step 6: Authorize the payout from the wallet and send it to a local rail

**Outcome:** the wallet authorizes exactly the quoted amount, and local currency goes out on the recipient's rail.

This is the step where your wallet integration and the payments layer meet. The authorization method depends on the chain.

| Network | How the wallet authorizes | Then |
| --- | --- | --- |
| EVM: Ethereum, Polygon, Base, Arbitrum, Tempo, Arc | An ERC-20 `approve` for the quoted amount, using the token and contract details returned in the quote | Create the payout at `/payouts/evm` with `quote_id` and `sender_wallet_address` |
| Stellar | `/payouts/stellar/authorize` returns an unsigned transaction for the wallet to sign | Create the payout at `/payouts/stellar` with the signed transaction |
| Solana | `/prepare-delegate-solana` returns a token delegation transaction for the wallet to sign and submit | Create the payout once the delegation confirms |

Who signs depends on your [integration model](/resources/more/wallet-api-vs-embedded-wallet-sdk-vs-white-label):

- **Embedded SDK:** the user sees a signing prompt in your app. Show the amount and the recipient on the same screen, in plain language.
- **Wallet API or MPC:** your backend requests the signature. Add BlindPay's contract and treasury addresses to your policy engine's allowlist, and cap each approval at the quoted amount so a bug can't approve more.
- **The user's own wallet:** request the signature through the wallet's standard provider interface.

Gas is the other detail. An EVM `approve` is an on-chain transaction, so the wallet needs the network's gas token, except on Arc, where USDC is the gas token. Payouts then go out over Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), TED, ACH Colombia, and Transfers 3.0, depending on the recipient's bank account.

If your wallet can't sign contract approvals at all, because of policy limits or a custody setup that only sends plain transfers, use an [off-ramp wallet](/resources/more/what-is-an-off-ramp-wallet) instead: a deposit address that converts each deposit and pays the linked bank account.

## Step 7: Listen to webhooks and update order state

**Outcome:** your order state follows the payment, without polling.

Payins and payouts move through the same five statuses, and each change fires a webhook: `payin.new`, `payin.update`, and `payin.complete` for deposits, and `payout.new`, `payout.update`, and `payout.complete` for payouts. Every call is signed, so verify the `svix-id`, `svix-timestamp`, and `svix-signature` headers before trusting a payload ([webhooks](/docs/learn/webhooks)).

| Status | Payin meaning | Payout meaning | Terminal | Your order state |
| --- | --- | --- | --- | --- |
| `processing` | Waiting for the deposit, or converting and sending stablecoins | Pulling stablecoins, fiat in flight | No | Pending |
| `on_hold` | Held for manual risk or compliance review | Held for review; all SWIFT payouts start here | No | In review |
| `completed` | Stablecoins delivered to the wallet | Fiat landed in the recipient's account | Yes | Paid |
| `failed` | The payin did not go through | The payout did not complete | Yes | Failed, needs follow-up |
| `refunded` | The deposit was returned to the sender | Stablecoins returned to the funding wallet | Yes | Returned |

Webhooks can arrive twice or out of order. Store each event ID, ignore duplicates, and never move an order backward from a terminal state. Send an `Idempotency-Key` header on every POST, so a retried request replays the original response instead of creating a second payout. [Stablecoin API webhooks](/resources/more/stablecoin-api-webhooks-reconciliation) covers reconciliation, and [payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) covers each status in depth.

## Step 8: Handle failures

**Outcome:** every failure path ends in a known state with a known next action.

Payments that can't settle don't all come back the same way, so don't promise users that they do. Handle each case on its own:

- **Refunded payout:** the stablecoins return to the wallet that funded the payout. Credit that wallet in your ledger and tell the user.
- **Failed payout:** the payout doesn't refund automatically, for example after a rejected compliance check. Open a support case and hold the order. Don't retry with a new quote until it's resolved, or you risk paying twice.
- **Refunded payin:** the bank deposit was returned to the sender. Nothing reached the wallet.
- **Expired quote:** request a new quote. No funds moved.
- **Wrong address:** an on-chain transfer to the wrong address can't be reversed. Prevention lives in step 3.

## Step 9: Test in a sandbox and go live

**Outcome:** every path, including failures, has run end to end before a real dollar moves.

A BlindPay development instance runs on testnets with USDB, a test stablecoin with no mainnet deployment. Payins complete automatically about 30 seconds after creation. Payout quotes for $666.00 end `failed` and $777.00 end `refunded`, so you can exercise the unhappy paths on purpose. On `stellar_testnet` and `solana_devnet` you can mint USDB straight into a wallet. Tron has no testnet, so test Tron flows carefully in production with small amounts.

Before launch, check each item:

1. Wallet registration uses signed messages wherever the wallet supports them.
2. Direct-address registration reads addresses from your wallet provider's API, never from user input.
3. Payment screens are gated on an approved customer status.
4. The quote screen shows the fee breakdown and expiry from the API response.
5. Signing policies allowlist the payout contract and cap approvals at the quoted amount.
6. Webhook signatures are verified, and duplicate events are ignored.
7. Every POST sends an `Idempotency-Key`.
8. Forced `failed` and `refunded` payouts both land in the right order state.
9. Production networks, tokens, and API keys replace the testnet ones, in a single config change.

[Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) lists what testing on testnets can't catch.

If you build with an AI coding assistant, point it at the same flow. BlindPay's MCP server (`npx -y @blindpay/mcp`) exposes the API as tools, the agent skills teach it the rails and gotchas, and the [prompt library](/prompts) has ready-to-paste prompts for payin and payout quickstarts. [Build with AI](/docs/build-with-ai) has the setup.

## What to do next

Start with step 1 and ship pay-ins first: register wallets, open virtual accounts, and listen for `payin.complete`. Once deposits land reliably, add payouts one chain at a time, beginning with the chain most of your wallets already use.

The [blockchain wallets](/docs/blockchain-wallets) and [payouts](/docs/payouts) docs have every field for steps 3 and 6.

---

Source: https://blindpay.com/resources/more/onramp-offramp-liquidity-glossary

---
title: "On-ramp and off-ramp liquidity glossary: 40 terms for live quotes, spread, and settlement"
seoTitle: "On/off-ramp liquidity glossary: 40 terms, plain English"
description: "Live quote, expiry, spread, slippage, basis points, depth, market maker, RFQ, pre-funding: the 40 terms behind on/off-ramp liquidity, in plain English."
date: "2026-09-21"
updated: "2026-09-21"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is on-ramp and off-ramp liquidity?"
    a: "It is a provider's ability to convert between local money and stablecoins at the size you need, at a quoted rate, without the price moving against you. An on-ramp turns fiat into stablecoins, an off-ramp turns stablecoins into fiat in a bank account. Liquidity decides whether the rate on the quote is the rate you actually get, and whether it holds for $50,000 as well as for $500."
  - q: "What is the difference between spread and slippage?"
    a: "Spread is the gap between the market rate and the rate a provider quotes you. You see it before you send, and you agree to it. Slippage is the gap between the rate you were shown and the rate that settled. You only discover it afterward. A binding live quote executed inside its window turns possible slippage into a visible, agreed spread."
  - q: "What is a live quote in stablecoin payments?"
    a: "A live quote is a binding price for one conversion, calculated when you request it and held for a stated window. It has an ID and an expiry time. If you execute against it before it expires, the conversion settles at the quoted rate and fees. At BlindPay, most quotes last 5 minutes and OTC payin quotes last 10 seconds."
  - q: "What does liquidity depth mean for an off-ramp?"
    a: "Depth is how much a provider can convert on one corridor before its rate gets worse. A deep provider quotes nearly the same rate for $500 and $50,000. A thin one widens the spread as the amount grows, because the order runs past its cheapest inventory. You test depth by requesting quotes at several sizes at the same moment."
  - q: "What is pre-funding in cross-border payments?"
    a: "Pre-funding means parking money in an account in the destination country before you can pay anyone there. Banks and payout providers use it so local currency is ready when a payment arrives. It ties up working capital and adds FX exposure. Quote-based stablecoin payouts fund each payment from stablecoins at the moment it executes instead."
---

On-ramp and off-ramp liquidity is a provider's ability to convert between local money and stablecoins at the size you need, at a quoted rate, without the price moving against you. This glossary defines the 40 terms behind that sentence, from live quote and expiry to spread, slippage, depth, market makers, and pre-funding.

Every other article in this series uses these definitions. Where a term maps to a field in a BlindPay quote, the field name is listed, so you can check the definition against a real API response. For blockchain basics such as wallet, finality, or gas, see the [blockchain payments glossary](/resources/more/blockchain-payments-glossary).

**Key takeaways**

- Liquidity is not a balance. It is the ability to fill a conversion at a quoted rate, at size, on demand.
- A live quote is binding for its window. At BlindPay that window is 5 minutes for most quotes and 10 seconds for OTC payin quotes.
- Spread is a cost you see before you send. Slippage is a cost you discover after.
- Depth is how much you can convert before the rate gets worse. You measure it with quotes at several sizes.
- Pre-funding parks money in the destination country in advance. Quote-based stablecoin payouts fund each payment when it executes.

## Which terms map to fields in a quote?

Nine of the terms below appear as fields in a BlindPay [payout quote](/docs/payout-quotes) or [payin quote](/docs/payin-quotes). The table is the short version.

| Term | One-line definition | BlindPay quote field |
| --- | --- | --- |
| Quote ID | The handle you execute against | `id` |
| Expiry window | How long the price is binding | `expires_at` (epoch milliseconds) |
| Market rate | The raw exchange rate before the provider's margin | `commercial_quotation` |
| Quoted rate | The rate after the provider's margin | `blindpay_quotation` |
| Sender amount | What leaves the paying side | `sender_amount` |
| Receiver amount | What lands on the receiving side | `receiver_amount` |
| Request side | Which side the amount you typed is in | `currency_type` |
| Fee direction | Who absorbs the fee | `cover_fees` |
| Fee lines | Fees listed apart from the rate | `flat_fee`, `partner_fee_amount`, `billing_fee_amount` |

## What do on-ramp, off-ramp, and liquidity mean?

**On-ramp.** A service that converts fiat money into stablecoins. Dollars, reais, or pesos go in, and USDC or USDT lands in a wallet. [What is a crypto on-ramp and off-ramp](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp) covers the basics.

**Off-ramp.** The reverse: stablecoins go in, and local currency lands in a bank account over a local rail.

**Liquidity.** The ability to convert at the size you need, at a quoted rate, without moving the price. It is a capability, not a pile of money.

**Liquidity depth.** How much a provider can convert on one corridor before its rate degrades. Deep means a $50,000 quote prices close to a $500 quote.

**Corridor.** A currency pair plus a direction, such as USDC to BRL. Depth, spread, and speed are properties of a corridor, not of a provider as a whole.

**Payout rail.** The local payment system that delivers the money at the end, such as Pix in Brazil, SPEI in Mexico, ACH in the US, or SEPA in Europe.

**Payin and payout.** A payin is money coming in, a bank transfer converted into stablecoins (the on-ramp side). A payout is money going out, stablecoins converted into fiat and sent to a bank account (the off-ramp side).

## What is inside a live quote?

**Live quote.** A binding price for one conversion, calculated when you request it and held for a stated window. It carries an ID and an expiry time. Execute inside the window and you get the quoted numbers.

**Quote ID.** The identifier you pass when you execute. BlindPay payout quotes start with `qu_`. Payin quote IDs are passed as `payin_quote_id`.

**Expiry window.** How long the quote stays binding. At BlindPay, payout, payin, and transfer quotes expire 5 minutes after creation by default, OTC payin quotes expire in 10 seconds, and SEPA payout quotes can be shorter. The `expires_at` field holds the deadline in epoch milliseconds, so read it from each response instead of hardcoding a window. The [cut-off times reference](/docs/kb/cut-off-times) lists every default.

**Market rate.** The exchange rate before the provider's margin. On a BlindPay quote this is `commercial_quotation`.

**Quoted rate.** The rate you actually convert at. On a BlindPay quote this is `blindpay_quotation`. The gap between the two is the provider's FX margin.

**Sender amount and receiver amount.** What leaves one side and what arrives on the other, both in minor units.

**Minor units.** Amounts written as integers in the currency's smallest unit. `10000` means 100.00. Integers avoid floating point rounding errors.

**Request side.** Which side of the conversion the amount you send in the request is denominated in. On a BlindPay payout quote, `currency_type: "sender"` means the stablecoin side and `"receiver"` means the fiat side. On a payin quote the meaning flips. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) walks through it.

**Fee direction.** Who absorbs the fee. With `cover_fees: false` the fee comes out of what the recipient gets. With `cover_fees: true` the sender pays it on top.

## What is the difference between a firm, indicative, and stale price?

**Firm quote (binding quote).** A price the provider commits to execute at, for a stated window. A live quote is a firm quote.

**Indicative rate.** A price shown for information. The provider does not commit to it, and the conversion settles at whatever the market says later.

**Stale quote.** A rate calculated some time ago and still on display. The older it is, the further the market has moved, and someone absorbs that move.

**Re-quote.** A fresh quote requested after the previous one expired. The new numbers can differ, because the market moved in between.

**Re-quote delta.** The change between an expired quote and its replacement. Large deltas on one corridor are a volatility signal.

## What do spread, slippage, and basis points mean?

**Mid-market rate.** The midpoint between the price buyers bid and sellers ask in the wholesale market. Public reference rates are a slower version of it: the ECB says its [euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html) are published around 16:00 CET for information purposes only, and strongly discourages using them for transactions.

**Bid and ask.** The bid is what a dealer pays to buy a currency from you. The ask is what it charges to sell it to you. The ask is always higher.

**Spread.** The gap between the market rate and the rate you are quoted, usually written as a percentage or in basis points. You see it before you send.

**Slippage.** The gap between the rate you were shown and the rate that settled. You see it only after. On a binding quote executed inside its window, slippage is zero.

**Basis point (bps).** One hundredth of one percent. 50 bps is 0.50%. On $10,000, each basis point is $1.

**Flat fee and percentage fee.** A flat fee is a fixed charge per transaction. A percentage fee scales with the amount and is usually quoted in basis points.

**Partner fee.** A markup a platform adds on top of the provider's price. At BlindPay it shows as `partner_fee_amount` on the quote. See [partner fees](/docs/learn/partner-fees).

**Delivered amount.** What actually lands in the recipient's account after the rate and every fee. The only number the recipient cares about.

## Where does off-ramp liquidity come from?

**Liquidity provider.** Any party that converts between stablecoins and local currency on demand and delivers the result. [What is a liquidity market](/resources/more/what-is-a-liquidity-market-cross-border-payments) explains how the role is changing.

**Market maker.** A firm that continuously quotes both a buy and a sell price and earns the spread between them. Market makers carry inventory and hedge the risk of holding it.

**Inventory.** Balances of local currency and stablecoins a provider holds ready to fill orders. Inventory is what lets a provider bind a quote on demand.

**RFQ (request for quote).** A pricing model where a buyer asks several approved liquidity providers for executable prices and picks the best one.

**OTC desk.** An over-the-counter desk that prices large conversions directly instead of through a public order book. At BlindPay, OTC payin quotes cover BRL to USDT from $5,000 USD equivalent and expire in 10 seconds.

## How are payouts funded and settled?

**Pre-funding.** Parking money in destination-country accounts before you can pay out. It ties up working capital and adds FX risk. [No pre-funding in a stablecoin API](/resources/more/no-pre-funding-stablecoin-payouts) shows the alternative.

**Nostro account.** A bank's account held at a foreign bank, in that bank's currency. Correspondent banking runs on them, and they are why the old model needs pre-funding. See [correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity).

**Funding at execution.** Paying for each payout from stablecoins at the moment it executes. With a BlindPay payout from your own EVM wallet, you approve the quoted amount and BlindPay pulls it when the payout is created.

**Float.** The stablecoin balance a business keeps ready to fund upcoming payouts. Smaller than country-by-country pre-funding, because one dollar balance serves every corridor.

**Settlement.** The moment the recipient has the money with no further steps. For a payout that is when the local rail credits the bank account.

**Refund wallet.** Where stablecoins go back if a payout cannot be delivered after they were collected. BlindPay refunds to the quote's refund wallet, or to the sending wallet when none is set. On Pix and other non-USD local rails the refund is automatic; USD payouts are refunded after an operator review.

## How do the terms fit together on one payout?

One quote uses most of the glossary at once.

**Illustrative example.** A company sends 10,000 USDC to a supplier in Brazil. The numbers are made up for the arithmetic, not BlindPay pricing.

| Item | Value | How it is calculated |
| --- | --- | --- |
| Market rate (`commercial_quotation`) | 5.40 BRL per USDC | From the market at request time |
| Quoted rate (`blindpay_quotation`) | 5.373 BRL per USDC | Market rate minus the margin |
| Spread | 0.50%, or 50 bps | (5.40 - 5.373) / 5.40 |
| Spread in money | 270 BRL, about 50 USDC | 10,000 x (5.40 - 5.373) |
| Receiver amount before flat fee | 53,730 BRL | 10,000 x 5.373 |
| Slippage | 0 bps | Executed inside the 5-minute window |

Now change one thing. Say a provider had shown 5.373 as an indicative rate and settled later at 5.370. Slippage would be (5.373 - 5.370) / 5.373 x 10,000, about 5.6 bps, or 30 BRL the supplier never agreed to lose.

Small on one payment. On $2 million a month it is about $1,100, and nobody sees it on the quote screen.

The wholesale market behind these numbers is enormous: the BIS [2025 Triennial Survey](https://www.bis.org/press/p250930.htm) measured $9.6 trillion of FX trading per day. Depth on one emerging-market corridor is a much smaller pool, which is why it is worth testing. [On/off ramp liquidity with live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) shows how depth changes quotes by size, and USDC itself is designed to be [redeemable 1:1 for US dollars](https://www.circle.com/usdc), so the FX question sits on the local-currency side.

## What to do next

Pull one real quote and match each field to the definitions above. The [payout quotes docs](/docs/payout-quotes) show a full response, field by field.

---

Source: https://blindpay.com/resources/more/stablecoin-card-issuing-compliance

---
title: "Stablecoin card issuing compliance: KYC, KYB, and regulatory coverage explained"
seoTitle: "Stablecoin card issuing compliance: KYC, KYB, regulation"
description: "What compliance stablecoin card issuing requires: KYC vs. KYB, who is responsible for what, how rules differ in the US, EU, UK, and Latin America, and ongoing monitoring."
updated: "2026-10-12"
date: "2026-09-21"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What compliance is required to issue stablecoin-funded cards?"
    a: "At minimum: a licensed bank or e-money institution as issuer and BIN sponsor, KYC on every cardholder, KYB on every business that runs or uses the program, sanctions screening on people and wallet addresses, transaction monitoring on card and on-chain activity, and a written anti-money-laundering program. The stablecoin conversion also needs a provider licensed or registered for virtual asset services where the customers are."
  - q: "What is the difference between KYC and KYB for card issuing?"
    a: "KYC verifies an individual cardholder: name, date of birth, address, and a government ID number, checked against documents or data sources and sanctions lists. KYB verifies a business: its registration and good standing, what it does, and the people who own or control it, each of whom then goes through KYC. A consumer program needs KYC per cardholder; a corporate program needs KYB on the company plus identification of the employees who get cards."
  - q: "Do stablecoin card issuing rules differ by country?"
    a: "Yes. Card issuing is licensed where the card is issued, while virtual asset services are usually regulated where the customer lives, so one program can fall under several regimes at once. The US, EU, UK, Brazil, Mexico, and Argentina each have different licenses, reporting duties, and rules on which stablecoins are allowed."
  - q: "What ongoing monitoring is required after a stablecoin card is issued?"
    a: "Transaction monitoring on every authorization and on-chain funding movement, sanctions rescreening of cardholders each time a list changes, periodic re-verification of customer data based on risk, and fraud and dispute monitoring. Suspicious activity must be reported to the local financial intelligence unit, such as FinCEN in the US, and records kept for the required period, five years under the US Bank Secrecy Act."
  - q: "Is stablecoin card issuing regulated the same way as traditional card issuing?"
    a: "The card leg is regulated the same way: the same sponsor bank oversight, card network rules, identification requirements, and consumer protection rules apply. The stablecoin leg adds a second layer on top, including virtual asset licensing, the Travel Rule for transfers, wallet address screening, and rules on which stablecoins are permitted, such as MiCA in the EU and the GENIUS Act in the US."
---

*Reading time: about 8 minutes.*

**Summary:** At minimum, issuing stablecoin-funded cards requires a licensed bank or e-money institution as BIN sponsor, KYC on every cardholder, KYB on every business in the program, sanctions screening on people and wallet addresses, transaction monitoring on card and on-chain activity, and a written AML program. Stablecoin rules add to card rules. They do not replace them.

That last sentence is the one to bring to a risk committee. A stablecoin card program is a card program first, subject to everything a traditional program is, plus a virtual asset layer with its own regulators.

This guide is written for compliance officers, legal and risk teams, and founders who need to explain the program to a bank partner or a regulator. For the product basics, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Who is responsible for what?

Every company in the stack carries part of the obligation. Knowing who owns which part is the first thing an examiner will ask.

| Party | Main compliance duties |
|---|---|
| Card network (Visa, Mastercard) | Program rules, brand protection standards, dispute rules |
| Issuing bank or BIN sponsor | Legal issuer; owns the AML program, customer identification, and regulatory relationship; oversees everyone below |
| Program manager | Runs the program under the sponsor's policies: onboarding, monitoring, complaints, and reporting to the sponsor |
| Issuer processor | Secure card data handling, authorization controls, audit logs |
| Stablecoin conversion provider | Virtual asset licensing or registration, Travel Rule, wallet screening, its own AML program |
| Business customer (corporate programs) | Accurate KYB data, controls over which employees get cards |

The sponsor bank has the most at stake. It answers to its bank regulator for every card on its BIN, which is why its onboarding questions to a new program manager are long.

## KYC vs. KYB in card issuing

KYC applies to people. KYB applies to companies. Most programs need both.

| | KYC | KYB |
|---|---|---|
| Who is checked | Individual cardholders | Businesses running the program or holding corporate cards |
| What is collected | Name, date of birth, address, government ID number | Legal name, registration number, address, business activity, ownership structure |
| How it is verified | Document check with liveness, or data-source match; sanctions and PEP screening | Corporate registry lookup, document review, sanctions screening on the entity |
| People behind it | The cardholder | Every owner of 25 percent or more plus one controller, each verified with KYC |
| When | Before the card is issued | Before the program or corporate account is approved |
| US rule | Customer Identification Program, 31 CFR 1020.220 | FinCEN Customer Due Diligence rule |

In a consumer program every cardholder goes through full KYC. In a corporate program the company goes through KYB, and the employees who receive cards are identified to the level the sponsor bank's policy requires, which is usually lighter than full consumer KYC because the company is liable for the spend.

The [KYB explainer](/resources/more/what-is-kyb) covers the ownership rules, and [how to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the tooling.

## Why do the rules differ country by country?

Two layers, two different anchors:

- **Card issuing is licensed where the card is issued.** A US-issued card is governed by US banking rules even when used in Brazil.
- **Virtual asset services are regulated where the customer is.** A company converting stablecoins for residents of the EU, Brazil, or Argentina needs to meet those countries' virtual asset rules.

So one program serving customers in five countries can sit under one card regime and five virtual asset regimes at once. That is why a single license rarely covers a global program.

| Market | Card issuing | Stablecoin and virtual asset layer |
|---|---|---|
| United States | Bank issuer under its federal or state regulator; Bank Secrecy Act; Regulation E for consumer debit and prepaid | FinCEN money services business registration and state money transmitter licenses for conversion and custody; GENIUS Act for payment stablecoin issuers |
| European Union | Credit institution or e-money institution license; PSD2 | MiCA: CASP authorization for custody and exchange, EMT rules for stablecoins; Transfer of Funds Regulation (Travel Rule) |
| United Kingdom | FCA e-money or bank authorization | FCA cryptoasset registration under the Money Laundering Regulations |
| Brazil | BCB-authorized bank or payment institution | SPSAV authorization under BCB Resolutions 519, 520, and 521, in force February 2026 |
| Mexico | Bank or e-money institution under the Fintech Law | Fintech Law; Banco de México limits on regulated institutions offering virtual assets |
| Argentina | Bank or payment service provider under BCRA rules | PSAV registration with the CNV under Law 27,739 |

Two details trip up new programs. In the EU, MiCA restricts which stablecoins a CASP can offer, and major exchanges restricted USDT for EU customers after MiCA's stablecoin rules applied, so the funding token depends on the market. In Brazil, the SPSAV regime means the stablecoin provider's authorization status is now a diligence question, covered in the [PSAV explainer](/resources/more/psav-brazil-explained).

The [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) and [MiCA explainer](/resources/more/mica-stablecoin-rules-explained) go deeper on each regime. The [Latin America card guide](/resources/more/stablecoin-cards-latin-america) covers the regional card side.

## What monitoring is required after a card is issued?

Onboarding is where compliance starts. Most of the ongoing work happens after the card is live.

**Transaction monitoring.** Every authorization is scored. Card-side rules look at merchant category risk, velocity, cross-border patterns, and card testing (many small declined attempts). Stablecoin-side rules look at where funding came from: a deposit from a mixer, a sanctioned address, or a high-risk exchange changes the account's risk. The [real-time transaction monitoring guide](/resources/more/real-time-transaction-monitoring-stablecoin-payments) covers the rules.

**Sanctions rescreening.** Cardholders, business owners, and funding wallet addresses are rescreened each time a list updates. OFAC updates the SDN list several times a month and has listed blockchain addresses since 2018. OFAC compliance is strict liability: intent does not matter.

**Periodic re-verification.** Customer data is refreshed on a risk-based schedule. High-risk customers more often, low-risk less often, and anyone whose behavior changes sharply right away.

**Fraud and disputes.** Chargeback ratios above network thresholds put the whole program on a monitoring list. Dispute data also feeds fraud rules.

**Reporting and records.** Suspicious activity goes to the financial intelligence unit: FinCEN in the US, the COAF in Brazil, the UIF in Argentina. US Bank Secrecy Act records are kept for five years.

## How automation reduces review without skipping steps

At a few hundred cardholders a team can review cases by hand. At tens of thousands the queue outgrows the team. Automation changes who looks at what, not what gets checked.

- **Automated KYC and KYB** approve clean cases in seconds to minutes and route edge cases to review, instead of sending every application to an analyst. The [automated vs. manual onboarding comparison](/resources/more/automated-kyc-kyb-vs-manual-onboarding) shows the tradeoffs.
- **Rules and models on every transaction** replace sampling. Every authorization is scored, not a percentage.
- **List-triggered rescreening** runs against the full customer base each time a sanctions list updates, instead of quarterly batches.
- **Compliance agents** triage alerts, close obvious false positives, and draft case narratives, while the filing decision stays with a named human. The [compliance agents explainer](/resources/more/what-are-compliance-agents-in-fintech) covers where they fit.

What does not change: a human owns the program, signs the policies, and makes the final call on reports. An examiner will ask for the trail on a sample of cases, and "the model decided" is not an answer.

BlindPay runs the same model for payouts: KYC and KYB inside the API, sanctions screening on customers and on each payout, and holds that show up as an `on_hold` status rather than a silent delay.

## Pre-launch compliance checklist

- Sponsor bank named, program approved, card types and countries confirmed in writing
- Written AML program covering both the card leg and the stablecoin leg
- KYC and KYB flows mapped to the sponsor's policy, with rejection handling
- Stablecoin provider's license or registration verified in each customer market
- Permitted stablecoins confirmed per market (for example, MiCA rules in the EU)
- Wallet screening on every funding source
- Transaction monitoring rules for card and on-chain activity, with an owner for tuning
- Sanctions rescreening on list updates
- Suspicious activity reporting process and record retention

## What to read next

This is the last article in the stablecoin card series. Start from the top with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing), or go back to the [developer's guide](/resources/more/how-to-issue-stablecoin-cards-api) to see where each checkpoint sits in the integration flow.

To see how card duties combine with payout duties, read the [stablecoin card and payout compliance map](/resources/more/stablecoin-card-and-payout-compliance-map). For the cardholder's view of verification, see [do stablecoin cards require KYC](/resources/more/do-stablecoin-cards-require-kyc), and for regional rules, [stablecoin cards in Europe under MiCA](/resources/more/stablecoin-cards-europe-mica) and [stablecoin cards in the United States](/resources/more/stablecoin-cards-united-states-regulation).

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

---

Source: https://blindpay.com/resources/more/how-to-integrate-a-crypto-on-ramp-api

---
title: "How to integrate a crypto on-ramp API: payin quotes, deposit instructions, and webhooks"
seoTitle: "How to integrate a crypto on-ramp API: quote to webhook"
description: "The on-ramp API flow step by step: verify the customer, pick the wallet, quote, create the payin, show deposit instructions, and handle webhooks."
date: "2026-09-20"
updated: "2026-09-20"
author: "BlindPay Team"
category: "payments"
howto:
  name: "How to integrate a crypto on-ramp API"
  steps:
    - name: "Onboard and verify the customer"
      text: "Have the customer accept the provider's terms of service, create the customer with KYC or KYB data, and wait for the approval webhook before quoting."
    - name: "Choose where the stablecoins land"
      text: "Register an external wallet the customer controls, or use a provider-managed wallet or a virtual account, and save its ID."
    - name: "Request a live quote"
      text: "Send the amount in minor units, the payment method, the token, who pays the fee, and the destination wallet. Save the quote ID and its expiry."
    - name: "Create the payin and show deposit instructions"
      text: "Create the payin from the quote before it expires and show the payer the instructions for their rail: bank details and a memo code, a Pix code, a CLABE, or a payment link."
    - name: "Handle webhooks"
      text: "Verify each webhook signature on the raw body, deduplicate by message ID, and move your payment record forward only, never back from a final status."
    - name: "Reconcile and test failure paths"
      text: "Reconcile payins against your ledger daily, and force failed and refunded outcomes in the sandbox before going live."
faq:
  - q: "What is the basic flow of a crypto on-ramp API?"
    a: "Onboard and verify the customer, register the wallet that will receive the stablecoins, request a quote, create the payment from that quote, show the payer the deposit instructions, and listen for webhooks until the payment is complete. The quote is the step that locks the rate and fees."
  - q: "How long does an on-ramp quote stay valid?"
    a: "Usually a few minutes. On BlindPay a payin quote expires 5 minutes after creation, except OTC quotes, which expire in 10 seconds. The expiry is returned in epoch milliseconds, so parse it carefully, and request a new quote if the window has passed."
  - q: "Why use webhooks instead of polling for on-ramp status?"
    a: "Deposits arrive on the payer's schedule, not yours. A Pix payment can land in seconds and an ACH credit can take days. Webhooks tell you the moment the status changes, while polling either wastes calls or reacts late. Keep a daily reconciliation job as a backstop for missed events."
  - q: "What happens if the payer never sends the money?"
    a: "The payment waits for a window that depends on the rail, then fails. On BlindPay, Pix, SPEI, Transfers, and PSE payins wait up to 30 minutes before failing, and ACH or wire payins wait up to 5 business days. A created payin can't be cancelled, so let it expire and create a new quote if the payer comes back."
  - q: "Can I test an on-ramp integration without real money?"
    a: "Yes. A sandbox or development instance simulates deposits. On BlindPay, development payins complete about 30 seconds after creation and deliver a test stablecoin, USDB, on testnets. Set the amount to 666.00 to force a failure or 777.00 to force a refund, and check that your code handles both."
  - q: "Should I use an SDK or call the REST API directly?"
    a: "Use the SDK if one exists for your language, since it handles authentication and types. Generate a client from the OpenAPI spec otherwise. BlindPay ships SDKs for Node.js, Python, Go, PHP, and Swift, and an OpenAPI 3.1 spec for everything else."
---

A crypto on-ramp integration follows six steps: verify the customer, choose the wallet that receives the stablecoins, request a quote, create the payment and show the payer deposit instructions, handle webhooks until the payment settles, and reconcile. The quote locks the rate and fees. Webhooks, not polling, tell you when the fiat landed.

This guide covers the on-ramp direction: fiat in, stablecoins out. For the payout direction, see [integrating a stablecoin API](/resources/more/how-to-integrate-a-stablecoin-api). Examples use BlindPay's API on a development instance. Field names are real, but check the [payins docs](/docs/payins) for the current shape before you ship.

## Key takeaways

- The quote is the contract. It fixes the amount, fees, and destination for a short window, and the payment must be created inside it.
- Each rail shows the payer something different: bank details and a memo code, a Pix code, a CLABE, a CBU, or a payment link.
- Deposits arrive on the payer's schedule. Design for minutes on Pix and SPEI and days on ACH.
- Verify webhook signatures on the raw body, deduplicate retries, and never move a payment backwards from a final status.
- Force failures in the sandbox before production. `failed` and `refunded` mean different things for your ledger.

## What does an on-ramp integration look like?

Your backend talks to the on-ramp API. The provider talks to the banks and the blockchain. Events come back to you.

```text
your app ──► on-ramp API ──► bank rails + liquidity ──► stablecoins to the wallet
    ▲                                                          │
    └──────────────────────── webhooks ◄───────────────────────┘
```

Three objects carry the whole flow: a **customer** (who is paying in), a **wallet** (where the stablecoins land), and a **payin** (one deposit, created from a quote). Everything else is detail on those three.

## How do you onboard and verify the customer?

Every payin belongs to a verified customer. On BlindPay that takes two calls.

1. **Terms of service.** Generate a terms-of-service URL with `POST /v1/e/instances/{instance_id}/tos`, send the customer to it, and keep the `tos_id` it returns.
2. **Create the customer.** `POST /v1/instances/{instance_id}/customers` with the `tos_id`, `type` (`individual` or `business`), and the KYC or KYB fields.

Then wait. KYC Standard for individuals is automated and takes about 60 seconds. KYB for businesses and KYC Enhanced for high-risk countries are manual reviews of 3 hours to 1 business day. A `customer.update` webhook tells you when `kyc_status` changes. Don't request quotes until it reads `approved`. [How to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the data you need to collect.

## Where should the stablecoins land?

Pick the destination before you quote, because the quote needs its ID.

| Destination | ID | Custody | When to use it |
| --- | --- | --- | --- |
| External blockchain wallet | `bw_...` | The customer holds the keys | The customer already has a wallet, or you never want to hold funds |
| Managed wallet (beta) | `bl_...` | BlindPay custodies the balance | You want a balance without running wallet infrastructure |
| Virtual account | Settles to a linked wallet | Depends on the linked wallet | US payers send ACH or wire to a dedicated account number |

An external wallet is registered once per address. On EVM networks the customer can sign a message so BlindPay recovers the address from the signature. On Stellar, Solana, and Tron you submit the address directly, so validate it twice: a stablecoin sent to the wrong address can't be recovered. The network is read from the wallet record, so you never pass a network on the quote.

## How do you request a quote?

The payin quote locks the numbers. Send it the amount, the rail, the token, who pays the fee, and the destination.

```bash
curl https://api.blindpay.com/v1/instances/in_000000000000/payin-quotes \
  --request POST \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "blockchain_wallet_id": "bw_000000000000",
    "payment_method": "pix",
    "currency_type": "sender",
    "request_amount": 100000,
    "cover_fees": false,
    "token": "USDB",
    "payer_rules": { "pix_allowed_tax_ids": ["14747677786"] }
  }'
```

Four fields cause most bugs:

- **`request_amount`** is an integer in minor units. `100000` is R$1,000.00. For MXN, COP, and ARS it must also be a whole currency unit (a multiple of 100).
- **`currency_type`** says which side the amount is in. On a payin quote, `sender` means fiat. On a payout quote it means stablecoin. Same field, opposite meaning.
- **`cover_fees`** decides who pays: `false` takes the fee out of the stablecoins delivered, `true` adds it to the fiat the payer sends.
- **`payer_rules`** names who may pay. Pix needs the allowed CPF or CNPJ tax IDs, Transfers 3.0 needs a CUIT or CUIL, and PSE needs the payer's name, document, email, phone, and bank code.

The response returns `sender_amount`, `receiver_amount`, the market rate (`commercial_quotation`), the rate with fees (`blindpay_quotation`), each fee line, and `expires_at` in epoch milliseconds. You have 5 minutes. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers fee direction and units in depth.

## How do you create the payin and show deposit instructions?

Create the payin from the quote, then show the payer what their rail needs.

```bash
curl https://api.blindpay.com/v1/instances/in_000000000000/payins/evm \
  --request POST \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: 6f1c2a5e-payin-0001' \
  --data '{ "payin_quote_id": "pq_000000000000" }'
```

The path says `evm` for every method, including Pix, SPEI, PSE, and Transfers. The name is historical; it doesn't restrict the network. The response fills only the field for your rail:

| Payment method | Show the payer |
| --- | --- |
| ACH, wire | `blindpay_bank_details` plus the `memo_code` to include in the transfer |
| Pix | `pix_code`, as copyable text or a QR code |
| SPEI | The `clabe` to transfer to |
| Transfers 3.0 | The account (CVU, CBU, or alias) in `tracking_transaction.transfers_instruction` |
| PSE | The payment link in `tracking_transaction.pse_instruction` |

If the customer has an approved [virtual account](/resources/more/stablecoin-virtual-accounts-explained), ACH and wire deposits go to that dedicated account and the memo code is ignored. RTP is the exception: it always uses the memo-code path.

A created payin can't be cancelled. If the payer never pays, it fails after the rail's waiting window. Send the idempotency key on every create, so a network retry can't produce two payins. The header follows the [IETF Idempotency-Key draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/), and [why idempotency keys matter](/resources/more/stablecoin-api-idempotency-keys) covers the failure it prevents.

## How do you handle on-ramp webhooks?

Three events cover a payin's life:

- `payin.new` when the payin is created, including deposits into a virtual account.
- `payin.update` at intermediate steps, such as an arrival check or manual review.
- `payin.complete` when it finishes: delivered, refunded, or failed.

Every call is signed with `svix-id`, `svix-timestamp`, and `svix-signature` headers. Verify the signature on the exact raw bytes, before you parse the JSON, following [Svix's verification guide](https://docs.svix.com/receiving/verifying-payloads/how). The `svix-id` stays the same across redeliveries of one event, so it's your deduplication key. Events can arrive out of order, so store a status only if it moves the payment forward, and never overwrite `completed`, `failed`, or `refunded`. [Stablecoin API webhooks](/resources/more/stablecoin-api-webhooks-reconciliation) has the code-level detail.

## How do you reconcile on-ramp payments?

Treat webhooks as the fast path and a daily job as the truth.

The payin's top-level `status` is the source of truth: `processing`, `on_hold`, `completed`, `failed`, or `refunded`. Four `tracking_*` objects (`tracking_transaction`, `tracking_payment`, `tracking_complete`, `tracking_partner_fee`) expose a finer `step` for status screens. Each day, list payins with `GET /v1/instances/{instance_id}/payins` and compare them with your ledger: amounts, statuses, fees. Match on the payin ID, not the transaction hash, because a transaction replaced during a [gas spike](https://ethereum.org/en/developers/docs/gas/) can land under a different hash.

## What edge cases should you handle?

These show up in the first week of production:

- **Expired quote.** The payin create fails. Request a new quote; don't retry the old one.
- **Amount out of range.** Payin quotes enforce a minimum and maximum per currency, and the customer's per-transaction limit applies too. Read the error for the range instead of hardcoding it.
- **The payer never pays.** Pix, SPEI, Transfers, and PSE payins wait up to 30 minutes before failing. ACH and wire wait up to 5 business days.
- **On hold.** Transaction monitoring can hold a payin for review. Answer any request for information quickly; an unanswered one may end in a refund.
- **Refunded vs failed.** `refunded` means the deposit went back to the sender. Fiat refunds wait on the bank network and can carry fees. `failed` needs a look before you tell the customer anything.
- **Wrong destination.** A wallet registered with the wrong address receives the stablecoins anyway. Validate addresses at registration, not at delivery.

## How do you test an on-ramp integration?

Development instances run the whole flow without real money. Payins complete automatically about 30 seconds after creation and deliver USDB, a test stablecoin, on testnets such as Sepolia, Base Sepolia, Polygon Amoy, Stellar testnet, and Solana devnet.

Force the outcomes you can't wait for in real life: a payin for 666.00 fails and one for 777.00 is refunded. Run both through your webhook handler and ledger. Two things the sandbox can't show you: Tron has no testnet, and real deposits arrive on real rail timing. Plan one small supervised payin per rail in production. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) lists the rest.

## Abstracted or Advanced: which API flavor should you use?

BlindPay's docs come in two flavors over the same API, the same keys, and the same webhooks.

- **Abstracted** is for teams that think in bank payments. Payins are deposits, virtual accounts are deposit accounts, and the stablecoin settles behind the scenes in the linked wallet.
- **Advanced** exposes the stablecoin layer: chains, tokens, managed and external wallets, and on-chain authorization for payouts.

Choose Abstracted if your users never see a wallet address. Choose Advanced if your product is a wallet, or if your users pick the network. You can switch at any time; nothing about your account changes.

## How do you use a coding agent to build the integration?

AI coding agents are good at this kind of work, if they get the API's rules up front. BlindPay ships three surfaces for them:

- **An MCP server** (`@blindpay/mcp`) that exposes the API as tools for Claude Code, Codex, Cursor, and other MCP clients.
- **Agent Skills** that teach the agent the API's conventions.
- **Prebuilt prompts**, including a payin quickstart prompt that encodes the gotchas (minor units, the 5-minute quote window, the `evm` path).

A prompt that works: "Using the BlindPay API on a development instance, build a payin flow for Pix: create a customer, register a Solana wallet, request a payin quote with `cover_fees: false`, create the payin, render the Pix code, and handle `payin.*` webhooks with Svix signature verification and deduplication on `svix-id`. Write tests for completed, failed (666.00), and refunded (777.00)." The [build with AI](/docs/build-with-ai) page has the setup.

## What to do next

Get a development instance, run one Pix or ACH payin end to end, and force a failure and a refund. If your handler and ledger stay correct through all three, you're ready for the production checklist. If you're still choosing a provider, read [business vs consumer crypto on-ramps](/resources/more/business-vs-consumer-crypto-on-ramps) and [crypto on-ramp fees explained](/resources/more/crypto-on-ramp-fees-explained) first.

*This article is general information, not legal, tax, or financial advice. API fields and behavior change; the [BlindPay docs](/docs/payins) are the reference.*

---

Source: https://blindpay.com/resources/more/virtual-account-reconciliation

---
title: "How virtual accounts automate payment reconciliation (with a worked example)"
seoTitle: "How virtual accounts automate payment reconciliation"
description: "Virtual accounts match each deposit to a customer by account number, not a free-text reference. A worked example with partial payments and micro-deposits."
date: "2026-09-20"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Do virtual accounts remove all manual reconciliation?"
    a: "No. They remove the hardest part: figuring out which customer a deposit belongs to. That match happens on the receiving account number. What remains is matching a deposit to a specific invoice within one customer, and handling exceptions like partial payments, overpayments, and short payments caused by fees taken in transit. Those can mostly be automated with rules."
  - q: "How are partial payments and overpayments handled with virtual accounts?"
    a: "The virtual account attributes the deposit to the right customer either way. Your ledger decides what happens next. A common rule set is to apply a partial payment to the matching or oldest open invoice and keep the balance open, and to hold an overpayment as customer credit rather than sending it back automatically. Decide these rules before launch, not per ticket."
  - q: "How should I store virtual account IDs?"
    a: "Store the provider's account id against your customer record, one row per account, plus every deposit's id linked to both. At BlindPay that means the virtual account id (va_...), the customer id (re_...), and each payin id (pi_...), with all amount fields as integers in minor units. Never key a deposit on its amount or date alone."
  - q: "What about refunds on virtual account deposits?"
    a: "There are two cases. If the provider returns a deposit before converting it, the deposit record ends in a refunded status, which at BlindPay means the funds went back to the sender, and you reverse the ledger entry. Once a deposit has completed and settled as stablecoins, a refund is a new outgoing payment to the payer, recorded separately."
  - q: "Why do $0.01 deposits show up on my virtual accounts?"
    a: "They are usually account-verification micro-deposits, sent by services that confirm a bank account works before using it. At BlindPay, every deposit creates its own payin, including $0.01 ones, and at least $0.01 of stablecoin is always delivered. Record them as verification deposits, not revenue, and don't flag them as fraud."
---

Virtual accounts automate payment reconciliation by giving each customer a unique account number, so every deposit arrives already tied to the customer it belongs to. Matching happens on the receiving account, not on a free-text reference the payer may truncate, misspell, or skip. What's left for your ledger is matching deposits to invoices within one customer.

That second step is small. The first one is where finance teams lose their afternoons.

## Key takeaways

- Reference-based matching fails in predictable ways: missing, truncated, or wrong references, batched payments, and amounts that don't match the invoice.
- A virtual account moves the match from the reference field to the account number, which has to be right for the money to arrive at all.
- Reconciliation still has two levels: deposit to customer (automatic) and deposit to invoice (rules you write).
- Store ids, not amounts. Keep every amount field in minor units so the numbers add up.

## Why does reference-based reconciliation fail?

Reference-based reconciliation fails because it depends on the payer typing the right text into a field that the banking system may shorten, drop, or never show. When a hundred customers pay into one shared account, the reference is the only thing that says who paid. It breaks in five common ways:

- **Missing references.** The payer forgets, or their bank app hides the field.
- **Truncated references.** Rails limit remittance text. ACH carries it in an addenda record of up to 80 characters. A SWIFT MT103 allows up to 140 characters in field 70, but not every bank in the chain passes all of it on. On BlindPay's own outbound SWIFT, only the first 30 characters reach the beneficiary ([POBO and COBO](/docs/kb/pobo-cobo)).
- **Batched payments.** One wire pays three invoices, with one reference that names one of them.
- **Wrong amounts.** Short payments, overpayments, and wires that lost a fee to an intermediary bank in transit.
- **Wrong names.** The money comes from a parent company, an accounts payable service, or a payroll provider, not the customer on the invoice.

Every one of these lands in a suspense queue and waits for a human.

## What changes with virtual accounts?

With a virtual account per customer, the receiving account number identifies the customer. The payer can leave the reference blank, pay from a parent company, or send an odd amount, and the deposit still lands on the right customer.

| | Manual, reference-based | Virtual account-based |
| --- | --- | --- |
| Matching key | Free-text reference, plus amount and date | Receiving account number |
| What drives errors | Missing or truncated references, name mismatches, duplicate amounts | Only invoice-level ambiguity within one customer |
| Time to match a deposit | Minutes to days, depending on the exception queue | At deposit time, when the webhook fires |
| Exceptions | Unknown payer: somebody has to find out who paid | Known payer, unknown invoice: rules decide |
| Audit trail | Spreadsheet notes and emails | Account id, deposit id, and amounts on every record |

A missing reference used to mean "who paid?" Now it means "which invoice?" That's a much easier question.

## What does the worked example look like?

**Illustrative example.** A B2B platform issues one virtual account per customer. Three customers have four open invoices, and five deposits arrive in one week. All names and amounts are illustrative.

Open invoices:

| Customer | Virtual account | Invoice | Amount due |
| --- | --- | --- | --- |
| Acme Logistics | `va_acme` | INV-101 | $12,000.00 |
| Acme Logistics | `va_acme` | INV-102 | $3,500.00 |
| Borealis Studio | `va_borealis` | INV-201 | $8,000.00 |
| Cobalt Health | `va_cobalt` | INV-301 | $20,000.00 |

Deposits, and how each one maps:

1. **$12,000.00 by ACH to `va_acme`, reference "INV-101".** Account says Acme, reference and amount say INV-101. Paid in full.
2. **$3,500.00 by wire to `va_acme`, no reference.** Account says Acme. Acme has exactly one open invoice for $3,500.00, so the amount rule matches INV-102. Paid in full.
3. **$5,000.00 by SWIFT to `va_borealis`, reference "INV-201 PART".** Account says Borealis. The amount is short of $8,000.00, so it's a partial payment: INV-201 stays open with $3,000.00 due. This is the one exception of the week, and it's a known customer with a known invoice.
4. **$0.01 by ACH to `va_cobalt`, from a bank verification service.** Account says Cobalt. It's a micro-deposit, recorded as account verification, applied to nothing.
5. **$20,000.00 by wire to `va_cobalt`, reference "HEALTH GRP PAYMT".** The reference names Cobalt's parent company and no invoice. Doesn't matter: account says Cobalt, amount matches INV-301. Paid in full.

With one shared account and reference matching, deposits 2 and 5 go to suspense (no usable reference), deposit 3 risks being marked as a full payment, and deposit 4 looks like fraud. With virtual accounts, all five land on the right customer the moment they arrive, and one needs a rule.

## Which webhook events should you listen for?

Listen for the events that create, update, and finish each deposit, plus the event that tells you an account is live. At BlindPay, from the [event catalog](/docs/learn/webhooks-events):

| Event | What to do with it |
| --- | --- |
| `virtualAccount.complete` | The account is approved. Store the routing and account numbers and show them to the customer. |
| `payin.new` | A deposit was detected. Create the ledger entry against the customer, status pending. |
| `payin.update` | The deposit moved, for example into `on_hold` review. Update the status, don't mark it failed. |
| `payin.complete` | The deposit finished. Read the `status` field: `completed`, `failed`, or `refunded`. |

Two rules keep an event-driven ledger honest. Deduplicate on the event id (`svix-id` at BlindPay), which stays the same across retries, because the same event can arrive twice. And treat final statuses as sticky, so a late `payin.update` can't move a completed deposit backwards. Signature checks, dedupe, and the daily sweep that catches missed events are covered in [stablecoin API webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation).

## How should you store virtual account IDs and deposit data?

Store ids and every amount field, never just the amount you expected. A deposit record at BlindPay carries enough to reconcile both the invoice side and the treasury side.

| Store | Where it comes from | Why |
| --- | --- | --- |
| Virtual account id (`va_...`) | Account creation | Links the account to your customer record |
| Customer id (`re_...`) | Customer creation | The owner of every deposit on the account |
| Payin id (`pi_...`) | `payin.new` | The deposit itself. Your idempotency key for ledger writes |
| `sender_amount` | The payin | What arrived from the payer. Match invoices against this |
| `receiver_amount` | The payin | The stablecoin delivered to the wallet, after fees |
| `billing_fee_amount`, `transaction_fee_amount`, `partner_fee` | The payin | Where the fee landed: invoiced monthly or deducted at transaction time |
| `sender_name`, `sender_bank_name`, `transaction_reference` | Wire payins | Who paid, from which bank, with which reference |
| Transaction hash | `tracking_complete` on the payin | The on-chain receipt for the stablecoin delivery |

The fee split matters more than it looks. At BlindPay, fees on deposits below $100.00 accrue to your monthly invoice, and at $100.00 or more they're deducted from the delivered stablecoin ([virtual accounts](/docs/virtual-accounts)). So `sender_amount` minus `receiver_amount` isn't always the fee. Read both fee fields rather than assuming one.

Match invoices on `sender_amount`, the amount that arrived from the payer. Book treasury on `receiver_amount`. Mixing them up makes every invoice look slightly short.

## How do you handle partial payments, overpayments, and refunds?

Write the rules before launch. A virtual account tells you who paid. It doesn't tell you what they meant.

- **Partial payment.** Apply it to the invoice named in the reference, or to the oldest open invoice if there's no reference. Keep the remainder open.
- **Overpayment.** Hold the difference as customer credit. Don't auto-return it; the next invoice usually absorbs it.
- **Short by a small amount on a SWIFT wire.** Often an intermediary fee taken in transit. Decide a tolerance, and who absorbs it, in advance.
- **Deposit under review.** An `on_hold` payin isn't failed. Keep it pending and tell the customer it's under review.
- **Refund before conversion.** A payin that ends `refunded` means the deposit went back to the sender. Reverse the ledger entry.
- **Refund after completion.** Once the stablecoins have settled to the wallet, a refund is a new outgoing payout to the payer, not a reversal. [Are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible) explains why.

## How does BlindPay track deposits on virtual accounts?

BlindPay tracks every deposit into a virtual account as its own payin, owned by the customer and tied to the exact account it landed on. A customer with several accounts, for example one for payroll funding and one for client invoices, keeps each flow separate: the payin's bank details identify which account received the money ([payins](/docs/payins)).

Every deposit of any size becomes a payin, including $0.01 micro-deposits, and at least $0.01 of stablecoin always reaches the wallet. Each account settles to one wallet, so the on-chain side reconciles the same way the bank side does.

One design constraint: accounts belong to the customer they were issued to, for that customer's own money. One account per customer, or a few per customer split by purpose, works. One account per invoice doesn't, since each named account goes through compliance and bank review. And accounts that collect for your customer's own clients, who were never onboarded, are nesting, which BlindPay doesn't allow ([nested payments](/docs/kb/nested-payments)).

## Where does BlindPay fit?

[BlindPay virtual accounts](/virtual-accounts) give each customer a named US bank account that receives ACH, wire, and SWIFT and settles to USDC or USDT in their wallet. Every deposit is a payin with its own id, amounts, fees, sender details, and on-chain hash, and every state change fires a signed webhook.

## What to do next

Pull last month's unmatched deposits and sort them by cause: missing reference, wrong name, wrong amount, batched. Everything in the first two buckets disappears with one virtual account per customer. Then write the three rules for the rest (partial, overpayment, short SWIFT) and test them on a free development instance with [create a virtual account](/docs/virtual-accounts-create).

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

---

Source: https://blindpay.com/resources/more/what-is-a-stablecoin-backed-card

---
title: "What is a stablecoin-backed card? How spending USDC with a card works, in plain English"
seoTitle: "What is a stablecoin-backed card? Plain English guide"
description: "A stablecoin-backed card spends USDC or USDT wherever Visa or Mastercard works. The four parts behind it, who does what, and where the money comes from."
date: "2026-09-20"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin-backed card?"
    a: "A stablecoin-backed card is a Visa or Mastercard debit or prepaid card whose spending balance is held in a dollar stablecoin such as USDC or USDT. When you pay, the card program converts the stablecoin into the merchant's currency, and the merchant is paid normally. The merchant never touches crypto."
  - q: "Can you spend USDC with a debit card?"
    a: "Yes. A stablecoin-backed card spends USDC or USDT at any merchant that accepts the card network. The program checks your stablecoin balance at checkout, converts the purchase amount, and pays the merchant in local currency. Which stablecoins and blockchains a card accepts depends on the program, so check before you fund it."
  - q: "What is the difference between a stablecoin card and a bank debit card?"
    a: "The checkout is the same. The difference is the balance behind it. A bank debit card spends a bank deposit, which in the US can carry FDIC insurance. A stablecoin card spends a stablecoin balance held in a wallet or with the program, which is not a bank deposit and adds a conversion step at purchase."
  - q: "Do merchants need to accept crypto for a stablecoin card to work?"
    a: "No. The merchant accepts a normal Visa or Mastercard payment and is paid in its own currency on its usual schedule. The stablecoin conversion happens on the card program's side, before or during settlement with the network, so nothing changes at the terminal or the online checkout."
  - q: "How big is stablecoin card spending?"
    a: "Visa reported that stablecoin-linked cards processed about $5.2 billion in 2025, up 319% year over year, across more than 130 programs in more than 50 countries. That is still about 0.04% of Visa's $14.2 trillion total volume, so it is fast-growing but small."
---

A stablecoin-backed card is a Visa or Mastercard card that spends a dollar stablecoin balance, usually USDC or USDT. You tap or type the card like any other. Behind the scenes, a card program checks your stablecoin balance, converts the purchase into the merchant's currency, and pays the merchant normally. The merchant never sees crypto.

That is the whole idea. A stablecoin you hold onchain becomes something you can spend at a supermarket, an airline website, or a taxi app.

The interesting part is the plumbing. Four separate pieces have to work together for one tap to go through, and each one is run by a different company. This guide explains those four parts in plain English, with a short diagram in text. For the business and issuing view of the same product, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

**Key takeaways**

- A stablecoin-backed card is a normal debit or prepaid card with a stablecoin balance behind it instead of a bank deposit.
- Four parts make it work: the wallet balance, the issuer and its program, the card network, and the merchant payout.
- Merchants are paid in local currency and do not need to accept crypto.
- Visa reported about $5.2 billion of stablecoin-linked card volume in 2025, about 0.04% of its total.
- A card covers spending. Getting money onto the card and back out to a bank account are separate steps.

## What is a stablecoin-backed card, in one sentence?

A stablecoin-backed card is a payment card that draws on a stablecoin balance and pays merchants in their own currency. The card looks and behaves like any debit card. Only the money behind it is different.

Two definitions help before going further.

**Stablecoin.** A token on a blockchain designed to hold a steady value against a currency, usually the US dollar. USDC and USDT are the two largest. [What is USDC](/resources/more/what-is-usdc) covers how one is backed and redeemed.

**Card program.** The company or group of companies that runs the card for you: it holds or reads your balance, approves purchases, and settles with the network. You may know it by the app brand on the card.

## What are the four parts of a stablecoin card?

Every stablecoin card has the same four parts: a wallet balance, an issuer and program, a card network, and a merchant payout. The card in your hand is just the key that connects them.

Here is the flow as a simple diagram in text:

```
[Your stablecoin balance]  ->  [Issuer + program]  ->  [Visa or Mastercard]  ->  [Merchant's bank]
  USDC or USDT                  checks balance,          routes the request,       pays the merchant
  in a wallet or account        converts, approves       nets and settles          in local currency
```

### 1. The wallet balance

The balance is where your stablecoins sit before you spend them. In some programs the provider holds the balance in an account it controls (custodial). In others the stablecoins stay in a wallet you control, and the card is allowed to pull from it (self-custodial). Custodial programs are simpler to recover if you lose a phone. Self-custodial programs keep the stablecoins out of the provider's hands until you spend them.

### 2. The issuer and program

The issuer is the regulated bank or e-money institution whose name sits behind the card number. A program manager runs the product day to day, and an issuer processor answers each purchase request in real time. This is where the stablecoin gets checked and converted.

### 3. The card network

Visa or Mastercard carries the purchase request from the merchant's side to the issuer and back, then nets and settles the money between banks. The network sets the rules both sides follow.

### 4. The merchant payout

The merchant's bank, called the acquirer, pays the merchant in local currency on its normal schedule. From the merchant's view, this was an ordinary card sale.

## Who does what in a stablecoin card transaction?

Each company in the chain owns one job. The table shows who that is and what they do on a single purchase.

| Part | Who runs it | What it does on your purchase |
| --- | --- | --- |
| Wallet balance | You, or the card provider | Holds the USDC or USDT you will spend |
| Issuer | A licensed bank or e-money institution | Legal issuer of the card; owns compliance |
| Program manager | The card brand you signed up with | Runs the app, onboarding, and support |
| Issuer processor | A card processing company | Approves or declines in seconds, places a hold |
| Card network | Visa or Mastercard | Routes the request, settles between banks |
| Acquirer | The merchant's bank or payment provider | Pays the merchant in local currency |

One company can wear several of these hats. A big provider may act as program manager and processor at once. What stays constant is that a licensed issuer sits behind every card, and it must identify every cardholder.

## How does a stablecoin card turn USDC into a purchase?

The card program converts the stablecoin into fiat at some point between your tap and the merchant getting paid. When that conversion happens depends on the program's funding model.

1. **You tap the card.** The merchant's terminal sends a request for, say, $30 through the network.
2. **The program checks your balance.** It confirms you hold at least $30 of USDC, converts at the current rate, and places a hold. This takes seconds.
3. **The purchase is approved.** You see the approval on the terminal and in your app.
4. **The merchant confirms the final amount.** Usually the same day, sometimes with a tip or an adjustment.
5. **Settlement runs.** Usually the next business day, the network settles with the issuer, and the program funds that obligation.
6. **The merchant is paid.** In its own currency, on its usual schedule.

Some programs convert just in time, at the moment of purchase. Others ask you to load the card first, converting stablecoins into a card balance in advance. Prefunded cards often charge a fee per load, and just-in-time cards keep your balance in stablecoins until you spend. The [business comparison of crypto debit and stablecoin cards](/resources/more/crypto-debit-card-vs-stablecoin-card-for-business) shows how the choice changes accounting and tax.

## How do Visa and Mastercard settle stablecoin card payments?

There are two settlement models today. In the traditional one, the card program converts stablecoins to dollars and settles with the network over bank rails. In the newer one, the issuer settles with the network directly in a stablecoin.

**Traditional model.** The program sells stablecoins for fiat through a liquidity partner and pays the network in dollars or another currency, as any issuer would. Nothing about the network changes.

**Stablecoin settlement model.** Visa announced on December 16, 2025 that US issuer and acquirer partners could settle with Visa in USDC, with Cross River Bank and Lead Bank as the first participants, settling over Solana. On April 29, 2026, Visa said its stablecoin settlement pilot supported nine blockchains and had reached a $7 billion annualized settlement run rate.

That $7 billion is a settlement figure, money moving between institutions. It is not card spending, and it should not be added to card volume numbers.

## How big is stablecoin card spending?

Stablecoin card spending is growing fast from a small base. Visa's numbers put it at a few billion dollars a year, a tiny slice of total card volume.

- Visa reported that stablecoin-linked cards processed about **$5.2 billion in 2025**, up 319% year over year, in a page last updated March 31, 2026. That equals about **0.04%** of Visa's $14.2 trillion in global volume.
- The same page counts **more than 130 stablecoin-linked card programs** in more than 50 countries, and Visa expects the number of programs to roughly double in 2026.
- a16z crypto, using Paymentscan's onchain data, counted **$759 million** of monthly crypto card spend in July 2026, about 2.5 times the level a year earlier, with an average purchase of about $86.

Read 0.04% carefully. It means stablecoin cards work at scale on existing rails. It does not mean they replace bank cards.

## Is a stablecoin card the same as a bank card?

At checkout, yes. Underneath, no. The difference is what backs the balance and who protects it.

| | Stablecoin-backed card | Bank debit card |
| --- | --- | --- |
| Balance | USDC or USDT, in a wallet or held by the provider | Bank deposit |
| Conversion at purchase | Yes, stablecoin to merchant currency | Only for foreign purchases |
| Deposit insurance | No; the FDIC says its insurance does not cover crypto assets | Usually, up to the legal limit |
| Merchant experience | Same | Same |
| Identity check | Required by the issuer | Required by the bank |
| Funding | Stablecoin transfer, exchange, or bank deposit converted to stablecoins | Bank transfer or paycheck |

The FDIC's [fact sheet on crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html) is explicit that deposit insurance does not apply to crypto assets. That matters more than the checkout experience if the provider runs into trouble.

## Where does the money come from, and where does it go after?

A stablecoin card only covers the spending moment. Money still has to arrive in the wallet first, and some of it eventually has to leave for a bank account. Those are two separate steps.

**Funding in.** Most people fund a card with stablecoins bought on an exchange, received as payment, or converted from a bank transfer through a [virtual account](/resources/more/virtual-accounts-cross-border-payments).

**Cashing out.** Rent, school fees, and taxes usually need a bank transfer, not a card swipe. For that, the stablecoins go through an [off-ramp](/resources/more/what-is-a-stablecoin-offramp) into a local bank account.

Businesses running card programs feel this most. Their users want to top up from a bank account and withdraw to one, in their own currency.

## Where does BlindPay fit next to a stablecoin card?

BlindPay is a stablecoin API for global payments that covers the funding and cash-out legs around a card. Card programs and wallets pair an issuer for the card with a payout and collection layer for the money moving in and out.

- **Funding in.** BlindPay [US virtual accounts](/docs/virtual-accounts) give a customer their own routing and account number. Each ACH, wire, or SWIFT deposit converts into USDC or USDT and lands in the linked wallet.
- **Cashing out.** BlindPay [payouts](/docs/payouts) convert USDC or USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with a live quote that locks the rate and fees before the stablecoins move, and no pre-funding.
- **Compliance.** KYC, KYB, and sanctions screening run inside the same API flow.

A card program that adds this layer lets its users move money between the card wallet and a bank account in their own country.

## What should you check before getting a stablecoin card?

Check who issues the card, who holds your balance, and what the conversion really costs. Those three answers tell you most of what can go wrong.

1. Find the issuer's name in the card terms and confirm it is licensed where you live.
2. Ask whether the balance is custodial or self-custodial.
3. Compare the effective exchange rate, not only the advertised fee.
4. Check which stablecoins and blockchains the card accepts.
5. Read the top-up and withdrawal fees.
6. Plan how you will move money back to a bank account when you need to.

If you run a card program or wallet and want the funding and payout legs handled through one API, start with the free development instance in the [BlindPay payout quickstart](/docs/quickstart-payout).

## Sources

- Visa, [How stablecoin-linked cards are modernizing money movement](https://www.visa.com/en-us/thought-leadership/innovation/stablecoin-linked-cards-monetize-money-movement), last updated March 31, 2026
- Visa, [Visa launches stablecoin settlement in the United States](https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.21951.html), December 16, 2025
- Visa, [Visa accelerates stablecoin momentum: adding five blockchains for settlement](https://corporate.visa.com/en/sites/visa-perspectives/newsroom/visa-expands-stablecoin-settlement-adds-five-blockchains.html), April 29, 2026
- a16z crypto, [Charts: payment card stablecoin spend](https://a16zcrypto.com/posts/article/charts-payment-card-stablecoin-spend), August 7, 2026
- FDIC, [What the public needs to know about FDIC deposit insurance and crypto companies](https://www.fdic.gov/news/fact-sheets/crypto-fact-sheet-7-28-22.html), July 28, 2022

---

Source: https://blindpay.com/resources/more/how-to-off-ramp-usdt-latin-america

---
title: "How to off-ramp USDT to local currency in Latin America"
seoTitle: "How to off-ramp USDT in Latin America: Pix, SPEI, and more"
description: "Converting USDT to BRL, MXN, ARS, or COP: which networks work, the payout rail in each country, weekend timing, fees, and the documents a business needs."
date: "2026-09-19"
updated: "2026-09-19"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to off-ramp USDT to a bank account in Latin America"
  steps:
    - name: "Complete KYB"
      text: "Onboard the business with a licensed off-ramp provider: legal name, tax ID, formation date, website, incorporation document, proof of ownership, proof of address, and identity details for each beneficial owner."
    - name: "Add the recipient's bank account"
      text: "Register the local payout details: a Pix key in Brazil, a CLABE in Mexico, a CBU, CVU, or alias in Argentina, or an account number with the beneficiary's document ID in Colombia."
    - name: "Request a payout quote"
      text: "Quote USDT to BRL, MXN, ARS, or COP on a supported network. The quote locks the rate, the fees, and the exact local-currency amount the recipient gets, for 5 minutes by default."
    - name: "Authorize and send the USDT"
      text: "Approve the quoted amount from your wallet, or pay from a managed wallet, and create the payout before the quote expires. The provider converts the USDT at the locked rate."
    - name: "Track the local payout"
      text: "The provider pays out over the country's rail and reports status by webhook. Pix, SPEI, and Argentina's Transfers settle in minutes, including weekends; Colombia's ACH payout takes about one business day."
faq:
  - q: "What is the best way to off-ramp USDT to a Brazilian bank account?"
    a: "Through a licensed off-ramp that pays out over Pix. Send USDT on a supported network such as Polygon, Ethereum, Tron, or Solana, convert it at a quoted rate, and the reais land over Pix in minutes, any day of the week. The recipient needs a Pix key (CPF, CNPJ, phone, email, or random key), or bank routing details for PIX Safe or TED."
  - q: "Can I off-ramp stablecoins to Mexico on weekends?"
    a: "Yes. SPEI, the interbank payment system run by Banco de México, operates 24/7, so a USDT payout to a CLABE account settles in minutes on a Saturday night the same as on a Tuesday morning. Very high volumes can stretch delivery times on any rail."
  - q: "What documents do I need to off-ramp crypto as a business in Latin America?"
    a: "KYB documents for your business: legal name, tax ID, formation date, website, an incorporation document, proof of ownership, proof of address, and identity details for each beneficial owner or controlling person. For each recipient you also need local bank details: a Pix key in Brazil, a CLABE in Mexico, a CBU, CVU, or alias in Argentina, and an account number plus document ID in Colombia."
  - q: "Which network should I use to send USDT to an off-ramp?"
    a: "The cheapest one both sides support. On BlindPay, payouts accept USDT on Polygon, Ethereum, Tron, Solana, and Tempo, and offramp wallets accept USDT on Tron and Polygon. Polygon offramp wallets have no fixed minimum and no additional fee; Tron offramp wallets have a 200 USDT minimum and a 15 USDT fee per deposit. USDT isn't available on Base, Arbitrum, or Stellar."
  - q: "Is USDT or USDC better for Latin America payouts?"
    a: "For the recipient it makes no difference: they get reais or pesos either way. Pick the stablecoin your funds already sit in. USDT has deeper liquidity and more local counterparties across Latin America, while USDC is more common in US treasury and regulated fintech flows. Supporting both is the safe default."
---

To off-ramp USDT in Latin America, send it on a network the provider supports, lock a quote, and let the provider convert it and pay out over the country's local rail: Pix in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina, and ACH Colombia in Colombia. Pix, SPEI, and Argentina's transfers settle in minutes and run on weekends. Colombia's payout takes about one business day.

The part people get wrong is the network, not the country. USDT lives on several chains, and the one you send on decides the fees and minimums.

## Which networks can you send USDT on?

USDT isn't deployed everywhere USDC is. On BlindPay, per the [supported chains reference](/docs/kb/supported-chains):

| Network | USDT on payouts (quote and execute) | USDT on offramp wallets | Worth knowing |
| --- | --- | --- | --- |
| Polygon | Yes | Yes, no fixed minimum, no additional fee | Cheapest path for small and mid-sized payments |
| Tron | Yes | Yes, 200 USDT minimum, 15 USDT per deposit | Where much of the region's USDT already sits; no testnet |
| Ethereum | Yes | No (USDC only) | Higher gas; fine for large payments |
| Solana | Yes | No (USDC only) | Low fees |
| Tempo | Yes | No (USDC only) | EVM chain, same address format |
| Base, Arbitrum, Stellar | No USDT | No USDT | USDC only |

Tron is the practical question for most Latin American businesses. A lot of USDT arrives there, from exchanges, P2P desks, and clients paying invoices. It works, but per-deposit costs on Tron are fixed, so small Tron payments lose a visible slice. If your flows are small and frequent, batch them, or receive on Polygon. The [off-ramp wallet explainer](/resources/more/what-is-an-off-ramp-wallet) runs the same 100 USDT deposit on both chains: $84.50 delivered from Tron against $99.50 from Polygon.

Which stablecoin to hold in the first place is a separate call, covered in [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments).

## What is the payout rail in each country?

| Country | Currency | Payout rail | Recipient details | Settlement | Weekends and nights |
| --- | --- | --- | --- | --- | --- |
| Brazil | BRL | Pix (also PIX Safe and TED) | Pix key: CPF, CNPJ, phone, email, or random key | Minutes | Yes on Pix. TED follows banking days |
| Mexico | MXN | SPEI | 18-digit CLABE | Minutes | Yes, SPEI runs 24/7 |
| Argentina | ARS | Transfers 3.0 | CBU, CVU, or alias | Minutes | Instant transfers run outside banking hours |
| Colombia | COP | ACH Colombia | Account number, bank code, beneficiary document ID and type, email | About 1 business day | No, next business day |

Field names and formats per rail are in the [bank accounts reference](/docs/bank-accounts). Brazilian receivers are the strictest on data: a name that doesn't match the CPF or CNPJ is the most common reason a Pix payout bounces. The [USDC to Brazil walkthrough](/resources/more/how-to-send-usdc-to-bank-account-brazil) covers that check step by step, and it works the same from USDT.

## Why do Pix and SPEI pay out on weekends but Colombia doesn't?

Because they're different kinds of systems.

Pix, launched by Brazil's Central Bank in November 2020, and SPEI, run by Banco de México, settle each transfer individually in real time, around the clock, every day of the year. A payout sent at 11pm on a Saturday lands at 11pm on a Saturday.

ACH Colombia is a batch clearing system. Transfers settle in business-day cycles, so a Friday evening payout lands the next business day. Colombia did launch its own 24/7 instant system, Bre-B, in October 2025, but availability on the payout side depends on the provider. BlindPay's COP payouts go over ACH Colombia and settle in about one business day. Ask any provider which rail its COP payouts actually use.

Brazil has one exception worth knowing. TED, the older bank transfer rail, stops at the end of the Brazilian banking day, and anything submitted after the cut-off waits for the next one ([cut-off times](/docs/kb/cut-off-times)). Use Pix unless the recipient can't receive it.

In practice: schedule Colombia payouts before Friday afternoon. Brazil and Mexico don't care what day it is.

## How much does it cost to off-ramp USDT?

Four lines: the network fee, the FX spread from dollars to local currency, a percentage fee, and a flat payout fee. On Pix and SPEI the payout fee is small, because it's a domestic transfer. The spread is where most of the money goes, and it varies by corridor. Compare live rates on [USDT to BRL](/usdt-to-brl), [USDT to MXN](/usdt-to-mxn), [USDT to ARS](/usdt-to-ars), and [USDT to COP](/usdt-to-cop), and read [off-ramp fees explained](/resources/more/stablecoin-off-ramp-fees-explained) for how each fee behaves at different payment sizes.

Each country also has its own quirks on the conversion side, Argentina's FX rules most of all. The route guides go country by country: [BRL](/resources/more/usdc-to-brl-routes-2026), [MXN](/resources/more/usdc-to-mxn-routes-2026), [ARS](/resources/more/usdc-to-ars-routes-2026), and [COP](/resources/more/usdc-to-cop-routes-2026).

## What does a business need before its first off-ramp?

Three things.

**KYB on your business.** Legal name, tax ID, formation date, website, an incorporation document, proof of ownership, proof of address, and identity details for at least one beneficial owner or controlling person. BlindPay reviews KYB manually, typically in 3 hours to 1 business day. The document list is in the [KYB documents guide](/docs/kb/kyb-documents), and [what is KYB](/resources/more/what-is-kyb) explains why each item is asked for.

**Recipient bank details.** The fields in the rail table above, collected once per recipient and reused for every payout.

**Limits that fit your volume.** A KYB Standard business on BlindPay starts at $30,000 per transaction, $100,000 per day, and $250,000 per month, calculated on the stablecoin amount ([KYC and limits](/docs/kb/kyc)). Payroll runs and marketplace settlements can hit the monthly cap faster than expected, so size it before launch. The [LATAM contractor payroll guide](/resources/more/stablecoin-payroll-latam-contractors) and the [marketplace payouts guide](/resources/more/marketplace-stablecoin-payouts-latam) show real volume patterns.

On the regulatory side, Brazil now licenses virtual asset providers under the Central Bank's PSAV regime; [the PSAV explainer](/resources/more/psav-brazil-explained) covers what that means for anyone paying out there.

## How does BlindPay handle USDT off-ramps?

Two ways in. For payouts your system controls, request a payout quote in USDT, approve the quoted amount (or pay from a managed wallet), and create the payout before the quote expires. For USDT that arrives from third parties, create an offramp wallet on the recipient's bank account and every deposit pays out on its own. Both land over Pix, SPEI, Transfers 3.0, or ACH Colombia, with KYB, KYC, and sanctions screening run by BlindPay.

Start with the [payout quickstart](/docs/quickstart-payout) in the sandbox, then check your corridors in [supported countries](/docs/kb/supported-countries).

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

---

Source: https://blindpay.com/resources/more/stablecoin-payments-provider-due-diligence

---
title: "What to ask a stablecoin payments provider: 30 due diligence questions"
seoTitle: "30 questions to ask a stablecoin payments provider"
description: "The questions to ask a stablecoin payments vendor before you sign: licensing, custody, pricing, rails, compliance, failure handling, security, and exit."
date: "2026-09-19"
updated: "2026-09-19"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What should I ask a stablecoin payments provider before signing?"
    a: "Ask whose licenses the flow runs under, who holds the funds at each step, whether you must pre-fund, what every fee is, which rails are live in production, how long holds can last, what happens when a payout fails, and how you get your data and funds out if you leave. Ask for documents, not just answers."
  - q: "What documents should a stablecoin payments vendor provide during due diligence?"
    a: "At minimum: a list of licenses and registrations with numbers, a SOC 2 Type 2 report or equivalent, a recent penetration test summary, an AML and sanctions policy statement, a flow-of-funds diagram, a sample itemized quote, and the contract terms for termination and data export."
  - q: "How do I know if a stablecoin provider is custodial?"
    a: "Ask who controls the funds between the moment they leave your wallet or bank account and the moment the recipient is paid, product by product. A provider can be non-custodial for one flow and custodial for another, such as a hosted wallet. Get the answer in the flow-of-funds diagram, not in a sales deck."
  - q: "What is a red flag when evaluating a stablecoin payments provider?"
    a: "Vague answers about licensing, a rate quoted without an itemized fee breakdown, forced pre-funding with no clear reason, no public API documentation, and no written answer about what happens to funds if the provider fails. Any one of these deserves a follow-up call. Two usually end the evaluation."
  - q: "How long should stablecoin provider due diligence take?"
    a: "For most fintechs, two to six weeks: a week for the questionnaire and documents, one to two weeks of sandbox testing, and a short production pilot on one corridor. Regulated institutions often take longer because vendor risk committees review the answers."
---

To run due diligence on a stablecoin payments provider, map your money flow first, then send the provider a written questionnaire covering licensing, custody, pricing, rails, compliance operations, failure handling, security, and exit terms. Ask for documents that back each answer, test the failure cases in a sandbox, and pilot one corridor in production before you commit volume.

The 30 questions below are the ones that separate providers in practice. Each comes with what a good answer sounds like. Copy them into your vendor questionnaire.

## What should you ask about licensing and regulation?

1. **Which licenses and registrations does my flow run under, yours or a partner's?** A good answer names each registration with its number, points to a public license page, and says plainly where a partner's license is used instead.
2. **What happens to my flow if a banking or licensing partner drops you?** A provider that sits behind a single partner can be switched off with no notice. A good answer names a backup for each critical rail and a notice commitment in the contract.
3. **Which countries can my customers onboard from, and which are prohibited?** A good answer is a published list, not "it depends."
4. **Who does KYC, KYB, sanctions screening, and the travel rule: you, me, or both?** A good answer is a written split of responsibilities. [What is a VASP](/resources/more/what-is-a-vasp) explains which obligations follow the license.
5. **Which regulatory changes will affect my flow in the next 12 months?** A good answer is specific and dated. See the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) for the regimes to ask about.

## What should you ask about custody and the flow of funds?

6. **Who holds the funds at each step, and for how long?** A good answer is a flow-of-funds diagram with a named holder at every step.
7. **Which of your products are custodial and which are non-custodial?** Honest providers split it by product. A hosted wallet is usually custodial even when the payout flow isn't. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers the difference.
8. **How are customer funds kept separate from your own?** Look for account-level segregation and a clear answer on where fiat sits in transit.
9. **What happens to funds in flight if you become insolvent?** A good answer explains the legal structure, not just "we're well capitalized."
10. **When a payout can't settle, where does the money go, how fast, and who pays the fees?** A good answer is status-level: which states return funds automatically and which need a ticket.

## What should you ask about pricing, liquidity, and pre-funding?

11. **Do I have to pre-fund, and how much?** If yes, ask why and what the capital buys you. [What "no pre-funding" means](/resources/more/no-pre-funding-stablecoin-payouts) shows the alternative.
12. **How is the rate set, and how long does a quote hold?** Live quotes with a short, explicit expiry beat a daily rate sheet.
13. **What are all the fees: spread, percentage, fixed, network, bank transfer, refund?** A good answer is an itemized quote. [Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) lists the layers to look for.
14. **What are the per-transaction, daily, and monthly limits, and how do increases work?** Ask for the numbers by verification tier and the documents an increase needs.
15. **How deep is liquidity in my corridors on a Friday night?** Ask for the largest single payout they've settled in your top corridor outside business hours.

## What should you ask about rails, coverage, and settlement?

16. **Which rails are live in production today, per country?** Roadmap rails don't count. Ask for a test payout on each one you need.
17. **What are the cut-offs and real settlement times per rail, including weekends?** [Why cross-border payments are slow](/resources/more/why-are-cross-border-payments-slow) explains which delays a provider can remove and which it can't.
18. **Which networks and tokens do you support for payins and payouts?** Not every token is on every chain. Get the exact pairs.
19. **How do international wires work?** Ask whether SWIFT payments and collections run on behalf of your customers (POBO/COBO), whose name the beneficiary sees, and whether you get UETR tracking and MT103 confirmations.

## What should you ask about compliance operations?

20. **How long do KYC and KYB take, and which parts are automated?** A good answer gives times per tier, not a range from "instant" to "weeks."
21. **What triggers a hold, how long can one last, and how am I told?** Look for a status and a webhook, plus a maximum hold time.
22. **How do you monitor transactions in real time?** [Real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) covers what good looks like.
23. **How do requests for information work, and can I answer them by API?** Manual email chains don't scale past a few hundred customers.
24. **Where is the line on nested payments?** Paying on behalf of your onboarded customers is one thing. Moving money for their customers, whom the provider has never seen, is another. A good answer draws that line clearly.

## What should you ask about integration and operations?

25. **Does the sandbox behave like production, including failures?** Ask how to force a failed payout and a refund. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) lists what sandboxes usually miss.
26. **How do webhooks handle signatures, retries, and duplicate events?** See [stablecoin API webhooks](/resources/more/stablecoin-api-webhooks-reconciliation) for the checks your code will need.
27. **What's your uptime history, incident process, and support response time?** Ask for the last three incidents and how customers were told.

## What should you ask about security, data, and exit?

28. **Which security attestations do you hold, and can I see the report?** A SOC 2 Type 2 report shows controls tested over months. A Type 1 only checks the design at a single point in time.
29. **Where is my customers' data stored, and under which privacy regimes?** Ask about GDPR, and LGPD if you serve Brazil.
30. **If we leave, how do we get our data and funds out, and how long does it take?** A good answer is a clause in the contract, with a time limit.

## Which documents should you request?

Answers are cheap. Documents are harder to fake.

| Document | What it tells you |
| --- | --- |
| License and registration list | Who can legally move your money, and where |
| SOC 2 Type 2 report | Whether security controls worked over a period, not just on paper |
| Penetration test summary | Whether an outside team tried to break in, and what they found |
| AML and sanctions policy statement | How screening and escalation actually work |
| Flow-of-funds diagram | Who holds the money at every step |
| Sample itemized quote | Every fee, before you sign |
| Incident history | How the provider behaves on a bad day |
| Contract: termination, notice, data export | What happens when the relationship ends |

## What are the red flags?

- Licensing answers that stay vague after a follow-up.
- A single "all-in rate" with no itemized fees.
- Pre-funding required with no explanation of what it covers.
- No public API documentation, or docs that don't match the sandbox.
- No written answer about funds in flight if the provider fails.
- A sandbox that can't simulate a failure.

One red flag is a follow-up call. Two is usually the end of the evaluation.

## How should you score the answers?

Weight the categories by what your flow needs, score each answer from 1 to 5, and multiply.

| Category | Suggested weight | Questions |
| --- | --- | --- |
| Licensing and regulation | 20% | 1 to 5 |
| Custody and flow of funds | 15% | 6 to 10 |
| Pricing, liquidity, and pre-funding | 15% | 11 to 15 |
| Rails, coverage, and settlement | 15% | 16 to 19 |
| Compliance operations | 15% | 20 to 24 |
| Integration and operations | 10% | 25 to 27 |
| Security, data, and exit | 10% | 28 to 30 |

A payroll platform might move weight from integration to rails and settlement. A regulated bank will likely push licensing and security higher. The weights matter less than using the same sheet for every vendor. For a shorter pass, [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) narrows it to six questions, and [how to choose an on/off ramp provider](/resources/more/how-to-choose-on-off-ramp-provider) adds a test for each criterion.

## How does BlindPay answer these questions?

Short answers to the questions buyers ask most:

- **Licensing (1).** BlindPay is registered with FinCEN as a Money Services Business (NMLS #2745309) and publishes the status of its US and non-US licenses on its [licenses page](/licenses).
- **Custody (6, 7).** Payouts from an external wallet are non-custodial: the stablecoins move only when the quoted payout executes, and a refunded payout returns them to the wallet that funded it. Managed wallets, in beta, are custodied by BlindPay.
- **Pre-funding and quotes (11, 12).** No pre-funding. Quotes lock the rate and fees for 5 minutes by default.
- **Limits (14).** Per-transaction limits start at $10,000 for KYC Standard, $30,000 for KYB Standard, and $50,000 for KYC Enhanced, with increases on documentation, as listed in the [KYC reference](/docs/kb/kyc).
- **Rails (16, 19).** ACH, wire, RTP, SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations, Pix, PIX Safe, TED, SPEI, ACH Colombia, Transfers 3.0 in Argentina, and SEPA.
- **Compliance (20, 21, 24).** KYC Standard takes about 60 seconds, KYB 3 hours to 1 business day. Holds can last up to 30 days and show up as a status with a webhook. Nested payments aren't supported, as explained in [nested payments](/docs/kb/nested-payments).
- **Failure handling (10).** A refunded payout returns stablecoins right away. A failed payout doesn't refund automatically and goes to support. [Payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) covers each state.
- **Sandbox (25).** Development instances force `failed` and `refunded` outcomes with sentinel amounts, so you can test failure paths before go-live.
- **Security (28, 29).** SOC 2 Type 2, GDPR and DORA compliant, independently pentested, with a public vulnerability disclosure program, as described on the [security page](/security).

## What should you do next?

Send this questionnaire to every provider on your shortlist in the same week, with the same deadline, and score the answers on one sheet. Then take the top two into a sandbox and force a failed payout on each. How a provider handles failure tells you more than any demo. For the basics of how the flows work, start with [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

---

Source: https://blindpay.com/changelog/2026-09-18-yield-ach-pull-tempo-arc-prompts

---
title: 'Yield and ACH pull in private beta, Tempo and Arc networks, prompt library'
description: 'Managed wallets can now earn yield on idle USDC, payins can pull funds straight from a customer bank account, Tempo and Arc are live, and a new prompt library builds your integration with any AI coding agent.'
date: 2026-09-18
category: New Feature
categoryType: feature
contributors:
  - ericViana
  - bernardoSimonassi
  - andreMayer
  - rafaelThayto
isChangelog: true
---

Two private betas this month: Yield, so managed wallets earn on the USDC they hold, and ACH pull, so a payin can debit a customer's bank account directly. Also new: Tempo and Arc networks, and a prompt library for AI coding agents.

<!--more-->

## TL;DR

- **Yield (private beta)**: turn it on for a managed wallet and the idle USDC balance starts earning
- **ACH pull (private beta)**: customers connect their bank account once and payins pull the funds, no manual transfer
- **Tempo and Arc**: two new networks for wallets, payins, payouts and transfers
- **Prompt library**: ready-to-paste prompts that build a full BlindPay integration with your AI coding agent

## Yield (private beta)

Managed wallets can now earn on the stablecoins they hold. Turn yield on once per wallet and BlindPay moves the idle USDC into a lending vault, keeps it earning, and pulls it back automatically whenever a payout or transfer needs the funds. Turn it off and the full position returns to the wallet. There is no fee on the balance, only a performance fee on gains, and the APY we report is already net of it.

Yield is in private beta. Reach out to your BlindPay contact to enable it on your instance. [Read the Yield guide](/docs/yield).

## ACH pull (private beta)

Payins in the US no longer depend on the customer sending a transfer. The customer connects their bank account once through a hosted page, and from then on a payin with the new `ach_pull` payment method debits that account directly. Connected accounts are verified as first party before they can be used.

ACH pull is in private beta. Reach out to your BlindPay contact to enable it on your instance. [Read the bank accounts guide](/docs/bank-accounts).

## Tempo and Arc networks

Tempo and Arc are live for managed wallets, offramp wallets, payins, payouts and transfers. Tempo supports USDC.e and USDT0, Arc supports USDC. Both have a matching testnet on development instances. [See the supported networks](/docs/blockchain-wallets).

## Prompt library

We published a library of prompts that walk an AI coding agent through a complete BlindPay integration, from a payin or payout quickstart to payables and wallets, with the API gotchas already encoded. Copy one into your agent and let it build. [Browse the prompts](/prompts).

---

Source: https://blindpay.com/resources/more/crypto-payment-processor-for-businesses

---
title: "Crypto payment processor for businesses: what to compare before you choose"
seoTitle: "Crypto payment processor for businesses: how to compare"
description: "Compare crypto payment processors on six criteria: settlement speed, stablecoins, compliance, dev effort, payout coverage, and pricing. Scorecard inside."
date: "2026-09-18"
category: "payments"
faq:
  - q: "What should a business look for in a crypto payment processor?"
    a: "Six things: settlement speed to your bank account, supported stablecoins and currencies, compliance and KYC/KYB coverage, developer integration effort, regional payout coverage, and pricing transparency. Compliance and payout coverage usually decide whether a processor works at scale; the others decide how pleasant it is to use."
  - q: "What is the difference between a crypto payment processor and a stablecoin payments API?"
    a: "A crypto payment processor typically focuses on checkout: letting customers pay in crypto and settling the merchant in fiat. A stablecoin payments API like BlindPay focuses on moving money: collecting via virtual accounts, converting stablecoins to local currency, and paying out over local rails in many countries. Some businesses need one, some need both."
  - q: "How long does it take to integrate a crypto payment processor?"
    a: "A hosted checkout plugin can go live in a day. A full API integration covering customer onboarding, quotes, payouts, and webhooks typically takes days to a few weeks, depending on SDK quality, sandbox fidelity, and how fast the provider approves your KYB. Ask for a sandbox key before signing."
  - q: "Why does compliance matter when choosing a crypto payment processor?"
    a: "Because it decides whether you can actually use the processor at volume. A provider without the right licenses in your markets can be shut off by its own banking partners, and slow KYC or KYB approvals stall your customer onboarding. Check published licenses, onboarding times, and whether monitoring covers both the stablecoin and fiat legs."
  - q: "How do crypto payment processors charge?"
    a: "Common models are a percentage per transaction, a per-transaction fee plus network costs, a monthly subscription, or a negotiated enterprise contract. The fair comparison uses itemized quotes on the same amount, corridor, and day, with the FX spread and payout fee shown separately."
---

A business choosing a crypto payment processor should compare six things: **settlement speed** to your bank account, **supported stablecoins and currencies**, **compliance and KYC/KYB coverage**, **developer integration effort**, **regional payout coverage**, and **pricing transparency**. Most providers look similar on a feature list. They separate on compliance (can you actually use them at volume, in your markets) and on payout coverage (can they get money into the bank accounts you need).

Below is a scorecard you can use on any provider, including us, and what to ask for each criterion.

## First, what kind of processor do you need?

"Crypto payment processor" covers two different jobs:

- **Checkout-first processors** let consumers pay in crypto at checkout and settle the merchant in fiat. Think card-style acceptance with a crypto option.
- **Stablecoin payments APIs** move money for the business: collecting through virtual accounts, converting stablecoins to local currency, and paying out over local rails across many countries.

BlindPay is the second kind. It's not a card acquirer and not a consumer checkout button. If all you need is a "pay with crypto" button on a US storefront, a checkout-first processor may fit better. If you need to collect, convert, and pay out across borders, keep reading.

## What are the six criteria that matter?

### 1. Settlement speed

How long from payment to usable funds in your bank account, in your currency? On-chain confirmation takes seconds to minutes. The real variable is the last mile: Pix, SPEI, and RTP land in minutes, while some providers batch payouts daily or only settle to the US. Ask for the timeline per destination country, not a global average. More in [stablecoin settlement explained](/resources/more/stablecoin-settlement-for-merchants).

### 2. Supported stablecoins and currencies

USDC and USDT cover most volume. Check which networks are supported (low-fee chains like Polygon, Base, Arbitrum, Stellar, and Tron matter for small payments) and which fiat currencies the provider can convert into. A provider that supports 30 tokens but converts into five currencies is a trading venue, not a payments processor.

### 3. Compliance and KYC/KYB coverage

Does the provider hold licenses in the markets you operate in, and publish them? Does it run KYB on you and KYC on your payees inside the API, or hand you a PDF form? How long does approval take? We cover this criterion in depth below, because it's usually the one that decides everything.

### 4. Developer integration effort

SDKs in your language, an OpenAPI spec, a sandbox that behaves like production, webhooks for every status change, and docs that show real request and response payloads. Integration time ranges from a day for a hosted plugin to weeks for a full API build.

### 5. Regional payout coverage

Which countries can the provider pay out to, over which rails? "100 countries via SWIFT" and "instant Pix in Brazil" are very different claims. Map your top five payout destinations and check the rail and speed for each.

### 6. Pricing transparency

Can you see the FX spread, the payout fee, and any network fee as separate numbers on a quote? Or only a blended rate? Is there a pre-funding requirement hiding a capital cost? Compare [stablecoin fees against card processing](/resources/more/stablecoin-payment-fees-vs-card-processing-fees) with itemized numbers only.

## A scorecard you can use on any provider

Score each provider 1 to 5 per criterion. Weight the criteria by what your business depends on. The BlindPay column shows what we offer, so you have a reference point; the last column is what to check in everyone else, including us.

| Criterion | Suggested weight | BlindPay | A "5" looks like | Ask every provider |
| --- | --- | --- | --- | --- |
| **Settlement speed** | 20% | Minutes on Pix, SPEI, and RTP; 24/7 | Minutes to local bank accounts, weekends included | "What's the settlement time to my top three countries?" |
| **Stablecoins and currencies** | 10% | USDC and USDT on Polygon, Base, Arbitrum, Stellar, Tron; 80+ currencies | Major stablecoins on low-fee chains, conversion into your payout currencies | "Which tokens, networks, and fiat currencies?" |
| **Compliance and KYC/KYB** | 25% | KYC, KYB, sanctions, on-chain and local rail monitoring in the API; licenses published | Licensed in your markets, published licenses, fast onboarding, monitoring on both legs | "Which licenses, where? How long does KYB take?" |
| **Developer effort** | 15% | Five official SDKs, OpenAPI spec, CLI, MCP server, sandbox | SDKs, OpenAPI, realistic sandbox, webhooks, clear docs | "Can I get a sandbox key today?" |
| **Payout coverage** | 20% | 100+ countries; Pix, SPEI, PSE, Transfers 3.0, ACH, RTP, SEPA, SWIFT (POBO/COBO) with UETR tracking and MT103 confirmations | Local instant rails in your key markets, tracked international wires elsewhere | "Which rail do you use for each of my countries?" |
| **Pricing transparency** | 10% | Itemized spread and payout fee per quote; no pre-funding; published plans | Itemized, locked at execution, no hidden capital requirement | "Send an itemized quote for this amount, this corridor, today." |

The weights are a starting point. A marketplace paying 10,000 sellers weekly should weight payout coverage higher. A fintech offering accounts to its own users should weight compliance and developer effort higher.

## Why is compliance usually the deciding criterion?

Because a processor you can't use at scale isn't a processor. It's a demo.

Three compliance questions separate providers that last from providers that don't:

- **Do they hold their own licenses, or rent someone else's?** A provider operating entirely under a partner's license can be offboarded by that partner with little notice. When that happens, every business built on top goes down with it. Published licenses in the markets you care about are the baseline.
- **How fast is onboarding?** If your product onboards customers who need KYC or KYB, the provider's approval time becomes your conversion rate. Minutes and five business days are both "supported." Only one keeps your signup funnel alive.
- **Do they monitor both legs?** The stablecoin leg is final in minutes. The ACH or wire funding it can be reversed for days. A provider that only checks identity at signup, and doesn't monitor the fiat side continuously, is carrying a fraud gap that eventually lands on someone. See [are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible)

What's interesting here is that fees rarely end up being the deciding factor for teams that have run payments at volume. Compliance approval times, settlement times, tracking visibility, and how fast errors get resolved matter more, because those are what customers feel. We break down licensing and KYB in [do merchants need a license to accept stablecoin payments?](/resources/more/do-merchants-need-a-license-to-accept-stablecoins)

## What does good developer experience look like?

Check these before signing:

- **SDKs** in the languages your team writes. Typed, maintained, versioned.
- **An OpenAPI spec**, so you can generate clients and validate requests.
- **A sandbox that matches production**: same endpoints, same webhooks, simulated payouts. See [sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) for what to test.
- **Webhooks** for every state change, with retries and signatures.
- **Tracking identifiers** exposed in the API, like UETR on SWIFT transfers, so support can answer "where's my money" without opening a ticket.
- **AI tooling**, increasingly. BlindPay ships a [CLI](/blog/cli), an [MCP server](/blog/mcp), and [Agent Skills](/blog/agent-skills), so coding assistants can read the API and run sandbox operations directly.

A realistic timeline for a full API integration (onboarding, quotes, payouts, webhooks) is days to a few weeks. Most of the variance comes from sandbox quality and how quickly your own KYB clears. Our guide on [how to integrate a stablecoin API](/resources/more/how-to-integrate-a-stablecoin-api) walks through the build.

## How should you run the evaluation?

1. **List your top five payout or collection countries** and the volume in each.
2. **Shortlist three providers** that cover those countries on local rails.
3. **Request an itemized quote** from each on the same amount, same corridor, same day.
4. **Ask for published licenses** and expected KYB turnaround.
5. **Get sandbox keys** and build one end-to-end flow with each, or at least your top choice.
6. **Score them** with the table above.

For the broader picture of how stablecoin acceptance works, start with [how merchants accept stablecoin payments](/resources/more/how-merchants-accept-stablecoin-payments). If you pay out across several countries, read [cross-border payments without pre-funding](/resources/more/cross-border-merchant-payments-without-pre-funding). For more on choosing an API specifically, see [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api).

## Put BlindPay through the scorecard

We'd rather be picked on the scorecard than on a pitch. If you want sandbox access, published licenses, and an itemized quote for your corridors, [talk to the BlindPay team](/contact) or start with the [docs](/docs/introduction).

---

Source: https://blindpay.com/resources/more/how-to-issue-stablecoin-cards-api

---
title: "How to issue stablecoin-funded cards through an API: a developer's guide"
seoTitle: "How to issue stablecoin-funded cards through an API"
description: "Build vs. buy for stablecoin card issuing, the objects a card issuing API must expose, a step-by-step integration flow, and where KYC and KYB sit in it."
date: "2026-09-18"
updated: "2026-10-12"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to issue a stablecoin-funded card through an API"
  steps:
    - name: "Get sandbox credentials from a card issuing provider"
      text: "Sign up with an issuing provider that supports stablecoin funding, get sandbox API keys, and confirm which card networks, card currencies, and cardholder countries its sponsor bank allows."
    - name: "Pass KYB for your business"
      text: "The provider and its sponsor bank verify your company, its registration, and its beneficial owners before approving the card program. Program approval defines limits, allowed countries, and card types."
    - name: "Create a cardholder and pass KYC"
      text: "Create a cardholder with name, date of birth, address, and a government ID number. Wait for an approved status before issuing a card; rejected or pending cardholders cannot receive one."
    - name: "Link a stablecoin funding source"
      text: "Attach the stablecoin balance that pays for purchases: a program wallet the provider holds, or your own wallet with an on-chain spending allowance. Record the network and token, such as USDC on Base or Solana."
    - name: "Issue a virtual card with spend controls"
      text: "Create a virtual card for the cardholder with spending limits, merchant category rules, and an expiry. Return the card details to the cardholder through the provider's PCI-compliant display component, never through your own servers."
    - name: "Handle the authorization webhook"
      text: "Implement a synchronous endpoint that receives each authorization request, verifies its signature, checks the available stablecoin balance in your ledger, places a hold, and returns approve or decline within the provider's deadline."
    - name: "Process clearing, reversals, and refunds"
      text: "Listen for clearing, reversal, and refund events, adjust holds to the final amounts, and post entries to your ledger. Key every event on its idempotency id so retries do not double-post."
    - name: "Go live with low limits"
      text: "Switch to production keys, issue a card to an internal cardholder with a small limit, and run a first live transaction end to end before raising limits."
faq:
  - q: "How do I issue a stablecoin-funded card through an API?"
    a: "Integrate with a card issuing provider that supports stablecoin funding: pass KYB for your business, create a cardholder and pass KYC, link a USDC or USDT funding source, issue a virtual card with spend controls, and implement the authorization webhook that approves or declines each purchase against the stablecoin balance. The provider and its sponsor bank handle the card network connection."
  - q: "What does a stablecoin card issuing API need to support?"
    a: "At minimum: cardholder creation with KYC status, card issuance with limits and merchant controls, a funding source tied to a stablecoin balance, a synchronous authorization webhook, and events for clearing, reversals, refunds, and disputes. Sandbox simulation of authorizations and declines is also needed to test the integration before production."
  - q: "Should I build card issuing in-house or use an API provider?"
    a: "Use an API provider unless card issuing is the core business and you have years and a large budget. Building in-house means signing a BIN sponsor bank, meeting card network requirements, reaching PCI DSS compliance for card data, building or licensing an authorization engine, and running an anti-money-laundering program. An API provider has already done that, leaving you the product, ledger, and user experience."
  - q: "How does KYC/KYB fit into an API-based card issuing flow?"
    a: "KYB runs once on your business before the program is approved, and KYC runs on every cardholder before a card can be issued. Sanctions screening repeats on cardholders and, for stablecoin funding, on wallet addresses, and transaction monitoring runs on every authorization. None of these can be skipped, because the sponsor bank carries the regulatory responsibility for every card on its BIN."
  - q: "What is the typical integration flow for issuing a stablecoin-backed card?"
    a: "Get sandbox keys, pass KYB, create and verify a cardholder, link a stablecoin funding source, issue a virtual card with limits, implement the authorization webhook, handle clearing and reversal events in your ledger, and go live with a small internal card first. Most of the engineering time goes into the authorization handler and the ledger, not the card creation calls."
---

*Reading time: about 8 minutes.*

**Summary:** API-based stablecoin card issuing means creating cardholders, cards, and spending decisions through a card issuing provider's REST API, while funding each purchase from a stablecoin balance such as USDC. The provider handles the network connection and the sponsor bank. Your code decides who gets a card, how it is funded, and which transactions to approve.

This guide is for developers and technical founders deciding whether to build or integrate. It covers what each path requires, the objects any issuing API has to expose, and an integration flow you can follow as a checklist.

One note on scope. The endpoints and payloads below are a generic shape shared by most issuing APIs, not one provider's reference. Names change between providers. The objects and their order do not. For the concepts behind the card itself, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Should you build card issuing in-house or use an API?

Building means becoming the issuer's technology and compliance partner yourself. Buying means integrating one that already is.

| Requirement | Build in-house | Integrate an issuing API |
|---|---|---|
| Sponsor bank | Negotiate and sign a BIN sponsorship agreement | Provided; you are approved under the provider's program |
| Card network | Meet Visa or Mastercard program and certification requirements | Provided |
| Card data security | PCI DSS compliance for storing and processing card numbers | Provider's vault; you never touch the full card number |
| Authorization engine | Build or license an issuer processor | Provided; you answer a webhook |
| Compliance program | Written AML program, KYC, monitoring, filings, under the sponsor's oversight | Shared: the provider runs most checks, you own your program's policies |
| Disputes and chargebacks | Build dispute operations | Provider workflow plus API events |
| Time to first card | Typically a year or more | Sandbox in a day; production after program approval |

Build only if card issuing is the product and you have the capital and patience for bank and network negotiations. Everyone else integrates, and spends the saved time on the ledger and UX, which is where programs actually differ.

## What does a stablecoin card issuing API need to expose?

A usable issuing API has seven objects. If a provider is missing one, you will end up building it.

| Object | What it does | Fields to look for |
|---|---|---|
| Cardholder | The verified person or business the card belongs to | KYC status, country, rejection reasons |
| Funding source | The stablecoin balance that pays for purchases | Token, network, wallet address, custody model |
| Card | A virtual or physical card | Status, limits, merchant category rules, expiry |
| Authorization request | A real-time question from the network: approve this? | Amount, currency, merchant, MCC, deadline |
| Transaction | The lifecycle after approval | Clearing amount, reversals, refunds, FX rate |
| Dispute | A cardholder challenge to a transaction | Reason code, deadline, evidence |
| Webhook endpoint | Where events are delivered | Signing secret, retry policy, event types |

Two questions separate stablecoin-native providers from traditional ones bolted onto a wallet:

- **When does conversion happen?** Just in time at authorization, so balances stay in USDC, or ahead of time into a fiat card balance.
- **Who holds the stablecoins?** A custodial program wallet, or your own wallet with an on-chain spending allowance the provider can draw from.

## Integration flow, step by step

### 1. Get sandbox credentials

Sign up, get sandbox keys, and before writing code ask for three lists: supported card currencies, cardholder countries the sponsor bank accepts, and stablecoins and networks the funding source supports. These decide your product more than any endpoint.

### 2. Pass KYB for your business

The provider and its sponsor bank verify your company before approving the program: registration, beneficial owners, business model, and expected volumes. The approval sets your limits and card types. Plan for this to take longer than the code.

### 3. Create a cardholder and pass KYC

```bash
POST /v1/cardholders
Content-Type: application/json
Idempotency-Key: 1c9f...

{
  "type": "individual",
  "first_name": "Ana",
  "last_name": "Souza",
  "date_of_birth": "1994-03-12",
  "country": "BR",
  "tax_id": "000.000.000-00",
  "address": { "line1": "...", "city": "Recife", "postal_code": "..." }
}
```

The response comes back with a status such as `pending`. Wait for `approved` on a webhook before issuing a card. Treat `rejected` as final and show a clear message.

### 4. Link a stablecoin funding source

```bash
POST /v1/funding-sources
Content-Type: application/json

{
  "type": "stablecoin_wallet",
  "token": "USDC",
  "network": "base",
  "address": "0x..."
}
```

In a custodial model you deposit USDC to an address the provider gives you. In an allowance model you approve a spending limit on-chain from your own wallet, and the provider pulls only what settles.

### 5. Issue a virtual card

```bash
POST /v1/cards
Content-Type: application/json

{
  "cardholder_id": "ch_...",
  "funding_source_id": "fs_...",
  "type": "virtual",
  "currency": "USD",
  "limits": [{ "amount": 200000, "interval": "monthly" }],
  "blocked_mccs": ["7995"]
}
```

Amounts are in minor units, so `200000` is USD 2,000.00. MCC 7995 is gambling. Show the card number to the cardholder through the provider's embedded, PCI-compliant display component. Never proxy the full card number through your own backend, or you inherit PCI scope.

### 6. Handle the authorization webhook

This is the heart of the integration. On each purchase the provider calls your endpoint and waits a few seconds for an answer. If you do not answer in time, the provider applies a default decision you configure.

```ts
app.post('/webhooks/card-authorization', async (req, res) => {
  const event = verifySignature(req) // provider-specific HMAC check; reject if invalid
  const { authorization_id, card_id, amount, currency, merchant } = event

  if (await ledger.seen(authorization_id))
    return res.json(await ledger.decisionFor(authorization_id))

  const card = await cards.get(card_id)
  const available = await ledger.availableUsdc(card.accountId)
  const needed = await quotes.toUsdcMinorUnits(amount, currency)

  if (needed > available)
    return res.json({ decision: 'decline', reason: 'insufficient_funds' })

  await ledger.hold(card.accountId, authorization_id, needed)
  return res.json({ decision: 'approve' })
})
```

Three rules make this handler reliable:

- **Read from your ledger, not the blockchain.** An on-chain balance query is too slow for an authorization deadline. Keep a ledger that updates on deposit and settlement events.
- **Be idempotent.** Providers retry. Key on the authorization id and return the same decision.
- **Decide your timeout default deliberately.** Decline on timeout is safer. Approve on timeout is friendlier and needs a buffer.

### 7. Process clearing, reversals, and refunds

The authorized amount is not the final amount. Listen for clearing events and adjust the hold, release holds on reversals, and credit refunds. Post each event to your ledger once, keyed on its id.

### 8. Settle the funding side

At settlement the provider draws the stablecoins that cover the day's cleared purchases and pays the network, in fiat or in USDC where the network supports it. Reconcile the draw against your ledger daily.

If your treasury starts in a bank account, you need a way into stablecoins first. BlindPay [virtual USD accounts](/virtual-accounts) accept ACH and wire deposits and convert them to USDC or USDT in a linked wallet, and the [stablecoin API integration guide](/resources/more/how-to-integrate-a-stablecoin-api) walks through those calls with real endpoints.

### 9. Go live with low limits

Switch to production keys, issue one card to an internal cardholder with a USD 50 limit, and buy something real. Check every event landed in the ledger. Then raise limits.

## Where does KYC and KYB sit in the flow?

Compliance is not a step. It is four checkpoints.

| Checkpoint | Check | Why it cannot be skipped |
|---|---|---|
| Program approval | KYB on your company and its beneficial owners | The sponsor bank must know who runs the program |
| Cardholder creation | KYC on each cardholder, sanctions screening | A card is an account; account opening requires identification |
| Funding | Wallet address screening | Stablecoin funds from a sanctioned address taint the program |
| Every authorization | Transaction monitoring, velocity and merchant rules | The sponsor bank's AML program covers every transaction on its BIN |

The sponsor bank carries the regulatory responsibility for every card on its BIN, and US sanctions compliance is strict liability. A provider that lets you skip a checkpoint is putting its bank relationship, and your program, at risk. The [compliance guide](/resources/more/stablecoin-card-issuing-compliance) covers what each check involves and how it differs by country.

## Testing checklist before production

- Approve, decline for insufficient funds, and decline on a blocked MCC
- Webhook timeout and the configured default decision
- Duplicate webhook delivery
- Partial clearing below the authorized amount, and clearing above it (tips)
- Full reversal and a refund days later
- Cardholder KYC rejection
- Funding source running low mid-month

## What to read next

Finish the series with the [compliance guide for stablecoin card issuing](/resources/more/stablecoin-card-issuing-compliance). If your recipients need money in a bank account rather than on a card, the [stablecoin API integration guide](/resources/more/how-to-integrate-a-stablecoin-api) covers local-currency payouts over Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO).

For the business side of the same build, read [how to launch a stablecoin card program](/resources/more/how-to-launch-a-stablecoin-card-program) and [how to choose a stablecoin card issuing provider](/resources/more/how-to-choose-a-stablecoin-card-issuing-provider).

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

---

Source: https://blindpay.com/resources/more/best-stablecoin-apis-cross-border-payments-2026

---
title: "Best stablecoin APIs for cross-border payments in 2026: BlindPay, Circle, Stripe, Bridge, and Fireblocks compared"
seoTitle: "Best stablecoin APIs for cross-border payments in 2026: BlindPay, Circle, Stripe, Bridge, and Fireblocks compared"
description: "Five stablecoin APIs compared for cross-border payments: primary use case, pre-funding requirement, payout regions, and developer experience, plus how to choose by buyer scenario."
date: "2026-09-17"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is the best stablecoin API for cross-border payments?"
    a: "For paying out stablecoins as local currency across borders with no pre-funding, BlindPay is the most direct fit: USDC or USDT in, Pix, SPEI, ACH, or SWIFT (POBO/COBO) out, with compliance handled in the API. Circle fits issuer-level USDC access, Stripe and Bridge fit teams already on Stripe, and Fireblocks fits institutions that need MPC custody first."
  - q: "Is Stripe a stablecoin API?"
    a: "Partly. Stripe offers stablecoin payments and stablecoin financial accounts to its merchants, and it owns Bridge, which is a full stablecoin infrastructure API. If you want stablecoin flows next to your existing Stripe card flows, Stripe plus Bridge is the path. Stripe itself is not a standalone cross-border stablecoin payout API."
  - q: "Does Circle offer an API?"
    a: "Yes. Circle offers APIs for programmable wallets, cross-chain transfers, and minting and redeeming USDC through Circle Mint, plus the Circle Payments Network for banks and payment institutions. It is infrastructure for the USDC leg rather than a local-currency payout network."
  - q: "What is the cheapest way to send stablecoins across borders?"
    a: "Sending the stablecoin on-chain is close to free on networks like Base, Polygon, or Solana. The cost sits in the conversion to local currency, so the cheapest route is a provider that quotes the FX rate and fee before you commit and publishes its pricing. Compare providers on the amount the receiver gets, not the advertised fee."
  - q: "Do stablecoin APIs require pre-funding?"
    a: "Some do. Providers that settle through pre-funded local balances require you to hold capital in each destination currency. BlindPay does not: each transfer is funded at the moment you send it, from a virtual USD account or a stablecoin wallet. Confirm the pre-funding model with any provider before signing."
  - q: "Which stablecoin API is best for a startup?"
    a: "A startup usually needs a public sandbox, SDKs in its stack, published pricing, and no minimum volume. BlindPay and Bridge both offer self-serve developer access. Circle and Fireblocks skew toward enterprise agreements, and Stripe's stablecoin features depend on your Stripe account being eligible."
---

The best stablecoin API for cross-border payments depends on which job you are hiring it for. BlindPay is built for paying out stablecoins as local currency across borders with no pre-funding. Circle issues USDC and runs the infrastructure for the dollar leg. Stripe brings stablecoin payments to its merchant base and owns Bridge, a stablecoin orchestration API. Fireblocks secures the assets with MPC custody and leaves the payment logic to you.

This comparison covers those five providers across primary use case, pre-funding requirement, supported payout regions, and developer experience, then works through how to choose by buyer scenario. For the wider field of ten providers, including BVNK, Zero Hash, Conduit, Sphere, and Borderless, read the [broader stablecoin API comparison](/resources/more/best-stablecoin-apis-2026).

## How do the five providers compare?

| Provider | Primary use case | Pre-funding required | Supported payout regions | Developer experience |
| --- | --- | --- | --- | --- |
| [BlindPay](/global-payments) | Stablecoin payouts and collections into local currency | No | Brazil (Pix), Mexico (SPEI), Colombia, Argentina, United States (ACH, RTP), Europe (SEPA), 100+ countries via SWIFT (POBO/COBO) | REST API with OpenAPI spec, SDKs for Node, Python, Go, PHP, and Swift, MCP server, public sandbox, [published pricing](/pricing) |
| [Circle](https://www.circle.com) | USDC and EURC issuance, programmable wallets, Circle Payments Network | Circle Mint requires funded accounts for mint and redeem | On-chain globally; fiat delivery via Circle Payments Network partner institutions | Well-documented APIs and SDKs for wallets and transfers; Mint and CPN access through a sales process |
| [Stripe](https://stripe.com) | Stablecoin payments and financial accounts for existing Stripe merchants | Balances held in Stripe accounts | Markets where Stripe operates, subject to product eligibility | Stripe's developer tooling; stablecoin features gated by account and region |
| [Bridge](https://www.bridge.xyz) | Stablecoin orchestration: issuance, wallets, conversion, virtual accounts, cards | Provider-managed custodial wallets or self-custody, funded per flow | United States, Europe, United Kingdom, Mexico, Brazil, Colombia via ACH, wire, SEPA, Faster Payments, SPEI, Pix | REST API and docs, hosted KYC links, sandbox; pricing through sales |
| [Fireblocks](https://www.fireblocks.com) | MPC custody, treasury security, wallet infrastructure across 60+ networks | Not applicable; you hold your own assets | On-chain; fiat off-ramps via third-party network partners | Enterprise SDKs and APIs for custody and wallet operations |

Rails, regions, and features change often. Treat the table as a snapshot of each provider's center of gravity and confirm current details on each provider's site before committing.

## What does each provider actually do well?

**BlindPay** is a payout and collection network. A business sends USDC or USDT, or deposits dollars into a [virtual USD account](/virtual-accounts), and the receiver gets local currency over Pix, SPEI, ACH, or SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on every wire. KYC, KYB, sanctions screening, and travel rule compliance run inside the API before money moves. There is no pre-funding requirement, pricing is published, and every quote shows the exact receive amount before you commit. Depth is strongest in the Americas, with corridors such as [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn). BlindPay does not issue stablecoins, does not offer custody as a product, and is not a card acquirer.

**Circle** is the issuer of USDC, the largest regulated dollar stablecoin, and of EURC. Its developer platform covers programmable wallets, cross-chain transfers through CCTP, and Circle Mint for institutional mint and redeem. The Circle Payments Network connects banks and payment institutions for cross-border settlement in USDC. If your product is built around holding or issuing digital dollars, Circle is the anchor. It is not a local-currency payout network, and access to Mint and CPN goes through a sales process.

**Stripe** acquired Bridge in 2025 and has since added stablecoin payments and stablecoin financial accounts to its platform. For a merchant already on Stripe, that means accepting USDC at checkout or holding a stablecoin balance without a new vendor. Stripe moves money through card networks and ACH at its core, and its stablecoin features are gated by account eligibility and region, so it is a strong option for existing Stripe customers and a weak fit as a standalone cross-border payout API.

**Bridge, a Stripe company**, is a general-purpose stablecoin infrastructure API: issuance of branded stablecoins, managed and self-custody wallets, fiat-to-stablecoin conversion, virtual accounts in several currencies, and stablecoin-backed cards. Its payout rails cover the United States, Europe, the United Kingdom, Mexico, Brazil, and Colombia. It is the tightest fit if you already run on Stripe and want stablecoin flows next to card flows, or if you want to launch your own stablecoin.

**Fireblocks** is digital-asset custody and wallet infrastructure, not a payments company. Institutions choose it for MPC self-custody, policy engines, and treasury security across more than 60 networks, then layer payment logic on top themselves or through Fireblocks network partners. If custody comes first and payouts come second, Fireblocks is the base layer, and a payout API like BlindPay handles the last mile.

## How should you choose?

Three buyer scenarios cover most of the teams comparing these providers.

### A fintech startup that needs fast integration

You need a public sandbox, SDKs in your stack, published pricing, and no minimum volume. Start with the providers that let you integrate without a sales call: BlindPay and Bridge both do. Run ten real test payments through the sandbox and look at the error responses, not just the happy path. If you already process cards on Stripe, Bridge keeps your vendor count at one. If your users are in Latin America and need local currency in a bank account, BlindPay's corridor depth is the differentiator.

### An enterprise that needs compliance coverage

You need to know who holds the license in each market, whether KYC, KYB, and sanctions screening run before funds move, and how travel rule data is handled. Ask every provider for its licensing posture per country in writing. BlindPay runs compliance inside the API and publishes its [compliance program](/compliance). Circle is regulated as a money transmitter and BitLicense holder in the United States and under MiCA in Europe. Bridge operates under Stripe's US money transmission entities. Fireblocks provides tooling for your own compliance program rather than running one for you. Read [compliance agents for cross-border stablecoin payments](/resources/more/compliance-agents-cross-border-stablecoin-payments) for what automated compliance looks like in practice.

### A company that needs local payout rails without pre-funding

This is the scenario where the five providers separate most sharply. If your payments land in Brazil, Mexico, Colombia, or Argentina and you cannot afford to park capital in each currency, BlindPay is the provider designed for that exact problem: fund each transfer when you send it, get a quoted receive amount, and deliver over the local rail. Bridge covers several of the same countries with a custodial wallet model. Circle and Fireblocks hand you the stablecoin leg and leave the local payout to partners.

## Which questions should you ask before choosing?

- Which exact corridors are live in production today, and which are on a roadmap?
- Do I need to pre-fund a balance in the destination currency?
- Is the FX quote binding, and are the spread and fee shown separately?
- Who holds the license in each market I pay into?
- Is there a public sandbox, an OpenAPI spec, and an SDK in my language?
- What does the receiver actually get on a $10,000 payment to each of my top three corridors?

The last question is the only one that lets you compare providers on a single number. Run it through every sandbox before you sign anything.

## When is BlindPay the right choice?

If the job is "we hold digital dollars, or can deposit dollars, and need people paid in their local currency, compliantly, without pre-funding, through one API", that is the problem [BlindPay](/global-payments) is built for. Stablecoin in, Pix, SPEI, ACH, or SWIFT out (POBO/COBO, with UETR tracking and MT103 confirmations), a quoted rate before you commit, [published pricing](/pricing), and compliance run before money moves.

If the job is issuing a stablecoin, choose Circle or Bridge. If the job is securing assets, choose Fireblocks. If the job is stablecoin checkout for an existing Stripe merchant, choose Stripe. Most teams combine two of these. Read [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) for the full evaluation criteria, or [talk to us](/contact) with one corridor and expand from there.

## Methodology and sources

Provider descriptions are based on public product pages and documentation reviewed in September 2026, plus BlindPay's own [pricing](/pricing) and [coverage](/docs/kb/supported-countries) pages. No provider was ranked on undisclosed data. Where a capability was not visible on a provider's public pages, the table says so rather than guessing.

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

---

Source: https://blindpay.com/resources/more/how-to-choose-a-stablecoin-api

---
title: "How to choose a stablecoin API: the 6 questions that actually matter"
seoTitle: "How to choose a stablecoin API: the 6 questions that actually matter"
description: "Six criteria for evaluating a stablecoin API: pre-funding, compliance automation, local payout rails, settlement speed, developer experience, and pricing transparency, with a scorecard you can send to every vendor."
date: "2026-09-17"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What should I look for in a stablecoin API?"
    a: "Six things: whether it requires pre-funding, whether KYC, KYB, and sanctions screening run inside the API, which local payout rails are live in production, how fast funds become spendable, the quality of the sandbox, SDKs, and error responses, and whether pricing and FX spread are published and itemized."
  - q: "Why does pre-funding matter when choosing a stablecoin API?"
    a: "Pre-funding is capital you must park in each destination currency before you can pay anyone there. It is dead money exposed to FX moves, and it scales with your volume. A provider that funds each transfer at send time removes that cost entirely."
  - q: "How do I compare stablecoin API pricing?"
    a: "Ask each provider for the exact amount the receiver gets on the same payment in your top three corridors. Fees, spread, and network costs all collapse into that one number, and it is the only figure that is comparable across vendors. A low advertised fee with a wide spread is not cheap."
  - q: "Does a stablecoin API handle compliance for me?"
    a: "It depends on the provider. Some run KYC, KYB, sanctions screening, and travel rule checks inside the API under their own licenses. Others give you tooling and expect you to run the program. Ask who holds the license in each market and whether checks run before funds move."
  - q: "How long does it take to integrate a stablecoin API?"
    a: "With a public sandbox, an OpenAPI spec, and an SDK in your language, a first payout typically takes a day or two of engineering. Without those, expect weeks. Production access adds compliance onboarding, usually a few business days."
  - q: "Is the fastest stablecoin API always the best choice?"
    a: "No. On-chain settlement is fast everywhere. What differs is the local payout leg and whether the provider covers your corridors at all. A provider that settles in seconds on Pix but has no Mexico rail is the wrong choice if half your volume goes to Mexico."
---

Choosing a stablecoin API comes down to six questions: does it require pre-funding, does it automate compliance, which local payout rails does it actually cover, how fast do funds become spendable, how good is the developer experience, and is pricing transparent. Answer those six for each vendor and the shortlist writes itself.

Most buyer's guides in this category list features. This one lists the questions a technical buyer should ask, why each one matters, and what a good answer looks like, in the order they tend to eliminate vendors. If you are still working out what the category is, start with [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api).

## The six criteria at a glance

1. **Pre-funding requirements.** Do you have to park capital in each destination currency before paying anyone?
2. **Compliance and KYC/KYB automation.** Do identity, sanctions, and travel rule checks run inside the API, under whose license?
3. **Local payout rail coverage.** Which rails are live in production today, in which countries, in which direction?
4. **Settlement speed.** When can the receiver actually spend the money?
5. **Developer experience and SDK quality.** Is there a public sandbox, an OpenAPI spec, SDKs in your stack, and typed errors?
6. **Pricing transparency.** Are fee and FX spread published and itemized, and can you see the receive amount before you commit?

## 1. Does the provider require pre-funding?

Pre-funding matters because it is the single largest hidden cost in cross-border payouts, and it grows in lockstep with your volume.

A provider that settles through pre-funded balances requires you to deposit money in each destination currency before you can send a payment there. If you pay out the equivalent of $3 million a month across four currencies, a one-week float means roughly $700,000 permanently idle, exposed to FX moves, and unavailable for the rest of the business. Finance teams often do not see this as a vendor cost because it does not appear on the invoice.

A good answer is "no, each transfer is funded when you send it." That means you hold your capital in one place, a virtual USD account or a stablecoin treasury wallet, and the provider converts and delivers on demand. Ask the question in writing, because some stablecoin platforms still run pre-funded local balances behind a modern API.

## 2. Does compliance run inside the API?

Compliance automation matters because it determines whether you are connecting to a licensed program or building one yourself.

Every receiver of a cross-border payment has to be identified (KYC for individuals, KYB for businesses), screened against sanctions lists, and in many corridors covered by travel rule data exchange. A provider can either run those checks inside the API before funds move, under its own licenses and registrations, or give you tooling and expect you to hold the license and run the program.

A good answer names the license or registration in each market you pay into, confirms that checks run before money moves rather than after, and explains how the API surfaces a hold or rejection so your system can act on it. Read [what compliance agents are in fintech](/resources/more/what-are-compliance-agents-in-fintech) for what automated onboarding looks like when it works, and [automated KYC/KYB vs manual onboarding](/resources/more/automated-kyc-kyb-vs-manual-onboarding) for the time and cost gap between the two models.

## 3. Which local payout rails are live in production?

Rail coverage matters because nothing else on this list counts if the provider cannot reach your receivers' bank accounts.

"Global coverage" on a homepage usually means the provider can send a SWIFT wire anywhere, which every bank can also do. The question is whether the provider is connected to the local instant rail in each of your markets: Pix in Brazil, SPEI in Mexico, ACH in Colombia, Transfers 3.0 in Argentina, ACH and RTP in the United States, SEPA in Europe. Local rails are what make a payout land in seconds instead of days and cost a fraction of a wire.

A good answer is a list of exact rail and country pairs, live in production today, with direction (pay-in, pay-out, or both) and the settlement window per rail. Anything on a roadmap does not count. Check [coverage by country](/docs/kb/supported-countries) for how BlindPay publishes this.

## 4. How fast do funds become spendable?

Settlement speed matters because the number your receiver cares about is when they can spend the money, not when the API returned a 200.

Stablecoin transfers settle on-chain in seconds to minutes on any modern network. That part is fast everywhere and does not differentiate providers. The differences are in the local leg: Pix and SPEI settle in minutes, ACH and SEPA take one to two business days, SWIFT can take up to five. A provider that quotes "instant settlement" is usually describing the on-chain leg only.

A good answer gives you a settlement window per rail, distinguishes API acceptance from finality, and tells you which rails hold for compliance review before releasing. [SLAs and settlement finality](/resources/more/stablecoin-api-sla-settlement-finality) explains why a 99.9 percent uptime figure says nothing about when money lands.

## 5. How good is the developer experience?

Developer experience matters because the sandbox and the error responses are what your engineers will live inside at two in the morning when a payout fails.

The checklist is concrete. A public sandbox you can use before talking to sales. An OpenAPI specification, so you can generate a client or feed it to an AI coding tool. Official SDKs in the languages your team writes. Webhooks with signed payloads and a documented event list. A typed error for every failure mode, so a compliance hold, an expired quote, and an invalid bank account are distinguishable in code. An idempotency key on write requests, so a retry never double-sends money.

A good answer is a link you can click today. If the sandbox requires a sales call, or the docs are a PDF, expect the integration to take weeks instead of days. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) covers what a sandbox can and cannot tell you.

## 6. Is pricing transparent?

Pricing transparency matters because the FX spread usually costs more than every fee on the pricing page combined, and it is the one number most providers do not publish.

A stablecoin payout has several cost components: a flat or percentage fee, the FX spread between the commercial rate and the rate you get, network costs for the on-chain leg, and sometimes an issuer fee on redemption. A provider that shows one blended number hides which of those is moving when your effective rate changes next quarter.

A good answer is a published pricing page plus a quote response that shows the commercial rate, the provider's rate, the fee, and the receiver amount as separate fields, before you commit. Then run the same $10,000 payment through every vendor's sandbox for your top three corridors and compare what the receiver gets. [Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) breaks down where the below-the-line costs hide.

## Scorecard: the six questions to send every vendor

| Criterion | Question to ask | What a good answer looks like | Red flag |
| --- | --- | --- | --- |
| Pre-funding | Do I need to hold a balance in the destination currency before sending? | No, each transfer is funded at send time | "A small float" that scales with volume |
| Compliance automation | Who holds the license in each market, and do KYC, KYB, and sanctions checks run before funds move? | Named licenses per market, checks in the API path, holds surfaced as statuses | "You handle KYC on your side" |
| Local payout rails | Which exact rail and country pairs are live in production today, in which direction? | A list with settlement window per rail | "Global coverage" with no rail names |
| Settlement speed | When can the receiver spend the money on each rail? | Per-rail windows, finality distinguished from API acceptance | "Instant" with no rail qualifier |
| Developer experience | Is there a public sandbox, an OpenAPI spec, SDKs in my language, and signed webhooks? | Links you can open today | Sandbox behind a sales call |
| Pricing transparency | What does the receiver get on a $10,000 payment to my top three corridors? | Itemized quote with rate, spread, fee, and receive amount | One blended rate, quote only by email |

## How does BlindPay score on the six criteria?

Treat this as one entry in your evaluation, not the conclusion of it.

**Pre-funding.** None. Each transfer is funded when you send it, from a [virtual USD account](/virtual-accounts) or a stablecoin wallet you control.

**Compliance automation.** KYC, KYB, sanctions screening, and travel rule compliance run inside the API before money moves. Automated compliance agents handle standard individual onboarding in about a minute; business and enhanced cases go through review with a published turnaround.

**Local payout rails.** Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, ACH in Colombia, Transfers 3.0 in Argentina, ACH, RTP, and domestic wire in the United States, SEPA in Europe, and SWIFT (POBO/COBO) to 100+ countries with UETR tracking and MT103 confirmations. Direction and settlement window per rail are published in the [payment methods reference](/docs/kb/payment-methods).

**Settlement speed.** Minutes on Pix, SPEI, and Transfers 3.0, instant on RTP, one to two business days on ACH, TED, and SEPA, up to five on SWIFT. Every payout carries per-step tracking so your system knows whether it is processing, on hold for review, or complete.

**Developer experience.** REST API with an [OpenAPI spec](https://api.blindpay.com/doc), SDKs for Node, Python, Go, PHP, and Swift, an MCP server for AI coding tools, signed webhooks for every state change, idempotency keys on writes, and a development instance you can use before talking to anyone.

**Pricing transparency.** [Published plans](/pricing) and a quote response that returns the commercial rate, BlindPay's rate, the fee, and the receiver amount as separate fields, valid for five minutes, before you commit.

Where BlindPay is not the answer: it does not issue stablecoins, does not offer custody as a product, and is not a card acquirer. Corridor depth is strongest in the Americas. For a side-by-side with the other providers you are likely evaluating, read [the best stablecoin APIs for cross-border payments](/resources/more/best-stablecoin-apis-cross-border-payments-2026), or [start in the sandbox](/docs/introduction) and run the scorecard yourself.

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

---

Source: https://blindpay.com/resources/more/how-to-integrate-a-stablecoin-api

---
title: "Integrating a stablecoin API: a developer's guide to cross-border payments with BlindPay"
seoTitle: "Integrating a stablecoin API: a developer's guide to cross-border payments with BlindPay"
description: "Step-by-step integration of a stablecoin API: authenticate, onboard a customer, create a virtual USD account, quote and send a cross-border payout, and handle signed webhooks. Endpoints, statuses, and SDKs for BlindPay."
date: "2026-09-17"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to integrate a stablecoin API for cross-border payments"
  steps:
    - name: "Authenticate with an instance-scoped API key"
      text: "Create a development instance in the dashboard, generate an API key, and send it as a Bearer token. Every request goes to https://api.blindpay.com/v1/instances/{instance_id}/... and the key decides whether you hit development or production."
    - name: "Onboard a customer and pass KYC or KYB"
      text: "Create a customer with type individual or business. Standard individual KYC is automated and usually resolves in about a minute; business KYB goes through review. Wait for kyc_status approved before creating accounts."
    - name: "Create a virtual USD account or register a wallet"
      text: "Attach a blockchain wallet to the approved customer, then create a virtual account that accepts ACH, wire, or SWIFT deposits and converts them to USDC or USDT into that wallet. If you already hold stablecoins, register the wallet and skip the virtual account."
    - name: "Add the receiver's bank account and request a quote"
      text: "Register the destination bank account with its rail type, such as pix, spei_bitso, ach, or international_swift. Request a quote with the amount in minor units; the response locks the rate, itemizes fees, shows the receive amount, and expires in five minutes."
    - name: "Create the payout"
      text: "Approve the quoted stablecoin amount on-chain from your wallet, then create the payout with the quote id and sender wallet address. The response returns a payout id with per-step tracking and a status of processing, on_hold, completed, failed, or refunded."
    - name: "Handle webhooks for status updates"
      text: "Register an HTTPS webhook endpoint, verify each delivery with the svix-id, svix-timestamp, and svix-signature headers using the endpoint secret, and dedupe on svix-id. Listen for payout.update and payout.complete to drive your ledger."
faq:
  - q: "Does the BlindPay API have a sandbox environment?"
    a: "Yes. Every account can create development instances, and a development API key routes all requests to the development environment on the same hostname. Development instances skip banking-partner review, return fake bank account numbers, and accept sentinel amounts that force a payout into failed or refunded so you can test every path."
  - q: "Which currencies and countries does the stablecoin API support?"
    a: "Stablecoins USDC and USDT on Ethereum, Polygon, Base, Arbitrum, Solana, Stellar, and Tron, converting to BRL over Pix, PIX Safe, and TED in Brazil, MXN over SPEI in Mexico, COP over ACH in Colombia, ARS over Transfers 3.0 in Argentina, USD over ACH, RTP, and domestic wire in the United States, EUR over SEPA, and USD to 100+ countries over SWIFT (POBO/COBO). The live list is available from the public rails endpoint without an API key."
  - q: "How are compliance checks handled during onboarding?"
    a: "Each customer goes through KYC or KYB inside the API. Standard individual KYC is automated and typically resolves in about a minute. Enhanced KYC for high-risk countries and standard KYB for businesses go through review, usually within a few hours and up to one business day. Sanctions screening runs on customers and on payouts, and a hold shows up as an on_hold payout status rather than a silent delay."
  - q: "Are webhooks reliable, and how do I verify them?"
    a: "Deliveries are signed with HMAC-SHA256 and carry svix-id, svix-timestamp, and svix-signature headers. A non-2xx response is retried with backoff over the following hours, and svix-id stays the same across retries, so use it as your deduplication key. You can also replay any event from the dashboard."
  - q: "Do I need to hold crypto to send a cross-border payout?"
    a: "No. Deposit dollars into a virtual USD account over ACH, wire, or SWIFT and the deposit converts to USDC or USDT in the linked wallet. From there the payout flow is identical to sending from a wallet you funded yourself."
  - q: "Which SDKs are available?"
    a: "Official SDKs cover Node and TypeScript, Python, Go, PHP, and Swift, all generated from the OpenAPI specification. There is also an MCP server so AI coding tools can call the API directly, and the docs publish llms.txt for agent consumption."
---

Integrating a stablecoin API for cross-border payments takes five steps: authenticate with an instance-scoped API key, onboard a customer through KYC or KYB, fund a virtual USD account or register a stablecoin wallet, quote and create a payout to a local bank account, and handle signed webhooks for status changes. With BlindPay, a first payout in the development environment is typically a day of work using the REST API or one of the official SDKs.

This guide walks through that flow with the actual endpoints, statuses, and event names. It is written for a developer or technical founder who has never moved money over stablecoins before. For the category background, read [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api).

## What you will need to get started

| Requirement | Where to get it |
| --- | --- |
| A BlindPay account and a development instance | Dashboard at app.blindpay.com; instances are created there, not through the API |
| An API key scoped to that instance | Instance settings, API Keys tab; shown once, so store it in a secrets manager |
| An SDK or an HTTP client | `@blindpay/node` on npm, `blindpay` on PyPI, `blindpay-go`, `blindpay-php`, or `blindpay-swift`; or generate a client from the [OpenAPI spec](https://api.blindpay.com/doc) |
| A blockchain wallet you control | Any EVM, Solana, or Stellar wallet on a supported network; testnets work on development instances |
| An HTTPS endpoint for webhooks | Public URL; local and private addresses are rejected, so use a tunnel in development |

Development instances are free, rate-limited to about 100 requests per minute, and skip banking-partner review so virtual accounts and payouts resolve immediately. Production access requires compliance onboarding and takes up to three business days. Read [sandbox vs production](/docs/learn/sandbox-vs-production) for the exact behavioral differences.

## Step 1: Authenticate

Every request carries the API key as a Bearer token and targets a specific instance:

```bash
GET /v1/instances/in_000000000000/customers
Host: api.blindpay.com
Authorization: Bearer YOUR_API_KEY
```

There is no separate sandbox hostname. Which environment you hit is decided entirely by which instance the key belongs to, so a development key fails against a production instance and vice versa. Keys are full read and write, optionally locked to an IPv4 allowlist.

Two headers are worth adopting from the first request. `Idempotency-Key` on any write makes a network retry safe: the same key with the same body returns the original response with `Idempotency-Replayed: true`, and a different body returns a 422. On development instances a 429 comes with `Retry-After`, so build the backoff in now rather than when production traffic arrives.

## Step 2: Onboard a customer

A customer is the person or business you will pay or collect from. Create one with `type` set to `individual` or `business` and the identity fields the docs list for that type. Compliance runs immediately.

| Onboarding path | Who | How it resolves | Typical time |
| --- | --- | --- | --- |
| KYC standard | Individuals in standard-risk countries | Automated | About 60 seconds |
| KYC enhanced | Individuals in high-risk countries | Review | 3 hours to 1 business day |
| KYB standard | Businesses | Review | 3 hours to 1 business day |

Poll or, better, listen for `customer.update` until `kyc_status` reads `approved`. Other statuses include `verifying`, `pending_review`, `compliance_request` when the team needs a document, and `rejected` with the reason in `kyc_warnings` or `fraud_warnings`. Customers in prohibited countries are blocked at creation and cannot be overridden, and KYC data on an existing customer cannot be edited, so treat a rejection as "create a corrected customer" rather than "patch this one."

This is the step that turns compliance from a project into an API call. Sanctions screening and risk scoring happen here and again on each transfer, which is why a payout can later sit in `on_hold` without anything being wrong on your side. Read [how to automate KYC and KYB for stablecoin payments](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) for the design behind it.

## Step 3: Create a virtual USD account or register a wallet

You need stablecoins in a wallet to send a payout. There are two ways to get there.

**If you already hold USDC or USDT**, register the wallet on the customer with `POST /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets`, choosing the network and address. You will send the payout from this wallet.

**If you hold dollars in a bank**, create a [virtual USD account](/virtual-accounts). It is a dedicated US account number that accepts ACH, domestic wire, and SWIFT deposits (RTP for some account types) and converts every deposit to USDC or USDT in the linked wallet. First attach a blockchain wallet to the approved customer, then:

```bash
POST /v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts
Content-Type: application/json

{
  "token": "USDC",
  "blockchain_wallet_id": "bw_000000000000"
}
```

The request also takes a `banking_partner` from the documented list, and eligibility depends on the customer's country and business type. The response includes `ach`, `wire`, and where applicable `rtp` objects with routing and account numbers, and SWIFT details once the account is `approved`. In development the account is approved instantly with fake numbers. Each incoming deposit creates a payin and fires `payin.new` and then `payin.complete`, which is your signal that stablecoins have landed. Business customers need a few extra fields before a virtual account can be created, such as business type, industry, and ownership, and the API returns `missing_required_fields` naming exactly which ones.

This is the "no pre-funding" model in practice: you fund each transfer when you need it, from a wallet you control, rather than parking a balance in each destination currency.

## Step 4: Add a bank account and request a quote

Register the receiver's bank account once, with the rail as its `type`: `pix`, `pix_safe`, or `ted` for Brazil, `spei_bitso` for Mexico, `ach_cop_bitso` for Colombia, `transfers_bitso` for Argentina, `ach`, `rtp`, or `wire` for the United States, `sepa` for Europe, and `international_swift` for everywhere else. The public rails endpoint returns the live list, with countries, and needs no API key.

Then request a quote:

```bash
POST /v1/instances/{instance_id}/quotes
Content-Type: application/json

{
  "bank_account_id": "ba_000000000000",
  "currency_type": "receiver",
  "request_amount": 500000,
  "cover_fees": false,
  "network": "base",
  "token": "USDC"
}
```

Amounts are integers in minor units, so the request above is 5,000.00 in the receiver's currency. `currency_type` decides whether you are fixing the stablecoin amount sent or the fiat amount received. The response returns `commercial_quotation`, `blindpay_quotation`, `sender_amount`, `receiver_amount`, and the fees as separate fields, plus `expires_at` in epoch milliseconds. A quote is valid for five minutes and backs exactly one payout. For EVM networks the response also includes a `contract` object with the address, ABI, and amount to approve.

Show the receiver amount to your user before they confirm. That one field is what makes stablecoin payouts comparable to any other rail: the receiver gets exactly this, and it was known before anything moved.

## Step 5: Create the payout

Approve the quoted stablecoin amount from your wallet on-chain using the `contract` details in the quote, then create the payout on the endpoint for your network: `/payouts/evm` for Ethereum, Polygon, Base, and Arbitrum, `/payouts/solana`, or `/payouts/stellar`.

```bash
POST /v1/instances/{instance_id}/payouts/evm
Content-Type: application/json
Idempotency-Key: 8f6a0c2e-...

{
  "quote_id": "qu_000000000000",
  "sender_wallet_address": "0x..."
}
```

The response is a payout with `id`, `status`, and five tracking objects covering the on-chain transaction, liquidity, partner fee, payment, and completion, each with its own step. The status values are:

| Status | Meaning | What your system should do |
| --- | --- | --- |
| `processing` | Funds pulled, conversion and delivery in progress | Show pending |
| `on_hold` | Compliance or banking review before release; every SWIFT payout starts here, ACH, wire, and RTP pass through it | Show pending, do not retry |
| `completed` | Local currency delivered over the rail | Mark paid, store the rail reference |
| `failed` | Delivery could not complete | Surface the reason, funds return to the sender wallet |
| `refunded` | Funds returned after a failure downstream | Reconcile the return |

Delivery time depends on the rail: minutes on Pix, SPEI, and Transfers 3.0, instant on RTP, one to two business days on ACH, TED, and SEPA, up to five on SWIFT, where each payout carries a UETR and an MT103 confirmation. SWIFT payouts have a 100 USD minimum. In development, a `request_amount` of `66600` forces `failed` and `77700` forces `refunded`, so you can test the unhappy paths without waiting for one to happen.

## Step 6: Handle webhooks

Polling works, but webhooks are how the integration is meant to run. Register an endpoint:

```bash
POST /v1/instances/{instance_id}/webhook-endpoints
Content-Type: application/json

{
  "url": "https://example.com/webhooks/blindpay",
  "events": []
}
```

An empty `events` array subscribes to everything. Fetch the endpoint's signing secret with a GET on its `/secret` path; it starts with `whsec_`. The events you will handle most:

| Event | Fires when |
| --- | --- |
| `customer.update` | KYC or KYB status changes |
| `payin.complete` | A virtual account deposit has converted and landed |
| `payout.update` | A payout changes status, including to `failed` |
| `payout.complete` | Local currency has been delivered |
| `virtualAccount.complete` | A virtual account has finished review |

Verify every delivery. The headers are `svix-id`, `svix-timestamp`, and `svix-signature`. Concatenate the id, the timestamp, and the raw body with dots, compute HMAC-SHA256 with the base64-decoded secret, and compare against each `v1,` entry in the signature header using a constant-time comparison. Reject anything older than five minutes.

Two details save debugging time. A `failed` payout fires `payout.update`, not `payout.complete`, so key your terminal-state logic on status rather than event name. And retries reuse the same `svix-id`, so store it and skip duplicates. Failed deliveries are retried with backoff over the following hours, and any event can be replayed from the dashboard without creating a new business event. Read the [webhook events reference](/docs/learn/webhooks-events) for the full list.

## How OpenAPI and SDKs shorten the integration

Every endpoint above is described in a single OpenAPI 3.1 document at `https://api.blindpay.com/doc`. The official SDKs for Node, Python, Go, PHP, and Swift are generated from it, so field names, enums, and error shapes match the docs exactly and a new API field shows up as a typed property rather than a surprise in a JSON blob.

The same spec is what makes AI-assisted integration work. The MCP server, `npx -y @blindpay/mcp`, lets a coding agent in Claude Code or Codex call the API against your development instance while you build. The docs publish llms.txt and a raw markdown twin of every page, so an agent can read the reference the same way you do. The practical effect is that the first payout in development is usually a day of work, and most of that day is your own ledger and UI, not the API.

## What to do next

Create a development instance, run the six steps above against testnet, and force a `failed` and a `refunded` payout with the sentinel amounts before you write a line of production code. Then read [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) to check that the provider you are integrating clears the bar on pre-funding, compliance, and pricing, or go straight to the [payout quickstart](/docs/quickstart-payout).

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

---

Source: https://blindpay.com/resources/more/stablecoin-api-vs-traditional-cross-border-rails

---
title: "Stablecoin API vs traditional cross-border rails: a plain-English guide for payments teams"
seoTitle: "Stablecoin API vs traditional cross-border rails: a plain-English guide for payments teams"
description: "A stablecoin API moves money across borders using dollar-pegged tokens like USDC instead of correspondent banks. How the flow works, what no pre-funding means, and a side-by-side table against SWIFT."
date: "2026-09-17"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is a stablecoin API the same as a crypto payment gateway?"
    a: "No. A crypto payment gateway lets a merchant accept crypto at checkout and usually settles the merchant in crypto or fiat. A stablecoin API is business-to-business money movement infrastructure: it converts fiat to a stablecoin, moves it across borders, and pays out in local currency. The customer on either end typically never touches a token."
  - q: "Do I need to hold crypto to use a stablecoin API?"
    a: "No. You can fund a transfer with a bank deposit into a virtual USD account and the provider converts it to USDC or USDT in the middle. If you already hold stablecoins in a treasury wallet, you can send those instead. Either way the receiver gets local currency in a bank account."
  - q: "How fast is a stablecoin API compared to a SWIFT wire?"
    a: "A SWIFT wire takes one to five business days depending on the corridor and how many correspondent banks sit in the chain. A stablecoin transfer settles on-chain in seconds to minutes, and the local payout leg then runs at the speed of the local rail: seconds on Pix in Brazil or SPEI in Mexico, same day to next day on ACH in the United States."
  - q: "What does no pre-funding mean for a stablecoin API?"
    a: "It means you do not need to park capital in a local bank account in each destination country before you can pay someone there. You fund each transfer at the moment you send it, and the provider converts and delivers on demand. Traditional payout providers usually require pre-funded balances per currency."
  - q: "Which companies offer a stablecoin API?"
    a: "BlindPay offers stablecoin payouts and collections into local currency over Pix, SPEI, ACH, and SWIFT (POBO/COBO), with compliance handled inside the API and no pre-funding required. Circle offers issuer-level USDC infrastructure. Bridge, a Stripe company, offers stablecoin orchestration inside the Stripe ecosystem. Fireblocks offers custody and wallet infrastructure."
---

A stablecoin API is a set of developer tools that lets a company move money using dollar-pegged tokens such as USDC instead of, or alongside, traditional bank rails. A business calls the API to send or collect a payment, and the provider handles the conversion between fiat and stablecoin, the cross-border transfer, and the payout into a local bank account.

The reason payments teams care is simple. A cross-border transfer over SWIFT passes through a chain of correspondent banks, takes one to five business days, and usually requires you to hold pre-funded balances in every country you pay into. A stablecoin transfer settles in minutes, runs 24 hours a day, and funds each payment at the moment you send it.

This guide explains how the flow works, what "no pre-funding" actually changes, and where a stablecoin API is and is not a better fit than the rails you use today. For a shorter definition of the category, start with [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api).

## How does a stablecoin API move money?

Every cross-border payment through a stablecoin API follows the same four steps. The stablecoin leg sits in the middle and is invisible to the people on either end.

1. **Fiat in.** Your business funds the transfer with a bank deposit. With a provider like BlindPay this lands in a virtual USD account, a dedicated account number that accepts ACH or SWIFT deposits. If you already hold stablecoins, you skip this step and send from your own wallet.
2. **Conversion to a stablecoin.** The provider converts the deposit to a stablecoin such as USDC or USDT at a quoted rate. You see the rate, the fee, and the exact amount the receiver will get before you commit.
3. **Cross-border transfer.** The stablecoin moves on a public blockchain to the provider's settlement wallet in the destination market. This step takes seconds to a few minutes and works on weekends and holidays.
4. **Payout in local currency.** The provider converts the stablecoin to local currency and delivers it over the local rail. That is Pix in Brazil, SPEI in Mexico, ACH in the United States, or a SWIFT payment on behalf of your business (POBO) where no local rail is available. The receiver sees reais, pesos, or dollars land in a normal bank account.

The whole path is exposed as code. Instead of wiring a payment and waiting for a confirmation email, your system creates a quote, creates a payout, and listens for a webhook that says the money arrived.

## Why do fintech and payments companies use one?

The honest answer is not "faster and cheaper", even though both are usually true. It is that traditional cross-border rails have structural defects that every company moving money pays for, whether or not the finance team has named them: multiple intermediaries, capital trapped in pre-funded accounts per market, liquidity fragmented by jurisdiction, settlement that stops on weekends, and reconciliation across ledgers that do not agree. A stablecoin API replaces that architecture with one settlement asset, one transaction record, and one integration. Three consequences show up in almost every conversation with a team switching part of its volume.

**Speed that matches the product.** A payroll platform paying contractors in Brazil, a marketplace paying sellers in Mexico, or a fintech settling with a supplier in Argentina cannot tell users to wait three days for a wire. Stablecoin settlement moves the payment from days to minutes, and the local rail finishes the last mile in seconds.

**Cost you can see.** A SWIFT wire carries a sending fee, one or more correspondent bank fees deducted along the way, a receiving fee, and an FX spread that is usually not itemized. A stablecoin API quotes one rate and one fee before the payment moves, so the receive amount is known up front.

**Coverage without a nostro account per country.** Opening local accounts in five countries means five banking relationships, five compliance programs, and capital locked in each one. A stablecoin API gives you the local rails through one integration, under the provider's licenses.

Providers approach this from different angles. [BlindPay](/global-payments) focuses on the payout and collection: stablecoin in, local currency out over Pix, SPEI, ACH, or SWIFT (POBO/COBO), with compliance handled in the API. [Circle](https://www.circle.com) issues USDC and runs the infrastructure for the dollar leg. [Bridge](https://www.bridge.xyz), a Stripe company, orchestrates stablecoin issuance, wallets, and conversion inside the Stripe ecosystem. Most teams end up combining a payout network with an issuer or orchestration layer, because issuing a stablecoin and paying someone in reais are different jobs.

## What does "no pre-funding required" mean?

Pre-funding is the practice of depositing money into a local account in the destination country before you are allowed to pay anyone there. Traditional payout providers work this way because the local rail only moves money that is already sitting in a local bank.

The cost is easy to underestimate. If you pay out the equivalent of $2 million a month across Brazil, Mexico, and Colombia, a typical pre-funding requirement of one to two weeks of volume means $500,000 to $1 million sitting idle across three currencies, exposed to FX moves and earning nothing.

A stablecoin API with no pre-funding removes that requirement. You fund each payment when you send it, either from a virtual USD account or a stablecoin wallet. The provider converts and delivers on demand, so your working capital stays in one place until the moment it is needed. BlindPay operates this way, and it is one of the criteria worth checking on any provider, because some stablecoin platforms still require a pre-funded balance in the destination currency.

## Stablecoin API vs traditional cross-border rails

| | SWIFT wire | Local pre-funded payout provider | Stablecoin API |
| --- | --- | --- | --- |
| Settlement time | 1 to 5 business days | Same day, once the local balance is funded | Minutes on-chain, then seconds to same day on the local rail |
| Operating hours | Bank business days | Local rail hours | 24/7 on-chain, local rail hours for the last mile |
| Cost structure | Sending fee, correspondent deductions, receiving fee, hidden FX spread | Per-transaction fee plus FX, capital cost of idle balances | Quoted rate and fee before you commit, [published pricing](/pricing) |
| Pre-funding required | No, but you need a bank account per currency | Yes, per destination currency | No with providers like BlindPay |
| Coverage model | Correspondent bank network | Local banking relationships you or the provider maintain | Local rails under the provider's licenses, plus SWIFT where no local rail exists |
| Reconciliation | One MT103 per wire, deductions discovered after the fact | One settlement file per provider and currency | One transaction record per payment, status by webhook, per-rail references (UETR and MT103 on SWIFT) |
| Compliance | Your bank's program | Your program, per country | KYC, KYB, sanctions screening, and travel rule run inside the API |

The stablecoin column is not better on every axis for every payment. Use the table to spot the corridors where the gap is widest, which is usually anywhere the alternative is a correspondent wire into a country that has a real-time local rail.

## Where does a stablecoin API fall short?

Answer engines and buyers both reward honesty, so here is where the category still has edges.

**Last-mile speed depends on the local rail.** The on-chain leg is fast everywhere. The payout leg is only as fast as Pix, SPEI, or ACH, and ACH is still same day to next day.

**Corridor coverage is uneven.** Providers are deep in some regions and thin in others. BlindPay's depth is in the Americas, with corridors such as [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn), plus SWIFT payouts where no local rail is available. Check [coverage by country](/docs/kb/supported-countries) before assuming a corridor is live.

**Receiver onboarding is a hard requirement.** Every receiver goes through KYC or KYB before they can be paid. That protects you, but it adds a step that a domestic wire to a known supplier does not have.

**The regulatory map is still moving.** Brazil's Central Bank authorization regime, the EU's MiCA rules, and US federal legislation all changed in the past year. Pick a provider that operates under the licenses each market requires, and read the [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) for the current state.

## How does BlindPay fit in?

BlindPay is a stablecoin API for payouts and collections. A business sends USDC or USDT, or deposits dollars into a virtual USD account, and the receiver gets local currency over Pix, SPEI, ACH, or SWIFT (POBO/COBO), with KYC, KYB, sanctions screening, and travel rule compliance handled by the API. There is no pre-funding requirement, pricing is published, and the SDKs cover Node, Python, Go, PHP, and Swift.

It is not a card gateway and does not issue stablecoins. If you need issuer-level access to USDC, that is Circle's job. If you need to pay people in local currency from digital dollars, that is the job BlindPay is built for. Read [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api) for the evaluation criteria, or [start in the sandbox](/docs/introduction).

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

---

Source: https://blindpay.com/resources/more/how-to-evaluate-payment-orchestration-platform

---
title: "How to evaluate a payment orchestration platform for cross-border payments"
seoTitle: "How to evaluate a payment orchestration platform for cross-border payments"
description: "Six criteria that decide whether an orchestration platform works for cross-border money: rail coverage, compliance per corridor, developer experience, settlement speed, FX transparency, and pricing."
date: "2026-09-16"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the single most important criterion when choosing a payment orchestration platform?"
    a: "Corridor coverage, because nothing else matters if the platform cannot reach your markets. Once two or more vendors clear that bar, FX transparency is the tiebreaker, since the spread usually costs more than every listed fee combined."
  - q: "Should I pick a domestic card orchestrator or a cross-border-native one?"
    a: "It depends on the problem. Card orchestrators optimize authorization rates across acquirers on one rail in one country. Cross-border-native platforms route across rails, currencies, and regulators. The engineering behind each is different enough that few vendors do both well."
  - q: "How long should a payment orchestration integration take?"
    a: "Sandbox on day one, a first test payout within the week, and production traffic in two to four weeks. If the vendor's answer starts with a scheduled call and a PDF, expect months."
  - q: "How do I compare pricing across orchestration vendors fairly?"
    a: "Run the same payment through each vendor's quote and compare the amount the receiver actually gets. Listed fees are comparable across vendors, but FX spreads are where the real difference sits and they are often not disclosed."
---

Evaluating a payment orchestration platform for cross-border payments comes down to six things: which rails and corridors it reaches, whose compliance program covers each corridor, how good the developer experience is, how fast money settles and whether you have to pre-fund it, how transparent the FX is, and what it costs all-in.

Run every vendor through the same six. The ones that fail usually fail on the same two: corridor coverage and FX transparency.

## 1. Rail and corridor coverage

Coverage is the first filter because nothing downstream matters if the platform cannot reach your markets. Check the specific pairs you send, not the marketing count of supported countries.

Look for depth on three rail types: SWIFT for the corridors that still demand a wire, local rails for the last mile (Pix in Brazil, SPEI in Mexico, SEPA in the euro area, ACH in the US), and stablecoin settlement for the corridors where correspondent chains are long and slow.

Ask:

- Which exact currency pairs and destination rails do you support today, in production, not on the roadmap?
- What is the maximum single payout size per corridor, and what happens above it?
- When a rail is down, what is the documented fallback, and has it been exercised?

A vendor strong in Europe may not deliver over Pix or SPEI at all. Coverage maps are marketing until you test a corridor in the sandbox.

## 2. Compliance coverage per corridor

The question is not whether a platform "handles compliance". It is who holds the regulatory relationship in each corridor and where the checks run.

Ask:

- Who runs KYC and [KYB](/resources/more/what-is-kyb) on receivers, you or the platform, and which licenses or agent relationships back that in each market?
- Do sanctions screening and transaction monitoring run before funds move, or after?
- How do you handle corridor-specific rules: Brazil's Central Bank Resolutions 519 through 521, MiCA in the EU, the GENIUS Act and Treasury rulemaking in the US?

If the answer to the first is "you do", the integration is far larger than the API docs suggest, and you are building a compliance program, not connecting to one. Screening that runs before funds move blocks a payment while the money is still yours. Screening that runs after freezes money already in flight. Our notes on [real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) and the [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) go deeper.

## 3. Developer experience

Payment code is the code you debug at 2am during a payout run. Documentation quality is a proxy for how the rest of the platform is built.

Ask:

- Is there a public sandbox with realistic test data, reachable today without a sales call?
- Is there an OpenAPI spec, a real API reference with request and response examples, and SDKs for the languages we use?
- Do webhooks cover every state transition, and are money-moving endpoints idempotent?

Error semantics are the tell. A production-grade platform surfaces every failure as a typed state you can branch on: receiver failed sanctions screening, Pix key name does not match the payout name, payout held pending a compliance information request. A weak one returns a 500 and an email address. You will hit all three of those cases in your first quarter.

## 4. Settlement speed and pre-funding

Speed and working capital are the same question asked twice.

Ask:

- How long from API call to funds credited in the recipient's account, per corridor, including the local leg?
- Do we need to pre-fund local accounts to hit that speed, and if so, how much?
- What are the cut-off times, and does the rail run on weekends?

Pre-funding is the cost nobody puts on the invoice. Holding two weeks of payout volume in three countries is millions of dollars of dead capital plus continuous FX exposure. A platform that settles at payout time removes that line entirely, which is the operational case for [stablecoin settlement inside an orchestration strategy](/resources/more/stablecoin-payment-orchestration-cross-border-payouts).

Also confirm what "settled" means on each rail. On-chain transfers are final on confirmation. Pix is final in seconds. ACH debits can be returned for days. Treating those as equivalent is how reconciliation breaks. See the [settlement finality guide](/resources/more/stablecoin-api-sla-settlement-finality).

## 5. FX transparency

This is where the money is, and where most vendors are quietest.

Ask:

- Does the API return the exact rate, fee, and receive amount before we commit funds, and is that quote binding for a defined window?
- What is the spread against mid-market, stated as a number, per corridor?
- Are the FX spread and the transaction fee itemized separately, or blended into one rate?

A "no fees" pitch with a 3 percent spread is more expensive than a flat $2 fee on a 0.5 percent spread. On a $100,000 payout that is $3,000 in FX against about $502 all-in. Same payment, same day, and only one of them is advertised as free.

Indicative quotes are the other trap. Indicative means the provider fills at whatever the book gives it and the receiver may get less than you were shown. Binding quotes are the standard to hold vendors to, for the reasons in [on/off-ramp liquidity and live quotes](/resources/more/on-off-ramp-liquidity-live-quotes).

## 6. Pricing model

Three components, and you need all three to compare anything: per-transaction fees (flat, percentage, or both), the FX spread, and fixed costs like monthly minimums or committed volume tiers.

Ask:

- Is pricing published, or does it require a sales call?
- Are there minimums, platform fees, or volume commitments?
- Run our ten most common payments through your quote API: what does the receiver actually get?

That last question is the only fair comparison. Flat fees favor large transfers, percentages favor small ones, and the spread swamps both at volume. [BlindPay publishes pricing](/pricing), and the [pricing explainer](/resources/more/stablecoin-api-pricing-explained) walks through why a blended rate hides the number you need.

## Domestic card orchestrators vs cross-border-native platforms

These get lumped together and they solve different problems.

**Domestic card orchestrators** route between acquirers to lift authorization rates. The transaction stays on one rail, in one currency, under one regulator. Success is measured in approval percentage points, and the engineering is about retry logic, network tokens, and issuer behavior. Real work, useful product, wrong tool for cross-border payouts. The [orchestration vs gateway breakdown](/resources/more/payment-orchestration-vs-payment-gateway) covers where that line sits.

**Cross-border-native platforms** route across rails that do not share a currency, a settlement time, or a regulator. Success is measured in delivery time, all-in cost, and how many corridors you can open without a new banking relationship. The engineering is about FX execution, per-corridor compliance, local rail integrations, and reconciliation across incompatible settlement models.

A platform built for acquirer routing can add a payout API. It will not have the licensing depth, the local rail integrations, or the FX machinery, and you find that out in the corridors that matter most. Judge on the criteria above, not the category label.

## Summary checklist

| Criterion | Why it matters | Question to ask |
| --- | --- | --- |
| Rail and corridor coverage | Nothing else matters if it cannot reach your markets | Which exact pairs are live in production today, and what is the documented fallback per rail? |
| Compliance per corridor | Determines whether you connect to a program or build one | Who holds the license in each market, and do checks run before funds move? |
| Developer experience | Error semantics decide your 2am debugging | Is there a public sandbox, an OpenAPI spec, and a typed error for every failure mode? |
| Settlement and pre-funding | Pre-funding is dead capital plus FX exposure | How much do we hold locally to hit your quoted speed? |
| FX transparency | The spread usually costs more than every fee combined | Is the quote binding, and are spread and fee itemized separately? |
| Pricing model | Only the receive amount is comparable across vendors | Run our ten typical payments: what does the receiver actually get? |

## What to do next

Pick your three highest-volume corridors. Send the same six questions to every vendor on your list, in writing, and run ten real payments through each sandbox. Compare on one number: what the receiver gets, and how long it took.

The vendors that cannot give you that number in an API response are telling you something. [See coverage by country](/docs/kb/supported-countries), read [what payment orchestration is](/resources/more/what-is-payment-orchestration) for the layers behind these criteria, or [start in the sandbox](https://blindpay.com/docs/introduction).

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

---

Source: https://blindpay.com/resources/more/payment-orchestration-vs-payment-gateway

---
title: "Payment orchestration vs payment gateway: what's the difference?"
seoTitle: "Payment orchestration vs payment gateway: what's the difference?"
description: "A gateway connects you to one processor. An orchestration platform connects to many rails and picks the best path per transaction. The table, the triggers, and a worked USD to BRL example."
date: "2026-09-16"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Is a payment orchestration platform just a gateway with more integrations?"
    a: "No. The difference is the decision, not the count. A gateway passes a transaction to a fixed destination. An orchestration platform evaluates cost, speed, corridor rules, and provider health, then chooses the path for that specific transaction."
  - q: "Can I use both a gateway and an orchestration platform?"
    a: "Yes, and most companies do. Orchestration sits in front of your existing providers, so your card gateway keeps handling card acceptance while the orchestration layer handles cross-border payouts and settlement."
  - q: "Does orchestration make payments slower by adding a hop?"
    a: "No. The routing decision takes milliseconds and happens before any money moves. The rail it picks is what determines speed, and routing to a 24/7 local rail instead of a SWIFT wire usually takes days off the delivery time."
  - q: "When is a gateway genuinely the better choice?"
    a: "One country, one currency, one rail, and no requirement to fail over. At that shape, an orchestration layer adds configuration surface you will not use and a vendor you do not need."
---

A payment gateway connects you to one processor and passes transactions through it on a fixed path. A payment orchestration platform connects to many providers and rails and actively decides, per transaction, which path to take based on cost, speed, corridor rules, and whether the provider is healthy right now.

The difference is the decision. Everything else follows from it.

## The comparison table

| | Payment gateway | Payment orchestration |
| --- | --- | --- |
| What it connects to | One processor or acquirer | Many providers, banks, and rails |
| Routing decisions | None, the path is fixed at integration time | Per transaction, on cost, speed, corridor, and provider health |
| FX handling | The processor's rate, usually blended into one number | Quoted per transaction, spread and fee itemized separately |
| Compliance scope | The processor's program, opaque to you | Screening runs in the routing path, rules vary per corridor |
| Failover behavior | Manual. A rail outage is your outage | Automatic to a secondary rail or provider |
| Reconciliation | One settlement file, one format | Normalized across every provider into one model |
| Adding a country | A new integration and a new error vocabulary | A routing rule |

## When do you only need a gateway?

Plenty of businesses never need orchestration, and vendors who pretend otherwise are wasting your engineering time.

Stay on a gateway when you sell in one country, settle in one currency, use one rail, and can tolerate the rail being down for a few hours. A Brazilian SaaS charging Brazilian customers in reais over Pix does not need a routing engine. It needs one good Pix integration.

The economics agree. A second integration costs weeks of engineering plus ongoing maintenance for every error code, webhook, and reconciliation format it brings with it. If the second rail is not earning that back in coverage, cost, or uptime, do not add it.

## When do you need orchestration?

Concrete triggers, in the order teams usually hit them.

**You operate in two or more countries.** The moment your provider's coverage map stops at a border, you are either turning away business or integrating a second provider. The second integration is where the normalization cost shows up.

**You need fallback when a rail fails.** Every rail fails. Pix has had outages. SPEI has had outages. Correspondent banks hold wires without telling anyone. If a rail going down means payouts stop, you have concentration risk, not a payment system.

**You settle in local currencies.** Multi-currency turns FX from a footnote into a line item. Once you are converting at volume, a half-point of spread across corridors is real money, and you need per-transaction visibility to find it.

**You cannot answer "what did that payout cost".** If the true all-in cost of a payment, including spread, is not available per transaction, your unit economics are a guess.

**Your compliance requirements differ by corridor.** A payout into Brazil sits under Central Bank Resolutions 519 through 521. One into the EU sits under MiCA. A gateway built for one market does not model that.

Any one trigger justifies the look. Two or more and you are already paying the cost of orchestration, just in engineering hours instead of vendor fees.

## Worked example: $25,000 from the US to Brazil

Same payment, three paths. Numbers are typical ranges for a corporate payer, not a quote.

**SWIFT wire.** Sending bank charges $25 to $50. One or two correspondent banks deduct $10 to $30 each, and nobody tells you in advance. The receiving bank in Brazil applies its own FX rate, commonly 2 to 5 percent off mid-market for a corporate receiver, and charges a landing fee. Total cost lands somewhere around $650 to $1,350. Delivery is 1 to 5 business days, longer if screening flags it. Send on Friday afternoon and the supplier has money Tuesday or Wednesday.

**Local Pix payout, pre-funded.** You keep a BRL balance in a Brazilian account and pay out of it. Delivery is seconds, 24/7, and the payout fee is small. The cost that does not appear on the invoice is the working capital parked in that account, plus whatever you paid in spread to get it there, plus the FX risk of holding reais.

**Stablecoin bridge into Pix.** Dollars convert to USDC, USDC moves on-chain in seconds, converts to reais at a rate you saw before committing, and delivers over Pix. All-in cost is typically a sub-percent spread plus a small flat fee, so roughly $150 to $250 on $25,000. Delivery is minutes, any hour, any day. No local balance to pre-fund, which is the [working-capital argument for stablecoin settlement](/resources/more/stablecoin-payment-orchestration-cross-border-payouts).

The point is not that one path always wins. It is that a gateway picks for you at integration time and an orchestration layer picks per transaction. If that same supplier demands an MT103 next quarter, the orchestration path sends a wire through the same API and returns the document. The [full stablecoin vs SWIFT breakdown](/resources/more/stablecoin-vs-swift-b2b-payments) has the corridor-level numbers, and the [USDC to BRL route guide](/resources/more/usdc-to-brl-routes-2026) has timings per path.

## What does orchestration cost you in complexity?

The honest tradeoff, since nobody selling orchestration leads with it.

You gain a vendor between your app and your money. You gain routing configuration that can be wrong, which means a bad rule can send payments down an expensive path silently. You gain a dependency whose coverage map now bounds yours.

You mitigate all three the same way: pick a platform that shows you the chosen path and the itemized cost on every transaction, and that lets you pin a corridor to a specific rail when you want to override the router. If a vendor cannot tell you why it routed a payment the way it did, that is not orchestration, that is a black box with a nicer API.

## Where BlindPay sits

[BlindPay](/global-payments) is a cross-border orchestration layer built on stablecoin settlement. One API covers payouts over Pix, SPEI, SEPA, ACH, and SWIFT (POBO/COBO) across a 100+ country network, collections through [virtual US accounts](/virtual-accounts) that settle as stablecoins, [SWIFT POBO and COBO](/pobo-cobo-swift) with UETR tracking and MT103 confirmations when the receiver requires bank paperwork, and KYC, KYB, and sanctions screening inside the routing path rather than bolted beside it.

Quotes are live and itemized: you see the spread and the flat fee separately before you commit, and [pricing is public](/pricing) without a sales call.

That is one option among several. The [evaluation checklist](/resources/more/how-to-evaluate-payment-orchestration-platform) gives you the criteria to judge any vendor, including this one.

## What to do next

Count your payment provider integrations. If the answer is one and you operate in one country, stop reading and go build something else. If the answer is two or more, list the corridors each one covers and the all-in cost per corridor. The gaps and the overlaps are your orchestration case, in numbers your CFO can check.

Start with [what payment orchestration is](/resources/more/what-is-payment-orchestration) if the layers are new, or [see coverage by country](/docs/kb/supported-countries).

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

---

Source: https://blindpay.com/resources/more/stablecoin-payment-orchestration-cross-border-payouts

---
title: "How stablecoins fit into payment orchestration for cross-border payouts"
seoTitle: "How stablecoins fit into payment orchestration for cross-border payouts"
description: "Stablecoins are a settlement rail inside an orchestration strategy, not a replacement for banking. What changes: pre-funding, settlement time, FX visibility, and last-mile delivery over Pix and SPEI."
date: "2026-09-16"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is stablecoin settlement instant?"
    a: "The on-chain leg settles in seconds to a couple of minutes depending on the network. The full payout is as fast as the local rail at the end of it: seconds over Pix or SPEI, same business day over ACH, longer where the local rail is slower."
  - q: "How is compliance handled for stablecoin payouts?"
    a: "The same way it is for any regulated payout, and it runs before money moves. KYC on individual receivers, KYB on businesses, sanctions screening on both sides, transaction monitoring, and travel rule data exchange where the corridor requires it."
  - q: "Do recipients need a crypto wallet?"
    a: "No. In a payout flow the recipient gives you a bank account and receives local currency in it. The stablecoin is the settlement layer in the middle and never touches the recipient's experience."
  - q: "What happens if the stablecoin depegs mid-transfer?"
    a: "Exposure is measured in minutes, not days, because the asset is held only for the duration of the transfer. The larger risk in practice is off-ramp liquidity at payout time, which is why a locked quote before you commit matters more than the peg itself."
---

Stablecoins are a settlement rail inside a [payment orchestration](/resources/more/what-is-payment-orchestration) strategy, not a replacement for banking. In a cross-border payout, the orchestration layer converts your dollars to USDC or USDT, moves that value on-chain in seconds, converts it to local currency at a quoted rate, and delivers it over the destination country's own rail, such as Pix in Brazil or SPEI in Mexico.

The recipient gets local currency in their bank account. They never see a wallet, a token, or a chain. That invisibility is the whole design.

## What actually hurts about cross-border payouts

Three problems, and stablecoin settlement addresses a different mechanism in each.

**Pre-funding.** The only way to pay fast in a local market over traditional rails is to keep money there already. A local bank account in Brazil, funded in reais, drawn down as you pay. That capital is dead. It also carries FX risk, because you bought reais at one rate and will pay out over weeks at others.

**Multi-day settlement.** A SWIFT wire is a message, not a movement. It passes through one or two correspondent banks, each updating its own ledger and taking its own fee. SWIFT gpi data says 92 percent reach the beneficiary bank within 24 hours, which is true and also not the number you care about. Reaching the bank is not being available to the recipient. Screening at the receiving bank adds a business day in most emerging-market corridors.

**Opaque FX.** The receiving bank applies its own rate, typically 2 to 5 percent off mid-market for a corporate receiver. You find out what it was when the supplier emails to say the invoice came in short.

## How does stablecoin settlement change each one?

**Pre-funding goes away.** Value moves at payout time. There is no local balance to fund in advance, so the float stays in your treasury instead of sitting in a Brazilian bank earning nothing.

**Settlement collapses to minutes.** The on-chain leg is seconds. The local leg is whatever the destination rail does, and Pix and SPEI both run 24/7. A payout sent at 11pm on a Saturday lands at 11pm on a Saturday.

**FX becomes a quote.** You see the rate and the fee before you commit funds, with the spread itemized separately from the flat fee rather than blended into one number you cannot decompose.

What does not change: compliance, licensing, and the fact that the last mile is still a bank account. Anyone pitching stablecoins as a way around those is pitching a problem, not a product.

## Why does "no pre-funding" change your working capital?

This is the part finance cares about and engineering usually skips.

Take a marketplace paying out $2M a month into Brazil, on weekly cycles. Same total volume, two operating models.

**Before, with a pre-funded local account.** To pay reliably you hold roughly two weeks of payout volume as a buffer, so about $1M sits in a BRL account at all times. You bought those reais at some rate and you are exposed to every move until you spend them. Topping the account up means a wire, which means 1 to 5 days of lead time, which means the buffer has to be big enough to cover the lag. If you expand to Mexico and Colombia, you do it again per country. Three countries, three buffers, roughly $2M to $3M of working capital doing nothing but waiting.

**After, with stablecoin settlement.** You fund each payout run when you run it. There is no per-country buffer, because the rail does not require a local balance to draw from. That $1M to $3M goes back into the business, and the FX exposure shrinks from weeks to the length of a transfer.

The second-order effect is the one that compounds: adding a country stops being a treasury project. No local banking relationship to open, no buffer to size, no additional currency position to manage. It becomes a routing rule.

## Why do on/off-ramp liquidity and live quotes decide the outcome?

Stablecoin settlement is only as good as the last mile, and the last mile is an off-ramp: someone in Brazil converting USDC to reais and pushing a Pix transfer. That conversion needs real liquidity at the moment you need it, in the size you need.

This is where providers diverge and where indicative pricing quietly costs you money. An indicative rate is an estimate. You commit funds, the off-ramp fills at whatever the book gives it, and the receiver gets less than the quote. On small payouts you never notice. On a $500,000 payroll run it is a conversation with your CFO.

A live quote is different. It is a rate the provider will honor for a defined window, so the amount in the quote is the amount that lands. The test is simple: does the API return the exact rate, fee, and receive amount before you commit, and is that number binding?

Ask the other liquidity questions too. What is the largest single payout the corridor supports. What happens at month-end when everyone pays at once. Is there a fallback when the primary off-ramp is thin. We cover the full set in [on/off-ramp liquidity and live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) and [how to choose an on/off-ramp provider](/resources/more/how-to-choose-on-off-ramp-provider).

## What the real corridors look like

**US to Brazil.** USD converts to USDC, settles on-chain, converts to BRL, delivers over Pix. Pix runs 24/7 and credits in seconds. The payout requires the recipient's Pix key or full bank details plus a CPF or CNPJ, and the registered name has to match the payout name or the rail rejects it. That rejection is routine and should arrive as a typed webhook, not a support email. Route-level detail in the [USDC to BRL guide](/resources/more/usdc-to-brl-routes-2026).

**US to Mexico.** Same shape, delivering over SPEI to a CLABE account. SPEI settles in seconds during banking hours and continues to operate outside them. See the [USDC to MXN guide](/resources/more/usdc-to-mxn-routes-2026).

Both beat a wire on speed by days and on cost by a factor that grows with volume. Both still fail on bad receiver data, which is why receiver verification belongs before the on-chain transfer, not after. An on-chain transfer is final once confirmed. Your recall window is the pre-check. That is the honest tradeoff, and we wrote it up in [are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible).

## Where does compliance sit in a stablecoin payout?

Inside the flow, running before money moves.

KYC on individual receivers, [KYB](/resources/more/what-is-kyb) on business receivers, sanctions screening on both sides, ongoing transaction monitoring, and travel rule data exchange where the corridor requires it. On a wire these checks happen inside each bank in the chain, invisibly, and a hit freezes money that is already in flight. On a stablecoin payout through a licensed provider, a screening hit blocks the payout and returns an error while your funds are still yours.

The rules are corridor-specific and moving. Brazil licenses virtual asset service providers under Central Bank Resolutions 519 through 521, effective February 2026. The EU has MiCA. The US has the GENIUS Act with Treasury rulemaking in progress. The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) is where we keep the current state.

## Where stablecoin settlement is the wrong call

It is not the right rail for everything, and orchestration only works if you are honest about that.

Large treasury transfers between two G10 banks: use SWIFT. The wire is fine, the counterparty expects it, and 24 hours costs nothing. Corridors where the local off-ramp has thin liquidity: the quote will show it, and a wire may simply be better. Receivers whose finance team requires an MT103 for their own audit: send the wire, ideally through the same API so you keep one reconciliation model. [SWIFT POBO and COBO](/pobo-cobo-swift) exists for exactly that case.

A good orchestration layer routes to stablecoins where they win and to a bank rail where they do not. Rail choice is a per-transaction decision, not an identity. That routing decision is the whole difference between an orchestration platform and [a plain payment gateway](/resources/more/payment-orchestration-vs-payment-gateway).

## What to do next

Pull your last quarter of cross-border payouts. For each corridor, write down three numbers: the working capital you hold locally to service it, the average time from instruction to funds landing, and the total cost including FX spread. Then get a live quote for the same volumes over a stablecoin route.

If the working capital number is large and the cost number is above one percent, the stablecoin path is worth a sandbox week. [See coverage by country](/docs/kb/supported-countries), read the [orchestration evaluation checklist](/resources/more/how-to-evaluate-payment-orchestration-platform), or [start in the sandbox](https://blindpay.com/docs/introduction).

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

---

Source: https://blindpay.com/resources/more/what-is-payment-orchestration

---
title: "What is payment orchestration? The routing layer, explained"
seoTitle: "What is payment orchestration? The routing layer, explained"
description: "Payment orchestration is the routing layer between your app and every processor, bank, and rail you use. The five layers, how stablecoin settlement fits, and how it differs from a gateway."
date: "2026-09-16"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Is payment orchestration the same as a payment gateway?"
    a: "No. A gateway connects you to one processor and passes transactions through it. An orchestration platform connects to many providers and rails and decides per transaction which one to use, how to handle FX, and which compliance checks to run."
  - q: "Do I need payment orchestration if I only operate in one country?"
    a: "Usually not. One country, one currency, one rail is a gateway problem. Orchestration starts paying for itself when you have two or more countries, two or more rails, or a need to fail over when a provider goes down."
  - q: "How does stablecoin settlement change payment orchestration?"
    a: "It adds a rail that settles in minutes, 24/7, without pre-funding local accounts. The orchestration layer can route a payout over a stablecoin bridge into a local rail like Pix or SPEI instead of sending a SWIFT wire and waiting days for it to land."
  - q: "What does a payment orchestration platform cost?"
    a: "Pricing is usually a flat fee per transaction, a percentage, or both, plus the FX spread on any currency conversion. The spread is where most of the real cost sits, so compare the total amount the receiver gets, not the advertised fee."
  - q: "Does orchestration replace my existing processors?"
    a: "No. It sits in front of them. You keep the provider relationships that work and the orchestration layer normalizes them behind one API, which also makes swapping one out a config change instead of a rebuild."
---

Payment orchestration is the routing and operations layer that sits between your application and the payment processors, banks, and rails you use. Instead of integrating one processor and living inside its coverage map, you integrate one orchestration API, and it decides per transaction which rail to use, how to execute FX, which compliance checks to run, and how to reconcile settlement.

For cross-border money specifically, that means picking between SWIFT, local rails like Pix, SPEI, and SEPA, and stablecoin settlement, based on cost, speed, and what each corridor actually allows.

That is a different problem from domestic card orchestration. Card orchestrators toggle between acquirers like Stripe and Adyen to lift authorization rates on the same rail in the same country. Cross-border orchestration routes across rails that do not share a currency, a settlement time, or a regulator. Harder problem, bigger payoff.

## What problem does payment orchestration actually solve?

Every payments team hits the same wall in the same order.

You launch with one processor. It works. Then you add a second country and the processor does not cover it, so you integrate a second provider with a different API, different error codes, different webhook shapes, and different reconciliation files. Then a rail goes down on a Friday and you have no fallback. Then finance asks why the same payout cost 0.4 percent in one corridor and 3 percent in another, and nobody can answer because the FX spread is buried inside each provider's rate.

Orchestration is the answer to that sprawl. One API shape, one set of statuses, one reconciliation model, and routing logic you can change without shipping code.

## Layer 1: API ingestion

The ingestion layer is the single interface your application talks to. One `create payout` call with a receiver, an amount, and a currency, regardless of whether the money will end up moving over Pix, SPEI, ACH, or SWIFT.

The work here is normalization. Provider A calls a failed payout `DECLINED`, provider B calls it `rejected`, and provider C returns HTTP 200 with an error object. The ingestion layer collapses all of that into one status vocabulary and one webhook contract, with idempotency keys so a retry never sends money twice.

Example: your code posts the same payout object for a contractor in São Paulo and a supplier in Monterrey. Nothing in your codebase knows that one settles over Pix and the other over SPEI.

## Layer 2: routing engine

The routing engine decides which path a given transaction takes. Inputs are the corridor, the amount, the currency pair, the speed you asked for, provider health, and cost.

A realistic rule set looks like this:

- USD to BRL under $50,000: settle in stablecoins, pay out over Pix.
- USD to BRL over $50,000 where the receiver requires an MT103: send a SWIFT wire.
- Any corridor where the primary provider is failing health checks: fail over to the secondary.
- Weekend payouts into Brazil or Mexico: prefer rails that run 24/7, because SWIFT does not.

The routing engine is what people mean when they say orchestration is more than a router. It is a router with a cost model and a liveness check attached.

## Layer 3: FX execution

Cross-border payments are FX trades with a delivery instruction stapled to them. The FX layer sources a rate, quotes it to you, holds it for a defined window, and executes the conversion when you commit.

Two things matter. The first is whether you see the rate before you commit funds, or find out after the receiver tells you the amount was short. The second is the spread against mid-market. A provider quoting "no fees" with a 3 percent spread is more expensive than one charging a flat $2 on a sub-percent spread, and on a $100,000 payment it is not close.

Example: a $100,000 USD to MXN payout at a 2.5 percent spread costs $2,500 in FX alone. At 0.5 percent it costs $500. Same payment, same day, same receiver.

## Layer 4: compliance screening

Compliance is a routing input, not a separate workflow. The orchestration layer runs KYC on individual receivers and [KYB](/resources/more/what-is-kyb) on business receivers, screens both against sanctions lists, monitors transactions for patterns, and exchanges travel rule data where the corridor requires it.

Doing this inside the routing path has a specific operational benefit: a receiver who fails screening gets blocked before any money moves, instead of after a correspondent bank freezes a wire that is already in flight. Fast, loud failure beats slow, quiet failure. Our note on [real-time transaction monitoring](/resources/more/real-time-transaction-monitoring-stablecoin-payments) covers what runs in-line versus after the fact.

Rules also differ per corridor. Brazil licenses virtual asset providers under Central Bank Resolutions 519 through 521. The EU has MiCA. The US has the GENIUS Act. The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) keeps score.

## Layer 5: settlement and reconciliation

The last layer answers the question finance actually asks: did the money land, how much of it, and against which invoice.

That means per-transaction status with webhooks on every state change, a settlement report per rail, and a reconciliation model that matches what you sent against what the receiver got, net of every fee and the FX spread. Without this layer you have a payment system that works and books that do not close.

Settlement finality also varies by rail, and treating them as equivalent is how teams get burned. An on-chain transfer is final once confirmed. A Pix transfer is final in seconds. An ACH debit can be returned for days. We break the differences down in the [settlement finality guide](/resources/more/stablecoin-api-sla-settlement-finality).

## How does stablecoin settlement fit as a rail?

The classic orchestration picture has two settlement options for cross-border money: SWIFT for the long haul, local ACH-style rails for the last mile. Stablecoin settlement adds a third, and it changes the middle of the flow rather than the ends.

A USD to BRL payout over a stablecoin bridge looks like this: dollars in, converted to USDC, USDC moves on-chain in seconds, converted to reais at a quoted rate, delivered over Pix to the recipient's bank account. The recipient never sees a wallet or a token. They see reais in their bank, usually within minutes, at 11pm on a Saturday if that is when you sent it.

Two operational properties matter more than the speed.

**No pre-funding.** The traditional way to pay fast in a local market is to park working capital in a local bank account and pay out of it. That capital is dead. Stablecoin settlement moves value at payout time, so the float stays in your treasury.

**Price certainty at execution.** A live quote tells you the exact rate and fee before you commit. [BlindPay](/global-payments) works this way: quote first, commit second, with the spread and the flat fee itemized separately rather than blended into one rate. The [on/off-ramp liquidity guide](/resources/more/on-off-ramp-liquidity-live-quotes) explains why that ordering matters at scale.

Stablecoins do not replace SWIFT, and any vendor telling you otherwise is selling. For a $50 million treasury transfer between two G10 banks, use the wire. For mid-sized payouts into Latin America, the stablecoin path is usually faster and cheaper by a wide margin. The full comparison lives in [stablecoins vs SWIFT](/resources/more/stablecoin-vs-swift-b2b-payments), and [how stablecoins fit into orchestration for cross-border payouts](/resources/more/stablecoin-payment-orchestration-cross-border-payouts) goes deeper on the mechanics.

## Payment orchestration vs payment gateway

| | Payment gateway | Payment orchestration |
| --- | --- | --- |
| Scope | One processor, one rail | Many providers and rails behind one API |
| Routing logic | None, the path is fixed | Per-transaction, by cost, speed, and provider health |
| FX handling | The processor's rate, usually blended | Quoted per transaction, spread itemized |
| Compliance | Handled by the processor, opaque to you | Screening runs in the routing path, per corridor |

If you want the longer version of this table with a decision framework, read [payment orchestration vs payment gateway](/resources/more/payment-orchestration-vs-payment-gateway).

## Do you need orchestration yet?

Three honest triggers.

You operate in two or more countries and are maintaining two or more provider integrations. You have had a rail go down with no fallback. You cannot state, per corridor, what a payout costs all-in.

Any one of those and orchestration pays for itself. None of them and a single gateway is the right call, and adding a routing layer is complexity you do not need yet.

## What to do next

Take last month's cross-border payouts. For each one, write down the rail, the total cost including the FX spread, and the time from API call to funds landing. If the answer varies by more than a point between corridors, or you cannot fill in a column, that gap is what orchestration closes.

Then price the same payouts through a live quote. [See coverage by country](/docs/kb/supported-countries), read [how to evaluate an orchestration platform](/resources/more/how-to-evaluate-payment-orchestration-platform), or [start in the sandbox](https://blindpay.com/docs/introduction).

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

---

Source: https://blindpay.com/resources/more/automated-kyc-kyb-vs-manual-onboarding

---
title: "Automated KYC/KYB vs. manual onboarding: what actually changes"
seoTitle: "Automated KYC/KYB vs. manual onboarding: what actually changes"
description: "A side-by-side comparison of automated and manual KYC/KYB for fintechs: onboarding time, false-positive rates, cost per verification, scaling across jurisdictions, and audit-trail quality, plus the cases where a human reviewer is still required."
date: "2026-09-15"
updated: "2026-09-15"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "Can automated KYC fully replace manual review?"
    a: "No. Automation handles the clean majority of cases end to end, but sanctions and PEP matches, document mismatches, complex ownership structures, and high-risk jurisdictions still need a human decision. A well-tuned program sends a small share of cases to review; a badly tuned one sends most of them."
  - q: "What is KYB and how is it different from KYC?"
    a: "KYC (Know Your Customer) verifies an individual: identity document, liveness, address, and screening. KYB (Know Your Business) verifies a company: registry status, good standing, ownership structure, and then KYC on each beneficial owner and controller. KYB always contains KYC; the reverse is not true."
  - q: "How long does automated business verification take?"
    a: "Minutes to same day when the registry is digital and ownership is simple, because the entity lookup, document checks, and owner screening run in parallel. Layered holding companies, trusts, or paper registries push it to several days because ownership has to be traced to real people by hand."
  - q: "What does automated KYC cost compared to manual review?"
    a: "Automated individual verification typically runs in the low single dollars per check at volume, while a manual review costs an analyst's time, usually tens of dollars per case once salary and tooling are counted. Business verification costs more in both models because of the ownership work."
  - q: "Does automated onboarding hold up in a regulatory examination?"
    a: "Yes, and often better than manual. Examiners ask for the inputs, the checks that ran, the decision, and who made it, for a sample of customers. An automated pipeline stores that as structured data; a manual program has to reconstruct it from emails and spreadsheets."
---

*Reading time: about 6 minutes.*

**Summary:** Automated KYC/KYB trades manual judgment on every case for speed, consistency, and scale, reserving humans for the cases the system cannot decide. Onboarding drops from days to minutes for most customers, cost per check falls sharply, and the audit trail becomes structured data instead of email threads.

That is the whole tradeoff in one line. The rest of this post is about what it looks like row by row, and where the "most customers" caveat bites.

## What is the difference between KYC and KYB?

Know Your Customer (KYC) verifies an individual before they can transact: identity document, liveness check, address, tax ID, and screening against sanctions and politically exposed person (PEP) lists.

Know Your Business (KYB) verifies a company. It confirms the entity exists and is active in the corporate registry, maps who owns and controls it, and then runs KYC on each beneficial owner. In the US, FinCEN's customer due diligence rule sets the ownership threshold at 25 percent, plus one individual with control.

So KYB is KYC plus an entity layer. A fintech paying contractors needs KYC. A fintech paying vendors, marketplaces, or corporate customers needs KYB, and inherits the KYC work for every owner. The [KYB explainer](/resources/more/what-is-kyb) covers the ownership rules in detail.

## What is manual onboarding?

Manual onboarding means an analyst reads the submitted documents, looks up the registry, runs the screening tool, decides, and writes it up. Every case gets human attention, which is the appeal.

It works until it doesn't. The queue grows linearly with signups, decisions vary by analyst, and the record of why a customer was approved lives in whatever the analyst wrote down that day.

## What is automated onboarding?

Automated onboarding turns the same checks into a pipeline: document extraction and authenticity, liveness and face match, registry lookup, ownership mapping, screening, and a risk score that decides between approve, reject, and hold for review. A clean case clears the pipeline without anyone opening it. A case with a screening hit or a data mismatch stops and waits for a person.

The step-by-step version of that pipeline is in the [KYC/KYB automation guide](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments).

## Automated vs. manual: the comparison

Figures are typical ranges observed across fintech onboarding programs, not guarantees for any specific vendor or company. Ranges marked with an asterisk vary widely with volume and jurisdiction.

| Dimension | Manual onboarding | Automated onboarding |
|---|---|---|
| Onboarding time, individual | Hours to 1-2 business days per case | Under a minute for a clean case; edge cases routed to review |
| Onboarding time, business (KYB) | 2-5 business days per entity, longer with layered ownership | Minutes to same day with digital registries and simple ownership; days for complex structures |
| Error and false-positive rate | Varies by analyst; inconsistent between reviewers, and fatigue raises misses at volume | Tunable per rule and measurable; poorly tuned name screening can make false positives the large majority of alerts* |
| Cost per verification | Tens of dollars per case in analyst time, more for KYB* | Low single dollars per individual check at volume; more for KYB with ownership lookups* |
| Scaling across jurisdictions | Each new country needs analysts who know its documents and registries | Each new country is a rule set and a registry integration; the pipeline is the same |
| Audit-trail quality | Emails, spreadsheets, screenshots; reconstructed on request | Structured log of inputs, checks, scores, decisions, and reviewer identity, queryable per customer |
| Consistency | Depends on who reviewed the case | Same inputs produce the same decision every time |

Two rows deserve a closer look.

**False positives.** Automation does not remove false positives; it makes them visible and tunable. Name screening is the classic source: "Mohammed Ali" against a global watchlist returns hundreds of matches unless date of birth and country are used to narrow it. A manual program has the same problem but hides it inside analyst time. An automated program reports it as a number, and that number is what compliance teams spend their first months driving down.

**Audit trail.** This is the row that decides examinations. FinCEN expects a money services business to show, for any customer, what was collected, what was checked, what the result was, and who signed off. An automated pipeline produces that record as a side effect. A manual program has to build it by hand, and usually after the fact.

## When is manual review still necessary?

Even a fully automated stack needs humans on a defined set of cases. The list below is what most programs route to review, and it lines up with the enhanced due diligence described in BlindPay's [AML policy statement](/aml-sanctions-policy-statement).

- **Sanctions and PEP matches.** OFAC compliance is strict liability, so a potential match is never auto-cleared. An analyst confirms or rejects it against the list entry's identifiers. A confirmed sanctions match ends the relationship; a PEP match changes the risk tier and, under some programs, is declined outright.
- **High-risk jurisdictions.** Customers or beneficial owners in countries on the FATF grey or black lists, or in jurisdictions the company's risk appetite excludes, get enhanced due diligence: source of funds, purpose of transactions, and often a call.
- **Complex ownership.** Trusts, nominee shareholders, ownership chains through multiple countries, or a registry that is not digitized. The system can flag that ownership does not resolve to individuals; a person has to trace it.
- **Document and data mismatches.** Name on the ID differs from the typed name, address on the proof of address is older than the allowed window, or the selfie fails liveness on a device that looks legitimate. Some are fraud, most are typos, and the system cannot tell which.
- **Limit increases.** A customer asking to move more than their tier allows triggers a source-of-funds review, which is inherently a judgment call.
- **Regulated counterparties.** Onboarding another money services business, a virtual asset service provider, or a payment service provider means reviewing their AML program, not just their registration.

The goal is not zero manual review. It is manual review on the cases where judgment changes the outcome, with everything else handled by rules.

## What changes for the engineering team?

Manual onboarding is invisible to engineering: a form submits, a ticket opens, someone emails the customer days later. Automated onboarding is an integration.

- The onboarding form maps to an API request that creates the customer or receiver with identity or entity data.
- The result comes back as a status, typically verifying, approved, or rejected, and a webhook fires when it changes.
- The product gates money movement on that status, so a rejected receiver cannot be paid and a verifying one waits.
- Rejections carry a reason category so the app can tell the user what to fix, where the rules allow.

When verification is embedded in the payment API, as it is with BlindPay, the integration is one vendor and one webhook rather than a KYC vendor, a screening vendor, and glue code between them and the payout system.

## Which should a fintech choose?

At launch with a handful of customers, manual review is fine and cheaper to set up. Past a few hundred customers, or the first non-domestic market, the queue and the audit trail both become problems at once, and that is the point to automate.

The practical move is to automate the pipeline first and keep the review queue, then spend the following quarter tuning rules until the queue holds only the cases in the section above. Start with sanctions screening thresholds, since that is where most of the noise comes from.

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

---

Source: https://blindpay.com/resources/more/how-to-choose-automated-risk-monitoring-vendor

---
title: "How to choose an automated risk monitoring vendor for a fintech startup"
seoTitle: "How to choose an automated risk monitoring vendor for a fintech startup"
description: "A buyer's guide to automated risk monitoring vendors for early-stage fintechs: the five criteria that matter (regulatory coverage, integration effort, false-positive rate, pricing model, audit output), the question to ask a vendor on each, a checklist table, and what it costs."
date: "2026-09-15"
updated: "2026-09-15"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "What does automated risk monitoring cost for an early-stage fintech?"
    a: "Standalone KYC vendors typically charge in the low single dollars per individual verification and more per business, transaction monitoring is usually a monthly platform fee plus volume tiers that start in the low thousands of dollars a month, and sanctions screening is often bundled or priced per screened record. A startup stitching three vendors together commonly lands in the low to mid five figures a year before analyst time; a payment provider with monitoring embedded charges nothing separately for it."
  - q: "Do I need a separate vendor for KYC and transaction monitoring, or one platform?"
    a: "One platform if it covers both well, because alerts are only useful with the customer's verified profile next to them, and two vendors means building that join yourself. Separate vendors make sense when a best-of-breed screening or analytics tool is required for a specific risk, or when the payment provider already embeds the transaction layer and only onboarding is missing."
  - q: "What questions should I ask a risk monitoring vendor before signing?"
    a: "Which lists and jurisdictions are screened and how often lists refresh; how long a real integration takes and whether there is a sandbox; the false-positive rate at reference customers and who tunes the rules; the pricing unit and what happens at ten times the volume; and what audit output an examiner or investor receives. Ask for a sample case file and a sample regulator report, not a slide."
  - q: "Should a fintech startup build its own risk monitoring?"
    a: "Rarely. The rules engine is the easy part; the list feeds, blockchain analytics, registry integrations, and case management are not, and a regulator will examine all of them. Most startups buy or inherit the monitoring layer from their payment provider and build only the product-specific rules on top."
  - q: "What is the difference between a risk monitoring vendor and a compliance agent?"
    a: "A vendor provides the checks: verification, screening, monitoring, case management. A compliance agent is software, increasingly AI-driven, that works the output of those checks: triaging alerts, assembling evidence, and drafting narratives. Some vendors include an agent layer; the filing decision stays with a named human in either case."
---

*Reading time: about 8 minutes.*

**Summary:** Choose an automated risk monitoring vendor on five criteria: regulatory coverage (which jurisdictions and lists it screens), integration effort (API quality and time to live), false-positive rate and alert tuning, pricing model (per-check, flat, or volume-based), and the audit and reporting output it produces for regulators and investors. Everything else on a vendor's feature list is downstream of those five.

This guide gives each criterion a short explanation and the one question to ask, then compresses it into a checklist. It is written as buyer guidance. BlindPay embeds risk monitoring in its payment API, and where that is relevant it is noted, but the criteria apply to any vendor.

## What a risk monitoring vendor actually sells

Before the criteria, a quick map of the category, because vendors bundle it differently.

The [four components](/resources/more/what-is-automated-risk-monitoring-fintech) are KYC/KYB verification, transaction monitoring, sanctions and watchlist screening, and compliance automation (alert triage, case narratives, filings). Some vendors sell one, some sell all four, and some payment providers include all four inside the payment API so the fintech never contracts them separately.

That last model matters for a startup because it changes the question from "which vendor" to "which layer of the stack does this belong in." Keep that in mind through the criteria.

## 1. Regulatory coverage

Regulatory coverage is the set of jurisdictions, lists, and rules the vendor actually screens and monitors against, as opposed to the set on the website.

A US-only fintech needs the OFAC SDN and consolidated lists, FinCEN's Bank Secrecy Act monitoring expectations, and PEP and adverse media screening. The moment the product touches a second market, the requirement expands: EU consolidated and UK OFSI lists, FATF Travel Rule data exchange at that market's threshold, and local registry integrations for KYB. A vendor that covers the US well and "supports" Brazil may mean it accepts a Brazilian document, not that it checks the CNPJ registry or knows the SPSAV regime.

For stablecoin payments, add wallet address screening. OFAC has listed blockchain addresses since 2018, and a vendor that screens names but not addresses leaves the gap open.

**Question to ask:** "For each of my target markets, which lists do you screen, how often do they refresh, which registries do you query for business verification, and do you screen wallet addresses as well as names?"

A good answer names lists, refresh intervals, and registries per country. A weak answer says "global coverage."

## 2. Integration effort

Integration effort is the engineering time between signing and the first production verification, plus the ongoing cost of keeping the integration working.

The details that decide it: a REST API with typed responses, a sandbox that returns realistic approve, reject, and review outcomes, webhooks for status changes so the product does not poll, idempotent requests, and SDKs in the languages the team uses. Also whether the vendor's data model matches the product's. If the fintech's core object is a payout receiver, and the vendor's is a "case," someone has to maintain the mapping forever.

Time to live is a fair proxy. A standalone KYC integration with a sandbox typically takes one to three weeks of engineering time to reach production; a full stack of KYC, screening, and transaction monitoring from separate vendors takes longer because the joins between them are the fintech's job. Embedded monitoring in a [payment API](/resources/more/what-is-a-stablecoin-api) collapses that to the payment integration itself.

**Question to ask:** "Can I get sandbox credentials today, and what did the last three customers of my size take, in engineering weeks, from signing to production?"

## 3. False-positive rate and alert tuning

The false-positive rate is the share of alerts that an analyst closes as nothing. It is the number that decides whether the compliance team works cases or clears noise.

Sanctions name screening is the worst offender. Fuzzy matching a common name against global lists without date of birth and country narrowing can produce alert rates where most alerts are false, and a startup with one part-time compliance analyst drowns in a week. Transaction rules have the same problem in a milder form: a velocity threshold set for a marketplace will fire constantly for a payroll customer.

What separates vendors is who tunes it. Some ship fixed rules. Some expose thresholds the customer sets. The best expose thresholds, show the alert volume each setting would have produced against the customer's own history, and let the compliance officer sign off on the change, which is what an examiner will ask for.

**Question to ask:** "At reference customers with my profile, what share of alerts is closed as false positive, who tunes the rules, and can I see the tuning history for audit?"

## 4. Pricing model

Vendors price in three ways, and the right one depends on the shape of the fintech's volume.

- **Per-check.** A price per verification, per screened record, or per monitored transaction. Cheap at low volume, predictable, and painful at scale, since every new customer adds cost even when nothing is found.
- **Flat platform fee.** A monthly or annual fee with a volume ceiling. Predictable, but a startup pays for capacity it does not use yet, and the ceiling arrives at the worst time.
- **Volume-based tiers.** Per-unit prices that fall as volume grows. Usually the best fit for a fintech that expects to grow, with the caveat that tier boundaries and minimum commitments deserve a close read.

A fourth model applies when monitoring is embedded in the payment provider: there is no separate line item, and the cost is inside the payment fee. That is the cheapest model at every stage, provided the provider's coverage passes criterion 1.

**Question to ask:** "Model my cost at current volume, ten times current volume, and a hundred times, including minimums, overage rates, and every add-on I would need for my markets."

## 5. Audit and reporting output

Audit output is what the vendor gives a regulator, a bank partner, or an investor when they ask how a customer was verified or why a transaction was allowed.

Concretely: a per-customer record of inputs collected, checks run, results, risk score, decision, and who made it; a per-transaction record of rules evaluated and their outcomes; an exportable case file with the evidence and narrative; and periodic reports (alert volumes, dispositions, SAR counts, screening coverage) that a compliance officer can put in front of a board or a bank partner without editing. FinCEN expects five years of retention on all of it.

Investors ask a lighter version of the same question in diligence: show the program, show the metrics, show one case end to end. A vendor whose output is a dashboard screenshot fails both audiences.

**Question to ask:** "Send me a sample customer audit record, a sample case file, and the regulator-facing report you generate, exactly as a customer receives them."

## Vendor evaluation checklist

| Criterion | What to verify | Question to ask | Pass signal |
|---|---|---|---|
| Regulatory coverage | Lists, refresh cadence, registries, wallet screening, per market | Which lists, registries, and refresh intervals, per country? | Named lists and registries, address screening included |
| Integration effort | REST API, sandbox, webhooks, SDKs, data model fit | Sandbox today, and real time-to-live at customers my size? | Credentials same day, weeks not months |
| False-positive rate | Alert-to-case ratio, who tunes, tuning audit trail | Share of alerts closed as false positive at reference customers? | A number, and customer-controlled thresholds |
| Pricing model | Unit, minimums, tiers, add-ons, cost at 10x and 100x | Model my cost at three volume levels, all-in? | Cost falls per unit as volume grows |
| Audit output | Customer record, case file, regulator report, retention | Send samples exactly as a customer receives them? | Structured exports, five-year retention |

## One vendor or several?

The honest answer for most startups is: as few as possible, and usually one.

Alerts are only useful with the verified customer profile next to them. When verification lives in one vendor and monitoring in another, the fintech builds and maintains the join, and every examination question about a customer becomes a two-system lookup. A single platform, or a payment provider with the full layer embedded, removes that work.

Separate vendors earn their place in two cases: a specific risk that needs a best-of-breed tool (deep blockchain analytics for a crypto-native product, for example), or a stack where the payment provider already runs transaction monitoring and screening on every payout and only the onboarding piece needs sourcing.

BlindPay falls into the embedded category: KYC and KYB run through the same API that creates payouts, every payout is rescreened and risk-scored before settlement, held payouts surface over webhook, and the program is described on the [compliance page](/compliance). That is one option among the models above, and the checklist should be applied to it the same way as to anyone else.

## What to do next

Run the checklist against three vendors, including the payment provider already in the stack, and ask for the samples in criterion 5 before any commercial conversation. The vendor that sends real artifacts in a day is usually the one whose product does the work; the one that schedules a demo instead is usually selling the slide.

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

---

Source: https://blindpay.com/resources/more/real-time-transaction-monitoring-stablecoin-payments

---
title: "Real-time transaction monitoring for cross-border stablecoin payments"
seoTitle: "Real-time transaction monitoring for cross-border stablecoin payments"
description: "Why stablecoin cross-border flows need different monitoring than wires: the signals that get scored (wallet address risk, velocity, corridor risk, on/off-ramp counterparties), real-time vs. batch monitoring, and a worked example of a flagged pattern from alert to decision."
date: "2026-09-15"
updated: "2026-09-15"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "Does transaction monitoring slow down stablecoin settlement speed?"
    a: "Not meaningfully when it runs pre-settlement as a scoring step. Sanctions rescreening, wallet address risk, and velocity rules evaluate in well under a second for most transactions, so a clean payment still settles in minutes. Only the small share that scores into the review band waits on a person, and that wait is the point."
  - q: "Can transaction monitoring be automated for multiple blockchains at once?"
    a: "Yes. Address risk scoring, sanctions list matching, and velocity rules operate on normalized transaction data, so the same rule set covers USDC on Ethereum, Base, Polygon, Solana, Stellar, or Tron. The chain-specific work is the indexer and the address format; the risk logic is shared."
  - q: "What is the difference between real-time and batch transaction monitoring?"
    a: "Batch monitoring reviews the day's transactions after they settle, which suits payments that can be recalled. Real-time monitoring scores each transaction before funds move and can hold it. For stablecoin transfers, which are final within minutes and cannot be reversed, only real-time monitoring can stop a bad payment."
  - q: "What is wallet address risk scoring?"
    a: "A check on the destination or source wallet against OFAC-listed addresses and against blockchain analytics that trace the address's exposure to mixers, darknet markets, sanctioned exchanges, or hacked funds. It replaces the bank-name check a wire transfer relies on, since a wallet carries no institution behind it."
---

*Reading time: about 7 minutes.*

**Summary:** Cross-border stablecoin payments need real-time transaction monitoring because they settle in minutes at any hour, are final once confirmed, and touch counterparties in at least two jurisdictions on every transfer. A wire can be reviewed overnight and recalled; a stablecoin transfer has to be scored before it moves, using signals that include the wallet address itself.

This post covers what those signals are, how pre-settlement monitoring differs from the end-of-day batch model banks grew up with, and what happens to a transaction that gets flagged.

## Why stablecoin flows need different monitoring than wires

Three properties of a stablecoin transfer change the monitoring problem.

**Settlement is continuous.** A SWIFT wire moves during banking hours and takes one to five days, which leaves room for a compliance team to review the day's batch before value is final. A USDC transfer confirms in seconds to minutes, on a Sunday, at 3 a.m. There is no overnight window.

**Settlement is final.** Wires can be recalled, and card payments can be charged back. A confirmed blockchain transaction [cannot be reversed](/resources/more/are-stablecoin-payments-reversible). A monitoring decision that arrives after confirmation is a report, not a control.

**The counterparty is a wallet.** A wire carries a beneficiary bank, and that bank carries its own KYC obligations. A wallet address carries nothing. The monitoring system has to establish who is behind it, or at least what it has been exposed to, and it has to do that for a sender in one jurisdiction and a receiver in another.

The upside is visibility. Every on-chain transfer is public, which means the history of an address can be traced in a way a bank account's cannot. Monitoring for stablecoins is harder on timing and easier on data.

## What signals get monitored in a stablecoin transaction?

A pre-settlement risk score for a cross-border stablecoin payment typically combines five signal groups. The [automated risk monitoring explainer](/resources/more/what-is-automated-risk-monitoring-fintech) covers the broader program these sit inside.

### 1. Wallet address risk

The source and destination addresses are checked against OFAC-listed addresses and against blockchain analytics that score an address by its exposure: direct or indirect flows from mixers, darknet markets, sanctioned exchanges, ransomware wallets, or known hacks. Exposure is measured in hops and in share of funds, so an address one hop from a sanctioned service scores very differently from one with a trace of indirect exposure.

### 2. Sanctions and PEP rescreening on the parties

The named sender, receiver, and beneficial owners are screened again at transaction time, not only at onboarding, because lists change. OFAC updates the SDN list several times a month, and EU, UN, and UK OFSI lists move on their own schedules.

### 3. Velocity and pattern rules

The transaction is compared with the customer's own baseline and with pattern rules drawn from FinCEN and FATF typologies: total volume over 24 hours and 30 days, number of transfers per hour, amounts clustered just under a reporting threshold (structuring), funds received and forwarded within minutes (pass-through), and repeated round-number transfers to a new counterparty.

### 4. Corridor risk

Cross-border adds the pair of jurisdictions as a signal. A USD-to-BRL payout to a verified Brazilian company is routine. The same amount to a receiver whose bank is in a FATF grey-list country, or whose declared country differs from the IP geolocation and the bank country, is not. Corridor rules also carry the Travel Rule thresholds, which differ by market: USD 3,000 in the US, no minimum in the EU, SGD 1,500 in Singapore.

### 5. On-ramp and off-ramp counterparty checks

Where the stablecoin came from and where the fiat is going. An on-ramp from a licensed exchange with its own KYC scores differently from a self-custodied wallet with no history. An off-ramp to a bank account in the receiver's verified name scores differently from one in a third party's name, which is a classic mule pattern.

Each group produces a score, and the combined score lands in one of three bands: settle, hold for review, or block.

## Real-time vs. batch monitoring

Banks built transaction monitoring as a batch process because their rails gave them the time: the end-of-day file runs through the rules engine, analysts work the alert queue over the following days, and a wire that looks wrong is recalled or reported.

| Dimension | Batch (end-of-day) monitoring | Real-time (pre-settlement) monitoring |
|---|---|---|
| When rules run | After settlement, on the day's file | Before settlement, on each transaction |
| Can it stop a payment | Only if the rail supports recall | Yes, by holding or blocking before funds move |
| Latency added to a clean payment | None | Sub-second scoring in most implementations |
| Analyst workload | Alerts reviewed over days | Held transactions reviewed within hours, since a customer is waiting |
| Fit for stablecoins | Poor: the transfer is final before the batch runs | Required |
| Fit for wires and ACH | Standard practice | Increasingly used, especially for faster-payment rails |

The row that matters is the second one. For a payment that is final within minutes, batch monitoring is detection with no enforcement. Real-time does not mean instant approval for everything; it means the score is computed before settlement, and the small share of transactions in the review band waits for a person while the rest go through.

## A worked example: a flagged pattern and what happens next

A hypothetical, with the mechanics kept realistic.

A marketplace in the US pays sellers in Colombia through a stablecoin payout API. One seller, verified six months ago, has a baseline of two payouts a month, each around USD 1,800, to a bank account in their own name. Over one Saturday, the marketplace submits eleven payouts to that seller, each between USD 2,700 and USD 2,950, and the destination bank account has changed to one in a different person's name.

Here is what the monitoring layer does before any of them settles.

1. **Velocity rule fires.** Eleven transfers in a day against a baseline of two a month is a spike of over a hundred times the expected rate.
2. **Structuring rule fires.** Every amount sits just below USD 3,000, the US Travel Rule threshold. On its own that is weak evidence; combined with the velocity spike it is strong.
3. **Off-ramp counterparty check fires.** The bank account name does not match the verified receiver. That is the mule pattern, and it is the signal that pushes the combined score from hold into block.
4. **Sanctions rescreen and wallet risk return clean.** Both are noted in the case file, because a clean screen is evidence too.
5. **The first payout is held before settlement and the remaining ten are queued behind it.** The marketplace receives a webhook with a status change and a reason category, and the seller sees a pending state instead of a failure.
6. **A compliance analyst opens the case.** The file already contains the baseline, the eleven transactions, the rules that fired, the screening results, and a draft narrative. The analyst requests proof of ownership of the new bank account and an explanation of the volume.
7. **Two outcomes.** If the seller shows a legitimate reason (a business account opened under a partner's name, with documents), the analyst releases the payouts and notes the new baseline. If not, the payouts are rejected, the receiver is moved to a restricted state, and the case is evaluated against the Suspicious Activity Report standard, which gives 30 days from detection to file with FinCEN, or 60 if no suspect has been identified.

The machine part took under a minute. The eleven payouts never left.

## How BlindPay applies this

BlindPay runs transaction monitoring inside the payout flow rather than as a separate vendor step. KYC or KYB runs once per receiver, and on every payout the receiver and destination are rescreened against OFAC, EU, UN, and UK lists, the wallet address is risk-scored, and velocity, corridor, and counterparty rules produce the settle, hold, or block decision before funds move. Because BlindPay settles without pre-funding and in real time, that pre-settlement step is the only place a control can sit; there is no float period to review a batch in.

Held payouts surface as a status change over webhook with a reason category, so the customer's product can show a pending state rather than an error. The program is described on the [compliance page](/compliance), and the jurisdiction rules it applies are covered in the [cross-border compliance guide](/resources/more/compliance-agents-cross-border-stablecoin-payments).

## What to do with this

If monitoring runs on an end-of-day file, move the scoring step before settlement first, even with the same rules. Then add wallet address risk as a signal, since it is the one check a bank-style program does not have. Tune velocity and structuring thresholds after the first month of alerts shows where the noise is.

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

---

Source: https://blindpay.com/resources/more/what-is-automated-risk-monitoring-fintech

---
title: "What is automated risk monitoring in fintech?"
description: "A reference explainer on automated risk monitoring for fintechs: the four components (KYC/KYB, transaction monitoring, sanctions and watchlist screening, compliance automation), what each one flags, a manual vs. automated comparison, and what FinCEN, FATF, and OFAC actually require."
date: "2026-09-15"
updated: "2026-09-15"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "What triggers a risk monitoring alert?"
    a: "A rule or model threshold being crossed: a name or wallet matching a sanctions list, a transaction above a reporting threshold, several transactions just under a threshold in a short window, a sudden jump in volume against the customer's baseline, a payment to a high-risk country, or a change in the customer's verified data. Each alert carries the rule that fired and the evidence behind it."
  - q: "Is automated risk monitoring required by regulation?"
    a: "The monitoring is required; automation is not named. FinCEN requires money services businesses under the Bank Secrecy Act to maintain an AML program with ongoing transaction monitoring, OFAC sanctions compliance is strict liability, and FATF Recommendation 10 requires ongoing due diligence. At any real transaction volume, only automated systems can meet those obligations on every transaction."
  - q: "How is automated risk monitoring different from fraud detection?"
    a: "Fraud detection protects the company and its customers from losing money to theft, account takeover, or chargebacks. Risk monitoring protects the company from being used to launder money or breach sanctions, which is a regulatory obligation. They share signals like velocity and device data, but fraud alerts are resolved commercially while AML alerts can end in a suspicious activity report to FinCEN."
  - q: "What are the four components of automated risk monitoring?"
    a: "KYC and KYB verification at onboarding, transaction monitoring on every payment, sanctions and watchlist screening on an ongoing basis, and compliance automation that triages alerts, drafts case narratives, and files reports."
  - q: "How often should sanctions screening run?"
    a: "At onboarding, on every transaction, and again each time a sanctions list is updated. OFAC updates the SDN list several times a month, so a customer cleared at signup can become a match later without any change on their side."
---

*Reading time: about 7 minutes.*

**Summary:** Automated risk monitoring is the set of systems a fintech runs to continuously screen customers, transactions, and counterparties for money laundering, sanctions exposure, and fraud without a human reviewing every case. It combines identity verification at onboarding, transaction monitoring on every payment, ongoing sanctions screening, and software that triages the resulting alerts.

The term covers a lot of ground, so this explainer takes it apart into its four components, shows what each one actually checks, and compares the manual and automated versions of the same work. It is written as a reference, not a pitch.

## What does automated risk monitoring do?

Every fintech that moves money is a target for people trying to steal from it and for people trying to move illicit funds through it. Regulators care mostly about the second. The Financial Crimes Enforcement Network (FinCEN) in the US, the Financial Action Task Force (FATF) globally, and the Office of Foreign Assets Control (OFAC) for sanctions all expect a company to know who its customers are, watch what they do, and report what looks wrong.

Doing that by hand works up to a few hundred customers. After that, the review queue grows faster than the compliance team.

Automated risk monitoring replaces per-case human review with rules and models that run on every customer and every transaction, and reserves human judgment for the cases the system cannot decide. The four components below are the standard shape of that system.

## 1. KYC and KYB verification

Know Your Customer (KYC) verifies that an individual is who they claim to be; Know Your Business (KYB) verifies that a company exists, is in good standing, and is owned and controlled by identifiable people.

Both run at onboarding, before the customer can move money. Automated verification checks things like:

- **Document authenticity.** The ID's security features, fonts, and machine-readable zone are checked against the issuing template, and the expiry date is validated. A liveness check and face match confirm the person presenting the document is real and present.
- **Registry data for businesses.** The registration number is looked up in the corporate registry (Companies House, a Secretary of State database, the Brazilian CNPJ registry) to confirm the entity is active and the stated name and address match.
- **Beneficial ownership.** Under FinCEN's customer due diligence rule, every individual owning 25 percent or more of a legal entity customer, plus one controller, must be identified and verified. The system unwinds holding companies until it reaches real people, then runs KYC on each.

The [KYB explainer](/resources/more/what-is-kyb) covers the ownership rules in more depth.

## 2. Transaction monitoring

Transaction monitoring evaluates each payment, and the pattern of payments over time, against rules that describe suspicious behavior.

The classic patterns come straight from FinCEN and FATF guidance:

- **Structuring.** Several deposits or transfers each just below a reporting threshold (USD 10,000 for a Currency Transaction Report in the US) within a short window. Nine transfers of USD 9,800 in two days is the textbook case.
- **Velocity spikes.** A customer whose baseline is two payments a month suddenly sends forty in a week, or an account that receives funds and forwards nearly all of them within minutes.
- **Geographic mismatch.** A business registered in Colombia whose payments all originate from IP addresses in a third country, or a receiver whose bank account is in a jurisdiction that never appeared in onboarding.
- **Round-tripping.** Funds leaving an account and returning through a different counterparty at a similar amount, which is a layering pattern.

Each rule produces a score or a hard alert. Low scores pass. High scores hold the transaction before settlement. The rest go to a queue.

## 3. Sanctions and watchlist screening

Sanctions screening checks the names, identifiers, and (for stablecoin payments) wallet addresses of every party against government lists, on an ongoing basis rather than only at signup.

The core lists a fintech serving US or international customers screens against are:

- **OFAC Specially Designated Nationals (SDN) and consolidated lists.** OFAC compliance is strict liability: a payment that reaches a listed party is a violation regardless of intent. OFAC has listed blockchain addresses on the SDN list since 2018.
- **UN Security Council, EU consolidated, and UK OFSI lists.** Required as soon as the business touches those markets or their currencies.
- **Politically exposed person (PEP) databases and adverse media.** Not sanctions, but FATF Recommendation 12 requires enhanced due diligence on PEPs, so a PEP match changes the risk tier.

The word "ongoing" is what separates screening from a signup check. OFAC updates the SDN list several times a month. A customer who was clean in January can become a match in March without doing anything, and the system has to catch that by rescreening the customer base each time a list changes.

## 4. Compliance automation

Compliance automation is the layer that handles the output of the other three: it triages alerts, gathers evidence, drafts case narratives, and prepares regulatory filings so analysts spend their time on decisions rather than paperwork.

In practice this covers:

- **Alert triage.** Deduplicating alerts on the same customer, closing obvious false positives (a name match with a different date of birth and country), and ranking the remainder by risk so an analyst opens the worst case first.
- **Case narratives.** Assembling the customer profile, the transactions that fired the rule, the screening results, and a draft explanation into a case file. Suspicious Activity Reports (SARs) filed with FinCEN require a written narrative, and drafting it is most of an analyst's time.
- **Recordkeeping.** Storing every input, check result, and decision with timestamps. The Bank Secrecy Act requires five years of retention, and an examiner will ask for the full trail on a sample of cases.

This is where AI has landed most recently. A [compliance agent](/resources/more/what-are-compliance-agents-in-fintech) can read a case, pull the supporting data, and write the first draft of the narrative, but the filing decision stays with a named human.

## Manual vs. automated risk monitoring

The comparison below describes the same obligations met two ways. Figures are typical ranges from industry practice rather than a guarantee for any given program.

| Dimension | Manual program | Automated program |
|---|---|---|
| Coverage | A sample of transactions, or only those above a threshold | Every customer and every transaction |
| Onboarding decision | Hours to days per case | Seconds to minutes for a clean case; edge cases routed to review |
| Sanctions rescreening | Periodic, often quarterly | On every list update and every transaction |
| False positives | Depend on the analyst; inconsistent between reviewers | Tunable per rule; consistent, and measurable |
| Audit trail | Emails, spreadsheets, and PDFs | Structured log of inputs, rules fired, and decisions |
| Scaling | Headcount grows with volume | Rules and models scale; analysts handle exceptions |
| Human judgment | On everything | On the cases the system cannot decide |

Automation does not remove the need for analysts; it changes what they look at. Badly tuned rules generate thousands of alerts and bury the real ones, which is why alert tuning is ongoing work rather than a one-time setup.

## Who requires it?

Three bodies come up in nearly every conversation about risk monitoring, and they play different roles.

**FinCEN** is the US financial intelligence unit and the administrator of the Bank Secrecy Act. Money services businesses, which include most fintechs that transmit funds or exchange stablecoins, must register with FinCEN, maintain a written AML program with ongoing monitoring, file SARs, and keep records for five years.

**OFAC** administers US sanctions. Any US person, and any transaction touching the US financial system, must not deal with listed parties. There is no volume threshold and no intent defense.

**FATF** does not regulate companies directly. It sets the standards that national regulators implement, including Recommendation 10 (ongoing customer due diligence), Recommendation 12 (PEPs), and Recommendation 16 (the Travel Rule, extended to virtual assets in 2019). When a regulator in Brazil, Singapore, or the EU writes its AML rules, it starts from FATF.

For a fintech moving stablecoins across borders, all three apply on the same transaction. The [cross-border compliance guide](/resources/more/compliance-agents-cross-border-stablecoin-payments) walks through how the jurisdictions stack.

## Where risk monitoring sits in a payment flow

Verification runs once per customer before they can transact. Screening and transaction monitoring run on every payment, and for stablecoins the checks must finish before funds move, because a transfer on a public blockchain [cannot be reversed](/resources/more/are-stablecoin-payments-reversible).

1. Customer or receiver is created with identity or entity data, and KYC or KYB runs.
2. On approval, the record is eligible for payments. On a screening hit or data mismatch, it holds for review.
3. Each payment is scored: sanctions rescreen, velocity and pattern rules, corridor risk, wallet address risk.
4. Low risk settles. High risk is blocked. Medium risk holds for an analyst.
5. Every decision is logged, and cases that meet the SAR standard are drafted for filing.

For a company still reviewing cases by hand, sanctions rescreening and transaction rules are the two places to automate first, because those are where a manual program fails an examination first.

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

---

Source: https://blindpay.com/resources/more/stablecoin-liquidity-provider-vs-fx-desk

---
title: "Stablecoin liquidity providers vs traditional FX desks: what finance teams should know"
seoTitle: "Stablecoin liquidity providers vs bank FX desks"
description: "A bank FX desk prices cross-border payouts by relationship. A stablecoin liquidity provider prices them by API. How the two compare on cost, speed, minimums, coverage, and compliance."
date: "2026-09-14"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin liquidity provider?"
    a: "A stablecoin liquidity provider converts between stablecoins like USDC or USDT and local currencies on demand, and delivers the result to a wallet or a bank account. For cross-border payouts, it quotes a rate through an API, locks it for a short window, and pays the recipient over a local rail such as Pix, SPEI, ACH, or SEPA."
  - q: "Are stablecoin liquidity providers regulated?"
    a: "It depends on the country and on what the provider does. In the US, the GENIUS Act, signed in July 2025, regulates payment stablecoin issuers, and companies that move money for customers generally need state money transmission licenses or work through licensed partners. The EU regulates crypto-asset service providers under MiCA, and Brazil's Central Bank authorization regime for virtual asset providers took effect on February 2, 2026. Ask each provider which licenses it holds, or which licensed partners it uses, per country."
  - q: "Is published pricing better than negotiated FX desk pricing?"
    a: "Not always cheaper, but always easier to compare. A negotiated rate from a bank can beat published pricing on a single very large trade, especially with an existing relationship. Published pricing wins on predictability: you can price a corridor before you sign, compare two providers on the same day, and budget payouts without a volume commitment."
  - q: "Can a company use both a bank FX desk and a stablecoin liquidity provider?"
    a: "Yes, and many do. A common split is the bank desk for large one-off conversions, hedging, and counterparties that require a wire, and the stablecoin provider for recurring payouts into markets with instant local rails. The two don't conflict; they cover different parts of the payment mix."
  - q: "How fast does a stablecoin liquidity provider settle compared with a bank FX desk?"
    a: "A bank spot FX trade typically settles two business days after it is agreed, and the payout then travels by wire, which can take up to five business days internationally. With a stablecoin liquidity provider, the stablecoin leg settles in seconds and the local payout lands in minutes on instant rails like Pix and SPEI, or in one to two business days on ACH and SEPA."
---

Finance teams moving recurring payouts across borders usually end up choosing between two options. Keep the bank relationship and its FX desk. Or move the flow to a stablecoin liquidity provider that quotes and settles through an API. Both convert currency and get money to a recipient. They differ in how prices are set, how fast money lands, who they are built for, and what they cost once every fee is counted.

This guide compares the two without pretending either one always wins.

## What does a bank FX desk actually do?

A bank FX desk quotes and executes currency conversions for clients, priced by relationship. You request a rate by phone, chat, or a trading portal. A dealer quotes a price based on the market rate plus a markup that depends on your volume, your credit, and how much the bank wants your business. You agree, the trade books, and it settles.

Spot FX trades typically settle two business days after they are agreed. The converted funds then go out by wire. For payments abroad, that means SWIFT and the correspondent chain, which can take up to five business days to reach the recipient.

The desk also offers things a payout API usually does not: forwards and options to hedge future exposure, credit lines, and a named person who picks up the phone.

## What does a stablecoin liquidity provider actually do?

A stablecoin liquidity provider converts between stablecoins and local currencies on demand, and delivers the result to a bank account over a local rail. You request a quote through an API. It returns the rate, itemized fees, and the exact amount the recipient gets, locked for a short window. You execute against that quote, the stablecoin leg settles on-chain in seconds, and the provider pays out in local currency.

Pricing is usually published. Integration is code, not calls. And the rail at the end is local: Pix in Brazil, SPEI in Mexico, ACH or RTP in the US, SEPA in Europe. For the underlying mechanics, read [what a liquidity market is in cross-border payments](/resources/more/what-is-a-liquidity-market-cross-border-payments).

## Stablecoin liquidity provider vs bank FX desk: side by side

| Dimension | Bank FX desk | Stablecoin liquidity provider |
| --- | --- | --- |
| Pricing transparency | Negotiated per client; the markup over the market rate is rarely itemized | Often published; the quote shows the market rate, the provider's rate, and each fee |
| Settlement speed | Spot trades settle in about two business days, then a wire of up to five business days | Seconds for the stablecoin leg; minutes on Pix or SPEI, one to two business days on ACH or SEPA |
| Minimum volume | Relationship pricing improves with volume; small clients often get retail rates | Varies; some providers publish pricing with no volume floor and per-rail minimums |
| Geographic coverage | Broad through correspondent networks, including exotic currencies | Limited to the corridors where the provider has local rails and liquidity |
| Compliance handling | The bank onboards you once; each payment can be screened again along the chain | KYC and KYB inside the API; screening runs before money moves |
| Integration effort | Manual or portal-based; APIs exist at larger banks, often with long onboarding | REST API and SDKs; a first test payout can run in a sandbox before any contract |
| Custody model | The bank holds your deposits and the converted funds until the wire goes out | Varies from custodial balances to non-custodial flows; ask |
| Operating hours | Banking days and desk hours | 24/7 quoting and on-chain settlement; local rails set payout hours |
| Hedging products | Forwards, swaps, options | Usually none; conversion happens at payment time |

## What hidden costs should you watch for on each side?

Both models have costs that don't appear in the headline rate. Put all of them in the same spreadsheet before comparing.

**On the bank FX desk side:**

- **FX spread markup.** The gap between the rate you get and the market rate. It is the largest cost for most payout flows and the hardest to see, because it is priced into the rate instead of listed as a fee.
- **Outgoing wire fees.** Charged per payment by your bank.
- **Correspondent and intermediary fees.** Deducted from the principal as the payment passes through each bank in the chain. With SHA or BEN charge codes, the recipient gets less than you sent.
- **Receiving bank fees.** Some beneficiary banks charge to credit an incoming international payment.
- **Pre-funding.** If fast local payouts need balances parked in each country, the yield and FX risk on that cash is a cost. [Correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) works through a five-country example.

**On the stablecoin liquidity provider side:**

- **Conversion spread.** Stablecoin providers have spreads too. The difference is whether the quote shows it.
- **Network fees.** Moving stablecoins on-chain costs a network fee. If you fund payouts from your own EVM wallet, the on-chain approval is a transaction you pay for.
- **Redemption and off-ramp fees.** Turning stablecoins into local currency is where most of the cost lives. [Stablecoin API pricing](/resources/more/stablecoin-api-pricing-explained) breaks down why minting is often free and redeeming is not.
- **Platform fees and minimums.** Monthly plans, per-transaction fees, and per-rail minimums.
- **Refund costs.** A payout that bounces at the receiving bank can come back with fees attached on the fiat side.

The fair comparison is total cost per payout, landed, for the same amount on the same corridor on the same day. Anything else compares a rate with a fee.

## When does each option make sense?

A bank FX desk still makes sense when:

- **The trade is large and one-off.** An eight-figure conversion with an existing banking relationship can get a negotiated spread that a published price won't beat.
- **You need to hedge.** Forwards and options lock in future rates, which a payout API doesn't do.
- **The corridor has no stablecoin liquidity.** Coverage through correspondent banks is broader than any stablecoin provider's.
- **The counterparty requires a bank wire.** Some suppliers, governments, and regulated entities only accept one.
- **You want to trade on credit.** Banks can settle against a credit line; stablecoin payouts are funded when sent.

A stablecoin liquidity provider wins when:

- **Payout volume is ongoing.** Weekly payroll, marketplace seller payouts, and supplier runs benefit most from API-driven quotes and fast local rails.
- **The destination has instant rails.** Latin America is the clearest case: Pix and SPEI settle in minutes, around the clock.
- **You want pricing you can read before you sign.** Published pricing with no volume floor lets a small team start without a commitment.
- **You want compliance handled for you.** KYC, KYB, and sanctions screening run inside the API instead of at every bank in a chain.
- **Payments are many and small.** Per-wire fees and correspondent deductions eat small payments; a stablecoin payout with a per-rail minimum does not have that problem.

Many teams end up with both. The bank desk covers hedging and large one-off trades. The stablecoin provider covers the recurring payout flow.

## How does BlindPay fit?

BlindPay is one example of a stablecoin liquidity provider for payouts, not the only valid answer. Its [pricing is published](/pricing): Basic, Business, and Enterprise plans with per-transaction fees and no volume floor, so a team can price a corridor before talking to anyone. Every quote itemizes the market rate, BlindPay's rate, and fees, and locks them for five minutes by default.

Payouts land over Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, ACH Colombia, Transfers 3.0 in Argentina, ACH, wire, and RTP in the US, SEPA in Europe, and international SWIFT. BlindPay operates as a non-custodial payment processor, and funds each payout when you create it. KYC, KYB, and sanctions screening run inside the API; standard KYC completes in about 60 seconds, and KYB review takes 3 hours to 1 business day. Official SDKs cover Node.js, Python, Go, PHP, and Swift.

What BlindPay does not do: forwards, options, or credit lines. If you need to hedge, keep the bank desk for that.

## What to do next

Take last month's ten largest payouts and price each one both ways: the bank's all-in cost, including every fee the recipient lost in transit, against a live quote on the same corridor. Then read [how to choose an on/off ramp provider](/resources/more/how-to-choose-on-off-ramp-provider) for the rest of the evaluation. When you're ready, compare plans on the [pricing page](/pricing) or [book a call](/contact) with the BlindPay team.

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

---

Source: https://blindpay.com/resources/more/what-is-an-off-ramp-wallet

---
title: "What is an off-ramp wallet? A deposit address that pays out to a bank account"
seoTitle: "What is an off-ramp wallet? Deposit address to bank payout"
description: "An off-ramp wallet turns every USDC or USDT deposit into fiat paid to a linked bank account, with no quote or payout call. How it works, fees, minimums."
date: "2026-09-14"
updated: "2026-09-14"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is an off-ramp wallet?"
    a: "A blockchain deposit address tied to one bank account. Every USDC or USDT deposit it receives is converted to fiat and paid out to that bank account automatically, with no quote or payout call from the integrator. It works like a standing instruction: whatever lands at the address becomes a bank transfer."
  - q: "Do I need a crypto wallet to use an off-ramp?"
    a: "Not your own. Whoever sends the stablecoin needs a wallet or an exchange account to send from, but the receiver only needs a bank account. With an off-ramp wallet, the provider creates the deposit address and the receiver just sees local currency arrive over Pix, SPEI, ACH, or another local rail."
  - q: "What happens if a deposit is below the off-ramp wallet minimum?"
    a: "On BlindPay, a deposit that doesn't cover its fees isn't converted. No payout is created, and the funds stay at the deposit address instead of refunding automatically. No API error or webhook fires, because no API call triggered the deposit, so monitor for small deposits and recover them manually."
  - q: "How is an off-ramp wallet different from a payout API call?"
    a: "A payout call starts with a quote: the rate and fees lock for a few minutes, then the provider pulls the stablecoin from your wallet. An off-ramp wallet is push-based: anyone sends to the address, and conversion runs at the rate when the deposit lands. Use payout calls when you need a locked rate before sending, and an off-ramp wallet when the sender can only make a plain on-chain transfer."
  - q: "How long does an off-ramp wallet take to pay out?"
    a: "The on-chain deposit confirms in seconds to minutes, depending on the network. The payout then follows the local rail: Pix, SPEI, and Argentina's Transfers land in minutes, while ACH, wire, and SEPA take about 1 to 2 business days."
---

An off-ramp wallet is a blockchain deposit address tied to one bank account. Every USDC or USDT deposit it receives converts to fiat and pays out to that bank account on its own, with no quote call and no payout call. You share the address with whoever pays you, and the money shows up as a bank transfer.

Think of it as the reverse of a virtual account. A [virtual account](/resources/more/stablecoin-virtual-accounts-explained) turns incoming fiat into stablecoin. An off-ramp wallet turns incoming stablecoin into fiat.

## How does an off-ramp wallet work?

Four steps, and only the first needs code:

1. **Create it on a bank account.** The receiver is onboarded (KYC or KYB), their bank account is added, and the off-ramp wallet is created on that account for one network. The bank account becomes the permanent payout destination.
2. **Share the deposit address.** The address goes to whoever pays: a client, an exchange withdrawal, another company's treasury system.
3. **The deposit lands.** Someone sends USDC or USDT to the address on the right network.
4. **Conversion and payout run automatically.** The provider converts the stablecoin and sends fiat to the linked bank account over the local rail. You track it through the same payout statuses and webhooks as any other payout.

That's the whole thing. No quote to request, no rate to confirm, no on-chain approval to sign.

## Which networks and stablecoins does an off-ramp wallet accept?

It depends on the provider. BlindPay's [offramp wallets](/docs/offramp-wallets) accept these:

| Network | Stablecoins | Minimum deposit | Additional fee per deposit |
| --- | --- | --- | --- |
| Polygon | USDC and USDT | No fixed minimum | 0 |
| Base | USDC | No fixed minimum | 0 |
| Arbitrum | USDC | No fixed minimum | 0 |
| Tempo | USDC | No fixed minimum | 0 |
| Arc | USDC | No fixed minimum | 0 |
| Ethereum | USDC | No fixed minimum | 1 USDC |
| Solana | USDC | 50 USDC | 0.50 USDC |
| Tron | USDT | 200 USDT | 15 USDT |

"No fixed minimum" means the deposit only has to cover its own fees. The network is part of the address. A USDC transfer sent on the wrong chain is a different asset in the wrong place, so tell senders the network, not just the address.

## What does an off-ramp wallet cost?

Three fees stack on each deposit: the chain's additional fee from the table above, a percentage fee, and the bank transfer fee for the payout rail. The percentage and bank transfer fees depend on your pricing.

BlindPay's docs work through one example: 100 USDT sent on Tron, paid out over ACH.

1. Convert: 100 USDT = $100.00 (USDT deposits convert at a flat 1:1 with no market spread; USDC uses the live market rate)
2. Additional fee: 15 USDT = $15.00
3. Percentage fee: 0.1 percent of $100.00 = $0.10
4. Bank transfer fee: $0.40 (ACH)

The bank account receives **$84.50**. Send the same 100 USDT on Polygon, with the same example percentage and ACH fees, and it receives $99.50. Same payment, same bank, $15 apart, all of it from the network choice.

That's the flat-fee lesson from [off-ramp fees explained](/resources/more/stablecoin-off-ramp-fees-explained) in miniature. Fixed costs punish small deposits, so pick the network by the size of the payments it will carry.

## When should you use an off-ramp wallet instead of a payout call?

| | Off-ramp wallet | Quote and payout call |
| --- | --- | --- |
| Who starts it | Anyone who can send an on-chain transfer | Your integration, through the API |
| Rate | Market rate when the deposit lands | Locked in the quote, 5 minutes by default |
| On-chain approval | None; the sender just transfers | Needed for external wallets (for example, an ERC-20 approve) |
| Destination | One fixed bank account | Any approved bank account per payout |
| Best for | Third-party payers, exchange withdrawals, recurring settlement to one account | Payouts to many recipients, payments that need a known amount |

The deciding question: who controls the send? If it's you, a payout call gives you a locked rate and an exact delivered amount. If it's someone else, or a system that can only make a plain transfer, an off-ramp wallet removes the coordination entirely. A marketplace seller who gets paid by buyers in USDC is the textbook case; the [LatAm marketplace payouts guide](/resources/more/marketplace-stablecoin-payouts-latam) shows the wider flow.

## What can go wrong with an off-ramp wallet?

Four things, all avoidable:

- **Deposits below the fees.** On BlindPay, a deposit smaller than its total fees isn't converted. No payout is created, the funds stay at the deposit address, and no webhook fires. Watch for them.
- **Wrong network or token.** USDC isn't deployed on Tron, and USDT isn't accepted on Base, Arbitrum, or Stellar. Publish the network next to the address every time.
- **One wallet per bank account per network.** Creating a second one for the same bank account and network fails. Save the address from the first response.
- **Rate exposure.** USDC deposits convert at the rate when they land. If the delivered amount must be exact, use a quote instead.

Once a payout exists, it follows the normal lifecycle: processing, then completed, failed, or refunded. [Stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) covers each state, and [webhooks and reconciliation](/resources/more/stablecoin-api-webhooks-reconciliation) covers matching deposits to payouts.

## What terms come up around off-ramps?

- **On-ramp:** a service that converts fiat into stablecoins.
- **Off-ramp:** a service that converts stablecoins into fiat and pays it to a bank account; more in [what is a stablecoin off-ramp](/resources/more/what-is-a-stablecoin-offramp).
- **Deposit address:** the blockchain address a sender transfers stablecoins to, valid on one network.
- **Non-custodial settlement:** a payout where funds stay in the sender's own wallet until the moment the payout executes.
- **Pre-funding:** keeping a balance parked with a provider or in the destination country before you can pay out.
- **VASP:** a virtual asset service provider, the regulatory category for businesses that exchange or transfer crypto for others; see [what is a VASP](/resources/more/what-is-a-vasp).
- **Travel rule:** the requirement that providers pass sender and receiver information along with a transfer above set thresholds.

## How do you set one up on BlindPay?

Create a customer, add their bank account, then create the offramp wallet on that bank account with the network you want. The response returns the deposit address. On development instances the wallets live on testnets (Tron has none) and receive USDB, BlindPay's test stablecoin, with no additional fee, so you can test the full deposit-to-payout loop before going live.

Read the [offramp wallets reference](/docs/offramp-wallets), then create one in the sandbox and send it a test deposit.

*This article is for general information only and is not financial advice.*

---

Source: https://blindpay.com/resources/more/stablecoin-cards-latin-america

---
title: "Stablecoin cards in Latin America: how they work in Brazil, Mexico, Argentina, and Colombia"
seoTitle: "Stablecoin cards in Latin America"
description: "How USD stablecoin cards work in Brazil, Mexico, Argentina, and Colombia: local card and crypto rules, costs at the point of sale, and when a Pix or SPEI payout fits better."
date: "2026-09-13"
updated: "2026-10-12"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Are stablecoin cards legal in Latin America?"
    a: "Yes, in Brazil, Mexico, Argentina, and Colombia, provided the card is issued by a licensed issuer and the stablecoin services come from a provider that meets local virtual asset and anti-money-laundering rules. Each country regulates the two layers separately: card issuing under payment or banking law, and the stablecoin conversion under its virtual asset framework, such as Brazil's SPSAV regime or Argentina's PSAV registry."
  - q: "Why are dollar stablecoin cards popular in Argentina?"
    a: "Argentines have a long history of protecting savings from inflation and devaluation by holding US dollars. A USD stablecoin card lets them hold USDT or USDC and spend it at local and online merchants without a foreign bank account. Foreign-currency card spend paid in pesos also carries a 30 percent income tax withholding as of 2026, which makes spending from a dollar balance more attractive."
  - q: "How much does it cost to spend a USD stablecoin card in Brazil or Mexico?"
    a: "When a USD card pays a merchant charging in reais or pesos, the card network converts at its daily rate and the issuer may add a foreign transaction fee, commonly 1 to 3 percent. Cards issued by Brazilian institutions pay a separate 3.5 percent IOF on foreign-currency spending, which is one reason Brazilians compare dollar cards and local accounts carefully."
  - q: "Should I pay Latin American contractors with a card or a local bank transfer?"
    a: "Use a card when the contractor spends mostly in US dollars or wants to keep a dollar balance, and a local bank transfer when the money is for rent, bills, and local suppliers. In Brazil those payments run on Pix and boleto, in Mexico on SPEI, and in Argentina on Transfers 3.0, which cards cannot pay. Many platforms offer both and let the contractor choose."
  - q: "Do I need a local bank account to use a stablecoin card in Latin America?"
    a: "No. A stablecoin card needs identity verification, not a local bank account, and it is funded from a stablecoin balance. Moving money from that balance into a local bank account is a separate step that needs a licensed off-ramp paying out over the country's rails, such as Pix in Brazil or SPEI in Mexico."
---

*Reading time: about 7 minutes.*

**Summary:** A stablecoin card in Latin America is a Visa or Mastercard, usually denominated in US dollars, that spends from a USDC or USDT balance. People use them to hold dollars and spend them online or locally, and businesses use them to pay regional teams. Each country's card, crypto, and foreign-currency rules decide how programs are built and what they cost.

Latin America is where stablecoin cards stopped being a niche. The reasons are practical: people want dollars, international cards are expensive, and local instant payment rails set a high bar for anything slower.

This guide goes country by country through the four markets that matter most. For the mechanics of the card itself, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Why is Latin America a stablecoin card market?

Three forces push in the same direction.

**Dollar demand.** Households and freelancers in Argentina, Venezuela, and Colombia have held dollars for decades as a hedge against inflation and devaluation. A stablecoin balance is a dollar account that does not require a US bank.

**Expensive foreign-currency spend.** Local cards spending abroad or in dollars often carry taxes and spreads. Brazil charges 3.5 percent IOF on foreign-currency spend on cards issued there. Argentina adds a 30 percent income tax withholding to foreign-currency card spend paid in pesos.

**Dollar income.** A growing number of people earn in dollars from US and European clients. They want to receive, hold, and spend those dollars without converting everything on payday.

The networks noticed. When Mastercard announced stablecoin settlement in June 2026, it named ARQ, formerly DolarApp, among the first partners in the US and Latin America.

## Country by country

| | Brazil | Mexico | Argentina | Colombia |
|---|---|---|---|---|
| Local instant rail | Pix, 24/7, seconds | SPEI, 24/7, near real time | Transfers 3.0 | PSE, minutes, bank windows |
| Card issuers | Banks and BCB-authorized payment institutions | Banks and e-money institutions (IFPEs) under the 2018 Fintech Law | Banks and payment service providers under BCRA rules | Banks and financial institutions supervised by the SFC |
| Virtual asset rules | Law 14.478/2022 and BCB Resolutions 519, 520, and 521 (SPSAV regime, in force February 2026) | Fintech Law; Banco de México limits what regulated institutions can offer | Law 27,739 (2024), PSAV registry at the CNV | No dedicated license; UIAF Resolution 314 of 2021 reporting |
| Foreign-currency card spend | 3.5 percent IOF on locally issued cards | Network FX and issuer fees | 30 percent withholding when paid in pesos | Network FX and issuer fees |
| Main stablecoin card use | Travel, USD subscriptions, dollar savings | Remittance recipients, USD income | Savings and daily spend in dollars | Freelancer income in USD |

### Brazil

Brazil has the most developed rules of the four. Law 14.478/2022 created the virtual asset framework, and the Banco Central do Brasil's Resolutions 519, 520, and 521 set up the SPSAV authorization regime, in force since February 2, 2026. The [PSAV explainer](/resources/more/psav-brazil-explained) covers who needs one.

The card side is separate. Card issuers are banks or payment institutions authorized by the BCB. A stablecoin card for Brazilian residents therefore needs a licensed issuer on the card side and an authorized provider on the stablecoin side.

The practical catch is Pix. Brazilians pay rent, utility bills, and each other over Pix, and many small merchants prefer it to cards. A card is great for a Netflix bill in dollars. It cannot pay a Pix charge or a boleto.

### Mexico

Mexico regulates fintechs under the 2018 Fintech Law, with Banco de México and the CNBV as supervisors. E-money institutions (IFPEs) can issue prepaid cards, and banks issue debit cards. Banco de México restricts how regulated financial institutions offer virtual asset operations to the public, which shapes how stablecoin card programs for Mexican users are built: the card and the stablecoin balance often sit with different providers rather than with one Mexican bank.

Mexico is also the world's second-largest remittance recipient. For a family receiving dollars from the US, a USD stablecoin card is one option. A peso deposit over SPEI, which settles in near real time, is the other. The [USDC to MXN routes guide](/resources/more/usdc-to-mxn-routes-2026) compares the cash-out side.

### Argentina

Argentina is the market where dollar cards make the most intuitive sense. Law 27,739 of 2024 created a registration regime for virtual asset service providers (PSAVs) at the Comisión Nacional de Valores. The currency controls on individuals were loosened in April 2025, but the habit of holding dollars is older than any single policy.

The tax detail matters for card design. As of 2026, foreign-currency card spend that the cardholder pays in pesos carries a 30 percent withholding on account of income tax, which the cardholder can later reclaim or credit. Paying from a dollar balance avoids it. That is part of why stablecoin cards funded in USDT or USDC are popular for everyday spending, not just travel.

For peso needs, Transfers 3.0 moves money between bank accounts and wallets. The [USDC to ARS routes guide](/resources/more/usdc-to-ars-routes-2026) covers it.

### Colombia

Colombia has no dedicated crypto license as of 2026. Virtual asset providers operate under anti-money-laundering reporting to the UIAF, the financial intelligence unit, under Resolution 314 of 2021, plus tax reporting to the DIAN. Card issuers are banks and financial institutions supervised by the Superintendencia Financiera.

The strongest use case is freelancers earning in dollars from foreign clients. A dollar card lets them spend without converting, and a PSE payout to a Colombian bank account covers pesos. The [USDC to COP routes guide](/resources/more/usdc-to-cop-routes-2026) compares both.

## What a USD card actually costs at a local merchant

A USD stablecoin card used at a supermarket in São Paulo, Mexico City, or Bogotá goes through three steps:

1. The merchant charges in local currency.
2. The network converts to USD at its daily rate.
3. The issuer may add a foreign transaction fee, often 1 to 3 percent, and debits the stablecoin balance.

So a USD card spent in local currency is not free. It is usually cheaper than a locally issued card spending in dollars, and it is more expensive than simply holding local currency for local spend. The right answer depends on where the money will be spent.

## Card or local payout for a regional team?

| If the recipient... | Pay with |
|---|---|
| Spends mostly on USD subscriptions, tools, and travel | USD stablecoin card |
| Wants to save in dollars | USD stablecoin card or stablecoin balance |
| Pays rent, bills, and local suppliers | Pix, SPEI, Transfers 3.0, or PSE payout |
| Needs cash | Local bank payout |
| Is a supplier invoicing in local currency | Local bank payout |

Many platforms offer both. BlindPay covers the local payout side: USDC or USDT converted and delivered over Pix and TED in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina, and PSE in Colombia, with compliance inside the API. The [marketplace payouts guide](/resources/more/marketplace-stablecoin-payouts-latam) and [LATAM contractor payroll guide](/resources/more/stablecoin-payroll-latam-contractors) cover those flows end to end.

## What to read next

For the cross-border card comparison, read [stablecoin-funded virtual cards vs. traditional virtual cards](/resources/more/stablecoin-virtual-cards-cross-border-payouts). If you are building a program, continue with the [developer's guide](/resources/more/how-to-issue-stablecoin-cards-api) and the [compliance guide](/resources/more/stablecoin-card-issuing-compliance), which covers how card and virtual asset rules stack by country.

For a side-by-side of card spend and local payouts in Brazil and Mexico, read [stablecoin card or Pix and SPEI payout](/resources/more/stablecoin-card-vs-pix-spei-payouts). For how money gets onto the card in the first place, see [how to fund a stablecoin card](/resources/more/how-to-fund-a-stablecoin-card).

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

---

Source: https://blindpay.com/resources/more/virtual-account-deposit-not-received

---
title: "Virtual account deposit not received? Why deposits get delayed, held, or returned"
seoTitle: "Virtual account deposit not received? Holds and returns"
description: "Why a virtual account deposit is late, on hold, or returned: arrival windows, payin statuses, RFIs, wrong rails, and how to trace a wire or SWIFT payment."
date: "2026-09-13"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How long does a virtual account deposit take to arrive?"
    a: "It depends on the rail. On the networks, ACH settles in 1 to 3 business days, Same-Day ACH and domestic wires on the same business day, and SWIFT in up to 5 business days. Transfers sent after the daily cut-off start counting from the next business day. At BlindPay, the arrival window for ACH and wire deposits is up to 5 business days."
  - q: "Why is my virtual account deposit on hold?"
    a: "A deposit goes on hold when transaction monitoring flags it for manual compliance review, for example an unusual activity pattern or an amount that's large for that customer. It's a pause, not a rejection. At BlindPay, your team may get a request for information about the sender and the purpose. If it isn't answered within 24 hours, the deposit may be refunded to the sender."
  - q: "Why was my virtual account deposit returned?"
    a: "Deposits usually come back because the details didn't match: a wrong account or routing number, a beneficiary name that isn't the account holder's, or an account that's closed or restricted. Unmet compliance requirements, including a hold nobody answered, can also end in a refund. Fiat refunds reach the payer once the banking network returns the funds, and fees may apply."
  - q: "Can a US virtual account receive SEPA, Pix, or RTP payments?"
    a: "Not at BlindPay. A US virtual account receives USD over ACH, wire, and SWIFT, depending on the account type. It has no IBAN, so SEPA payers need the SWIFT details instead, and Pix is a Brazilian rail with its own instructions. RTP payins go through BlindPay's shared memo-code account, not the dedicated account, even when the customer has an approved virtual account."
  - q: "Why did less money arrive than the payer sent?"
    a: "On wires, and SWIFT payments in particular, banks in the chain can deduct their own fees before the money lands. With the SHA charge option, the payer covers their own bank and the beneficiary absorbs intermediary and receiving fees. With BEN, every fee comes out of the amount. Ask the payer for the MT103, which shows the charge code, and book the gap as a bank fee."
---

A virtual account deposit that hasn't shown up is usually one of four things: it's still inside the rail's settlement window, it's held for compliance review, a bank returned it because the details didn't match, or the payer used a rail the account doesn't accept. The deposit's status and the payer's bank reference tell you which one.

Start with the status, not the support ticket.

## Key takeaways

- ACH and wire deposits can take up to 5 business days, and anything sent after the cut-off starts counting from the next business day.
- A deposit `on_hold` is waiting on compliance review. Answer the request for information the same day: an unanswered hold can end in a refund to the sender.
- Returns usually trace back to details that don't match: a wrong account number, a beneficiary name that isn't the account holder, or a closed account.
- A US virtual account takes USD over ACH, wire, and SWIFT. Not SEPA, not Pix, and at BlindPay, not RTP.
- To find a missing wire, ask the payer for the bank reference: the IMAD for a domestic wire, the UETR for SWIFT.

## What usually goes wrong with a virtual account deposit?

Most missing deposits fit one of eight patterns, and each has a different fix. Match the symptom first, then act.

| Symptom | Likely cause | What to do |
| --- | --- | --- |
| Payer sent it today, nothing shows | Still in the settlement window, or sent after the cut-off | Wait out the rail's window before escalating |
| Nothing after 5 business days | Wrong account or routing number, or the transfer never left the payer's bank | Ask the payer for the bank reference and trace it |
| Deposit shows as `on_hold` | Flagged for compliance review | Watch for a request for information and answer it within 24 hours |
| Deposit shows as `refunded` | Returned to the sender after a mismatch or an unanswered hold | Find the reason, fix it, ask the payer to resend |
| Less money arrived than was sent | Intermediary or receiving bank fees on a wire or SWIFT payment | Reconcile it as a bank fee, not an underpayment |
| Foreign payer asks for an IBAN | US virtual accounts have no IBAN | Send the SWIFT details and ask for USD |
| Payer sent an instant RTP payment | RTP isn't a rail into a BlindPay virtual account | Ask for ACH or wire, or use an RTP payin's own instructions |
| A $0.01 deposit appears | A platform verifying the account with a micro-deposit | Reconcile it, it's expected |

New to the account itself? Start with [what is a virtual account](/resources/more/what-is-a-virtual-account).

## Why hasn't the deposit arrived yet?

Most of the time, it's still on the rail. Bank transfers settle on business days, every rail has a daily cut-off, and a transfer sent after the cut-off is processed the next business day. Weekends, US federal holidays, and international banking holidays don't count.

These are the network windows from BlindPay's [cut-off times](/docs/kb/cut-off-times) reference:

| Rail | Cut-off (ET) | Typical network settlement |
| --- | --- | --- |
| ACH | 9:00 PM | 1 to 3 business days |
| Same-Day ACH | 3:00 PM | Same business day |
| Domestic wire | 3:00 PM | Same business day |
| International SWIFT | 10:30 AM | Up to 5 business days |

Those are network times, not end-to-end ETAs. For ACH and wire deposits, BlindPay's own arrival window is up to 5 business days ([payins](/docs/payins)). A SWIFT payment sent at 4:00 PM ET on the Friday before a US holiday can lose several calendar days before anyone has a reason to worry.

Check the payer's side too. Banks cap daily ACH and wire amounts, and a transfer over the cap can sit at the sending bank waiting for approval. From your side, that looks like a slow rail.

Rule of thumb: don't open a trace until the rail's full window has passed. Until then, the most useful thing your product can show is an expected arrival date.

## Which statuses will a virtual account deposit go through?

Every deposit into a BlindPay virtual account creates a payin, and the payin's status tells you where the money is. There are five statuses, and three of them are final. Because the deposit itself creates the payin, no payin at all usually means the money hasn't reached the account.

| Status | What it means | Final? | What to show your customer |
| --- | --- | --- | --- |
| `processing` | The deposit is arriving, or stablecoins are being converted and sent | No | "Payment received, processing" |
| `on_hold` | Held for manual risk or compliance review | No | "Under review, we may ask for details" |
| `completed` | Stablecoins delivered to the linked wallet | Yes | "Funds available" |
| `failed` | The payin didn't go through | Yes | "Payment failed" plus the next step |
| `refunded` | The deposit went back to the sender | Yes | "Returned to sender" plus the reason |

For a finer view, each `tracking_*` object on the payin has its own `step`: `processing`, `on_hold`, `pending_review`, `pending_refund_review`, or `completed`. `tracking_transaction` covers the fiat leg and carries a separate `status` that stays `null` until the bank side resolves to `completed` or `failed`.

The webhooks follow the same shape. `payin.new` fires when the deposit creates the payin, `payin.update` fires on intermediate steps like an arrival check or a manual review, and `payin.complete` fires when the payin is sent, refunded, or failed. So `payin.complete` doesn't mean success. Read the status ([webhook events](/docs/learn/webhooks-events)). Signature checks and duplicate handling are in [stablecoin API webhooks](/resources/more/stablecoin-api-webhooks-reconciliation).

## Why is a deposit on hold?

A deposit lands `on_hold` when transaction monitoring flags it for manual review. It's a pause, not a rejection: if compliance clears it, the payin continues and the stablecoins go out.

The triggers BlindPay lists include unusual activity patterns, amounts that are large compared with the customer's history, sanctions or watchlist screening matches, and an open request for information on the customer ([compliance holds](/docs/kb/cut-off-times#compliance-holds)).

If the flag can't be cleared internally, BlindPay emails your team (or sends a Slack message) with a request for information, or RFI. It asks for the relationship between the sender and your customer, the purpose of the payment, and the expected outcome. Per [on-hold transactions](/docs/kb/on-hold-transactions), if the RFI isn't answered within 24 hours, the transaction may be refunded to the sender. A hold can last up to 30 days, and a timeout without a decision fails the transaction.

Don't mix this up with a customer-level RFI. When KYC or KYB review needs more documents, the customer moves to `compliance_request`, can't send or receive funds until it's resolved, and gets 27 days to respond ([information requests](/docs/kb/information-requests)). Different trigger, different clock.

The best prevention is boring: keep an invoice or contract on file for each large payer, and make sure the business description from onboarding matches what flows through the account. [Virtual account requirements](/resources/more/virtual-account-requirements-kyc-kyb) covers what the review looks at.

## Why do deposits get returned to the sender?

A deposit comes back when a bank in the chain or the compliance review can't accept it. The usual reasons are wrong details, a name mismatch, a closed or restricted account, unmet compliance requirements, or a rail the account doesn't take.

- **Wrong account or routing number.** ACH returns carry a reason code: R03 means the receiving bank couldn't locate the account, R04 means the account number is invalid, R02 means it's closed. A wire with a bad account number comes back the same way, just slower.
- **Beneficiary name doesn't match.** A named virtual account is in your customer's name. The payer should use that exact name as the beneficiary, not your platform's brand or a trading nickname. Receiving banks can reject wires where the name and the account don't line up.
- **The account isn't live, or isn't anymore.** A BlindPay virtual account has no rail numbers until it's approved, so any details a payer has from before approval are wrong. Payments to an account that's closed or restricted fail or get refunded.
- **Compliance requirements aren't met.** This includes the hold from the section above where nobody answered the RFI.
- **The payer used a rail the account doesn't take.** RTP isn't one: at BlindPay, no virtual account carries an RTP rail, and an `rtp` payin always uses the shared memo-code account. SEPA needs an IBAN, which a US account doesn't have. SWIFT works, but only once the account is approved, since there's no memo-code fallback for SWIFT ([payins](/docs/payins)).

When a deposit is `refunded`, the money goes back to the sender, not to the wallet. Fiat refunds reach the payer once the banking network returns the funds, which depends on each bank's processing time, and fees may apply. Your customer's client can get back less than they sent.

## How do you trace a missing wire or SWIFT payment?

Trace with the payer's bank reference, not the amount. Every rail has one, and it's the only thing a bank's operations team can search by.

1. **Confirm the window has passed.** Up to 5 business days for ACH, wire, and SWIFT, counted from the first business day after the cut-off.
2. **Check the details against the right rail.** The account object carries separate ACH and wire details. A payer who copied the ACH numbers into a wire form, or the reverse, may have sent the money somewhere else.
3. **Get the reference.** For ACH, the 15-digit trace number. For a domestic wire, the Fedwire IMAD (Input Message Accountability Data). For SWIFT, the UETR, a 36-character reference that follows a payment end to end.
4. **Ask for the MT103 on SWIFT payments.** It shows the beneficiary name (field 59), the amount and currency, the charge code (field 71A: OUR, SHA, or BEN), and the intermediary banks.
5. **Have the payer's bank trace it.** With the UETR, the sending bank can see which bank in the chain is holding the payment and why.
6. **Send everything to your provider.** Include the virtual account id, the expected amount, the date sent, and the reference.
7. **If it was returned, resend with corrected details** once the return has credited the payer.

Where the days go on a SWIFT payment, hop by hop, is in [why are cross-border payments slow](/resources/more/why-are-cross-border-payments-slow).

## What does a held SWIFT deposit look like, start to finish?

Here's one deposit through two endings. Amounts and timings are illustrative, not quotes.

**Setup.** A client in Germany pays a 4,800 USD invoice to your customer's US virtual account by SWIFT, with the SHA charge option.

1. **Day 0.** The client's bank sends the payment late in the afternoon, so it starts moving the next business day.
2. **Day 3.** An intermediary bank deducts 30 USD. 4,770 USD lands on the virtual account. The payin is created (`payin.new`) and moves to `processing`.
3. **Day 3, an hour later.** Monitoring flags it: first payment from this sender, and about four times the customer's usual deposit. The payin goes `on_hold` (`payin.update`), and your team gets an RFI email.

**Ending A: you answer the same day.** You send the invoice and the service contract. Compliance releases the hold, the 4,770 USD converts to USDC, and because the deposit is over $100, BlindPay's fee is deducted from the delivered amount at transaction time (`transaction_fee_amount`). `payin.complete` arrives with status `completed`. Your ledger books 4,800 invoiced, 30 bank fee, the BlindPay fee, and the net USDC received. Done.

**Ending B: nobody answers for 24 hours.** The transaction may be refunded. The payin ends `refunded`, and the 4,770 USD travels back through the banking network, possibly minus more fees. The client gets a partial refund days later and has to pay again. Same money, two weeks lost.

The difference between the two endings is one email. Put RFIs on someone's on-call rota.

How each fee in that chain works, including where the BlindPay fee lands below and above $100, is in [virtual account fees](/resources/more/virtual-account-fees).

## Where does BlindPay fit?

BlindPay issues US virtual accounts in your customer's own name. They receive ACH, wire, and SWIFT, depending on the account type, and every deposit converts to USDC or USDT and settles to the wallet linked to the account. The account doesn't hold a balance. The money ends up in the wallet.

Each deposit is a payin with a status, tracking steps, and `payin.*` webhooks, so "where is my money" has an API answer. Holds come with an RFI to your team.

What it doesn't do: IBANs, SEPA, or RTP into the dedicated account. If your payers are in Europe, they pay by SWIFT in USD. The full account behavior is in [virtual accounts](/docs/virtual-accounts), and the flow from bank deposit to wallet is in [accept bank transfers and settle in stablecoins](/resources/more/accept-bank-transfers-settle-in-stablecoins).

## What to do next

Map all five payin statuses to customer-facing messages, and name an owner for `on_hold` RFIs, before your next account goes live. Then build the failure screens on a development instance: a payin with a `request_amount` of $666.00 forces `failed`, and $777.00 forces `refunded`. You'll see both in production eventually. Better to see them first in a sandbox.

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

---

Source: https://blindpay.com/resources/more/how-to-track-a-crypto-off-ramp-payout

---
title: "Where is my off-ramp payout? How to track it rail by rail, and what to tell the recipient"
seoTitle: "How to track a crypto off-ramp payout, rail by rail"
description: "Track an off-ramp payout from transaction hash to bank: the reference each rail gives you (Pix E2E ID, SPEI key, ACH trace, UETR) and status copy."
date: "2026-09-12"
updated: "2026-09-12"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do I track a crypto off-ramp payout?"
    a: "In two halves. Track the stablecoin leg by its transaction hash on a block explorer. Track the fiat leg with the reference the bank rail assigns: the end-to-end ID on Pix, the clave de rastreo on SPEI, the trace number on ACH, the IMAD on Fedwire, the UETR on SWIFT, or the end-to-end ID on SEPA. In between, the provider's payout status tells you which stage it's in."
  - q: "The provider says completed but the recipient hasn't received the money. What now?"
    a: "Give the recipient the rail reference and ask them to raise it with their bank. Completed means the payment reached the receiving bank's network, and the bank may still be crediting the account, holding it for its own checks, or have applied it to the wrong account. A UETR, IMAD, or SPEI tracking key lets the bank find the exact payment instead of searching by amount and date."
  - q: "How do I check a SPEI transfer in Mexico?"
    a: "Use Banxico's CEP lookup at banxico.org.mx/cep. Enter the transfer date, the clave de rastreo (tracking key) or reference number, the sending and receiving banks, the receiving account, and the amount. If the payment settled, you can download the CEP, an electronic proof of payment generated from the receiving bank's information. Banxico lists query hours of 09:30 to 23:00."
  - q: "What is a UETR and where do I find it?"
    a: "A UETR is the Unique End-to-end Transaction Reference attached to a SWIFT payment. Every bank in the chain uses the same identifier, so the recipient's bank can trace the payment through correspondents with it. On BlindPay it's returned as provider_uetr on the payout and the payout.complete webhook, for SWIFT and domestic wire payouts, once the wire is confirmed. It's empty while the payment is in flight."
  - q: "Should I retry a payout that's on hold?"
    a: "No. On hold means the payout is waiting for a review, not that it failed. Retrying creates a second payout that can land on hold too, and both may go through. Leave it, answer any request for information quickly, and tell the recipient the payment is being checked. At BlindPay, on hold resolves to processing, completed, failed, or refunded."
---

To track an off-ramp payout, follow the stablecoin leg by its transaction hash and the fiat leg by the reference its rail assigns: the end-to-end ID on Pix, the clave de rastreo on SPEI, the trace number on ACH, the IMAD on Fedwire, the UETR on SWIFT, or the end-to-end ID on SEPA. The provider's status shows which stage the payout is in.

Most "where is my money" tickets get solved by handing over the right reference. Here's which one, and when.

## Key takeaways

- Every off-ramp payout has two trackable halves: an on-chain transfer and a bank payment.
- Each rail has its own reference. The recipient's bank can find a payment in minutes with it, and in days without it.
- Statuses tell you the stage. `On hold` is a review, not an error, and `completed` means the money reached the rail, not that the recipient checked their app.
- Write status copy per stage and per rail before launch. Support teams answer the same five questions all day.

## What are the stages of an off-ramp payout?

Seven stages, and a recipient-facing message for each. The statuses are BlindPay's, from the [payouts reference](/docs/payouts). Other providers use similar names.

| Stage | What's happening | Provider status and event | What to tell the recipient |
| --- | --- | --- | --- |
| Quote accepted | Rate and fees locked for a few minutes | Quote created | "Your payment of R$5,000.00 is confirmed at this rate." |
| Stablecoins collected | Funds pulled from the sender's wallet | `processing`, `payout.new` | "We've received the funds and started your transfer." |
| Compliance review | Payout held for screening or documents | `on_hold`, `payout.update` | "Your payment is being reviewed. No action needed unless we contact you." |
| Converting | Stablecoins converted to local currency | `processing` | "We're converting your payment to reais." |
| Sent to the bank | Payment submitted to Pix, SPEI, ACH, SEPA, or SWIFT | `processing`, `payout.update` | "Your payment is on its way to your bank. Expected: within minutes." |
| Settled | Payment reached the receiving bank | `completed`, `payout.complete` | "Paid. Reference: E2E ID E1234..." |
| Returned | Stablecoins sent back instead of converting | `refunded`, `payout.complete` | "The bank couldn't accept this payment. Please check your account details." |

Two statuses need care. A `failed` payout fires `payout.update`, not `payout.complete`, and at BlindPay it doesn't refund automatically. And `on_hold` isn't a failure, so never show it in red. The [payout statuses explainer](/resources/more/stablecoin-payout-statuses-explained) covers which statuses are final and why.

Each BlindPay payout also carries tracking objects (`tracking_transaction`, `tracking_liquidity`, `tracking_payment`, `tracking_complete`) whose `step` moves through `processing`, `on_hold`, `pending_review`, and `completed`. They're what lets you split "converting" from "sent to the bank" in your own UI.

## Which reference does each rail give you?

| Rail | Reference | Format | Where it's checked |
| --- | --- | --- | --- |
| Blockchain | Transaction hash | Hex or base58 string, per chain | Block explorer: Etherscan, Polygonscan, Basescan, Arbiscan, Solscan, Tronscan, StellarExpert |
| Pix (Brazil) | End-to-end ID (E2E ID) | [32 alphanumeric characters](https://github.com/bacen/pix-api/blob/master/openapi.yaml) | Recipient's bank app or statement |
| SPEI (Mexico) | Clave de rastreo | [Up to 30 alphanumeric characters](https://www.banxico.org.mx/cep/) | Banxico's CEP lookup |
| ACH (US) | Trace number | [15 digits, assigned by the originating bank](https://achdevguide.nacha.org/ach-file-details) | Recipient's bank |
| Fedwire (US) | IMAD | [Input Message Accountability Data](https://www.frbservices.org/resources/financial-services/wires/faq/iso-20022/format) | Recipient's bank |
| SWIFT | UETR | [36-character unique identifier](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr) | Any bank in the chain, through Swift gpi tracking |
| SEPA | End-to-end ID | Up to 35 characters, set by the sender | Recipient's bank |

A few notes from the field.

**Pix.** The E2E ID identifies the payment across the whole Pix system. If something goes wrong, it's also what the recipient's bank needs for a devolução (refund). The Central Bank's [MED guide](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Guia_MED.pdf) sets the rules for fraud-related returns, including an 80-day window from the original payment.

**SPEI.** The clave de rastreo is the most useful reference in Latin America, because anyone can check it. SPEI runs [24/7](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html), so payouts settle at any hour.

**SWIFT.** Cross-border SWIFT payments moved to ISO 20022 messages when the coexistence period with the old MT format ended in November 2025, and the UETR carries over. With it, the recipient's bank can see which correspondent is holding the payment and why. BlindPay's SWIFT (POBO/COBO) payouts carry UETR tracking and MT103 confirmations, which recipients' finance teams and auditors already know how to read ([how POBO/COBO works](/pobo-cobo-swift)).

## How do you check a SPEI payment yourself?

Mexico is the one rail where the sender can verify settlement without the recipient's bank.

1. Go to [banxico.org.mx/cep](https://www.banxico.org.mx/cep/).
2. Enter the date of the transfer.
3. Enter the clave de rastreo, or the reference number.
4. Select the sending bank and the receiving bank.
5. Enter the recipient's CLABE and the exact amount.
6. Download the CEP (Comprobante Electrónico de Pago).

The CEP is built from the receiving bank's information, which is why recipients and auditors accept it. It's the best answer to "I didn't get it" on a SPEI payout.

## What does BlindPay return for tracking?

Statuses and webhooks for every payout, plus the rail references that the rail provides. Per the [POBO/COBO guide](/docs/kb/pobo-cobo), these arrive on `GET /payouts/{id}` and on the `payout.complete` webhook:

| Rail | `provider_uetr` | `provider_imad` | `provider_reference` | `provider_clearing_system` |
| --- | --- | --- | --- | --- |
| International SWIFT | Yes | No | No | `SWIFT` |
| Domestic wire | Yes | Yes | Sometimes | `FED` or `CHIPS` |
| ACH | No | No | Sometimes | `ACH` |

`provider_uetr` stays null while the payment is in flight and fills in once the wire is confirmed. `provider_reference` is a bank-side booking reference, not the formal ACH trace number, so don't hand it to a bank as one.

SWIFT payouts add one more object. They start `on_hold` until compliance documents are approved, and `tracking_documents` reports progress from `waiting_documents` to `compliance_reviewing` ([SWIFT statuses](/docs/kb/swift-statuses)). Documents must be submitted within 30 days of payout creation.

## How should support answer "where is my money"?

Work from the status, in this order.

1. **`processing` longer than the rail's normal time.** Check which tracking object is still open. A stuck `tracking_payment` with a business-day rail usually means a cut-off was missed. The [settlement times by rail](/resources/more/stablecoin-payout-settlement-times) give the normal window.
2. **`on_hold`.** Tell the recipient it's under review. Don't retry. Answer any request for information within hours, since an unanswered one can end in a refund ([on-hold transactions](/docs/kb/on-hold-transactions)).
3. **`completed`, recipient says no.** Send the rail reference. The recipient's bank finds the payment with it, then credits it or explains the delay.
4. **`refunded`.** The stablecoins went back to the funding source. Fix the bank details, usually a name or account number problem, and send a new payout with a new quote.
5. **`failed`.** At BlindPay this doesn't refund automatically. Open a ticket with support instead of waiting.

Keep every reference in your own ledger next to the payout ID. Finance asks for them months later, during reconciliation. The [webhooks and reconciliation guide](/resources/more/stablecoin-api-webhooks-reconciliation) shows how to store events so they don't get processed twice.

## How should status copy read?

Short, specific, and per rail.

- **Give the ETA for the rail, not the provider.** "Within minutes" for Pix and SPEI. "One to two business days" for ACH.
- **Say what the recipient can do.** Usually nothing, until a reference exists.
- **Show the reference as soon as you have it.** E2E ID, clave de rastreo, UETR.
- **Don't say "instant" before settlement.** Say it after.
- **Never show a review as an error.** Grey or neutral, not red.

The [payout mistakes guide](/resources/more/stablecoin-payout-mistakes) lists the errors that cause most returns in the first place.

## How does BlindPay help you track payouts?

BlindPay reports every payout through statuses, tracking objects, and webhooks, from the moment the stablecoins are collected to the moment local currency lands. SWIFT and domestic wire payouts carry the UETR, wires carry the IMAD, and SWIFT compliance progress shows up in `tracking_documents`. Start with the [payouts reference](/docs/payouts), then wire `payout.update` and `payout.complete` into your status page.

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

---

Source: https://blindpay.com/resources/more/stablecoin-api-webhooks-reconciliation

---
title: "Stablecoin API webhooks: signature checks, duplicate events, and reconciliation"
seoTitle: "Stablecoin API webhooks and reconciliation"
description: "How to handle stablecoin API webhooks in production: verify signatures on raw bytes, dedupe retries, never regress a final status, reconcile daily."
date: "2026-09-12"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How do I verify a BlindPay webhook signature?"
    a: "Concatenate the svix-id header, the svix-timestamp header, and the raw request body with a period between each. Compute an HMAC-SHA256 of that string using the base64-decoded part of your whsec_ signing secret, then compare it in constant time against each v1 signature in the svix-signature header. Reject timestamps outside a tolerance window, 5 minutes is a reasonable default."
  - q: "Why do I receive the same webhook more than once?"
    a: "Webhook delivery is at-least-once. If your endpoint does not answer with a 2xx status, BlindPay retries with backoff over the following hours, and a manual replay from the dashboard resends the same event. The svix-id header stays the same across retries of one event, so use it to deduplicate."
  - q: "Which webhook events matter for stablecoin payouts?"
    a: "payout.new when the payout is created and the source funds are captured, payout.update as it moves through intermediate steps like review or the bank send, and payout.complete when it finishes. Subscribe to both update and complete, and always read the status field in the payload rather than inferring it from the event name."
  - q: "Should I rely only on webhooks for payment status?"
    a: "No. Webhooks are the fast path. A scheduled reconciliation job that retrieves payins and payouts from the API and compares them with your ledger is the safety net for missed deliveries, handler bugs, and events that arrived while your endpoint was down."
  - q: "Can I test webhooks before going to production?"
    a: "Yes. Webhooks behave the same on BlindPay development and production instances: same event names, payloads, and signatures. The events dashboard shows every delivery attempt and lets you replay any event, which is also safe for backfilling a handler you just fixed."
---

A stablecoin API tells you what happened to a payment through webhooks: signed HTTP callbacks fired when a payin, payout, or account changes state. Handling them in production takes four habits. Verify the signature on the raw bytes. Deduplicate retried deliveries. Never let an event move a payment backwards. And reconcile against the API on a schedule, because webhooks are the fast path, not the source of truth.

Get those four right and most "where's my money?" tickets never get written.

## Why use webhooks instead of polling?

Because payments are slow in unpredictable ways. A Pix payout finishes in minutes. An ACH deposit can take 5 business days. A SWIFT payout can sit in review for a while. Polling every payment every minute to catch that spread wastes requests and still reacts late.

Webhooks flip it: the provider calls you when something changes. At BlindPay you register an HTTPS endpoint per instance (up to 25 of them), choose which events to receive, or pass an empty `events` array to get everything. Setup is in the [webhooks guide](/docs/learn/webhooks).

## How do you verify a webhook signature?

Before you trust a payload, prove it came from the provider and wasn't altered. BlindPay signs every call with three headers: `svix-id`, `svix-timestamp`, and `svix-signature`.

The check, from the [verification docs](/docs/learn/webhooks-verification):

```javascript
const crypto = require('node:crypto')

function verifyWebhook(secret, rawBody, svixId, svixTimestamp, svixSignature) {
  const now = Math.floor(Date.now() / 1000)
  if (Math.abs(now - Number(svixTimestamp)) > 5 * 60) {
    throw new Error('Webhook timestamp outside tolerance window')
  }

  const signedContent = `${svixId}.${svixTimestamp}.${rawBody}`
  const secretBytes = Buffer.from(secret.split('_')[1], 'base64')
  const expected = crypto
    .createHmac('sha256', secretBytes)
    .update(signedContent)
    .digest('base64')

  const isValid = svixSignature
    .split(' ')
    .map(sig => sig.split(',')[1])
    .some((sig) => {
      try {
        return crypto.timingSafeEqual(Buffer.from(sig, 'base64'), Buffer.from(expected, 'base64'))
      }
      catch {
        return false
      }
    })

  if (!isValid)
    throw new Error('Invalid webhook signature')
}
```

Three mistakes break this in practice:

1. **Parsing before verifying.** Most frameworks parse JSON before your handler runs. Re-serializing the parsed body can reorder keys or change whitespace, and the signature fails. Grab the raw bytes.
2. **Using `===` to compare.** String comparison leaks timing. Use a constant-time compare.
3. **Skipping the timestamp check.** Without it, a captured valid payload can be replayed at you forever.

The header can carry more than one signature during secret rotation. Accept the request if any of them matches.

## Why do you get the same event twice?

Because delivery is at-least-once. If your endpoint doesn't answer `2xx`, BlindPay retries with backoff over the following hours. A slow handler that times out after doing the work gets the event again. A teammate replaying an event from the dashboard sends it again. None of this is a bug.

So dedupe. The `svix-id` header stays the same across every retry of one event:

```
on_webhook(request):
    verify(request)                          # raw bytes, first
    if seen(request.headers["svix-id"]):
        return 200                           # already handled
    enqueue(request.body)                    # do the work async
    mark_seen(request.headers["svix-id"])
    return 200                               # answer fast
```

Answer fast and do the work in a queue. A handler that calls three services before responding is a handler that times out and gets retried. The same principle applies on the write side, which is what [idempotency keys](/resources/more/stablecoin-api-idempotency-keys) are for.

## Which events matter for a payout flow?

At BlindPay, the ones you'll handle most, from the [event catalog](/docs/learn/webhooks-events):

| Event | Fires when |
| --- | --- |
| `payin.new` | A payin is created, including a deposit into a virtual account |
| `payin.update` | A payin moves through an intermediate step, like an arrival check or review |
| `payin.complete` | A payin finishes: delivered, refunded, or failed |
| `payout.new` | A payout is created and the source funds are captured |
| `payout.update` | A payout moves through an intermediate step, like review or the bank send |
| `payout.complete` | A payout finishes |
| `virtualAccount.complete` | A virtual account is approved and its account number is issued |

One rule: don't infer the status from the event name. Read the `status` field in every payload, and subscribe to both `payout.update` and `payout.complete`. Then it doesn't matter which event carries a terminal state. Your state machine only cares about the status, and the full status list is in [stablecoin payout statuses explained](/resources/more/stablecoin-payout-statuses-explained).

## How do you keep events from moving a payment backwards?

Events can arrive out of order. A retried `payout.update` saying `processing` can land after `payout.complete` said `completed`. If your handler just writes whatever it receives, a paid payout goes back to "sending."

Two guards fix it:

- **Terminal states are sticky.** Once a payment is `completed`, `failed`, or `refunded`, ignore any later event for it.
- **Status beats hashes.** A payin's on-chain transaction can get replaced during a gas spike, so the `transaction_hash` you see at the end may differ from the one first broadcast. Treat `status` as the source of truth, not a specific hash.

## How do you reconcile webhooks against your ledger?

Webhooks tell you fast. Reconciliation tells you for sure. Run both.

**Match on ids, not amounts.** Every event carries the resource id (`po_...`, `pi_...`) and the customer id. Store them when you create the payment, and match events on them. Two payouts of the same amount to the same person on the same day are normal.

**Store every amount field, in minor units.** A payin carries `sender_amount`, `receiver_amount`, `billing_fee_amount`, `transaction_fee_amount`, and `partner_fee`. The recipient's number is `receiver_amount`, not the deposit. Keep them all, as integers, so the numbers add up later.

**Don't count one payment twice.** At BlindPay a payout can pay a registered bill instead of a bank account, and that bill fires its own `payable.*` events next to the `payout.*` ones. Correlate them through `payable_id` and `payout_id`. Two completes, one payment.

**Run a daily sweep.** Once a day, list or retrieve every payin and payout still non-terminal in your ledger through the API (`GET /payouts/{id}`, `GET /payins/{id}`), and compare. Anything that finished while your endpoint was down shows up here. Anything stuck past its expected window becomes a ticket.

**Backfill with replay.** When you fix a broken handler, replay the missed events from the dashboard. A replay resends the original payload as a new delivery attempt, not a new business event, so it's safe.

## What should you test before production?

Webhooks behave the same on development and production instances, so there's no excuse to find these in prod:

1. A tampered body fails verification.
2. A timestamp older than 5 minutes fails verification.
3. The same event replayed twice changes nothing.
4. An old `processing` after `completed` changes nothing.
5. Your endpoint returns `2xx` in under a second, even when downstream work is slow.
6. The daily sweep catches a payout whose webhook you dropped on purpose.

What a sandbox won't show you is covered in [stablecoin API sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production). The API's request and response types come from one OpenAPI contract, which [stablecoin API SDKs](/resources/more/stablecoin-api-openapi-sdks) explains.

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API for cross-border payouts and collections: USDC or USDT in, local currency out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. Every webhook is signed, retried on failure, and replayable from the dashboard, and [virtual USD accounts](/virtual-accounts) report each deposit as its own payin event.

## What to do next

Point a webhook endpoint at your development instance, trigger one payin and one payout, and replay each event twice from the events dashboard. If your ledger changes on the replay, fix the dedupe before anything else. Then write the daily sweep. Start with the [webhooks guide](/docs/learn/webhooks) and the [verification reference](/docs/learn/webhooks-verification).

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

---

Source: https://blindpay.com/resources/more/crypto-on-ramp-fees-explained

---
title: "How much does a crypto on-ramp cost? Fees, spreads, and how to read a quote"
seoTitle: "Crypto on-ramp fees: spreads, rail costs, and quotes"
description: "A crypto on-ramp charges through the rate spread, a service fee, the payment rail, and sometimes the network. How each works, and how to read the quote."
date: "2026-09-11"
updated: "2026-09-11"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "Are on-ramp and off-ramp fees the same?"
    a: "They have the same parts (spread, service fee, rail cost, network fee) but different weights. On an on-ramp, the payment method decides most of the cost: a card can cost several percent, while Pix or SPEI costs close to nothing. On an off-ramp, the payout rail and any intermediary banks matter more, and the sender usually pays the network fee to deposit the stablecoins."
  - q: "What is the cheapest way to on-ramp fiat into USDC?"
    a: "A local push rail into a provider that quotes a live rate. Pix in Brazil and SPEI in Mexico cost the payer almost nothing and settle in minutes, and ACH credits are cheap in the US. Cards and mobile wallets are the most expensive. Compare the stablecoin amount you receive per unit of fiat, not the advertised fee."
  - q: "Why does my on-ramp quote show no fee but I receive less than the market rate?"
    a: "Because the fee is inside the exchange rate. A provider that advertises zero fees can quote a rate worse than the market and keep the difference as a spread. Divide the stablecoin amount you receive by the fiat you send and compare it with the market rate at the same moment. The gap is the real cost."
  - q: "Who pays the blockchain network fee on an on-ramp?"
    a: "It depends on the provider. Most consumer on-ramps fold it into the price, and many business on-ramps cover delivery gas as part of their fee. On low-cost networks like Solana or Polygon it is usually a fraction of a cent. On Ethereum mainnet it can be a few dollars when the network is busy, so the network choice matters for small deposits."
  - q: "Does my bank charge a fee on top of the on-ramp fee?"
    a: "Sometimes. Wires and SWIFT transfers often carry a sending fee from your own bank, and intermediary banks can deduct their own charges on international wires. That cost sits outside the on-ramp's quote. Pix, SPEI, and ACH credits are usually free or nearly free to send."
  - q: "How long is a crypto on-ramp quote valid?"
    a: "Usually a few minutes. The quote locks a rate and fees that move with the market, so providers keep the window short. On BlindPay a payin quote lasts 5 minutes, except OTC quotes, which last 10 seconds. If it expires before you create the payment, request a new one at the current rate."
---

A crypto on-ramp charges in up to four places: the spread between the market rate and the quoted rate, a flat or percentage service fee, the cost of the payment rail, and sometimes the blockchain network fee. Cards add the most. Local instant rails like Pix and SPEI add the least. A good quote shows all four before you pay.

The quick way to compare providers: divide the stablecoins you receive by the fiat you send. That one number already includes every fee, wherever the provider put it.

## Key takeaways

- The spread is often the largest cost, and it doesn't show up as a line item. "Zero fees" usually means the fee is in the rate.
- The payment method sets the floor. Card on-ramps price in chargeback risk; push rails like Pix, SPEI, and wires don't need to.
- Network fees are cents or less on Solana and Polygon, and can be dollars on Ethereum mainnet when it's busy.
- Ask who pays: a fee added on top of the sender's amount and a fee deducted from the receiver's amount produce different invoices.
- On-ramp and off-ramp fees have the same parts with different weights. Don't reuse one price list for the other.

## What fees does a crypto on-ramp charge?

Six costs can sit between the fiat you send and the stablecoins you receive. Not every provider charges all of them, and not every one shows up on the quote.

| Cost | What it is | Where you see it |
| --- | --- | --- |
| Spread | The gap between the market exchange rate and the rate you're quoted | Hidden inside the rate unless the quote shows both |
| Service fee | A flat amount, a percentage, or both, charged by the on-ramp | Usually a line on the quote |
| Payment method cost | Card processing, or the cost of collecting a bank transfer | Folded into the price for cards; often small for bank rails |
| Network fee | Gas to deliver the stablecoins on-chain | Folded into the price, or covered by the provider |
| Partner markup | A platform's own fee on top of the provider's | A separate line, if the platform discloses it |
| Sending bank fee | What your own bank charges to send a wire | Outside the quote entirely |

The first four are the provider's. The fifth is your platform's choice. The last one is between you and your bank.

**Spread.** A stablecoin like USDC is redeemable one to one for dollars at its issuer, per [Circle](https://www.circle.com/usdc), so a USD on-ramp has little reason to quote far from par. Local currency on-ramps are different: converting reais or pesos into a dollar stablecoin is an FX trade, and the spread on that trade is where most of the cost lives. Depth of liquidity drives it, which is why [live quotes](/resources/more/on-off-ramp-liquidity-live-quotes) beat batch rates.

**Payment method.** Pix is free for individuals to send under [Banco Central do Brasil](https://www.bcb.gov.br/en/financialstability/pix_en) rules, and SPEI transfers in Mexico are cheap and run around the clock through [Banxico](https://www.banxico.org.mx/services/interbanking-electronic-payme.html). Cards are the opposite. [Card processing alone](/resources/more/stablecoin-payment-fees-vs-card-processing-fees) costs merchants a few percent before chargebacks.

**Network fee.** Every on-chain delivery pays the network. On Ethereum, fees rise with demand for block space, as [ethereum.org explains](https://ethereum.org/en/developers/docs/gas/). On Solana the base fee per signature is tiny, per the [Solana docs](https://solana.com/docs/core/fees). For a $50 deposit, the network can matter more than the provider.

## How do you read an on-ramp quote?

Start with the receiver amount. It is the only number you get to spend.

A complete quote has these parts:

1. **Sender amount.** The fiat the payer sends, in the currency of the payment method.
2. **Receiver amount.** The stablecoins that land in the destination wallet.
3. **Market rate.** The raw exchange rate before the provider's margin.
4. **Quoted rate.** The rate the provider is actually giving you.
5. **Fee lines.** Flat fee, percentage fee, any partner fee, each in a known currency.
6. **Expiry.** When the quote stops being valid.

If a quote shows only the sender amount, the receiver amount, and a "fee" line, compute the rest yourself. The effective rate is sender amount divided by receiver amount. Compare it with the market rate at the same moment and you have the all-in cost, spread included.

Watch the units too. Many APIs return amounts as integers in minor units, so `1000000` can mean $10,000.00. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers minor units and fee direction in more detail.

## What does a worked example look like?

A Brazilian company sends R$10,000 by Pix and wants USDC. Two providers quote it. The numbers below are illustrative, not anyone's real pricing.

Assume the market rate is 5.40 BRL per USDC. At that rate, R$10,000 is worth 1,851.85 USDC.

| | Quote A: "zero fees" | Quote B: rate plus flat fee |
| --- | --- | --- |
| Quoted rate | 5.4648 BRL per USDC (1.2% from market) | 5.4216 BRL per USDC (0.4% from market) |
| Converted amount | 1,829.89 USDC | 1,844.47 USDC |
| Flat fee | 0 | 2.00 USDC |
| Receiver amount | 1,829.89 USDC | 1,842.47 USDC |
| All-in cost | 21.96 USDC (1.19%) | 9.38 USDC (0.51%) |

The "zero fee" quote costs more than twice as much. Nothing on Quote A is false. The fee just moved into the rate.

Now shrink the deposit to R$200. Quote B's flat fee becomes 2.00 USDC on about 37 USDC, more than 5%. Quote A's spread is still 1.2%. Flat fees punish small tickets and percentage spreads punish big ones, so compare at the amounts you'll actually send.

## Who pays the fee: the sender or the receiver?

Either one, and the choice changes what the invoice should say.

- **Receiver pays.** The sender sends exactly the invoiced fiat amount, and the fee comes out of the stablecoins delivered. This is the common default.
- **Sender pays.** The fee is added on top of the fiat amount, so the receiver gets a round number of stablecoins.

If a supplier needs exactly 10,000 USDC to land, the quote has to be built from the receiver side with the sender covering the fee. If a customer is topping up "R$10,000 worth", build it from the sender side and let the fee reduce the stablecoins. Pick one convention per flow and show it in your UI.

## Are on-ramp and off-ramp fees the same?

Same parts, different weights.

| | On-ramp (fiat to stablecoin) | Off-ramp (stablecoin to fiat) |
| --- | --- | --- |
| Biggest variable | Payment method: card vs bank rail | Payout rail: local instant rail vs SWIFT |
| Network fee | Paid on delivery, usually by the provider | Paid by the sender to deposit stablecoins |
| Bank-side extras | Sending fees on wires | Intermediary and receiving bank fees on SWIFT |
| Chargeback exposure | High for cards, low for push rails | None on the stablecoin leg |

The off-ramp side has its own breakdown in [how much a stablecoin off-ramp costs](/resources/more/stablecoin-off-ramp-fees-explained). A provider that's cheap one way isn't automatically cheap the other way, so price both directions if your flow runs both.

## What should you ask a provider about on-ramp pricing?

Eight questions that surface the real cost:

1. Does the quote show both the market rate and your rate?
2. Is the fee flat, a percentage, or both, and does it change by rail or corridor?
3. Who pays the network fee on delivery?
4. Can the fee be charged to the sender, the receiver, or invoiced later?
5. How long is the quote valid, and what happens if it expires?
6. Are there minimums per currency, and fees below them?
7. Is there a monthly minimum, setup fee, or per-account fee?
8. Can I add my own markup, and how is it collected and paid to me?

[Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) covers the pricing models behind these answers.

## How does BlindPay price on-ramps?

BlindPay doesn't publish a flat rate card, because fees vary by payment method and corridor. Instead, every payin quote discloses the exact numbers before any money moves:

- **Both rates.** `commercial_quotation` is the market rate, and `blindpay_quotation` is the rate including BlindPay's fee, so the spread is visible.
- **Every fee line.** `flat_fee`, `partner_fee_amount` if your platform adds a markup, and `billing_fee_amount` when the fee is invoiced instead of deducted.
- **A 5-minute lock.** The quote fixes the amounts, fees, and destination for 5 minutes (10 seconds for OTC quotes).
- **Who pays.** `cover_fees: false` deducts the fee from the stablecoins delivered; `cover_fees: true` adds it to what the sender pays.
- **Your fee schedule.** `GET /billing/fees` returns the flat and percentage payin fee configured for each rail and network on your instance.

A few structural facts: there is no setup fee and no monthly minimum, and development instances are free. US virtual accounts cost $1.50 per month each. Deposits into a virtual account below $100.00 accrue the BlindPay fee to the end-of-cycle invoice (`billing_fee_amount`); deposits of $100.00 or more have it deducted from the on-chain delivery (`transaction_fee_amount`). That's current behavior; confirm it in the [billing docs](/docs/learn/billing) before you build on it.

Platforms can add their own partner fee to each payin, as a percentage (capped at 99%) or a flat amount (capped at $1,000.00). BlindPay collects it during the transaction and releases it monthly, as described in [partner fees](/docs/learn/partner-fees).

**When BlindPay is the right fit:** you're collecting bank transfers (ACH, wire, Pix, SPEI, PSE, or Transfers 3.0) and want an itemized quote you can show your users or check in code. **When it isn't:** you need a card checkout with one all-in retail price.

## What to do next

Take one real amount you'll send next month. Request a quote from each provider on your shortlist for that amount, on the same rail, within the same minute. Divide receiver amount by sender amount for each. The ranking you get is the one that matters.

If you're still deciding which kind of provider to shortlist, start with [business vs consumer crypto on-ramps](/resources/more/business-vs-consumer-crypto-on-ramps).

*This article is general information, not legal, tax, or financial advice. Fees and rates change; confirm current pricing with each provider before you rely on it.*

---

Source: https://blindpay.com/resources/more/stablecoin-api-openapi-sdks

---
title: "Stablecoin API SDKs: how one OpenAPI spec keeps five languages in sync"
seoTitle: "Stablecoin API SDKs and OpenAPI docs"
description: "BlindPay's stablecoin API is described by one OpenAPI 3.1 spec that drives validation, docs, SDKs for Node, Python, Go, PHP, and Swift, and the MCP server."
date: "2026-09-11"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Which SDKs does the BlindPay stablecoin API support?"
    a: "Official SDKs for Node.js and TypeScript (@blindpay/node on npm), Python (blindpay on PyPI), Go (github.com/blindpaylabs/blindpay-go), PHP (Composer), and Swift (Swift Package Manager). For any other language, generate a typed client from the OpenAPI 3.1 spec at https://api.blindpay.com/doc."
  - q: "Where is the BlindPay OpenAPI spec?"
    a: "At https://api.blindpay.com/doc. It is an OpenAPI 3.1 document covering every public endpoint, and the interactive API reference lives at https://api.blindpay.com/reference."
  - q: "Can I generate my own client for a stablecoin API?"
    a: "Yes. Download the OpenAPI spec and run a generator for your language. For TypeScript, npx openapi-typescript https://api.blindpay.com/doc -o src/blindpay.d.ts produces types for every request and response."
  - q: "Are there endpoints the SDKs do not cover?"
    a: "A small number, currently POST /upload/extract for reading invoices with AI. Call those over raw HTTP even if you use an SDK for everything else."
  - q: "Can AI coding assistants use the BlindPay API?"
    a: "Yes. The BlindPay MCP server, run with npx -y @blindpay/mcp, lets Claude Code, Cursor, and Codex call the API against a development instance. Its tools are generated from the same contract as the OpenAPI spec, and the docs publish llms.txt plus markdown versions of every page."
---

BlindPay's stablecoin API is described by a single OpenAPI 3.1 specification at `https://api.blindpay.com/doc`. That one spec drives request validation on the server, the API reference, the official SDKs for Node, Python, Go, PHP, and Swift, and the tool surface of the MCP server. When a field changes, it changes everywhere at once, so the docs, the SDK, and the API can't disagree.

That's the design goal. Here's how it works, and why it matters more for a payments API than for most.

## Why does drift hurt more in a payments API?

Every API drifts. A field gets renamed, an enum gets a new value, an error changes shape, and the docs page updates a week later. Or never.

In most APIs that's annoying. In a payments API it's money. If your code doesn't know about a new payout status, a payout that went `on_hold` can look like it vanished. If the docs say an amount is in dollars and the API wants minor units, somebody sends 100 times what they meant. (Amounts in our API are integers in minor units. `500000` is 5,000.00. Every time.)

So the rule we work by: there is exactly one place a data shape is defined, and everything else is generated from it.

## Where does the spec come from?

Inside the API, every request and response shape is a Zod schema in one shared contract package. Those schemas do three jobs from one definition:

1. **Validate requests and responses** in the API itself.
2. **Generate the OpenAPI 3.1 document** published at `api.blindpay.com/doc`.
3. **Validate forms** in the BlindPay dashboard.

Nobody hand-writes the OpenAPI file. When an engineer changes a schema, the spec is regenerated from it. The spec on the server is always the spec in the code.

## What gets generated from that spec?

| Artifact | Where | What it gives you |
| --- | --- | --- |
| OpenAPI 3.1 spec | `https://api.blindpay.com/doc` | The full contract, machine-readable |
| API reference | `https://api.blindpay.com/reference` | Every endpoint, body, and response, interactive |
| Node.js / TypeScript SDK | `npm install @blindpay/node` | Typed methods and responses |
| Python SDK | `pip install blindpay` | The same surface in Python |
| Go SDK | `go get github.com/blindpaylabs/blindpay-go` | The same surface in Go |
| PHP SDK | Composer | The same surface in PHP |
| Swift SDK | Swift Package Manager | The same surface for iOS and macOS |
| MCP server | `npx -y @blindpay/mcp` | API tools for AI coding assistants |

Five SDKs, one contract. A new field shows up as a typed property, not a surprise inside a JSON blob.

## What does calling the API look like from an SDK?

The Node SDK takes your API key and instance id once, then every method returns the same `{ data, error }` shape:

```typescript
import { BlindPay } from '@blindpay/node'

const blindpay = new BlindPay({
  apiKey: process.env.BLINDPAY_API_KEY!,
  instanceId: process.env.BLINDPAY_INSTANCE_ID!,
})

const { data, error } = await blindpay.available.getRails()

if (error) {
  throw new Error(error.message)
}

console.log(data) // fully typed
```

No exceptions to catch for API errors, no guessing the error shape. You check `error`, you move on. The SDK readmes on [GitHub](https://github.com/blindpaylabs) have the full surface per language.

The same call over raw HTTP, if you'd rather skip the SDK:

```bash
curl https://api.blindpay.com/v1/instances/in_000000000000/customers \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

There's one base URL. Which environment you hit, development or production, is decided by which instance your key belongs to.

## What if my language isn't one of the five?

Generate a client. The spec is standard OpenAPI 3.1, so any generator works. For TypeScript types without the SDK:

```bash
npx openapi-typescript https://api.blindpay.com/doc -o src/blindpay.d.ts
```

Rust, Java, Kotlin, Ruby, C#: point your generator at the same URL. You'll get the same field names and enums the official SDKs use.

One caveat. A small number of endpoints are excluded from every generated SDK, currently `POST /upload/extract`, which reads invoices with AI. Call those over raw HTTP. The [SDK docs](/docs/sdks) keep that list current.

## How do error codes stay stable?

Errors are part of the contract too. Every error response carries a machine-readable code, like `idempotency_key_payload_mismatch` or `idempotency_key_in_flight`. Your code can branch on the code, not on a message string that might get reworded.

Idempotency is contract-level as well. Send an `Idempotency-Key` header on any write and a retry with the same body replays the original response with `Idempotency-Replayed: true`. A retry with a different body gets a `422`. That one header is what keeps a network timeout from turning into two payouts. Details in the [idempotency docs](/docs/learn/idempotency).

## How does this help AI coding assistants?

The same contract generates the tools in the [BlindPay MCP server](/blog/mcp). When an endpoint is added or removed, the MCP tool surface changes with it, so an agent never calls a tool the API no longer has.

Around it:

- **llms.txt and markdown pages.** The docs publish an llms.txt index and a markdown version of every page, so an agent reads the same reference you do.
- **[Agent Skills](/blog/agent-skills).** Install with `npx skills add blindpaylabs/skills` to give Claude Code, Cursor, or Codex working knowledge of payouts, payins, and customers.
- **[The CLI](/blog/cli).** JSON output and predictable exit codes, so scripts and agents can drive it.

The practical effect: an assistant can build and test a payout flow against a development instance with the right field names on the first try, because it's reading the same contract the API enforces.

## What does this mean for an integration timeline?

Faster, and fewer surprises in production. A first payout on a development instance is usually a day of work, and most of that day is your own ledger and UI, not the API. Development instances are free, skip banking-partner review, and accept sentinel amounts (`66600` forces `failed`, `77700` forces `refunded`) so you can test every path. Payout timing by rail is in [how long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times). The full flow, endpoint by endpoint, is in our [developer guide to integrating a stablecoin API](/resources/more/how-to-integrate-a-stablecoin-api).

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API for cross-border payouts and collections: USDC or USDT in, local currency out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. KYC, KYB, and sanctions screening run inside the API. [Virtual USD accounts](/virtual-accounts) turn ACH, wire, and SWIFT deposits into stablecoins. And every piece of it is described by the one spec above.

## What to do next

Install the SDK for your stack, or run `npx openapi-typescript https://api.blindpay.com/doc` and read the generated types for ten minutes. You'll understand the whole API surface faster than any docs page could explain it. Then create a development instance and send your first test payout with the [payout quickstart](/docs/quickstart-payout).

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

---

Source: https://blindpay.com/resources/more/stablecoin-off-ramp-fees-explained

---
title: "How much does a stablecoin off-ramp cost? Fees per transaction vs a bank wire"
seoTitle: "Stablecoin off-ramp fees vs bank wire costs"
description: "What a stablecoin off-ramp costs per transaction: network fee, FX spread, percentage and flat fees, worked at $200, $2,000, and $20,000 vs a bank wire."
date: "2026-09-10"
updated: "2026-09-10"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How much does a stablecoin off-ramp cost per transaction?"
    a: "On major corridors the all-in cost of converting USDC or USDT to local currency is usually under 1 percent. It has four parts: the network fee to move the stablecoin, the FX spread on conversion, a percentage fee, and a flat bank transfer fee. Flat parts dominate small payments and the spread dominates large ones. A good provider shows every part in the quote before funds move."
  - q: "Is it cheaper to send money abroad with stablecoins or a bank wire?"
    a: "For most payments into emerging markets, stablecoins. A US bank typically charges $25 to $50 to send an international wire, correspondent banks can deduct another $10 to $30, and the receiving side applies a 2 to 5 percent FX spread. The World Bank put the global average cost of sending $200 at 6.36 percent in Q3 2025. A stablecoin off-ramp on a low-fee network commonly lands under 1 percent on the same payment."
  - q: "Why does a small off-ramp payment cost proportionally more?"
    a: "Because flat fees don't shrink with the amount. A $1 flat fee is 0.5 percent of $200 and 0.005 percent of $20,000. Some networks also carry a fixed cost per deposit, which is why off-ramp providers set minimums on chains like Tron."
  - q: "Where do hidden off-ramp costs come from?"
    a: "Mostly from the FX rate. A provider can advertise a low fee and still deliver less money by quoting a rate further from mid-market. Other sources are exchange withdrawal fees when the stablecoin sits on an exchange first, receiving-bank fees on wires, and a rate that moves between quote and settlement. Compare delivered amounts, not fee lines."
  - q: "Does BlindPay publish its off-ramp fees?"
    a: "BlindPay doesn't publish a flat rate card, because fees vary by rail and corridor. Every payout quote returns the fee split and the exact amount the bank account receives before you execute, and it holds that rate for 5 minutes by default. Plans are listed on the BlindPay pricing page."
---

A stablecoin off-ramp costs four things per transaction: the network fee to move the stablecoin, the FX spread when it converts to local currency, a percentage fee, and a flat fee for the bank transfer. On major corridors the total usually lands under 1 percent. A bank wire into the same country commonly costs 3 to 7 percent once the spread is counted, and far more on small amounts.

The gap is widest at small sizes. That's where a wire's fixed fees eat the payment.

## What fees does a stablecoin off-ramp charge?

Four lines, and a good quote shows all of them before anything moves.

| Fee | What it pays for | Typical size | Grows with the amount? |
| --- | --- | --- | --- |
| Network fee | Moving the stablecoin on-chain to the off-ramp | Sub-cent on Polygon or Base, more on Ethereum mainnet | No |
| FX spread | Converting USDC or USDT into BRL, MXN, COP, or another currency | Sub-percent on liquid corridors | Yes |
| Percentage fee | The provider's cut of the conversion | Fractions of a percent | Yes |
| Flat bank transfer fee | Sending fiat over Pix, SPEI, ACH, SEPA, or a wire | Cents to a few dollars on local rails, more on wires | No |

Two more can show up depending on the setup. If the stablecoin sits on an exchange, the exchange charges a withdrawal fee before the off-ramp ever sees the funds. And some off-ramp products add a fixed fee per deposit on specific chains. BlindPay's [offramp wallets](/docs/offramp-wallets), for example, add 15 USDT per deposit on Tron and nothing on Polygon or Base, which is why the Tron minimum is 200 USDT.

The spread is the line to watch. It's the only one that can hide. A provider that advertises a 0.5 percent fee and quotes a rate 1.5 percent off mid-market costs you 2 percent. [Stablecoin API pricing explained](/resources/more/stablecoin-api-pricing-explained) goes deeper on why a blended rate hides the real number.

## What does a bank wire cost for the same payment?

A wire has more lines, and fewer of them are known before you send:

- **Sending fee.** $25 to $50 at most US banks for an outgoing international wire.
- **Intermediary deductions.** $10 to $30 taken by correspondent banks along the way, often with no notice.
- **FX spread.** 2 to 5 percent off mid-market when dollars convert into local currency at the receiving end.
- **Receiving fee.** Common in Latin America, and charged to the beneficiary.

The World Bank's Remittance Prices Worldwide put the global average cost of sending $200 at 6.36 percent in Q3 2025, and banks remain the most expensive channel in that dataset. Business wires aren't cheaper per dollar at small sizes. The fixed fees are the same.

## How do the two compare at $200, $2,000, and $20,000?

These numbers are illustrative, not anyone's price list. The wire assumes a $40 sending fee, $15 in intermediary deductions, and a 3 percent spread. The off-ramp assumes Polygon, a combined 0.5 percent for spread and percentage fee, and a $1 flat payout fee.

| Payment | Stablecoin off-ramp | Bank wire | Wire costs |
| --- | --- | --- | --- |
| $200 | $2.00 (1.0%) | $61.00 (30.5%) | About 30x more |
| $2,000 | $11.00 (0.55%) | $115.00 (5.75%) | About 10x more |
| $20,000 | $101.00 (0.51%) | $655.00 (3.3%) | About 6.5x more |

Two things jump out. The wire's fixed fees crush small payments: nobody sends $200 by wire, which is exactly why remittance companies exist. And even at $20,000, where the fixed fees stop mattering, the wire's spread alone costs six times the whole stablecoin path.

Swap the assumptions for your own. The shape holds: flat fees decide small payments, spread decides large ones.

## Why is a stablecoin off-ramp cheaper?

Fewer hands. A wire passes through a sending bank, one or two correspondents, and a receiving bank, and each takes a fee and holds the money for a while. A stablecoin moves straight to the off-ramp, which converts it and pays out over a domestic rail like Pix or SPEI. A domestic transfer costs a fraction of a wire because it never crosses a border.

No float to finance, either. Wire-based payout providers keep local-currency balances in each country so they can pay out fast, and that parked capital gets priced into their rates. An off-ramp that sources liquidity per quote doesn't carry that cost. [What no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) walks through the math.

## When is a wire still worth paying for?

When the receiver needs a wire. Some suppliers and banks want an MT103 confirmation and a SWIFT reference for their records, and large payments between two banks in major markets settle fine over SWIFT. For those, price isn't the deciding line.

BlindPay covers both. Stablecoin payouts land over local rails like Pix, SPEI, and ACH, and wires go out as [SWIFT payments on behalf of (POBO/COBO)](/pobo-cobo-swift) with UETR tracking and MT103 confirmations. SWIFT payouts carry a $100 minimum ([payouts](/docs/payouts)) and can take up to 5 business days ([cut-off times](/docs/kb/cut-off-times)). The [stablecoins vs SWIFT comparison](/resources/more/stablecoin-vs-swift-b2b-payments) covers where each rail wins beyond price.

## How do you check what an off-ramp will actually cost?

Ask for a quote, not a rate card. Then read three things:

1. **Delivered amount.** What the bank account receives. It's the only number that settles arguments.
2. **Fee split.** Spread, percentage fee, and flat fee as separate lines. A single blended number is a red flag.
3. **Expiry.** How long the rate holds. A rate that can move between quote and settlement is a cost you can't see.

BlindPay's [payout quotes](/docs/payout-quotes) return the sender amount, the receiver amount, and the fee lines before you execute, and hold the rate for 5 minutes by default. The `cover_fees` flag decides whether the recipient absorbs the fee or the sender adds it on top, as explained in [stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained). BlindPay doesn't publish a flat rate card because fees vary by rail and corridor (see [billing](/docs/learn/billing)). Live rates for common pairs are on pages like [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn), and plans are on the [pricing page](/pricing).

## What to do next

Pull your last ten outgoing international payments. For each one, write down what you sent and what the recipient actually received. Then request a stablecoin quote for the same amounts and corridors. The delivered-amount gap is your real cost difference, and for small and mid-sized payments into Latin America it's usually large.

*This article is for general information only and is not financial advice.*

---

Source: https://blindpay.com/resources/more/stablecoin-virtual-cards-cross-border-payouts

---
title: "Stablecoin-funded virtual cards vs. traditional virtual cards for cross-border payouts"
seoTitle: "Stablecoin virtual cards for cross-border payouts"
description: "Stablecoin-funded vs. bank-funded virtual cards for paying contractors and vendors abroad: funding speed, pre-funding, FX cost, settlement finality, and a Brazil walkthrough."
date: "2026-09-10"
updated: "2026-10-12"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin-funded virtual card?"
    a: "A stablecoin-funded virtual card is a Visa or Mastercard card number with no plastic, whose balance is funded from a stablecoin such as USDC instead of a bank deposit. The recipient uses it online or through Apple Pay or Google Pay, and the card program converts the stablecoin into the merchant's currency at the moment of purchase."
  - q: "Do I need to pre-fund local bank accounts to issue virtual cards internationally?"
    a: "No. A virtual card is funded from the program's balance, not from a bank account in the recipient's country, so a company can issue cards to people in Brazil, Mexico, or the Philippines without opening accounts there. With stablecoin funding, the program balance itself can be topped up from a USDC wallet in minutes, any day of the week, instead of waiting for a cross-border wire."
  - q: "How do stablecoin-funded virtual cards handle FX and settlement?"
    a: "The card is usually denominated in US dollars and funded 1:1 from a dollar stablecoin, so there is no FX on the funding leg. When the recipient spends in another currency, the card network converts at its daily rate and the issuer may add a foreign transaction fee. On the back end, the program settles with the network in fiat or, where Visa or Mastercard support it, in USDC."
  - q: "Can businesses pay international contractors with stablecoin-backed cards?"
    a: "Yes. A business onboards the contractor through KYC, issues a virtual card, and loads each payment from its stablecoin balance, and the contractor spends it wherever the card network is accepted. Cards work well for online and card-accepting spend; contractors who need money for rent, bills, or local transfers are usually better served by a payout to a local bank account."
  - q: "What are the advantages of stablecoin virtual cards over traditional ones for cross-border payouts?"
    a: "Funding moves in minutes and on weekends instead of in one to five business days, the company can top up just in time instead of parking cash in the issuer account, and one stablecoin balance can fund cards in every country. The card leg itself, including acceptance, disputes, and FX at the point of sale, works the same as a traditional virtual card."
---

*Reading time: about 7 minutes.*

**Summary:** A stablecoin-funded virtual card is a Visa or Mastercard card number, with no plastic, whose balance is funded from a stablecoin such as USDC instead of a bank deposit. Companies issue them to pay contractors, vendors, and employees abroad: the recipient spends online or through a mobile wallet, and the program converts the stablecoin to the merchant's currency.

The card leg is the same as any virtual card. The difference is upstream: how the money gets into the card program, how fast, and how much of it has to sit there in advance.

This guide is written for operations and finance leads at marketplaces, payroll platforms, and gig-economy companies. For the basics, read [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Why do companies pay with virtual cards instead of wires or ACH?

A wire needs the recipient's bank details, a correspondent chain, and one to five business days. ACH only works inside the US. For a platform paying 3,000 people in 40 countries, both break at scale.

Virtual cards fix four things:

- **Issuance in seconds.** A card number exists the moment the API call returns. No bank details to collect or validate.
- **Controls per payment.** A card can carry a limit, an expiry date, and a merchant category rule. A wire cannot.
- **No recipient bank account.** The recipient needs a phone, not a bank relationship. That matters in markets where many adults are unbanked or underbanked.
- **Clean reconciliation.** One card per contractor or per payment maps each transaction to a person without matching wire references.

The tradeoff: a card is only a payout if the recipient can spend it. More on that below.

## Stablecoin-funded vs. bank-funded virtual cards

Both kinds run on Visa or Mastercard and look identical to the recipient. They differ in how the program is funded.

| Dimension | Bank-funded virtual cards | Stablecoin-funded virtual cards |
|---|---|---|
| Funding the program | Wire or ACH into the issuer's account | Stablecoin transfer from a wallet |
| Funding speed | Same day domestically; 1 to 5 business days cross-border | Minutes, including weekends and holidays |
| Pre-funding requirement | Balance parked in the issuer account ahead of demand, often in each card currency | Top up just in time from a stablecoin treasury |
| FX on the funding leg | Wire FX and correspondent fees when the treasury is in another currency | None for USD cards funded with USD stablecoins |
| FX at point of sale | Network rate plus any issuer foreign transaction fee | Same |
| Settlement finality of funding | Wire recall and ACH return windows | Final once the on-chain transfer confirms |
| Card-leg disputes | Network rules | Network rules |

Two rows are the same on purpose. Stablecoins change the funding side. They do not change what happens when a contractor in Lisbon buys a train ticket in euros on a USD card.

## Where stablecoins remove pre-funding

Traditional global payouts carry a quiet cost: cash parked in advance. A company paying people in five countries often keeps a balance in each currency, or a large USD balance at the card issuer, sized for the busiest week of the month. That cash earns little and cannot be used elsewhere.

With stablecoin funding the treasury stays in one place, a USDC balance, and moves only when a card is loaded or a purchase settles. Because stablecoin transfers settle 24/7, the top-up can happen at 2 a.m. on a Sunday without a banking window.

The same logic applies to local bank payouts. BlindPay sends stablecoins out as local currency on demand, without pre-funded accounts in each country, which is covered in [stablecoin payouts for marketplaces in Latin America](/resources/more/marketplace-stablecoin-payouts-latam).

## Walkthrough: paying a contractor in Brazil

Take a US platform paying a designer in Recife USD 2,000 a month.

**Option A: stablecoin-funded virtual card**

1. The platform onboards the designer through KYC. Name, date of birth, tax ID (CPF), and a document check.
2. The platform issues a USD virtual card with a USD 2,000 monthly limit.
3. On payday, the program loads USD 2,000 from the platform's USDC balance. No BRL account is needed anywhere.
4. The designer adds the card to Google Pay the same day.
5. USD-priced spend (Figma, Adobe, a flight booked in dollars) costs exactly what it says.
6. Spend in reais at a Recife supermarket is converted by the network at its daily rate, plus any foreign transaction fee set by the issuer.

**Option B: a Pix payout**

1. Same KYC, plus the designer's Pix key or bank details.
2. The platform sends USDC. BlindPay converts it to BRL and delivers it over Pix, usually within minutes.
3. The designer has reais in their own bank account and pays rent, bills, and boletos from it.

Option A is better when the designer spends in dollars or wants to keep a dollar balance. Option B is better when the money is for local life. In Brazil, rent, utility bills, and most person-to-person payments run on Pix and boleto, not cards, so a card-only payout pushes the contractor toward an ATM withdrawal and its fees.

Many platforms offer both and let the contractor choose. The [LATAM contractor payroll guide](/resources/more/stablecoin-payroll-latam-contractors) covers the Pix side in detail, and [USDC to BRL routes](/resources/more/usdc-to-brl-routes-2026) compares cash-out options.

## Card or local payout: how to decide

| Recipient need | Better fit |
|---|---|
| Pays for software, ads, or travel in USD | Virtual card |
| Wants to hold dollars in a high-inflation economy | Virtual card or USD stablecoin balance |
| Pays rent, bills, or local suppliers | Local bank payout (Pix, SPEI, Transfers 3.0) |
| Needs cash | Local bank payout; ATM withdrawals on a card carry fees |
| One-time vendor payment with a spend cap | Single-use virtual card |
| Company needs a per-payment spending restriction | Virtual card |

## What to watch before launching

- **Card acceptance in the recipient's country.** Online acceptance is near universal. In-person acceptance for foreign-issued cards varies, and some local merchants route only domestic cards.
- **Local tax on cross-border card spend.** Some countries tax foreign-currency card spend by residents. Argentina, for example, applies a 30 percent income tax withholding to foreign-currency card spend paid in pesos. Check the rules for the recipient's country before choosing a card as the default.
- **KYC depth.** A card that can spend thousands a month needs full cardholder verification. The [compliance guide](/resources/more/stablecoin-card-issuing-compliance) covers what the sponsor bank will require.
- **Program limits.** Sponsor banks set caps on load amounts and cardholder countries. Ask for the country list first.
- **Switching cost.** Card numbers get saved at merchants and tied to subscriptions, so moving a program to another provider later means reissuing every card and asking every recipient to update them. Choose the provider as if you will keep it.

## What to read next

Continue with [stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america) for country-specific rules, or go to the [developer's guide to issuing stablecoin cards through an API](/resources/more/how-to-issue-stablecoin-cards-api). If your recipients mostly need money in a bank account, start with the [stablecoin vs SWIFT comparison](/resources/more/stablecoin-vs-swift-b2b-payments).

To decide between cards and payouts for a whole team, see [paying contractors with stablecoin cards or local payouts](/resources/more/pay-contractors-stablecoin-cards-or-payouts). For the bank side, read [from stablecoin to local bank](/resources/more/stablecoin-card-balance-to-local-bank).

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

---

Source: https://blindpay.com/resources/more/do-merchants-need-a-license-to-accept-stablecoins

---
title: "Do merchants need a license to accept stablecoin payments? KYC, KYB, and compliance explained"
seoTitle: "Do merchants need a license to accept stablecoins?"
description: "Usually no: the license sits with the provider that moves the funds. What merchants still owe on KYB, sanctions, tax, and records in the US, EU, Brazil."
date: "2026-09-09"
category: "compliance"
faq:
  - q: "Do merchants need a license to accept stablecoin payments?"
    a: "In most major jurisdictions, no. A business accepting stablecoins as payment for its own goods or services is generally treated as a user, not a money transmitter or crypto service provider. The licensing obligation sits with the provider that converts, holds, or transmits funds on behalf of others. Merchants that move money for third parties, like marketplaces paying sellers, should route those flows through a licensed provider. This is general information, not legal advice."
  - q: "Does the GENIUS Act apply to merchants accepting stablecoins?"
    a: "The GENIUS Act, signed in July 2025, regulates issuers of payment stablecoins in the United States: reserves, redemption, licensing, and AML duties. It does not require merchants to get a license to accept stablecoins. As of September 2026, its implementing rules are still being finalized, with an effective date of January 18, 2027 at the latest."
  - q: "What KYB documents does a merchant need to accept stablecoin payments through a provider?"
    a: "Typically: certificate of incorporation, proof of registered address, tax ID, a description of business activity and expected volumes, the list of ultimate beneficial owners with identity documents for each, and sometimes proof of source of funds. Having these ready speeds up onboarding with any regulated stablecoin payments provider."
  - q: "Can EU merchants accept USDT under MiCA?"
    a: "MiCA regulates the issuers and service providers, not the merchant. But it affects which tokens authorized EU service providers will handle: stablecoins pegged to a single currency must be issued by an authorized e-money institution to be offered to EU users. USDC is issued under an EU e-money license; USDT is not, and many EU platforms have restricted it for EEA customers. EU merchants usually standardize on USDC."
  - q: "How are stablecoin payments taxed for merchants?"
    a: "In the US, the IRS treats digital assets, including stablecoins, as property. A merchant receiving USDC for a sale records revenue at fair market value, which for a dollar stablecoin is close to face value, and tracks any small gain or loss on conversion. Rules differ by country, so confirm the treatment with your accountant."
---

**Usually, no.** In the US, the EU, and Brazil, a business accepting stablecoins as payment for **its own goods or services** is generally treated as a user of the payment system, not as a money transmitter or crypto service provider. The license sits with the **provider** that converts, holds, or transmits funds for others. Merchants still have obligations: passing **KYB** with their provider, **sanctions** compliance, **tax** reporting, and **record keeping**. And if you move money on behalf of third parties, like a marketplace paying sellers, that part should run through a licensed provider.

This is general information, not legal advice. Rules change and your structure matters, so confirm with counsel before launch. Here's how it breaks down.

## Who actually needs the license?

The rule of thumb across most jurisdictions: **whoever moves money for someone else is regulated.** Whoever gets paid for their own sale usually isn't.

| Jurisdiction | Who needs a license | What the merchant does |
| --- | --- | --- |
| **United States** | Money transmitters (state licenses, FinCEN registration) and payment stablecoin issuers (GENIUS Act) | Accept as a user; pass provider KYB; comply with OFAC; report income |
| **European Union** | Crypto-asset service providers and token issuers under MiCA | Accept as a user; use MiCA-authorized providers and tokens; pass KYB |
| **Brazil** | Virtual asset service providers licensed by the Central Bank | Accept as a user; use a licensed provider; keep tax records |

In the US, FinCEN's 2019 guidance on convertible virtual currency says a person who accepts it as payment for goods or services is a user, not a money transmitter. The line moves when you start accepting funds for one party and passing them to another. That's the marketplace case, and it's why platforms paying out to sellers use a licensed payments provider rather than their own wallet.

## What does the GENIUS Act change for merchants?

Not much directly. The GENIUS Act, signed on July 18, 2025, is about **issuers**: who can issue a payment stablecoin in the US, how reserves must be held, how redemption works, and what AML duties apply.

What it changes indirectly is trust. Merchants get a clearer picture of which dollar tokens are backed and redeemable under federal rules. As of September 2026, the implementing rules are still in rulemaking, with an effective date of January 18, 2027 at the latest. Our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) keeps the current status.

## What does MiCA mean for EU merchants?

MiCA regulates the service providers and issuers, not you. But it shapes which tokens your provider can handle.

Single-currency stablecoins offered to EU users must be issued by an authorized e-money institution. **USDC** is issued under an EU e-money license. **USDT** is not, and many EU platforms have restricted it for EEA customers. In practice, EU merchants standardize on USDC and use a MiCA-compliant provider for conversion. Full detail in our [MiCA explainer](/resources/more/mica-stablecoin-rules-explained).

## What about Brazil?

Brazil licenses virtual asset service providers (PSAVs) under the Central Bank's regime, in force since February 2026. A Brazilian merchant accepting stablecoins for its own sales isn't a PSAV. The provider converting stablecoins to reais and paying out over Pix is. See our [PSAV explainer](/resources/more/psav-brazil-explained).

Brazil also updated its eFX rules with Resolution 561. It targets eFX providers' settlement with foreign counterparties, not stablecoin use in general. We covered [why it doesn't affect BlindPay's model](/blog/bcb-resolution-561-efx-stablecoins).

## What compliance work does the provider do?

This is the part you're outsourcing, so know what it should cover:

- **KYB on your business.** Verifying who you are and who owns you. See [what KYB is](/resources/more/what-is-kyb).
- **KYC on individuals.** Anyone receiving payouts through the provider: sellers, contractors, creators.
- **Sanctions and watchlist screening.** Every counterparty, every transaction, against OFAC and other global lists.
- **On-chain monitoring.** Checking incoming and outgoing stablecoin transfers for exposure to sanctioned or high-risk wallets.
- **Fiat-leg monitoring.** Watching the bank transfers next to the stablecoin leg. ACH debits and wires can be reversed after the stablecoin side is final, and that gap is a known fraud pattern. More in [are stablecoin payments reversible?](/resources/more/are-stablecoin-payments-reversible)
- **Travel rule data.** Passing required sender and recipient information between providers on qualifying transfers.
- **Local licensing** in each market where it converts and pays out.

BlindPay runs KYC, KYB, sanctions screening, on-chain monitoring, and local rail monitoring inside the same API, and publishes its licenses on the [licenses page](/licenses). The [compliance page](/compliance) covers the program.

## What compliance work stays with the merchant?

Outsourcing the regulated activity doesn't make you exempt from everything:

1. **Pass KYB, honestly.** Accurate business activity and expected volumes. Surprises later mean frozen accounts.
2. **Don't sell to sanctioned parties.** OFAC and equivalent rules apply to every business, regardless of payment rail.
3. **Keep records.** Invoice, amount, token, network, transaction hash, conversion rate. Your auditors will ask.
4. **Report income correctly.** In the US, the IRS treats digital assets as property. Revenue is recorded at fair market value when received, and small gains or losses on conversion get tracked. Other countries differ.
5. **Publish a refund policy.** Stablecoin transfers are final, so consumer protection rules still expect you to have a clear refund process.
6. **Collect accurate payee data** if you pay out to third parties: legal name, tax ID, and bank details, so your provider's KYC passes the first time.

## How do you prepare for KYB?

Have these ready before you start onboarding with any regulated provider:

- Certificate of incorporation and proof of registered address
- Tax ID
- Description of business activity, customer base, and expected monthly volume
- Ultimate beneficial owners (typically anyone with 25% or more) with ID for each
- Directors and authorized signatories
- Source of funds, for some business types

Teams that submit a complete package often clear onboarding in days. Teams that don't spend weeks in back-and-forth. We wrote about [automating KYC and KYB for stablecoin payments](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) if you're building payee onboarding into your own product.

## What should you ask a provider before signing?

- Which licenses do you hold, and in which markets? Can I see them published?
- Do you monitor the fiat leg continuously, or only check identity at onboarding?
- How long does KYB take for a company like mine? And KYC for my payees?
- Which tokens and networks do you support in my region?
- Can you trace custody at every step, from bank account to wallet, with timestamps?

A provider that answers these clearly is doing the regulated work properly. One that deflects is handing the risk back to you.

For the receiving flow itself, read [how merchants accept stablecoin payments](/resources/more/how-merchants-accept-stablecoin-payments). For multi-country payouts, see [cross-border merchant payments without pre-funding](/resources/more/cross-border-merchant-payments-without-pre-funding).

## Accept stablecoins without becoming a money transmitter

You don't need a license to get paid in stablecoins. You need a provider that has them, and a clean KYB file. If you want to see what onboarding looks like for your business, [talk to the BlindPay team](/contact).

---

Source: https://blindpay.com/resources/more/crypto-debit-card-vs-stablecoin-card-for-business

---
title: "Crypto debit card vs. stablecoin card for business: custody, accounting, tax, and controls compared"
seoTitle: "Crypto debit card vs. stablecoin card for business"
description: "Why a company should treat crypto debit cards and stablecoin cards differently: budget predictability, custody risk, per-swipe tax events, accounting, and spend controls."
date: "2026-09-08"
updated: "2026-10-12"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is a crypto debit card the same as a stablecoin card?"
    a: "No. A crypto debit card sells a volatile asset such as bitcoin or ether at the moment of purchase, while a stablecoin card spends a token pegged 1:1 to a currency, usually the US dollar. Both run on Visa or Mastercard and look the same at checkout, but the stablecoin card's balance does not move with the market."
  - q: "Can a business get a crypto debit card?"
    a: "Most crypto debit cards are consumer products issued by exchanges to individual account holders, with no multi-user controls or expense reporting. Businesses that want to spend digital dollars usually use a corporate card program funded from a stablecoin treasury instead, which adds per-card limits, merchant category controls, and accounting exports."
  - q: "Is spending USDC on a card a taxable event?"
    a: "In the US, the IRS treats digital assets, including stablecoins, as property, so spending USDC is technically a disposal. Because USDC is designed to hold a value of one dollar, the gain or loss on each purchase is usually close to zero, unlike bitcoin or ether, where every swipe can realize a real gain or loss. Confirm treatment for your entity and jurisdiction with a tax adviser."
  - q: "Which is better for company expenses, a crypto card or a stablecoin card?"
    a: "For company expenses, a stablecoin card is almost always the better fit because the balance needed for a purchase matches the invoice and budgets stay in dollars. A crypto debit card makes sense only when the company deliberately holds volatile assets and accepts that each purchase is also a sale of those assets."
  - q: "Are stablecoin cards safe for businesses?"
    a: "The card leg carries the same protections as any Visa or Mastercard program, including network dispute rights. The risks sit elsewhere: who holds the stablecoins backing the card, whether the stablecoin comes from a regulated issuer, and whether the program's sponsor bank and conversion partners are licensed. A business should ask the provider for the custody model, the sponsor bank, and the stablecoin issuer before funding a program."
---

*Reading time: about 6 minutes.*

**Summary:** For a business, the difference between a crypto debit card and a stablecoin card is what gets sold at checkout. A crypto debit card sells a volatile asset like bitcoin or ether at the moment of purchase. A stablecoin card spends a dollar-pegged token like USDC, so the amount leaving the balance matches the invoice and budgets stay in dollars.

For a consumer, the choice between the two is mostly about taste. For a company, it touches budgeting, the general ledger, the tax return, and the audit. This guide compares them on the questions a finance team actually asks.

If you are new to the category, start with [what stablecoin card issuing is](/resources/more/what-is-stablecoin-card-issuing).

## Why does the difference matter more for a company?

A consumer who spends bitcoin on a card makes one decision: "I'm fine selling some bitcoin." A company makes that decision on every card, every employee, every day, and then has to account for it.

Picture a USD 12,000 monthly software budget spread across 20 employee cards.

- On a **crypto debit card** funded with ether, the ether needed to cover that budget can swing by thousands of dollars in a month. Each purchase is a sale at a different price, with its own cost basis.
- On a **stablecoin card** funded with USDC, the budget is USD 12,000 plus fees. Each purchase is a dollar-denominated expense.

That one property, a stable unit, is why corporate programs are built on stablecoins and consumer programs still offer both.

## Crypto debit card vs. stablecoin card: side-by-side

| Dimension | Crypto debit card | Stablecoin card |
|---|---|---|
| Asset spent | Bitcoin, ether, or other volatile tokens | USDC, USDT, or another fiat-pegged stablecoin |
| Budget predictability | Low; required balance moves with price | High; USD 1 of balance covers USD 1 of spend |
| Tax event per swipe (US) | Sale of property with a real gain or loss | Disposal with a gain or loss usually near zero |
| Accounting entries per purchase | Expense, plus a realized gain or loss, plus a basis lot update | Expense, plus a near-zero conversion line |
| Custody | Usually the exchange that issues the card | Program wallet or self-custody with a spending allowance |
| Multi-user controls | Rare; most are consumer products | Standard on corporate programs: per-card limits, merchant category rules |
| Expense tooling | Monthly statement | Per-transaction data, receipts, accounting exports |
| Who typically issues | Crypto exchanges | Card issuing platforms and corporate card providers |

## How does tax treatment differ?

In the US, the IRS treats digital assets as property. Spending one on a card is a disposal, so the company recognizes a gain or loss equal to the difference between the purchase price and its cost basis in the tokens it spent.

With bitcoin or ether that difference is real. A company that bought ether at USD 2,000 and spends it on a card when it trades at USD 3,000 has a taxable gain on every purchase, even if the purchase itself is a USD 40 lunch. A card with hundreds of transactions a month turns into hundreds of lots to track.

With a dollar stablecoin the same rule applies, but USDC bought at USD 1.00 and spent at USD 1.00 produces a gain of roughly zero. Tracking is still required. The numbers just stop mattering.

Other countries tax digital asset disposals on their own rules. Check with an adviser before funding a card program in a new entity.

## How does the accounting differ?

Under US GAAP, ASU 2023-08 requires in-scope crypto assets such as bitcoin and ether to be measured at fair value, with changes flowing through net income each period. A company spending ether on cards is running its expense program through a fair-value line.

Fully reserved stablecoins are often treated differently, because they give the holder a claim on the issuer rather than being a standalone crypto asset, and many companies account for them closer to a financial asset. Where your stablecoins land is a question for your auditor, but the practical result is the same: a stablecoin card produces expense lines your controller recognizes, and a crypto card produces expense lines plus investment activity.

## Who holds the money?

This is the question most people skip, and the one that matters most after 2022.

**Exchange-issued crypto cards** usually spend from the exchange account. The company's balance is a claim on the exchange. If the exchange fails, the card stops working and the balance joins the bankruptcy estate.

**Stablecoin card programs** vary. Some hold the stablecoins in a custodial program wallet. Others let the company keep funds in its own wallet and grant the program a spending allowance through a smart contract, so the program can pull only what each purchase needs. The second model keeps treasury under the company's keys.

Two more questions belong on the list:

- **Which stablecoin?** Tokens from licensed issuers, such as those operating under the US GENIUS Act or the EU's MiCA, hold 1:1 reserves and publish disclosures. The [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) lists where each regime stands.
- **Who is the sponsor bank?** Every Visa or Mastercard program has one. If the provider cannot name it, walk away.

## What spend controls should a business card have?

These are card-program features, not stablecoin features, but consumer crypto cards rarely have them:

- Per-card and per-employee spending limits, daily and monthly
- Merchant category code (MCC) allow and block lists
- Single-use and vendor-locked virtual cards
- Instant freeze and reissue from an API or dashboard
- Real-time transaction data with receipt capture
- Exports to the accounting system

If a program lacks most of these, it was built for consumers.

## When is a card the wrong tool?

Cards pay merchants. They are a poor fit for paying people or suppliers who need money in a local bank account: a landlord in São Paulo who takes Pix, a supplier in Mexico City who invoices for SPEI, a contractor who pays rent in pesos.

For those payments, a direct local-currency payout is simpler and cheaper than a card plus a cash withdrawal. BlindPay converts USDC or USDT to local currency over Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO), with [settlement windows published per rail](/resources/more/stablecoin-api-sla-settlement-finality). The [cross-border virtual card guide](/resources/more/stablecoin-virtual-cards-cross-border-payouts) compares both options for contractor payouts.

## How to choose

Use a **stablecoin card** if the company holds or receives digital dollars and wants to spend them on software, ads, travel, or team expenses with normal controls and normal books.

Use a **crypto debit card** only if the company deliberately holds bitcoin or ether as a treasury asset, accepts that each swipe is a sale, and has a tax process for lot tracking.

Use a **local bank payout** when the recipient is a person or supplier, not a merchant.

## What to read next

Next in this series: [stablecoin-funded virtual cards for cross-border payouts](/resources/more/stablecoin-virtual-cards-cross-border-payouts), then [stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america), the [developer's guide](/resources/more/how-to-issue-stablecoin-cards-api), and the [compliance guide](/resources/more/stablecoin-card-issuing-compliance).

For the full four-way comparison, including prepaid and credit-backed cards, read [stablecoin card vs. crypto debit vs. prepaid vs. credit](/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit). The cost and tax sides are covered in [stablecoin card fees explained](/resources/more/stablecoin-card-fees-explained) and [are stablecoin card purchases taxable](/resources/more/are-stablecoin-card-purchases-taxable).

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

---

Source: https://blindpay.com/resources/more/best-stablecoin-payment-platform-fintech-2026

---
title: "Best stablecoin payment platforms for fintech in 2026: a US comparison"
seoTitle: "Best stablecoin payment platforms for fintech in 2026: a US comparison"
description: "Seven stablecoin payment platforms compared for US fintechs in 2026: what makes an API production-ready, how each provider handles compliance, settlement speed against ACH, and how to run the evaluation."
date: "2026-09-07"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin payment platform and how does it differ from a traditional payment processor?"
    a: "A stablecoin payment platform is an API that moves value using dollar-pegged tokens like USDC or USDT and converts between those tokens and bank money. A traditional processor like Stripe moves money through card networks and ACH. The stablecoin platform settles in minutes at any hour and reaches countries where card and ACH rails do not, while the processor handles consumer checkout, disputes, and subscriptions. Most fintechs run both."
  - q: "Which stablecoin APIs are compliant with US fintech regulations in 2026?"
    a: "Compliance in the US comes from two layers. The stablecoin issuer must be licensed under the GENIUS Act, which Circle and Paxos are positioned for. The platform moving the money must be registered with FinCEN as a Money Services Business and hold or be exempt from state money transmitter licenses. Bridge, Zero Hash, and BlindPay publish their registration status. Ask every provider for its NMLS number and state coverage map before signing."
  - q: "How do stablecoin payments compare to ACH payments for real-time settlement?"
    a: "Standard ACH settles in one to three business days and same-day ACH in a few hours during banking windows, both domestic only. Stablecoin transfers settle in seconds to minutes, 24/7, and can be converted to local currency abroad. For a US-to-US payment with no urgency, ACH is cheaper. For anything cross-border, off-hours, or time-sensitive, stablecoin rails win."
  - q: "Can a stablecoin API integrate with existing payment infrastructure like Stripe or QuickBooks Payments?"
    a: "Yes. Stablecoin APIs sit beside your processor, not in place of it. The usual pattern is to keep Stripe for card acceptance and route payouts, cross-border settlement, or treasury moves through the stablecoin API, then reconcile both through webhooks into your ledger or accounting tool. Bridge is owned by Stripe and is the tightest fit if you are already deep in that ecosystem."
  - q: "What are the transaction fees for stablecoin payments versus traditional global payment methods?"
    a: "An international wire costs $25 to $50 to send plus a 2 to 5 percent FX spread and intermediary deductions. Stablecoin platforms charge a flat fee per payout plus a sub-percent to low single digit spread on conversion, and the on-chain transfer itself costs cents. The gap is largest on cross-border payments into Latin America, Africa, and Asia, and smallest on domestic US transfers."
  - q: "How do stablecoin platforms handle cross-border or global payments for fintech startups?"
    a: "The platform holds or receives stablecoins, converts them to the destination currency, and pays out over the local rail: Pix in Brazil, SPEI in Mexico, SEPA in Europe, or a SWIFT wire where nothing faster exists. The recipient gets local currency in a bank account and never touches a wallet. Coverage varies a lot by provider, so match the corridor list to where your customers are."
  - q: "What payment history and reporting features should a stablecoin API offer fintech companies?"
    a: "At minimum: a unique ID and status per payment, webhooks for every state change, an on-chain transaction hash, the FX rate and fees itemized per transaction, and an export or API endpoint that lets your finance team reconcile against bank statements. For wires, UETR tracking and MT103 confirmations. If the provider cannot show a payment's full lifecycle in one API call, reconciliation will be manual."
---

The best stablecoin payment platform for a US fintech in 2026 is the one that is licensed where you operate, reaches the countries your customers are in, settles when your product needs it to, and does not make your team rebuild what already works. No single provider wins on all four. This guide compares seven of them against those criteria so an engineering lead and a compliance lead can shortlist in one sitting.

It is written by BlindPay, which is one of the seven. The comparison holds BlindPay to the same table as everyone else, and the section on where each provider fits says plainly where a competitor is the better choice.

## What makes a stablecoin payments API production-ready in 2026?

A stablecoin payments API is production-ready for a fintech when it clears five bars. Treat them as eligibility criteria: a provider that misses one is not a candidate, no matter how good the docs are.

1. **Licensing you can verify.** In the US that means FinCEN registration as a Money Services Business with a public NMLS number, plus state money transmitter licenses, exemptions, or a licensed partner structure, published state by state. Abroad it means the local equivalent: Brazil's Central Bank authorization for virtual asset providers, an EMI license in Europe, and so on. If the status page does not exist, the answer is no.
2. **A quote before commitment.** The API returns the FX rate, the spread, and the payout fee as separate numbers before the payment executes. Blended rates hide costs and make reconciliation guesswork.
3. **Verification before movement.** KYC on the receiver, KYB on the business, sanctions screening, and receiving-account checks run before money leaves. On-chain transfers are final, so the checks are the recall window. [Reversibility](/resources/more/are-stablecoin-payments-reversible) is a design property, not a support ticket.
4. **A full payment lifecycle in the API.** Unique IDs, status per payment, webhooks on every change, the transaction hash, and for wires the UETR and MT103. Without this, a finance team reconciles by hand.
5. **Rails and currencies that match your customers.** Multi-chain support matters less than most comparison pages suggest. What matters is whether the platform can put local currency into a bank account in the countries you serve.

Documentation quality and sandbox fidelity sit just under these five. A [sandbox that hides production failure modes](/resources/more/stablecoin-api-sandbox-vs-production) costs more time than bad docs.

## How do the top stablecoin payment platforms for fintech compare?

The seven platforms below are the ones US fintechs most often shortlist. Rails, currencies, and fees change often, so treat the table as a map of each provider's center of gravity and confirm current details on their sites. The [ten-provider API comparison](/resources/more/best-stablecoin-apis-2026) goes wider, and the [provider types guide](/resources/more/best-stablecoin-payment-providers-2026) explains the custody and licensing models behind the table.

| Provider | Best for | Fiat rails | US licensing posture | Custody | Pricing |
| --- | --- | --- | --- | --- | --- |
| BlindPay | Fintechs paying into Latin America and needing itemized quotes without pre-funding | Pix, SPEI, ACH, SWIFT (POBO/COBO) | FinCEN MSB (NMLS #2745309), state MTLs in progress, [published](/licenses) | Non-custodial for the business | [Flat plus percentage, published](/pricing) |
| [Bridge](https://www.bridge.xyz) | Teams already on Stripe wanting stablecoin orchestration and issuance | ACH, wire, SEPA | US money transmission through Stripe entities | Provider custody | Percentage per conversion |
| [Circle](https://www.circle.com) | Holding, minting, and redeeming USDC at scale | Bank wires | Issuer, positioned for GENIUS Act licensing | Issuer or self-custody | Volume-based, enterprise |
| [Zero Hash](https://zerohash.com) | Embedding crypto and stablecoin settlement behind a US brokerage-style product | ACH, wire | US MTLs, broker-dealer adjacent | Provider custody | Enterprise quotes |
| [BVNK](https://www.bvnk.com) | European and UK fintechs with some US flow | SEPA, Faster Payments, SWIFT | EMI licenses in Europe, VASP registrations | Provider custody | Enterprise tiers |
| [Fireblocks](https://www.fireblocks.com) | Fintechs that hold their own licenses and want custody tooling | On-chain only | Tooling for your licenses | Self-custody via MPC | Platform fee |
| [Sphere](https://spherepay.co) | Developer-first teams needing ACH, SEPA, and Pix from one API | ACH, wire, SEPA, Pix | Provider-run compliance | Provider custody | Per-transaction |

### 1. BlindPay

Built for the "we hold dollars, our customers need local currency" problem. One API converts USDC or USDT into BRL, MXN, ARS, COP, USD, or EUR and pays out over Pix, SPEI, ACH, or SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on the wire leg. Quotes itemize spread and payout fee. No pre-funding: the business funds each payout when it makes it. Virtual accounts turn incoming USD into stablecoins for pay-ins. Deepest coverage is the Americas. If most of your volume is US-to-US or intra-Europe, another provider on this list fits better.

### 2. Bridge

Stripe acquired Bridge in 2025, and the product now sits inside Stripe's stack. Strong for orchestration between stablecoins and USD or EUR, for issuing a branded stablecoin, and for teams that want Stripe-grade docs and support. Local rails outside the US and Europe are thinner. The natural pick when Stripe is already your processor. Teams moving the other way use the [Bridge migration prompt](/prompts/migrate-from-bridge).

### 3. Circle

Circle issues USDC and offers mint and redeem APIs, wallets, and cross-chain transfer. It is the right choice when the job is treasury-scale USDC operations rather than paying people in local currency. Circle does not run Pix or SPEI payouts, so most fintechs pair it with a payout provider.

### 4. Zero Hash

A US-licensed infrastructure provider that lets a fintech embed crypto trading and stablecoin settlement behind its own brand. Strong on US state licensing and on the compliance paperwork a US bank partner will ask for. Cross-border local-currency payout is not the core product.

### 5. BVNK

A European infrastructure provider with EMI licensing and deep SEPA and Faster Payments coverage, plus SWIFT. A good match for a fintech whose flows are mostly Europe and UK with some US and global settlement. US state licensing is not its home turf.

### 6. Fireblocks

Custody and wallet infrastructure, not a payment platform. If your fintech holds its own money transmitter licenses and wants to run stablecoin operations on its own rails, Fireblocks gives you MPC custody, policy engines, and connectivity to 60+ networks. You bring the compliance and the fiat rails. Several providers on this list run on it underneath.

### 7. Sphere

A developer-oriented API that combines ACH, wire, SEPA, and Pix with on-chain settlement and built-in KYC and KYB. Well suited to teams that want to ship a first corridor quickly with minimal enterprise process. Corridor depth and wire tooling are lighter than the larger providers.

## What US compliance and regulatory considerations apply to stablecoin payments?

US compliance for stablecoin payments has two layers, and a fintech has to check both.

**The issuer layer** is governed by the GENIUS Act, signed in July 2025. It requires payment stablecoin issuers to hold 1:1 reserves in cash and short-term Treasuries, to be licensed federally or under a substantially similar state regime, and to publish reserve disclosures. Treasury published its implementing proposal on August 17, 2026, with comments due October 19, 2026, and the licensing requirement is expected to take effect January 18, 2027. After that date, a fintech should only move stablecoins from licensed issuers. USDC and PYUSD are positioned for this. Foreign-issued stablecoins face additional conditions. The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) follows the rulemaking as it lands.

**The platform layer** is money transmission law. Any platform that receives and sends value on your behalf needs FinCEN registration as a Money Services Business and either state money transmitter licenses, an exemption, or a licensed partner structure, state by state. This is the part a bank partner or auditor will ask about first. BlindPay publishes its state-by-state status on the [licenses page](/licenses); Bridge, Zero Hash, and Circle publish theirs. Any provider that cannot produce an NMLS number and a state map is a risk you are choosing to carry.

Two practical checks cover most of the exposure:

- **Who runs KYC and KYB, and where does the data live?** If the provider runs it inside the API flow, your product inherits the checks. If not, you are building them.
- **What happens on a sanctions hit or a travel rule request?** The answer should be a specific process with a specific response time, not "we would look into it."

The choice between USDC and USDT interacts with all of this. USDC is easier to defend to a US compliance committee; USDT has deeper liquidity in emerging-market off-ramps. The [USDC vs USDT comparison](/resources/more/usdc-vs-usdt-for-payments) covers the tradeoff.

## Real-time payments vs ACH: how do settlement speed and cost compare?

ACH is the rail most US fintechs already run on, so it is the honest baseline. The comparison below also includes RTP and FedNow because they are the domestic instant alternative.

| Rail | Settlement | Hours | Reach | Typical cost |
| --- | --- | --- | --- | --- |
| Standard ACH | 1 to 3 business days | Banking windows | US only | Cents per item |
| Same-day ACH | Same business day | Three windows per day | US only | Under a dollar per item |
| RTP / FedNow | Seconds | 24/7 | US only, participating banks | Under a dollar per item |
| International wire | 1 to 5 business days | Banking windows | Global | $25 to $50 plus 2 to 5 percent FX |
| Stablecoin plus local payout | Minutes | 24/7 | Wherever the provider has rails | Flat fee plus sub-percent to low single digit spread |

The pattern is clear once the table is side by side. For a domestic US payment with no time pressure, ACH is the cheapest option and there is no reason to change it. For a domestic payment that has to land now, RTP or FedNow beats stablecoins on cost if both banks participate. For anything that crosses a border, stablecoin settlement is faster than a wire by days and cheaper by a wide margin, and it runs on weekends.

The business consequence is working capital. A payout that lands in minutes does not need to be sent early, so the fintech does not need money parked in destination accounts. Providers that require pre-funding erase this advantage; ask directly. The [orchestration piece](/blog/orchestrating-payment-rails-leaders) covers how leadership teams decide which flows go on which rail.

## What are the B2B infrastructure use cases for global payments?

The fintechs getting the most from stablecoin platforms in 2026 are not selling "crypto." They are using stablecoin rails underneath a product that looks ordinary to the customer.

**Cross-border supplier and vendor settlement.** A US platform paying suppliers in Mexico or Brazil funds in USD, converts to stablecoins, and pays out over SPEI or Pix in minutes. The supplier sees a local transfer. The [stablecoin vs SWIFT comparison](/resources/more/stablecoin-vs-swift-b2b-payments) works the numbers.

**Contractor and marketplace payouts.** Payroll platforms and marketplaces use the same flow to pay thousands of small balances daily instead of batching wires biweekly. The [contractor payroll guide](/resources/more/stablecoin-payroll-latam-contractors) and the [marketplace payouts guide](/resources/more/marketplace-stablecoin-payouts-latam) cover the operational details.

**Embedded pay-ins.** A fintech gives each customer a virtual US account. Incoming ACH or wire deposits convert to stablecoins automatically, which the fintech can hold, move, or pay out. This is the "global account" feature neobanks now ship.

**Treasury movement.** Moving balances between entities or countries on a Sunday, at a quoted rate, without a correspondent bank chain. Settlement finality matters here; the [SLA and finality guide](/resources/more/stablecoin-api-sla-settlement-finality) explains what each provider promises.

**Agent-driven payments.** A newer case: AI agents that need to pay for services or settle with other agents use stablecoin rails because they are programmable and always on. The [agent payment protocol comparison](/resources/more/agent-payment-protocols-compared) maps the standards.

Across all five, the [global payments](/global-payments) architecture is the same: dollars in, stablecoin across, local currency out, with compliance inside the flow.

## How should a fintech evaluate and integrate a stablecoin payment platform?

A four-week evaluation is enough to reach a confident decision. Longer usually means the criteria were not written down.

**Week 1: eligibility.** Apply the five bars above to every candidate. Collect the NMLS number, the state map, the corridor list, and the published pricing. Cut anyone missing one.

**Week 2: sandbox.** Integrate the shortlist's sandbox for one real flow, such as a single payout to one corridor. Wire up [webhooks](/prompts/integrate-webhooks) from day one so reconciliation is tested, not assumed. Force the failure paths: rejected receiving account, compliance hold, rail outage.

**Week 3: production pilot.** Move one small live corridor with real money and real customers. Measure landed amount against quoted amount, time to landing, and support tickets generated. Compare against the same corridor on your current rail.

**Week 4: decision.** Score on the five bars plus pilot results. Weight licensing and reconciliation above cost; cost differences between compliant providers are smaller than the cost of a compliance gap or a manual reconciliation process.

Integration shape is consistent across providers: create a receiver with KYC data, request a quote, execute the payment, listen for the webhook, reconcile. Keep your processor for card acceptance and route the flows stablecoins do better through the new API. Migrating from another stablecoin provider follows the same path; the prompt library has guides for [Bridge](/prompts/migrate-from-bridge), [Conduit](/prompts/migrate-from-conduit), [Crossmint](/prompts/migrate-from-crossmint), and [manual wire processes](/prompts/migrate-from-swift-wires).

## How do you get started with stablecoin payments for a fintech?

Pick the one corridor where your current rail hurts most. For most US fintechs that is a payout into Latin America or a supplier settlement that currently goes by wire. Run that corridor through the four-week evaluation above with two or three providers from the table.

If the corridor is into the Americas and the requirement is a quoted rate, no pre-funding, and compliance run inside the API, BlindPay is built for that case: [start in the sandbox](https://blindpay.com/docs/introduction), check [coverage](/docs/kb/supported-countries) and [pricing](/pricing), or [contact BlindPay](/contact) with the corridor. If the corridor is intra-Europe or the job is USDC treasury operations, start with BVNK or Circle instead.

## Methodology and sources

Provider capabilities summarized from public materials as of September 2026: [bridge.xyz](https://www.bridge.xyz), [circle.com](https://www.circle.com), [zerohash.com](https://zerohash.com), [bvnk.com](https://www.bvnk.com), [fireblocks.com](https://www.fireblocks.com), [spherepay.co](https://spherepay.co), and BlindPay's own documentation and [licenses page](/licenses). GENIUS Act timeline from the [US Treasury's notice of proposed rulemaking](https://home.treasury.gov/news/press-releases/sb0605) and the [OCC bulletin](https://www.occ.gov/news-issuances/bulletins/2026/bulletin-2026-3.html). ACH timing from Nacha's same-day ACH schedule.

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

---

Source: https://blindpay.com/resources/more/marketplace-stablecoin-payouts-latam

---
title: "Marketplace payouts in Latin America: stablecoin rails for sellers in Brazil, Mexico, Colombia, and Argentina"
seoTitle: "Marketplace payouts in Latin America: stablecoin rails for sellers in Brazil, Mexico, Colombia, and Argentina"
description: "How marketplaces pay sellers, creators, and vendors across Latin America with stablecoin settlement: supported rails (Pix, SPEI, PSE, Argentine transfers), the end-to-end payout workflow, API integration, and what changes for speed, minimums, and FX cost."
date: "2026-09-06"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are stablecoin payouts and how do they work for marketplaces in Latin America?"
    a: "A stablecoin payout is a seller payment settled with a dollar-pegged token like USDC or USDT and delivered as local currency. The marketplace holds dollars or stablecoins, a payout API converts each seller's balance at a quoted rate, and the money lands over the local rail: Pix in Brazil, SPEI in Mexico, PSE in Colombia, or a bank transfer in Argentina. The seller gives a bank account and receives local currency. They never touch a wallet."
  - q: "How do marketplace payouts via stablecoin APIs compare to traditional payment methods like ACH or wire transfers in Latin America?"
    a: "ACH does not reach Latin America. An international wire costs $25 to $50 to send plus a 2 to 5 percent FX spread, takes 2 to 5 business days, and often arrives short after intermediary deductions. A stablecoin payout costs a flat fee plus a sub-percent spread quoted upfront, lands in minutes, and arrives at the quoted amount. The gap is widest on small, frequent payouts, which is exactly what marketplaces send."
  - q: "What payment methods are supported for vendor payouts across Latin America?"
    a: "Through a stablecoin payout API like BlindPay: Pix in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 to a CBU or CVU in Argentina, plus ACH and SWIFT (POBO/COBO) for sellers outside the region. Sellers who want to hold dollars can be paid in USDC or USDT to a wallet instead."
  - q: "How long do marketplace payouts take using a stablecoin API in LATAM?"
    a: "Minutes for Brazil and Mexico, because Pix and SPEI settle in near real time and run 24/7. Colombia over PSE is usually minutes but follows bank processing windows. Argentina over Transfers 3.0 is same-day. In every case the stablecoin conversion takes a few minutes and the local rail sets the rest."
  - q: "What does a stablecoin payout API integration look like for an existing marketplace platform?"
    a: "Three parts. Create a receiver for each seller with name, tax ID, and bank account, and store the receiver ID. When a payout is due, request a quote and execute against that ID. Listen for the webhook to update the seller's balance and payout history. Most teams keep their existing processor for card acceptance and add the payout API beside it."
  - q: "Are stablecoin-based marketplace payouts compliant with Latin American financial regulations?"
    a: "Yes, when the provider holds the local licenses and runs KYC on each seller. Brazil's Central Bank licenses virtual asset service providers under Resolutions 519 through 521, in force since February 2026, and Resolution 561 on eFX does not affect the stablecoin plus local payout model. The marketplace remains responsible for its own KYB, accurate seller data, and normal tax records."
  - q: "How do stablecoin APIs reduce FX fees on cross-border marketplace payments in Latin America?"
    a: "A wire routes through correspondent banks that each take a fee, and the receiving bank sets its own FX rate, typically 2 to 5 percent off mid-market. A stablecoin payout has one conversion step at a rate quoted before the payment executes, with the spread and payout fee itemized. No intermediary chain means no hidden deductions, so the seller receives the amount the marketplace was quoted."
---

Marketplace payouts in Latin America are the payments a platform sends to its sellers, creators, drivers, or vendors in Brazil, Mexico, Colombia, and Argentina. Done over wires, they are slow, expensive, and unpredictable. Done over stablecoin rails, they land in minutes as local currency at a quoted amount, and the economics of a small payout stop being a problem.

This guide is for three readers: the operations lead at a marketplace with thousands of LATAM sellers, the engineer evaluating a payout API, and the CFO at a US or European company expanding into the region. It covers why the old rails fail, how stablecoin payouts work end to end, which local rails are supported, and what the integration looks like.

Latin America is the most stablecoin-native region for cross-border payments. In Fireblocks' 2025 institutional survey, [71 percent of Latin American institutions](https://www.fireblocks.com/blog/execution-in-motion-how-latin-america-is-leading-stablecoin-adoption) already used stablecoins for cross-border payments, the highest rate of any region. Marketplaces are a large share of that flow.

## Why traditional payment methods fail LATAM marketplaces

Traditional payment methods fail LATAM marketplaces because they were built for a few large payments, not thousands of small ones. A freelance platform with 4,000 active sellers in Brazil that pays by international wire runs into the same four constraints every cycle.

**Per-payout cost.** A wire costs $25 to $50 to send, so paying a $40 balance is a loss. Hence payout minimums.

**Cycle time.** Batching makes wires cheaper, so payouts run weekly or biweekly. Sellers wait.

**Landing time.** Two to five business days, plus a day of compliance screening at the receiving bank, plus receiving-bank fees the platform cannot predict. A seller below the minimum waits another two weeks; a seller above it gets money the following Wednesday, minus something.

**Failure handling.** Bad account data fails days later with a code, and the money comes back minus fees. Support handles the fallout, and the ticket always reads the same way: "Where is my money."

Domestic US rails do not help. ACH and real-time payments over RTP or FedNow are US-only. Card payouts to LATAM cards exist but carry 1.5 to 2.9 percent fees and multi-day settlement. Local processors solve one country at a time, so a platform in four countries ends up with four contracts, four pre-funded balances, and four reconciliation formats.

Stack those together and the seller experience is "money arrives sometime in the next three weeks, amount varies." Sellers pick the platform that pays them fastest and most predictably, and in Latin America that has historically been the local one. For a grounding on the asset itself, the [stablecoins section](/resources/more/stablecoins) explains what USDC and USDT are and how they hold their peg.

## How stablecoin APIs power real-time payments to vendors

A stablecoin API powers real-time vendor payments by replacing the correspondent bank chain with a single conversion step. The platform funds in USD or USDC, each payout converts to local currency at a quoted rate, and the money lands over the local instant rail. The seller gives a bank account and sees a Pix or SPEI transfer arrive. They never see a wallet, a chain, or a token.

Run the four constraints again with a [stablecoin payout API](/global-payments) underneath.

| Constraint | Wire-based payouts | Stablecoin payouts |
| --- | --- | --- |
| Cost per payout | $25 to $50 plus 2 to 5 percent FX | Flat fee plus sub-percent FX, quoted upfront |
| Minimum balance | $50 to $100 typical | None needed |
| Payout cycle | Weekly or biweekly | Daily or on demand |
| Landing time | 2 to 5 business days | Minutes in Brazil and Mexico, same day elsewhere |
| Amount received | Varies | Matches the quote |
| Pre-funded local balances | Required by many providers | Not required |

**Per-payout cost** becomes a small flat fee plus a sub-percent spread, itemized in the quote. A $40 payout is fine. Minimums become a product choice, not a necessity.

**Cycle time** becomes whatever the platform wants. Daily. On demand. The moment an order clears. Pix and SPEI run 24/7, so a Saturday 2am payout lands Saturday 2am.

**Landing time** becomes minutes, at the quoted amount. There are no intermediary deductions because there is no intermediary chain.

**Failure handling** moves to before the money leaves. Receiving account verification runs when the seller onboards and again before each payout. Most bad data is rejected while the funds are still the platform's. What does fail comes back by webhook with a reason in the same hour.

Which stablecoin to settle in matters less than most platforms expect. USDC is what most US companies hold; USDT has deeper liquidity in some LATAM off-ramps and can mean a tighter spread on a given corridor. Sellers paid in local currency never see the difference. The [USDC vs USDT comparison](/resources/more/usdc-vs-usdt-for-payments) covers when each is the better settlement asset.

## Supported payment rails: Pix, SPEI, PSE, and Argentine transfers

The four rails below cover the large majority of LATAM marketplace seller volume. Each has its own settlement behavior and its own verification rule, and a good payout API handles both inside the call.

| Country | Rail | Settlement | Hours | Receiver verification |
| --- | --- | --- | --- | --- |
| Brazil | Pix | Seconds | 24/7 | CPF or CNPJ must match the account holder |
| Mexico | SPEI | Near real time | 24/7 | 18-digit CLABE validated |
| Colombia | PSE | Minutes | Bank processing windows | Name and account checked |
| Argentina | Transfers 3.0 | Same day | Bank hours, extended | Name must match the CBU, CVU, or alias |

**Pix (Brazil).** Run by the Banco Central do Brasil, Pix settles in seconds, 24/7, and is used by over 150 million Brazilians. Every serious USDC-to-BRL payout ends in a Pix transfer. Brazil requires the receiving account's CPF or CNPJ to match the seller, and a payout to an account in a spouse's name fails. The [USDC to BRL route guide](/resources/more/usdc-to-brl-routes-2026) compares paths and fees.

**SPEI (Mexico).** Run by Banco de Mexico, SPEI settles in near real time and runs 24/7. Payouts go to an 18-digit CLABE, which the API validates before the payment executes. The [USDC to MXN guide](/resources/more/usdc-to-mxn-routes-2026) covers the corridor.

**PSE (Colombia).** PSE is the interbank system Colombian banks use to move money between accounts. Unlike Pix it runs on bank processing windows rather than settling around the clock, so a payout is usually minutes but not guaranteed instant. The [USDC to COP guide](/resources/more/usdc-to-cop-routes-2026) explains the windows and why PSE payouts get delayed or rejected.

**Transfers 3.0 (Argentina).** Argentine transfers go to a CBU (bank account key) or CVU (virtual account key), often reached through an alias. Institutions verify the beneficiary name against the account holder before crediting, so accurate receiver data is a hard requirement. A minority of Argentine sellers prefer to hold dollars; for them a USDC payout to a wallet is a feature. The [USDC to ARS guide](/resources/more/usdc-to-ars-routes-2026) covers both paths.

Sellers outside the region are paid through the same API over ACH or SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on the wire leg. How leadership teams decide which flows go on which rail is covered in [orchestrating payment rails](/blog/orchestrating-payment-rails-leaders).

## End-to-end payout workflow: from stablecoin hold to local currency delivery

The end-to-end workflow has five steps, and the platform's code touches three of them.

1. **Buyer pays.** The buyer pays the marketplace as usual, by card, ACH, or bank transfer. Nothing changes on the acceptance side.
2. **Platform holds in stablecoins.** While the order is pending (escrow, delivery, dispute window), the platform holds the balance in USD or USDC. A [virtual account](/virtual-accounts) turns incoming USD into stablecoins automatically. Holding in a dollar-linked asset means no FX exposure in four local currencies and no pre-funded balances sitting idle in four countries.
3. **Platform triggers the payout.** When the order clears, the platform requests a quote for the seller's amount and currency. The API returns the FX rate, spread, and payout fee as separate numbers. The platform executes against the seller's stored receiver ID.
4. **Provider converts and delivers.** The stablecoin converts to local currency and the provider delivers it over Pix, SPEI, PSE, or an Argentine transfer, after verifying the receiving account. Compliance checks (KYC, sanctions screening, travel rule data) run inside this step.
5. **Seller receives local currency.** The seller sees a local transfer in their bank account for the quoted amount. The platform receives a webhook with the final status and updates the seller dashboard.

Two properties of this flow deserve attention before committing.

**Finality.** The on-chain transfer is final once confirmed, which is why receiver verification happens before money moves rather than after. [Are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible) explains what can and cannot be recalled on each leg.

**Cross-chain and payables.** Since August 2026, BlindPay moves USDC across networks in a single transfer and pays invoices, boletos, and Pix codes straight from stablecoins, which matters for platforms that also settle with vendors who invoice rather than sell. The [Payables and cross-chain USDC changelog](/changelog/2026-08-20-payables-cross-chain-usdc-fx-export) has the details.

### The pre-funding trap

Several payout providers quote fast local payouts and then explain that the platform must keep a BRL balance in Brazil and an MXN balance in Mexico, topped up ahead of each cycle. That is pre-funding, and it means working capital sits idle in four countries, exposed to four currencies, waiting for payouts that may or may not happen.

For a marketplace with seasonal volume this is expensive in a way that never shows up as a fee. BlindPay quotes and settles without pre-funding: the platform funds the payout when it makes it, in USD or USDC, and the local currency leg happens at execution. The [pricing explainer](/resources/more/stablecoin-api-pricing-explained) covers why trapped capital belongs in any cost comparison.

## API integration for global payments at scale

A marketplace payout integration has three parts, and the same three parts work whether the platform pays 40 sellers or 40,000.

1. **Seller onboarding.** Create a receiver with name, tax ID (CPF or CNPJ, RFC, cedula, or CUIT), and bank account. KYC and account verification run inline. Store the receiver ID against the seller record.
2. **Payout.** Request a quote for the amount and currency, then execute against the receiver ID. Store the payout ID, the quoted rate, and the fee for the seller's payout history.
3. **Reconciliation.** Listen for the webhook on every status change. Update the seller's balance and payout history, and surface the status in the seller dashboard. The [webhook integration prompt](/prompts/integrate-webhooks) is the fastest path to a working listener.

Three operational details that platforms tend to underestimate:

**Naming.** The Pix or SPEI should show a sender name the seller recognizes. Money from an unfamiliar name triggers support tickets and, in Brazil, occasionally a fraud report.

**Predictability over speed.** A seller can plan around "every Tuesday at 9am, the full amount." They cannot plan around "sometime this week, minus something." If the platform moves to daily payouts, keep them boringly consistent.

**Failure paths in sandbox.** Sandbox does not exercise real bank rejections, compliance holds, or a PSE window closing. [Test those paths](/resources/more/stablecoin-api-sandbox-vs-production) before the first production cycle, because production is where they show up.

### Compliance responsibilities, split honestly

The provider holds the licenses and runs KYC on each seller inside the onboarding flow. In Brazil that means operating under the Central Bank's virtual asset framework (Resolutions 519 through 521, in force since February 2026). Brazil's Resolution 561 on eFX in May 2026 made some platforms nervous; it does not affect the stablecoin plus local payout model, as [BlindPay explained at the time](/blog/bcb-resolution-561-efx-stablecoins). The [VASP explainer](/resources/more/what-is-a-vasp) and the [PSAV guide for Brazil](/resources/more/psav-brazil-explained) cover what the licenses mean.

The platform is responsible for its own [KYB](/resources/more/what-is-kyb), for collecting accurate seller data, and for the tax side: sellers still owe income tax locally and the platform still needs its usual records. Stablecoins change the rail. They do not change who owes what.

## Start processing LATAM marketplace payouts with BlindPay

BlindPay is a Y Combinator-backed stablecoin payout API built for exactly this flow: dollars or USDC in, Pix, SPEI, PSE, or Argentine transfer out, with the FX rate quoted before the payout executes, receiver verification and compliance run inside the call, and no pre-funding. It runs at $2.5 billion in annualized transfer volume across a payment network in 100+ countries, with published [pricing](/pricing) and [coverage](/docs/kb/supported-countries). Where another provider is the better fit, the [stablecoin payment providers comparison](/resources/more/best-stablecoin-payment-providers-2026) says so.

The fastest way to decide is a parallel run. Pull the last three payout cycles. Count the payouts under the minimum that had to wait, the wires that arrived short, and the support tickets that followed. Then run one cycle for one country through the sandbox, and price the same cycles as daily stablecoin payouts with no minimum. The difference is usually large enough to become a seller-facing feature: "get paid the day you earn it."

[Start in the sandbox](https://blindpay.com/docs/introduction), or [contact BlindPay](https://blindpay.com/contact) with your seller countries and monthly payout volume.

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

---

Source: https://blindpay.com/resources/more/stablecoin-vs-swift-b2b-payments

---
title: "Stablecoins vs SWIFT for B2B cross-border payments: a real comparison"
seoTitle: "Stablecoins vs SWIFT for B2B cross-border payments: a real comparison"
description: "Where SWIFT wires still win, where stablecoin settlement wins, and how to compare the two on cost, speed, traceability, and failure modes for business payments in 2026."
date: "2026-09-05"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Are stablecoins replacing SWIFT?"
    a: "No. SWIFT is a messaging network that tells banks to move money. Stablecoins are a settlement asset that moves value directly. For many corridors, especially into Latin America, stablecoin settlement is now faster and cheaper, but SWIFT remains the default for large corporate treasury flows between major banks."
  - q: "How much cheaper is a stablecoin payment than a SWIFT wire?"
    a: "A typical SWIFT wire into an emerging market costs $40 to $80 in fees plus a 2 to 5 percent FX spread and settles in 1 to 5 business days. A stablecoin payment with local payout usually costs a sub-percent spread plus a small flat fee and settles in minutes. On a $100,000 payment to Mexico the difference is often $750 to $1,000."
  - q: "Can I track a stablecoin payment like a SWIFT gpi payment?"
    a: "Yes, and often better. The on-chain transfer has a public transaction hash, and payout APIs return a status per payout with webhooks. For the bank leg, providers like BlindPay also run SWIFT (POBO/COBO) wires with UETR tracking and MT103 confirmations, so you get both."
  - q: "Is a stablecoin payment reversible if I make a mistake?"
    a: "The on-chain transfer is final once confirmed. Good providers verify the receiving account before the money moves, and the fiat payout leg follows the rules of the local rail. Treat the receiver check as your recall window."
  - q: "Do I need a crypto wallet to pay suppliers with stablecoins?"
    a: "No. With a stablecoin payments API you can fund from a bank account into a virtual account, and the supplier receives local currency in their bank. The stablecoin is the settlement layer in the middle."
---

Most "stablecoins vs SWIFT" articles are written by people selling one of them. So start with the part that is inconvenient for a stablecoin provider to say: SWIFT works. It has moved trillions of dollars a day for fifty years, every bank on earth speaks it, and SWIFT gpi now lands most payments at the beneficiary bank within 24 hours.

If you are a Fortune 500 treasury moving $50 million between JPMorgan and Deutsche Bank, keep using it.

The comparison gets interesting one step down from that. A SaaS company paying a supplier in Colombia. A marketplace settling with sellers in Brazil. A fund distributing to LPs in Mexico. That is where the rails diverge, and where the numbers stop being close.

## They are not the same kind of thing

SWIFT is a messaging network. It does not move money. It sends a standardized instruction from your bank to the beneficiary's bank, often through one or two correspondent banks in between, and each bank in the chain updates its own ledger and takes its own fee. The money "arrives" when the last bank credits the account.

A stablecoin is a settlement asset. When USDC moves from one address to another, value has moved. There is no instruction waiting for someone to act on it. The transfer is the settlement.

That structural difference explains almost everything in the comparison below. Correspondent chains are why wires are slow, why fees are unpredictable, and why a payment can arrive short with no explanation. A direct settlement asset has none of those properties. It has different ones.

## Cost

The visible wire fee is the small part. A US bank charges $25 to $50 to send. The intermediary bank deducts $10 to $30 nobody told you about. The receiving bank in Brazil or Argentina charges a landing fee and applies its own FX rate, which is typically 2 to 5 percent off mid-market for a corporate receiver. You find out the real cost when the supplier emails to say they got less than the invoice.

A stablecoin payment through a payout API has three costs: the chain fee (sub-cent on Polygon or Base, a few cents on most networks), the FX spread from stablecoin to local currency, and a flat payout fee. The difference is that all three are in the quote before you send. BlindPay itemizes the spread and the payout fee separately on the [pricing page](/pricing), and the [pricing explainer](/resources/more/stablecoin-api-pricing-explained) walks through why a blended rate hides the real number.

| | SWIFT wire to LATAM | Stablecoin plus local payout |
| --- | --- | --- |
| Sending fee | $25 to $50 | Small flat fee |
| Intermediary deductions | $10 to $30, unpredictable | None |
| FX spread | 2 to 5 percent | Sub-percent, quoted upfront |
| Receiving fee | Common | None over Pix or SPEI |
| Known before sending | No | Yes |

On a $100,000 supplier payment into Mexico, the wire path commonly totals $1,000 to $1,500 once the spread is counted. The stablecoin path is usually a few hundred dollars. Multiply by a monthly payment cycle and you have a line item a CFO will notice.

## Speed

SWIFT gpi data says 92 percent of payments reach the beneficiary bank within 24 hours. That is true and also misleading. "Reach the beneficiary bank" is not "available to the beneficiary". Compliance screening at the receiving bank adds a business day in many emerging-market corridors. Send on Friday afternoon and the supplier has money on Tuesday, if nothing gets flagged.

Stablecoin settlement is seconds on-chain. Conversion to local currency is minutes. Pix in Brazil and SPEI in Mexico both run 24/7, so the payout lands at 11pm on a Saturday if that is when you sent it. Colombia and Argentina are a bit slower on the local leg but still same-day. The [USDC to BRL](/resources/more/usdc-to-brl-routes-2026) and [USDC to MXN](/resources/more/usdc-to-mxn-routes-2026) route guides have timings per path.

The business impact is not the minutes. It is the working capital. Money that lands in minutes does not need to be sent three days early, so you do not need to pre-fund, and the supplier does not need to price your slowness into their terms.

## Traceability

This is where the picture is more even than the marketing suggests.

SWIFT gpi gives you a UETR, a unique end-to-end reference you can track through every bank in the chain. MT103 confirmations prove the payment was made. Auditors know these documents. Your bank knows them. That is a real advantage.

Stablecoin transfers give you a transaction hash on a public ledger. Anyone can verify it. The payout API gives you a status per payment and a webhook when it changes. What it did not historically give you is the bank-side paperwork.

That gap is closing. BlindPay runs SWIFT wires (POBO and COBO) with UETR tracking and MT103 confirmations alongside stablecoin settlement, so for a supplier who still wants a wire, you send one through the same API and get the same documents. The [settlement finality guide](/resources/more/stablecoin-api-sla-settlement-finality) explains what "final" means on each rail.

## Failure modes

Every rail fails. The question is how.

**SWIFT** fails slowly and opaquely. A wire gets held for a compliance query at a correspondent bank. Nobody tells you. Ten days later the money comes back minus fees, with a code. Or it arrives short. Or it lands in the wrong account because a BIC was mistyped, and recall is a negotiation.

**Stablecoin settlement** fails fast and loudly. The receiving account fails verification and the API returns an error before any money moves. The local rail rejects the payout and you get a webhook with the reason. The on-chain transfer itself is final once confirmed, which is why the receiver check has to happen first. [Reversibility](/resources/more/are-stablecoin-payments-reversible) is the right thing to worry about, and the answer is that the provider's pre-checks are your recall window.

Fast, loud failure is easier to build around than slow, quiet failure. Your finance team can act on an error in the same hour instead of the same fortnight.

## Compliance

Wires are not "more compliant" than stablecoin payments. They are more familiar. Both require KYB on your business, KYC on the receiver, sanctions screening, and a record of who paid whom and why.

The difference is where the checks sit. On a wire, they sit inside each bank in the chain and you do not see them. On a stablecoin payout through a licensed provider, they run inside the API flow, and they block the payment before money moves rather than freezing it after. Brazil's Central Bank now licenses virtual asset providers (Resolutions 519 through 521, effective February 2026), the US has the GENIUS Act with Treasury rules out for comment through October 19, 2026, and the EU has MiCA. The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) keeps score.

## When to use which

Use SWIFT when the counterparty is a large bank in a major market, the amount is large enough that a 24 hour delay costs nothing, and the receiver insists on an MT103. Between two G10 banks, a wire is fine.

Use stablecoin settlement when the money is going into Latin America or another market where correspondent chains are long, when speed changes the business (payroll, marketplace payouts, supplier terms), when you want the cost known before you send, or when you are sending many mid-sized payments rather than one large one.

Use both when your suppliers are mixed. A single API that settles in stablecoins where it is better and sends a wire where it is required is the setup most companies land on.

## What to do next

Take last month's outgoing international payments. For each one, write down what you paid to send, what the receiver actually got, and how many days it took. Then price the same payments through a stablecoin quote. If the total is not materially lower and faster for your LATAM corridors, stay on wires. For most LATAM corridors it is, and by a lot.

[See coverage by country](/docs/kb/supported-countries), or [start in the sandbox](https://blindpay.com/docs/introduction).

---

Source: https://blindpay.com/resources/more/compliance-agents-cross-border-stablecoin-payments

---
title: "Compliance agents for cross-border stablecoin payments: a global regulatory guide"
seoTitle: "Compliance agents for cross-border stablecoin payments: a global regulatory guide"
description: "How compliance agents apply FinCEN, MiCA, FCA, MAS, and Banco Central do Brasil rules to cross-border stablecoin payments: jurisdiction table, the FATF Travel Rule, multi-list sanctions screening, the four components of a compliant program, and questions to ask a compliance provider."
date: "2026-09-04"
updated: "2026-09-04"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "Does the FATF Travel Rule apply to stablecoin payments?"
    a: "Yes. FATF extended Recommendation 16 to virtual assets in 2019, and stablecoins are virtual assets under that standard. Any transfer between two virtual asset service providers must carry originator and beneficiary information, subject to each country's threshold."
  - q: "What is the Travel Rule threshold for stablecoin transfers?"
    a: "FATF recommends a threshold of USD or EUR 1,000, but countries set their own. The EU applies the rule with no minimum, the US uses USD 3,000 under the Bank Secrecy Act, Singapore uses SGD 1,500, and the UK applies it to all transfers with reduced data below EUR 1,000."
  - q: "Which sanctions lists should a cross-border USDC payment be screened against?"
    a: "At minimum the OFAC Specially Designated Nationals list, the EU consolidated sanctions list, the UN Security Council consolidated list, and the UK OFSI consolidated list. The set expands with each market served, and the wallet address itself should be screened, not just the named parties."
  - q: "Do I need a license in every country where I send stablecoin payments?"
    a: "Not if a licensed provider performs the regulated activity in that country. The provider carries registration, custody, and reporting obligations, and you remain responsible for giving it accurate customer and payment data."
  - q: "What is a compliance agent in stablecoin payments?"
    a: "A compliance agent is an automated component that evaluates a transaction against the rules of the jurisdictions involved and decides whether it proceeds, holds for review, or is rejected. It replaces per-country compliance code with a rule set selected at runtime."
  - q: "How do regulatory updates reach a payment company using embedded compliance?"
    a: "The provider updates the rule set at the infrastructure level and every customer inherits the change on the next transaction. No customer code changes, redeploys, or per-market patches are required."
---

*Reading time: about 8 minutes.*

**Summary:** Compliance agents handle cross-border stablecoin payment regulation by reading the context of each transaction, selecting the rule set for the jurisdictions involved, and running identity checks, sanctions screening, Travel Rule data exchange, and reporting before funds settle. The rules are maintained at the infrastructure level, so a business does not rebuild its compliance stack for every new market.

Cross-border stablecoin payments touch at least two regulatory regimes on every transfer: the sender's and the receiver's. Each regime has its own licensing body, sanctions authority, data-sharing threshold, and reporting obligation. This guide sets out what those regimes require and how a compliance layer can satisfy them without per-country engineering.

## How do compliance agents handle cross-border stablecoin payment regulation?

A compliance agent is an automated component that sits in the payment flow and evaluates each transaction against the rules that apply to it. It reads the transaction context, meaning the sender's jurisdiction, the receiver's jurisdiction, the counterparty type, the asset, and the amount, and then selects the matching rule set.

The agent then runs the checks that rule set requires: customer verification status, sanctions screening across the relevant lists, Travel Rule data exchange with the counterparty institution, and threshold-based reporting. The transaction proceeds, holds for review, or is rejected based on the result.

The alternative is writing compliance logic per market inside the payment application. That approach works for one or two corridors and breaks when the third market has a different threshold, a different data format, or a different regulator.

## What are the global regulatory requirements for stablecoin transfers?

Every major market now regulates stablecoin transfers through a licensing regime for the intermediary and an anti-money laundering (AML) regime for the transaction. The licensing regime decides who may operate; the AML regime decides what each transfer must carry and when it must be reported.

The table below summarizes the primary requirement in six markets relevant to cross-border stablecoin payments.

| Jurisdiction | Regulatory body | Primary requirement |
|---|---|---|
| United States | Financial Crimes Enforcement Network (FinCEN), with state money transmitter regulators | Money Services Business (MSB) registration under the Bank Secrecy Act (BSA), an AML program, Travel Rule compliance at USD 3,000, and strict-liability sanctions compliance under the Office of Foreign Assets Control (OFAC) |
| European Union | National competent authorities under the Markets in Crypto-Assets Regulation (MiCA), with the Anti-Money Laundering Directives (AMLD) | Crypto-Asset Service Provider (CASP) authorization, Travel Rule under the Transfer of Funds Regulation (TFR) with no minimum threshold, and use of MiCA-compliant e-money tokens |
| United Kingdom | Financial Conduct Authority (FCA) | Cryptoasset registration under the Money Laundering Regulations (MLRs), Travel Rule compliance in force since September 2023, and sanctions compliance under the Office of Financial Sanctions Implementation (OFSI) |
| Singapore | Monetary Authority of Singapore (MAS) | Digital Payment Token (DPT) service license under the Payment Services Act (PSA), with AML and Travel Rule obligations under MAS Notice PSN02 at SGD 1,500 |
| Brazil | Banco Central do Brasil (BCB) | Authorization as a Sociedade Prestadora de Serviços de Ativos Virtuais (SPSAV) under Resolutions 519, 520, and 521 of 2025, with AML reporting to the Conselho de Controle de Atividades Financeiras (COAF) |
| Japan | Financial Services Agency (FSA) | Registration under the revised Payment Services Act, with stablecoin issuance limited to banks, trust companies, and licensed funds transfer providers |

The pattern is consistent: the activity is regulated everywhere, but the regulator, the threshold, and the data format differ. A compliance program that hardcodes one market's assumptions will fail an examination in another.

## What does the FATF Travel Rule require for stablecoin payments?

The Financial Action Task Force (FATF) is the intergovernmental body that sets global AML standards. Its Recommendation 16, known as the Travel Rule, requires that originator and beneficiary information accompany a funds transfer so that each institution in the chain can screen the parties and respond to law enforcement requests.

In June 2019, FATF extended the Travel Rule to virtual assets and Virtual Asset Service Providers (VASPs) through an interpretive note to Recommendation 15. Stablecoins are virtual assets under that standard, so a USDC transfer between two VASPs carries the same data obligation as a wire transfer between two banks.

The required data set is the originator's name, account or wallet identifier, and one of address, national identity number, or date and place of birth, plus the beneficiary's name and account or wallet identifier. FATF recommends a USD or EUR 1,000 threshold, but each country sets its own.

Thresholds and formats diverge by market. The EU's Transfer of Funds Regulation applies with no minimum since December 30, 2024. The US applies the Bank Secrecy Act Travel Rule at USD 3,000. Singapore's threshold is SGD 1,500. The UK applies the rule to all transfers, with a reduced data set below EUR 1,000.

The Travel Rule matters for stablecoins specifically because a blockchain transfer carries no identity data by default. The information must move through a separate channel between the two VASPs, matched to the on-chain transaction, and the compliance layer has to do that matching before the payment is treated as complete.

## How does sanctions screening work for cross-border USDC payments?

Sanctions screening checks every party to a payment against the lists maintained by the sanctioning authorities in the jurisdictions involved. For a cross-border USDC payment, that means screening the sender, the receiver, any beneficial owners, and the wallet addresses on both sides.

The core lists are the OFAC Specially Designated Nationals (SDN) and consolidated lists in the US, the EU consolidated sanctions list, the United Nations (UN) Security Council consolidated list, and the UK OFSI consolidated list. A payment from a US entity to a Brazilian receiver over EU rails must clear all of them, not just the sender's.

OFAC compliance is strict liability. A payment that reaches a sanctioned party is a violation regardless of intent, which is why screening runs before funds move and again when lists update, not only at onboarding.

Wallet address screening is the piece that has no analog in bank payments. OFAC has added blockchain addresses to the SDN list since 2018, and a compliance layer must screen the destination address against those entries and against analytics that flag exposure to sanctioned or illicit sources.

## How do you comply with regulations across multiple jurisdictions without rebuilding per market?

Multi-jurisdictional compliance for crypto payments comes down to one architectural decision: whether jurisdiction-specific rules live in the payment application or in a compliance layer beneath it. The first approach means one codebase change per market per regulatory update. The second means the rules are data, selected at runtime by transaction context.

In a rule-set model, each jurisdiction has a definition of its licensing scope, Travel Rule threshold and data format, sanctions lists, reporting triggers, and receiver verification requirements. The agent loads the definitions for the sender's and receiver's jurisdictions and applies the stricter requirement wherever they conflict.

Regulatory updates then land in the rule set, not in customer code. When a threshold changes or a list is amended, the provider updates the definition once and every payment evaluated after that point uses it.

This is how BlindPay's compliance layer is built. Rule sets are maintained for the regimes described in this guide, including FinCEN, MiCA and AMLD, FCA, MAS, and BCB requirements, and customers inherit updates without code changes. Entity and license details by market are published on the [licenses page](/licenses).

## What are the 4 structural components of a compliant stablecoin payment program?

A compliant stablecoin payment program has four structural components. Regulators in every major market examine all four, and a gap in any one is a finding.

### 1. Licensing and registration

The entity performing the regulated activity must hold the authorization the jurisdiction requires: MSB registration and state licenses in the US, CASP authorization in the EU, FCA registration in the UK, a DPT license in Singapore, SPSAV authorization in Brazil. A business that builds on a licensed provider does not need these itself, but it must confirm the provider holds them for each market it serves. Our [VASP explainer](/resources/more/what-is-a-vasp) covers who falls inside the licensing perimeter.

### 2. Customer due diligence

Know Your Customer (KYC) on individuals and [Know Your Business (KYB)](/resources/more/what-is-kyb) on companies establish who the sender and receiver are before money moves. Due diligence includes identity verification, beneficial ownership, politically exposed person (PEP) checks, and risk rating, with enhanced due diligence on higher-risk relationships.

### 3. Transaction controls

Transaction controls are the checks that run on every payment: sanctions screening across all applicable lists, Travel Rule data exchange, wallet address analytics, and monitoring for patterns that indicate structuring or layering. These controls are where a compliance agent does most of its work, and they must complete before settlement, not after.

### 4. Reporting and recordkeeping

Each jurisdiction requires suspicious activity reports to its financial intelligence unit: FinCEN in the US, national units under AMLD in the EU, the National Crime Agency in the UK, the Suspicious Transaction Reporting Office in Singapore, and COAF in Brazil. Records of due diligence, screening results, and Travel Rule exchanges must be retained for the period each regulator sets, typically five years or more.

## What questions should you ask before choosing a compliance provider?

The questions below separate providers that hold compliance infrastructure from providers that hold a compliance vendor contract. Ask each one for every market you plan to serve.

- Which entity holds the license or registration in each of my target markets, and can you show the public register entry?
- How does the compliance layer determine which jurisdiction's rules apply to a given transaction, and what happens when the sender's and receiver's rules conflict?
- Which sanctions lists are screened on every payment, how often are they refreshed, and are wallet addresses screened as well as named parties?
- How is Travel Rule data exchanged with the counterparty VASP, and what happens when the counterparty cannot receive it?
- When a regulator changes a threshold or a data requirement, what changes on my side?
- Where does the compliance decision sit in the payment flow: before funds move, or as a post-settlement review?
- What records are retained, for how long, and how do I retrieve them for an audit or regulatory request?
- Which suspicious activity reporting obligations does the provider carry, and which remain mine?

A provider that answers these with references to its own registrations and rule sets is holding infrastructure. A provider that answers by naming a third-party vendor for each question is passing the integration and the regulatory risk back to you.

## What should a stablecoin payment company do next?

Cross-border stablecoin payments are regulated in every major market, and the requirements converge on the same four components: licensing, customer due diligence, transaction controls, and reporting. The details diverge by jurisdiction, which is why compliance logic belongs in a rule-set layer that selects the right requirements at runtime rather than in application code rewritten per market.

BlindPay provides cross-border stablecoin payment infrastructure with that compliance layer built in: jurisdiction-specific rule sets applied by transaction context, multi-list sanctions screening across OFAC, EU, UN, and UK lists, Travel Rule data exchange inside the payment flow, and regulatory updates applied at the infrastructure level. Receivers get local currency over Pix, SPEI, ACH, or SWIFT (POBO/COBO) after the checks clear. The compliance program is described on the [compliance page](/compliance), and the team can walk through jurisdiction-specific questions via [contact](/contact) at [blindpay.com](https://blindpay.com).

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

---

Source: https://blindpay.com/resources/more/stablecoin-payroll-latam-contractors

---
title: "Stablecoin payroll for LATAM contractors: how it actually works in 2026"
seoTitle: "Stablecoin payroll for LATAM contractors: how it actually works in 2026"
description: "How US companies pay contractors in Argentina, Brazil, Mexico, and Colombia with stablecoins in 2026: USDC vs USDT, the step-by-step payout flow, US tax reporting, a platform comparison, and how to start."
date: "2026-09-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is stablecoin payroll and how does it work for LATAM contractors?"
    a: "Stablecoin payroll is paying contractors with a dollar-pegged token like USDC or USDT as the settlement layer instead of an international wire. The company funds the run in dollars or stablecoins, a payout platform converts each payment at a quoted rate, and the contractor receives either local currency in their bank account over Pix, SPEI, PSE, or an Argentine transfer, or stablecoins in a wallet if they prefer to hold dollars. Settlement takes minutes instead of 3 to 5 business days."
  - q: "Is it legal for US companies to pay contractors in stablecoins?"
    a: "Yes. US companies may pay contractors in stablecoins through a provider registered with FinCEN as a Money Services Business. Stablecoin issuers are regulated under the GENIUS Act, signed in July 2025, with Treasury's implementing rules out for comment through October 19, 2026. On the receiving side, Brazil licenses virtual asset providers under Central Bank Resolutions 519 through 521, and Mexico, Colombia, and Argentina permit conversion to local currency through licensed providers. The payment is reportable like any other contractor payment."
  - q: "How do stablecoin payments compare to ACH payments, wire transfers, and platforms like Wise or Stripe for international payroll?"
    a: "ACH is US-only, so it cannot pay a contractor in Brazil. An international wire costs $25 to $50 to send plus a 2 to 5 percent FX spread and lands in 2 to 5 business days. Wise and Stripe-based payout tools reach Latin America with lower spreads than banks but still settle over local rails on their schedules and often require pre-funded balances. Stablecoin payroll settles in minutes, 24/7, at a rate quoted before you send, with no pre-funding."
  - q: "How much do contractors actually receive after fees when paid in USDC versus traditional bank transfers?"
    a: "On a $3,000 payment by international wire, the contractor commonly receives $2,830 to $2,915 after sending fees, intermediary deductions, and the receiving bank's FX spread. Through a stablecoin payout with an itemized quote, the contractor receives the quoted amount, and the total cost is usually a small flat fee plus a sub-percent spread. Over a year of monthly payments the difference is typically several hundred dollars per contractor."
  - q: "How fast are stablecoin payments compared to real-time payments and standard international wire transfers?"
    a: "The stablecoin transfer settles in seconds, conversion takes a few minutes, and Pix in Brazil and SPEI in Mexico run 24/7, so a payout lands in minutes at any hour. That matches domestic real-time payments like RTP or FedNow in speed, but works across borders. An international wire takes 2 to 5 business days and does not move on weekends. Colombia over PSE and Argentina over Transfers 3.0 are same-day."
  - q: "What do LATAM contractors need to set up to receive stablecoin payroll payments?"
    a: "For local currency: their name, tax ID (CPF in Brazil, RFC in Mexico, cedula in Colombia, CUIT in Argentina), and a bank account, entered once during onboarding. No wallet, no exchange account, no seed phrase. Contractors who want to hold dollars instead provide a wallet address that supports USDC or USDT. Onboarding with identity verification takes minutes."
  - q: "How do companies handle tax reporting and compliance when using stablecoin payroll for international contractors?"
    a: "The same way as for any contractor payment. For a non-US contractor performing services outside the US, collect Form W-8BEN (or W-8BEN-E for a company) and keep it on file; no Form 1099-NEC is issued and no withholding applies to foreign-source services income. For a US person working abroad, Form 1099-NEC applies at the new $2,000 threshold for tax year 2026. Keep the payout ID, date, amount, FX rate, fees, and transaction hash per payment. Confirm the specifics with a tax advisor."
---

Stablecoin payroll is a way for US companies to pay contractors in Latin America using a dollar-pegged token like USDC or USDT as the settlement layer, so the payment lands in minutes at a cost known before it is sent, instead of a wire that takes 3 to 5 business days and arrives short. The contractor receives local currency in their bank account, or stablecoins if they prefer to hold dollars. In 2026 it has become the default for companies paying teams in Argentina, Brazil, Mexico, and Colombia.

This guide is for a US company paying independent contractors in those countries: the finance or HR lead running a monthly cycle of 5 to 50 payments, the controller who needs to know the tax treatment before signing off, and the contractor on the other end who is tired of losing money to bank fees and inflation.

Here is the normal experience it replaces. A startup with twelve contractors in Brazil, four in Mexico, and two in Colombia sends eighteen international wires on the last business day of the month. Three bounce for formatting reasons, two arrive short because an intermediary bank took a cut nobody could predict, and the Brazilian contractors get their reais on Wednesday of the following week, minus a 3 percent FX haircut from the receiving bank. That is not the bad case. That is the normal case.

## What is stablecoin payroll and why LATAM contractors prefer it

Stablecoin payroll uses a [stablecoin](/resources/more/stablecoins), a token designed to hold a 1:1 peg to the US dollar, to move value from the company to the contractor. What the contractor gets at the end is their choice. Most want local currency in their bank. A minority, especially in Argentina, want to hold dollars.

That second part is the one most guides get wrong. Stablecoin payroll does not mean contractors have to open a crypto wallet. A designer in São Paulo wants reais in her Nubank account. A developer in Guadalajara wants pesos over SPEI. The stablecoin moves the value across the border. The local rail puts it in their hands. The flow is sometimes called the stablecoin sandwich: fiat in, stablecoin across, fiat out.

Contractors prefer it for three reasons.

**Speed.** A wire takes 3 to 5 business days, assuming no compliance hold at an intermediary bank. A stablecoin payout lands in minutes. For a freelancer juggling several clients, getting paid today instead of next week is the difference between paying rent on time and not.

**Fee erosion.** On a $3,000 wire, the contractor commonly loses $85 to $170 to sending fees, intermediary deductions, and the receiving bank's exchange rate. On a stablecoin payout the amount quoted is the amount received. In the LATAM stablecoin payments map that BlindPay co-published with Bitso Business, Utila, and Minteo in 2025, mass payouts to freelancers in Mexico and Brazil showed an [80 percent cut in settlement time](https://business.bitso.com/en/blog/the-first-stablecoin-payments-map-in-latam) compared with the wires they replaced.

**Currency protection.** A contractor in Argentina paid in pesos watches the value fall within days. Paid in USDC to a wallet, they hold dollars and convert when they choose. For contractors in Brazil, Mexico, and Colombia the local currency payout is usually what they want, but the option to hold dollars is a real benefit for some.

For the company, the win is operational. One provider, one API or dashboard, one payment method that works the same in four countries, instead of four sets of banking requirements and four pre-funded balances.

## USDC vs USDT: choosing the right stablecoin for LATAM payments

For most US companies USDC is the right default, and the choice only matters for contractors who want to hold stablecoins rather than receive local currency.

[USDC](/resources/more/what-is-usdc) is issued by Circle, publishes monthly reserve attestations, and is positioned for licensing under the GENIUS Act. It is the easier asset to justify to a US finance or legal team, and it is what most US companies already hold.

USDT, issued by Tether, has deeper liquidity in many LATAM off-ramps and local exchanges. On some corridors that means a slightly tighter spread when converting to local currency, and contractors in Argentina who plan to sell for pesos on a local exchange often find USDT easier to move.

If contractors are paid in local currency, they never see which token settled the payment, so the company should pick the one its compliance team prefers and let the provider handle conversion. If contractors are paid in stablecoins to a wallet, let each contractor choose. A provider that supports both, like BlindPay, removes the decision from the operations team. The [USDC vs USDT comparison](/resources/more/usdc-vs-usdt-for-payments) covers reserves, liquidity, and regulatory posture in detail.

## How stablecoin payroll works step-by-step

A stablecoin payroll run has five steps. With a payout platform like [BlindPay](/global-payments) the company's team touches three of them; the platform handles conversion, compliance, and delivery.

1. **Onboard each contractor once.** The contractor submits their name, tax ID (CPF in Brazil, RFC in Mexico, cedula in Colombia, CUIT in Argentina), and a bank account. Identity verification and receiving-account checks run inside the flow. A contractor who wants to hold dollars submits a wallet address instead. This takes minutes and happens one time.
2. **Fund the run.** Send USDC or USDT from the company's treasury wallet, or send dollars by ACH or wire to a [virtual account](/virtual-accounts) that converts them to stablecoins automatically. No pre-funding in a Brazilian or Mexican account.
3. **Request a quote per payout.** The platform returns the FX rate, the spread, and the payout fee as separate numbers. The exact amount landing in the contractor's account is known before the company commits.
4. **Execute.** The stablecoin moves on-chain, converts to local currency, and pays out over Pix in Brazil, SPEI in Mexico, PSE in Colombia, or Transfers 3.0 to a CBU or CVU in Argentina. A wallet payout skips the conversion and delivers USDC or USDT directly. Since August 2026, BlindPay also moves USDC across networks in a single transfer, so the company's treasury chain and the payout chain no longer have to match; the [cross-chain USDC changelog](/changelog/2026-08-20-payables-cross-chain-usdc-fx-export) has the details.
5. **Reconcile.** Each payout has an ID, a status, a transaction hash, and a webhook. The finance tool receives the event. The contractor receives the money.

End to end, a Brazilian payout over Pix usually completes in minutes. Same for SPEI in Mexico, which also runs 24/7. Colombia over PSE follows bank processing windows and is usually minutes, sometimes longer. Argentina over Transfers 3.0 is same-day. A Friday evening run does not become a Tuesday deposit.

One property to understand before the first run: the on-chain transfer is final once confirmed. That is why receiver verification happens before the money moves, not after. [Are stablecoin payments reversible](/resources/more/are-stablecoin-payments-reversible) explains what can be recalled on each leg. A contractor who received USDC and later wants dollars in a US account can use a [USDC to USD](/usdc-to-usd) off-ramp.

## Compliance and tax reporting for US companies

Stablecoin payroll does not change what a US company owes or reports. It changes the settlement mechanism. Three rules cover most cases, and a tax advisor should confirm the specifics for the company's situation.

**Non-US contractors performing services outside the US.** This is the typical LATAM contractor. Collect Form W-8BEN (or W-8BEN-E if the contractor invoices through a company) and keep it on file. No Form 1099-NEC is issued, and no US withholding applies, because the income is foreign-source services income. The W-8BEN is not filed with the IRS; it supports why no 1099 was issued if the company is audited.

**US persons working abroad.** A US citizen or resident living in Mexico and invoicing as a contractor is reported on Form 1099-NEC like any domestic contractor. For payments made on or after January 1, 2026, the reporting threshold rose from $600 to $2,000 under the One Big Beautiful Bill Act, indexed for inflation from 2027. The reportable amount is the fair market value at the time of payment, which for a dollar-pegged stablecoin is the dollar amount.

**Records.** Keep, per payment: date, contractor, amount, currency delivered, FX rate and fees, payout ID, and the on-chain transaction hash. A payout platform should provide this by API and export. The transaction hash is a public, timestamped record that a wire cannot match, and auditors have started to expect it.

On the platform side, the provider must be registered with FinCEN as a Money Services Business and hold or be exempt from state money transmitter licenses; BlindPay publishes its status on the [licenses page](/licenses). On the receiving side, Brazil licenses virtual asset service providers under Central Bank Resolutions 519 through 521, in force since February 2, 2026, and Resolution 561 on eFX in May 2026 does not affect the stablecoin plus local rails model, as [BlindPay explained at the time](/blog/bcb-resolution-561-efx-stablecoins). The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) keeps the country-by-country view current.

Contractors owe income tax in their own country on what they receive, and converting stablecoins to local currency may be a taxable event locally. The company is not responsible for the contractor's filing, but clear per-payment documentation helps them meet it.

## Comparing stablecoin payroll platforms for global payments

Platforms that pay LATAM contractors with stablecoins fall into three groups: payout APIs that deliver local currency, contractor management platforms that added a stablecoin option, and exchange or wallet products that deliver tokens only. The table compares what a company evaluating them for a 5 to 50 contractor run should check. Capabilities change often; confirm current details on each provider's site. The [provider comparison](/resources/more/best-stablecoin-payment-providers-2026) covers the wider field.

| Platform type | Example | Contractor receives | LATAM rails | Pre-funding | Quote | Access |
| --- | --- | --- | --- | --- | --- | --- |
| Stablecoin payout API | BlindPay | Local currency or USDC/USDT | Pix, SPEI, PSE, Argentine transfers, plus ACH and SWIFT (POBO/COBO) | None | Itemized: rate, spread, fee | API, dashboard, MCP for AI agents |
| Contractor management platform with stablecoin option | Deel, Toku | Local currency or stablecoin, depending on plan | Via partner rails | Often required | Blended | Dashboard, some APIs |
| Stripe-ecosystem stablecoin | Bridge | USDC or USD/EUR | ACH, wire, SEPA | Balance-based | Percentage | API |
| Exchange or wallet payout | Bitso Business, local exchanges | Tokens or local currency at the exchange | Country-specific | Funds on exchange | Exchange rate | Dashboard, API |

Five variables decide the choice.

**What the contractor receives.** If most contractors want local currency, a payout API that delivers over Pix, SPEI, PSE, and Argentine transfers is the only category that does it in one integration. If most want to hold dollars, an exchange or wallet payout works, but the contractor then handles conversion themselves.

**Fee structure.** Flat per payout, percentage, or both. For frequent smaller payments a low flat fee matters most; for larger payments the spread dominates. Compare on the company's actual payment pattern, and insist on an itemized quote. The [pricing explainer](/resources/more/stablecoin-api-pricing-explained) shows why a blended rate hides the real number.

**Pre-funding.** Platforms that require a BRL balance in Brazil and an MXN balance in Mexico before payouts clear are tying up working capital that never shows up as a fee. Ask directly.

**Compliance built in.** Receiver KYC, account verification, and sanctions screening should run inside the flow. The platform should publish its licenses.

**API vs dashboard.** A team of two running monthly payroll wants a dashboard. A company with a payroll system wants an API and webhooks. The best platforms offer both.

## Get started with stablecoin payments for your LATAM team

Four steps take a company from wires to a working stablecoin payroll in one or two cycles.

**Pick the platform against the five variables above.** For 5 to 50 contractors across Brazil, Mexico, Colombia, and Argentina, a payout API that delivers local currency with an itemized quote and no pre-funding covers the common case. BlindPay's [global payments](/global-payments) product is built for that flow, with [pricing](/pricing) and [coverage](/docs/kb/supported-countries) published.

**Ask contractors what they want.** Local currency to a bank account, or stablecoins to a wallet. Most choose the bank account. Do not push wallets on people who did not ask for one; that moves the friction to them.

**Run one cycle in parallel.** Pay one or two contractors over stablecoins and the rest by wire. Compare what landed, when, and what it cost. Test the failure paths too: a rejected receiving account, a compliance hold. [Sandbox does not exercise those](/resources/more/stablecoin-api-sandbox-vs-production); a small live pilot does.

**Document from day one.** W-8BEN on file per foreign contractor, per-payment records with transaction hash, and a reconciliation step wired to the webhook. Habits set on the first run hold as the contractor base grows.

The shift is smaller than it looks. A company already paying international contractors has the hard parts done: the relationships, the schedule, the invoices. Stablecoin payroll swaps the settlement mechanism for one that is faster, cheaper, and easier to audit.

[Start in the sandbox](https://blindpay.com/docs/introduction), or [contact BlindPay](https://blindpay.com/contact) with the countries and monthly volume.

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

---

Source: https://blindpay.com/resources/more/on-off-ramp-liquidity-live-quotes

---
title: "On/off ramp liquidity with live quotes: how it works and why it matters"
seoTitle: "On/off ramp liquidity with live quotes: how it works and why it matters"
description: "What on/off ramp liquidity with live quotes means for developers: live quote vs batch rate, the quote ID flow in an API, what happens on expiry, how liquidity depth changes spread by transaction size, rate windows and UX, and a checklist for evaluating a live quote API."
date: "2026-09-03"
updated: "2026-09-03"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "What is quote slippage in crypto on-ramps?"
    a: "Quote slippage is the difference between the rate shown to the user and the rate at which the conversion actually settles. It appears when a provider quotes a cached or indicative rate and executes later at the market rate. A live quote with a quote ID and an honored window removes slippage from the user's side: the provider absorbs any move within the window, and after expiry the user gets a fresh quote instead of a surprise."
  - q: "How do I test live quotes during API integration?"
    a: "Request two quotes ten seconds apart on a volatile corridor and confirm the rate moves. Confirm each response carries a quote ID and an expiry timestamp. Submit a transaction with an expired ID and confirm a specific expiry error code. Request quotes at $500, $5,000, and $50,000 on the same corridor and compare the effective rate. Finally, confirm the sandbox enforces the same rules as production."
  - q: "Can I lock a live quote for longer than the standard window?"
    a: "Sometimes, at a price. Some providers offer extended locks for scheduled or large payments, and the spread widens to cover the provider's exposure over the longer period. For most flows the better design is to request the quote at the last responsible moment, right before the user confirms, and to re-quote automatically when the window expires rather than pay for a lock you rarely need."
  - q: "Why do some on-ramp providers not offer live quotes?"
    a: "Because they do not hold the liquidity themselves. A provider that routes conversions to a third-party exchange or market maker cannot commit to a rate it does not control, so it quotes an indicative rate and settles at whatever the partner returns. Live quotes with an honored window require the provider to own or directly access the liquidity that fills the trade."
---

*Reading time: about 6 minutes.*

On/off ramp liquidity with live quotes means a provider holds enough fiat and stablecoin inventory to fill conversions on demand, and prices each one at the moment it is requested rather than from a cached rate. For a developer, the implication is that the rate returned by the quote endpoint is the rate that settles, as long as the transaction is confirmed inside the quote's window.

## What is the difference between a live quote and a batch rate?

| | Live quote | Batch rate |
| --- | --- | --- |
| When rate is determined | At the moment of the API request | On a schedule (every minute, hour, or day) and cached |
| Rate window | Stated expiry, typically 10 seconds to 5 minutes, honored on confirmation | No commitment; settlement happens at the rate in effect later |
| User experience | The amount on the confirmation screen is the amount that settles | The user sees an estimate and learns the real amount afterward |
| Slippage risk | Carried by the provider inside the window | Carried by the user, or hidden inside a wider spread |
| Best for | Consumer flows, payroll, any product that shows an amount before sending | Internal treasury moves where the sender tolerates variance |
| Worst for | Nothing at the application layer; the cost is on the provider's side | Any flow where a person confirms a number they expect to receive |

A batch rate is not a cheaper version of a live quote. It is a different allocation of risk, and the risk lands on the user.

## How does a live quote actually work in an API?

The flow has six steps, and the quote ID is what ties them together.

1. The application calls the quote endpoint with the corridor, the amount, and which side (sender or receiver) the amount is fixed on.
2. The provider returns the rate, the itemized fees, the resulting amount, a quote ID, and an expiry timestamp in a single synchronous response.
3. The application displays the amount and a countdown to the user.
4. The user confirms.
5. The application submits the transaction with the quote ID attached.
6. The provider checks that the quote has not expired, honors the quoted rate, and executes the conversion.

Providers that own their liquidity implement this directly. BlindPay, for example, returns `expires_at` with every quote and holds bank payout quotes for a default five minute window, rejecting late submissions with a `quote_expired` error so the client can re-quote.

## What happens when a live quote expires?

**The user confirms in time.** The transaction is submitted with a valid quote ID, the provider executes at the quoted rate, and the user receives the amount shown on screen. This is the only scenario in which the provider carries any rate risk.

**The user does not confirm.** The quote lapses, nothing is executed, and no funds move. The application requests a new quote when the user returns, and the new amount may differ.

**The quote expires during processing.** The application submitted the quote ID inside the window, so the provider honors it even if on-chain confirmation or fiat settlement finishes after the expiry timestamp. If the application submits after the window has closed, the provider rejects the transaction with an expiry error, and the correct client behavior is to re-quote and ask the user to confirm again rather than to retry blindly.

## How does liquidity depth affect quote quality?

Liquidity depth is the volume a provider can convert on a corridor before the rate degrades. A deep book fills a large order at nearly the same price as a small one; a thin book has to reach for worse prices as the order grows.

Take a USDC to BRL corridor. A $500 quote and a $50,000 quote from a deep provider might differ by a few basis points, because both fill from the same inventory at the same price. The same two quotes from a thin provider might differ by 50 to 150 basis points, because the larger order exhausts the good inventory and fills the remainder at worse prices or is routed to a third party with its own markup.

Depth also sets reliability. A provider that has to source liquidity from a partner at quote time cannot guarantee the rate, so it either widens the spread to protect itself or quotes indicatively and settles at market.

To test depth during evaluation, request quotes at $500, $5,000, and $50,000 on the same corridor within one minute and compare the effective rate after fees. Then ask for the maximum single-transaction size per corridor and whether that limit is stated in writing. A provider whose spread is flat across the three sizes has the depth it claims.

## What is a typical rate window and how should it affect your UX design?

Most live quote windows fall between 10 and 90 seconds for crypto-native flows, with some providers holding bank payout quotes for several minutes. The window length dictates which confirmation pattern your interface can support.

- **About 15 seconds:** single-screen confirmation only. The amount and a confirm button must be on the same screen with a visible countdown, and the quote should be requested when that screen loads, not earlier.
- **About 60 seconds:** multi-step confirmation is possible. The user can review a summary, pick a bank account, and confirm, provided the app re-quotes automatically if the timer runs out.
- **90 seconds and up:** batch approval flows work. A finance user can review a list of payouts, each with its quoted amount, and approve them together before any quote lapses.

A window under 10 seconds is a bad consumer experience. Network latency, screen rendering, and the user reading the number consume most of it, so a meaningful share of confirmations arrive expired and the user sees a changed amount on every retry. If a provider's window is that short, either the corridor is illiquid or the provider is passing its own risk to your users.

Design for expiry as a normal path, not an error. Show the countdown, re-quote silently when it hits zero, and highlight the change only if the amount moved.

## What should a developer look for in a live quote API?

- **Synchronous response under one second.** The quote is on the critical path of the confirmation screen, so a slow endpoint eats into the rate window before the user sees a number.
- **Quote ID enforcement on the transaction endpoint.** The execute call must require the quote ID and reject unknown or expired ones, otherwise the "honored rate" is a promise with no mechanism behind it.
- **Explicit expiry timestamp and a distinct expiry error code.** The client needs the timestamp to render a countdown and the error code to distinguish "re-quote" from "something else failed".
- **Itemized fees in the quote.** Rate, spread, flat fee, and network fee as separate fields, so the amount displayed matches the amount settled and reconciliation works without guesswork.
- **Webhook settlement events.** Execution is asynchronous after confirmation, so the API must emit signed events for on-chain confirmation and fiat settlement rather than requiring polling.
- **Sandbox parity with production.** Expiry, rejection, and error codes must behave the same in sandbox, or the integration ships with untested failure paths. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) covers what sandboxes can and cannot exercise.

A provider that meets all six has built a live quote system. A provider that meets fewer has built a rate display. The [buyer's guide to on/off ramp providers](/resources/more/how-to-choose-on-off-ramp-provider) shows how to weigh this against corridor coverage, settlement speed, and licensing.

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

---

Source: https://blindpay.com/resources/more/stablecoin-payout-statuses-explained

---
title: "Stablecoin payout statuses explained: processing, on hold, completed, failed, and refunded"
seoTitle: "Stablecoin payout statuses explained"
description: "What each stablecoin payout status means, which are final, why an on-chain confirmation isn't a completed payout, and how to test every failure."
date: "2026-09-03"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are the statuses of a stablecoin payout?"
    a: "At BlindPay, a payout starts as processing, can pass through on_hold for review, and ends in one of three terminal states: completed (fiat landed in the recipient's bank account), failed (the payout did not complete), or refunded (the stablecoins went back to the funding source instead of being converted)."
  - q: "Why is my stablecoin payout on hold?"
    a: "Usually compliance review. At BlindPay, every SWIFT payout starts on_hold, and USD ACH, wire, and RTP payouts pass through on_hold as a standard step after the stablecoins are collected. Transaction monitoring can also hold a payout for review or a request for information. A hold can take up to 30 days to resolve."
  - q: "Is a payout complete when the blockchain transaction confirms?"
    a: "No. The on-chain confirmation means the stablecoins moved from the funding source. The payout is complete when the fiat lands in the recipient's bank account, which is instant on Pix or SPEI and about 5 business days on SWIFT."
  - q: "Does a failed payout refund automatically?"
    a: "Not at BlindPay. A payout that reaches failed or sits in review does not automatically refund the sender. If a payout looks stuck, contact support rather than assuming it will resolve. A refunded payout is different: the stablecoins have already returned to the funding source."
  - q: "How do I test failed and refunded payouts?"
    a: "On a BlindPay development instance, payouts complete automatically. Set the payout quote's request_amount to 66600 ($666.00) to force failed or 77700 ($777.00) to force refunded. Every other amount completes."
---

A stablecoin payout moves through a small set of statuses. At BlindPay it starts as `processing`, can pause at `on_hold` for review, and ends in exactly one terminal state: `completed`, `failed`, or `refunded`. Your product needs a clear answer for each, because each one means something different to the person waiting for money.

Most payout bugs aren't in the happy path. They're in the states nobody designed a screen for.

## What does each payout status mean?

These are BlindPay's statuses, from the [payouts reference](/docs/payouts). Other providers use different names for the same ideas; map yours before you build.

| Status | What it means | Terminal? | What to tell the user |
| --- | --- | --- | --- |
| `processing` | Stablecoins are being pulled from the funding source and the fiat transfer is in flight | No | "Sending." |
| `on_hold` | Held for review | No | "Under review. No action needed unless we ask." |
| `completed` | Fiat landed in the recipient's bank account | Yes | "Paid." |
| `failed` | The payout did not complete, for example a rejected compliance check or a review timeout | Yes | "Didn't go through." Plus next step. |
| `refunded` | The stablecoins returned to the funding source instead of being converted | Yes | "Returned to your balance." |

Three terminal states, and they're not interchangeable. `failed` and `refunded` both mean the recipient wasn't paid, but only `refunded` tells you where the money is.

## Why is "confirmed on-chain" not the same as "completed"?

Because a payout has two legs, and the blockchain only sees the first one.

The on-chain leg pulls stablecoins from the funding source. That confirms in seconds and is final. The fiat leg sends local currency to a bank account over Pix, SPEI, ACH, RTP, SEPA, or SWIFT. That takes minutes to days depending on the rail, and it's the only leg the recipient cares about.

So if your UI flips to "paid" when you see a transaction hash, you're early. Sometimes by five business days. Use `completed` for "paid." Timing by rail is in [how long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times), and the difference between an API accepting a request and money becoming final is in [stablecoin API SLAs and settlement finality](/resources/more/stablecoin-api-sla-settlement-finality).

## Why do payouts land on hold?

Compliance. `on_hold` isn't an error. It's a review step, and for some rails it's routine:

- **SWIFT.** Every SWIFT payout starts `on_hold`. When the recipient isn't the sender's own account, it waits there until supporting documents are submitted and approved.
- **USD ACH, wire, and RTP.** These pass through `on_hold` as a standard step, for compliance review after the stablecoins are collected.
- **Transaction monitoring.** Any payout flagged as unusual (first-time withdrawals, large amounts against a customer's history, a screening match) can be held. Compliance may send a request for information. If it goes unanswered for 24 hours, the transaction may be refunded to the sender.

A hold can take up to 30 days to resolve. Approval resumes the flow. A timeout without a decision fails the payout. Design the `on_hold` screen for days, not seconds. More in [on-hold transactions](/docs/kb/on-hold-transactions).

## What are the tracking objects for?

The top-level `status` tells you where the payout is. The `tracking_*` objects tell you which stage it's in. A BlindPay payout carries `tracking_transaction`, `tracking_payment`, `tracking_complete`, `tracking_liquidity`, and `tracking_partner_fee`, each with a `step` of `processing`, `on_hold`, `pending_review`, or `completed`.

Use them for a detailed status view: "stablecoins collected, bank transfer in progress." Don't drive business logic from them. Your ledger should move on `status`, and only on terminal values.

## What does a payout state machine look like?

Provider-neutral pseudocode. Every transition is driven by an event you received, never by a timer guessing.

```
TERMINAL = {completed, failed, refunded}

on_event(payout_id, new_status):
    current = ledger.status(payout_id)

    if current in TERMINAL:
        return                        # never leave a terminal state

    if new_status == current:
        return                        # duplicate event, ignore

    ledger.set_status(payout_id, new_status)

    match new_status:
        processing -> show("Sending")
        on_hold    -> show("Under review"); start_review_timer(30 days)
        completed  -> mark_paid(); notify_recipient()
        failed     -> open_ticket(); notify_sender()
        refunded   -> credit_back(); notify_sender()
```

The first check is the important one. Events can arrive late or out of order. A stale `processing` event must not undo a `completed`.

## What happens after a failure or refund?

They go different directions.

**Refunded** means the stablecoins came back to the funding source instead of being converted. Common causes: wrong beneficiary details, a closed or restricted account, or the receiving bank rejecting the transfer. Stablecoin refunds process right away. Credit the balance back in your ledger and ask the sender to check the recipient's details.

**Failed** means the payout didn't complete, and at BlindPay it does not automatically refund. If a payout reaches `failed` or sits past its review window, contact support rather than assuming it resolves on its own. In your product, a `failed` payout should open an internal ticket, not just show a red badge.

Either way, once a payout is terminal, it stays terminal. To try again, create a new quote and a new payout. On a stablecoin rail, a confirmed transfer can't be clawed back, which is why [whether stablecoin payments are reversible](/resources/more/are-stablecoin-payments-reversible) is really a question about the fiat edges.

## What should you test before launch?

Every row in this matrix, on a development instance, before your first real payout.

| Scenario | How to trigger it | What should happen |
| --- | --- | --- |
| Happy path | Any normal amount | `completed`, recipient notified |
| Failed payout | Quote `request_amount` of `66600` ($666.00) | `failed`, ticket opened, no auto-credit |
| Refunded payout | Quote `request_amount` of `77700` ($777.00) | `refunded`, balance credited back |
| Expired quote | Wait past `expires_at`, then execute | Rejected, new quote fetched |
| Reused quote | Execute a second payout on the same `quote_id` | Rejected, no second payout |
| Duplicate event | Replay a webhook from the dashboard | State unchanged |
| Out-of-order event | Send an old `processing` after `completed` | State stays `completed` |
| Insufficient funds | Execute with less balance than `sender_amount` | Handled either way: rejected at create, or created and then `failed` at collection |

The first three rows come straight from BlindPay's [sandbox behavior](/docs/learn/sandbox-vs-production). The rest are your code's job. What a sandbox can and can't simulate is covered in [stablecoin API sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production).

Check the funding balance against the quote's `sender_amount` before you execute. It's cheaper than finding out from a failure.

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API for cross-border payouts and collections: USDC or USDT in, local currency out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. Every payout reports a single top-level status plus per-stage tracking, and signed webhooks fire at each transition. Retries stay safe with [idempotency keys](/resources/more/stablecoin-api-idempotency-keys).

## What to do next

Open your payout UI and list every status you show today. If `on_hold`, `failed`, and `refunded` don't each have their own screen and their own ledger action, add them. Then run the test matrix above on a free development instance. The [payouts reference](/docs/payouts) has the full lifecycle, and the [payout quickstart](/docs/quickstart-payout) gets you to your first test payout.

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

---

Source: https://blindpay.com/prompts/integrate-invoice-payables

---
title: "Pay US vendor invoices with payables"
description: "Register supplier invoices with line items and the vendor's ACH or wire details, prefill them from the PDF with AI, and settle them from stablecoins through the quote-and-execute flow."
date: "2026-09-02"
category: "integrations"
products: ["payables", "quotes", "webhooks"]
---

Paste this prompt into your coding agent to build accounts payable on stablecoins: your users upload a vendor invoice, BlindPay reads it, and pays the vendor's US bank account over ACH or wire.

## Prompt

```text
You are integrating BlindPay invoice payables into my application: registering US supplier invoices (line items plus the vendor's ACH or wire bank details) and paying them from stablecoins.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payables, invoice payables, bank accounts, payout quotes, payouts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Prerequisites: an approved customer (KYC/KYB) and a funded wallet, managed or external. Reuse my existing onboarding if present.
2. Upload the invoice: POST /v1/upload with bucket `documents`, keep the returned file_url. Then POST /v1/upload/extract?instance_id={instance_id} with the same file to prefill amount, currency, due_date, invoice_number, the `to` party, line_items, and payment_options. Every extracted field is nullable and nothing is guessed, so render the result as an editable form and require the user to confirm the bank fields against the document before submitting.
3. Register the invoice: POST /v1/instances/{instance_id}/payables with currency USD, from/to parties, line_items (name, quantity, unit price in cents), optional note, discount, and taxes, the vendor's bank_account (type `ach` or `wire`, same shape as POST /customers/{customer_id}/bank-accounts, with beneficiary_name, routing_number, account_number, account_type, account_class, business_industry as a NAICS code whenever account_class is `business`, recipient_relationship, and address), plus document_file set to the file_url from step 2. Pick the ACH payment option when the invoice prints one; it is the cheapest rail. Persist the returned pb_ ID and the derived amount (line item sum plus taxes minus discount).
4. Quote against the payable: POST /v1/instances/{instance_id}/quotes with payable_id instead of bank_account_id, plus network and token; do not send request_amount or currency_type. Execute with POST /v1/instances/{instance_id}/payouts/evm before the quote's expires_at. Show the user the quote's fees and total before executing.
5. Track the bill through payable.new, payable.update, and payable.complete, and the payment attempt through payout.new, payout.update, and payout.complete, all with Svix signature verification. Correlate the two streams through payable_id and payout_id, and never count a payout.complete and its payable.complete as two payments. The payable stays `processing` while the payout is held for manual review; compliance holds, releases, and failure reasons arrive only on the payout events.
6. Handle the failure paths explicitly: a failed or refunded attempt returns the payable to `draft` with last_attempt_status set, so quote the same payable again instead of registering it twice; bills under the 10.00 USD minimum are rejected at registration with LIMITS_AMOUNT_OUT_OF_RANGE; a bank_account that fails validation is rejected with payable_bank_account_invalid and the failing field in errors; and a quote that expired must be re-quoted and re-confirmed with the user.
7. Let the user delete a draft: DELETE /v1/instances/{instance_id}/payables/{payable_id} works only while no payout exists for it (payable_not_cancelable otherwise).

Constraints:
- Amounts are integers in cents; line_items[].price is the unit price, so 150000 is $1,500.00. API keys stay server-side.
- The bank account created for an invoice belongs to the payable: it is not listed with the customer's bank accounts and cannot be quoted on its own, so never reuse it for regular payouts.
- Invoice payables are USD only and settle on EVM networks. Boleto and PIX bills use a different registration shape; do not mix them into this flow.
- POST /upload/extract is limited to 60 requests per minute per instance and returns a fixed sample on development instances; code the extract-then-confirm step so a null field is a normal case, not an error. The NAICS code is never printed on an invoice, so the form must ask for it.
- Validate the routing number client-side (9 digits, ABA checksum, different from the account number): production rejects a bad one, but development instances accept any 9 digits, so a sandbox run will not catch the typo.
- Read document_file back with POST /v1/presign?instance_id={instance_id}, which returns a one-hour signed link; upload, extract, and presign all take instance_id as a query parameter. Never expose the raw file URL.
- Test on a development instance first; use the sentinel amounts ($666.00 forces failed, $777.00 forces refunded) to prove the failure handling.

Deliverables: invoice upload and AI prefill service with a confirmation form, payable registration service, the quote-and-pay path, webhook handlers for both event streams, and an integration test that uploads, registers, and pays a test invoice on the development instance.
```

## How to use

1. Paste the prompt with your stack details and instance ID.
2. Decide where invoice confirmation happens in your UX; the extracted bank fields are what the user must approve before the payable exists.
3. Run the full flow on a development instance before touching production.

## Related docs

- [Invoice payables](https://blindpay.com/docs/payable-invoice)
- [Payables](https://blindpay.com/docs/payables)
- [Bank accounts](https://blindpay.com/docs/bank-accounts)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)

---

Source: https://blindpay.com/resources/more/agent-payment-protocols-compared

---
title: "AP2 vs ACP vs x402: agent payment protocols compared"
seoTitle: "AP2 vs ACP vs x402: agent payment protocols compared"
description: "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."
date: "2026-09-02"
category: "payments"
faq:
  - q: "What is the difference between AP2, ACP, and x402?"
    a: "AP2 is Google's protocol, now co-governed with the FIDO Alliance, and it wraps a purchase in a chain of signed mandates so an auditor can check the charge against what a person actually approved. ACP comes from OpenAI and Stripe and is built around checkout: an agent negotiates a cart, then a payment token takes over and Stripe settles it. x402, from Coinbase and now managed by a Linux Foundation project with Visa, Mastercard, and Ripple involved, drops the signed-approval step entirely and lets an agent pay per HTTP request in stablecoin. The card networks run their own agent-token schemes alongside all three. Every one of them answers the same question: was the agent allowed to spend."
  - q: "Does x402's transaction volume represent real commerce?"
    a: "Not mostly, no. By April 2026 the network had processed something like 165 million cumulative transactions worth $50 million, but zoom into a single 30-day window in July 2026 and it was 75 million transactions for just $24 million, most of it fractional-cent bot activity rather than anything resembling a merchant sale. One [tracker puts](https://www.coindesk.com/markets/2026/03/11/coinbase-backed-ai-payments-protocol-wants-to-fix-micropayment-but-demand-is-just-not-there-yet) genuine, non-gamified volume at around $28,000 a day."
  - q: "What happens if an AI agent makes an authorized but bad purchase?"
    a: "No framework covers it yet. Card-network fraud rules and mandate signatures handle spend the agent was never allowed to make. Neither one addresses a purchase that was fully authorized, correctly signed, and still wrong: the wrong dates, the wrong quantity, a rounding error nobody caught. EMVCo has stood up a task force on agentic payments and FDATA published a governance white paper on the exact gap in July 2026. Neither has an answer yet."
  - q: "Can a stablecoin payment made by an AI agent be reversed?"
    a: "No. Card networks can freeze or unwind a transaction while a dispute plays out, because a bank sits in the middle of the rail. Stablecoin settlement has no equivalent intermediary: once a transaction confirms on-chain, it stands. That finality is a non-issue for small, well-defined purchases like an API call or a slice of compute. It matters a great deal once real judgment is involved, which means the review has to happen before the agent submits the transaction, not after."
  - q: "What should a company building agent payments do now?"
    a: "Split the agent's negotiation step from the actual settlement call, put spend limits in the API layer instead of a system prompt, and pair every tool call with its settlement receipt so idempotency keys and webhook confirmations become the audit trail finance can actually use. That holds regardless of which protocol ends up dominant."
  - q: "What is MCP's role in agent payments?"
    a: "MCP is already how an agent discovers and calls tools, so payment does not need a separate channel. It can register as one more tool inside that interface, exposed and negotiated the same way any other capability is, which gives spend limits and receipt logging one obvious place to live instead of a side system someone has to remember to check."
---

Three protocols now compete to answer the same question for AI agents that spend money: AP2 (Google, co-governed with the FIDO Alliance), ACP (OpenAI and Stripe), and x402 (Coinbase, under a Linux Foundation project). Each one confirms an agent had permission to make a purchase. None of them reconcile what actually got spent once the transaction clears, and because stablecoin settlement cannot be undone, that gap turns into an operational problem the moment real money is involved.

## What AP2, ACP, and x402 actually do

| Protocol | Backed by | What it checks | Settlement rail |
|---|---|---|---|
| AP2 (Agent Payments Protocol) | Google, [FIDO Alliance](https://fidoalliance.org/fido-alliance-to-develop-standards-for-trusted-ai-agent-interactions/), Mastercard | A chain of signed mandates (Intent, Cart, Payment) proving what a human approved | Card or stablecoin, protocol-agnostic |
| ACP (Agentic Commerce Protocol) | [OpenAI, Stripe](https://github.com/agentic-commerce-protocol) | A negotiated cart handed off to a payment token | Card, processed by Stripe |
| x402 | Coinbase, [Linux Foundation, Visa, Mastercard, Ripple](https://www.coindesk.com/tech/2026/07/15/visa-mastercard-and-ripple-join-the-standard-letting-ai-agents-pay-in-stablecoins) | Nothing beyond payment itself, no signed approval step | Stablecoin, per HTTP request |

AP2's mandates are verifiable credentials Google donated to the FIDO Alliance in April 2026 to make governance vendor-neutral; Mastercard folded in its own Verifiable Intent framework the same month. ACP stays narrow by design, aimed at checkout rather than general agent spend. x402 skips signed approval entirely in favor of speed, and now runs under a [Linux Foundation project backed by Visa, Mastercard, and Ripple](https://www.coindesk.com/tech/2026/07/15/visa-mastercard-and-ripple-join-the-standard-letting-ai-agents-pay-in-stablecoins). Visa's Trusted Agent Protocol and Mastercard's Agent Pay run parallel agent-token schemes on the card rails, and both networks [say they intend to converge](https://www.digitalcommerce360.com/2026/04/02/visa-mastercard-in-agentic-commerce/) toward supporting whichever protocols win adoption.

Four mechanisms, one shared checkpoint: authorization. None of them tell you whether thousands of agent transactions still line up with a budget after the fact, flag the ones that broke policy, or produce a record an auditor would accept. Reconciliation is a different job none of the three set out to do, and a finance team ends up building it themselves: matching every agent transaction to a policy, catching what slipped through, and keeping a record that survives an audit. That work looks a lot like what a [stablecoin API](/resources/more/what-is-a-stablecoin-api) already handles for wallets, conversion, and compliance in one integration, just applied to agent spend instead of human-initiated transfers. EMVCo [formed an agentic-payments task force](https://www.emvco.com/news/emvco-working-on-how-global-specifications-can-support-agentic-payments/) in late 2025 to look at the gap, and [FDATA's July 2026 white paper](https://fdata.global/fdata-releases-white-paper-on-agentic-fintech-and-write-access-calling-for-a-principles-based-framework-for-the-next-generation-of-open-finance/) argues the hard problem stopped being authorization some time ago.

## Is the agent-payment volume real yet?

x402's headline numbers [look like a working market](https://www.coindesk.com/business/2026/08/23/crypto-s-next-billion-users-might-be-ai-agents-and-they-re-paying-with-stablecoins): about 165 million cumulative transactions and $50 million by April 2026. Narrow the window and the picture changes. Across the 30 days ending July 2026, the network processed roughly 75 million transactions but only [$24 million in real value](https://www.coindesk.com/tech/2026/07/15/visa-mastercard-and-ripple-join-the-standard-letting-ai-agents-pay-in-stablecoins), most of it sub-dollar bot traffic. One [tracker's estimate](https://www.coindesk.com/markets/2026/03/11/coinbase-backed-ai-payments-protocol-wants-to-fix-micropayment-but-demand-is-just-not-there-yet) of non-gamified activity lands at around $28,000 a day, and a separate [calculation](https://en.cryptonomist.ch/2026/08/25/agentic-stablecoin-payments-record/) puts agent-to-agent stablecoin volume at roughly 0.0001 percent of total annual stablecoin volume, a figure worth treating as directional since nobody agrees yet on what counts as an "agent" transaction.

That is thin ground to build a back office around a single protocol. Gartner expects [more than 40 percent of agentic-AI projects to be canceled by the end of 2027](https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027), citing cost, unclear value, and missing risk controls.

## What ChatGPT Instant Checkout showed about authorization alone

OpenAI launched [ChatGPT Instant Checkout](https://www.cnbc.com/2025/09/29/chatgpt-instant-checkout-etsy-shopify.html) alongside ACP in September 2025, starting with Etsy and then Shopify merchants including Glossier and SKIMS. By [March 2026 it was effectively shelved](https://www.cnbc.com/2026/03/24/openai-revamps-shopping-experience-in-chatgpt-after-instant-checkout.html): fewer than fifteen of Shopify's millions of merchants ever went live, and checkout moved back to the merchant's own site. The mandate signing never broke; stale inventory between the agent's view of a catalog and actual merchant stock, plus sales tax across jurisdictions, is what killed it. A signed mandate confirms an agent was cleared to buy something. It says nothing about whether that thing is in stock, priced correctly, or taxed right, a different failure mode from the reconciliation gap but the same root cause: these protocols check authorization and stop there.

## The authorized-but-wrong purchase has no playbook

Fraud already has a playbook. Amex's [Agent Purchase Protection](https://www.worldpay.com/en/insights/articles/agentic-commerce-liability-is-still-being-written) shifts liability to Amex when a registered agent's purchase turns out fraudulent, Mastercard's Agent Pay tokens fall under existing card dispute rules, and Visa still calls its own liability terms early and evolving. None of that covers a purchase that was authorized and simply wrong: an agent books the wrong dates, or orders five hundred units instead of fifty because of a rounding error in an agent-to-agent negotiation. The signature checks out, nobody committed fraud, and the human is left holding a purchase that executed exactly as instructed. Both EMVCo's task force and FDATA's paper flag this as an open question, and neither has published a fix.

A card purchase like that can still be charged back, since the rail is reversible. Stablecoin settlement removes that safety net: once the transaction confirms on-chain, it is done. Most of what agents buy today, an API call, a unit of compute, needs a dispute window about as much as a vending machine does. But it means the call on whether a purchase should happen has to be correct before settlement, since there is no fixing it after.

## What to build now, regardless of which protocol wins

Four practices hold up no matter which of AP2, ACP, or x402 ends up dominant in a given [cross-border agent-payment integration](https://blindpay.com/global-payments):

- **Separate negotiation from settlement.** Let the agent reason and assemble a cart with whichever protocol it prefers, then route the payment through a narrow, auditable API surface that does not care which negotiation produced it.
- **Put spend policy in the API, not the prompt.** A system prompt capping spend is a suggestion an agent can lose track of three tool calls later. A server-side limit on amount, currency, counterparty, or category does not have that failure mode.
- **Pair every tool call with its settlement receipt.** An idempotency key on the request and a webhook confirmation, both tied to the call that triggered them, let a finance team open one row per transaction and see what started it, what closed it, and whether it passed policy. Without that link, an agent firing the same purchase twice after a timeout looks identical to two legitimate ones, and nobody notices until the statement arrives.
- **Put payment where the agent already looks for tools.** MCP's [July 2026 spec update](https://blog.modelcontextprotocol.io/posts/2026-07-28/) added a formal extensions framework, so a payment capability can be exposed as one more discoverable tool instead of a bolt-on.

The same discipline, decoupled settlement, server-side policy, a receipt trail, is also what a solid [stablecoin payments](/resources/more/stablecoin-payments-guide) setup needs for human-initiated transfers, which is why agent and human flows can share one infrastructure instead of separate stacks.

## Where BlindPay fits

BlindPay's MCP server and Agent Skills expose payments as tools an agent calls directly: quotes, payouts, [virtual accounts](https://blindpay.com/virtual-accounts), and webhooks, with idempotency and [reconciliation](https://blindpay.com/compliance) built underneath instead of left for someone to bolt on later. Cross-border transfers that need wire delivery settle as SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations, and corridors like [USDC to BRL](https://blindpay.com/usdc-to-brl) settle the same whether a human or an agent initiated the payment. The [getting started docs](https://blindpay.com/docs/introduction) cover the API surface. [Talk to the team](https://blindpay.com/contact) if you are building the reconciliation layer for agent payments and want it wired to settlement instead of stapled on after.

---

Source: https://blindpay.com/resources/more/cross-border-merchant-payments-without-pre-funding

---
title: "How global merchants get paid across borders with stablecoins, no pre-funding required"
seoTitle: "Cross-border merchant payments without pre-funding"
description: "Pre-funding means parking local currency in every market before money moves. Stablecoin virtual accounts remove it. A worked example across 4 countries."
date: "2026-09-02"
category: "payments"
faq:
  - q: "What is pre-funding in cross-border payments?"
    a: "Pre-funding means holding local currency balances in each country before a payment can go out there. A merchant or provider paying out in Brazil, Mexico, and Colombia needs reais, pesos, and Colombian pesos sitting in local accounts ahead of time. That capital is idle until spent, split across markets, and exposed to FX moves while it waits."
  - q: "How do stablecoins remove the need for pre-funding?"
    a: "Value crosses the border as a dollar stablecoin like USDC or USDT and converts into local currency at execution time, at a quoted and locked rate. The merchant keeps one float in one place instead of balances in every market, and the payout reaches the local bank account over the local rail, such as Pix, SPEI, or SEPA, usually in minutes."
  - q: "How can merchants receive cross-border payments without a local entity?"
    a: "With virtual accounts. BlindPay issues US and local bank accounts in the merchant's or end customer's name. Customers pay by ordinary bank transfer, such as ACH, Wire, or RTP in the US, and deposits auto-convert into stablecoins that can be held or settled to local currency. No foreign entity and no separate bank relationship per market."
  - q: "Which local payment rails can stablecoin payouts reach?"
    a: "Through BlindPay: Pix, TED, and Boleto in Brazil; SPEI in Mexico; PSE in Colombia; Transfers 3.0 in Argentina; ACH, RTP, and domestic wire in the US; SEPA across 40 SEPA-zone countries; and SWIFT (POBO/COBO) for everywhere else, covering 100+ countries and 80+ currencies."
  - q: "Is it legal to move merchant payments across borders with stablecoins?"
    a: "Yes, when the provider holds the required licenses in the markets it serves and runs KYB on businesses and KYC on individuals. The merchant stays responsible for its own tax and accounting records. Rules differ by country, for example Brazil's virtual asset service provider regime and MiCA in the European Union, so check the provider's published licenses."
---

**Pre-funding** means holding local currency balances in every market before a payment can move there: reais in Brazil, pesos in Mexico, euros in Europe, all parked in local accounts ahead of time. It ties up capital, spreads it thin, and exposes it to FX swings. **Stablecoin-based virtual accounts remove that requirement.** Value crosses the border as a digital dollar (USDC or USDT) and converts into local currency at execution, at a locked rate, then lands over the local rail in minutes. One float, in one place, instead of one per country.

That single change is what makes launching a new market a product decision instead of a treasury project.

## Why do cross-border merchants pre-fund at all?

Because traditional rails can't move value across a border in real time.

A payout to a Brazilian seller over SWIFT passes through correspondent banks, each settling on its own schedule, over one to five business days. If a provider promises "instant" payouts in Brazil on those rails, the only way to deliver is to already have reais in Brazil. So they pre-fund. They keep balances in nostro accounts in every market, sized to cover the next few days or weeks of payouts, and top them up with slow wires.

That model has four built-in costs:

- **Trapped capital.** Money sitting in ten countries is money not working anywhere.
- **Fragmented liquidity.** Brazil runs dry while Mexico sits on a surplus. Rebalancing takes days.
- **FX exposure.** Every idle local balance moves with the currency while it waits.
- **Banking hours.** Top-ups stop on weekends and holidays, so buffers have to cover them.

Whoever carries those costs passes them on, usually as a wider FX spread on the merchant's payouts.

## How do stablecoin rails change the model?

The stablecoin becomes the shared settlement asset across every market. Instead of pre-positioning reais, pesos, and euros, the merchant (or its provider) holds dollars in stablecoin form and converts at the moment a payment executes.

The flow looks like this:

1. **Collect.** Customers pay into a virtual account by bank transfer, or pay in USDC/USDT directly. Bank deposits auto-convert into stablecoins.
2. **Hold one float.** Balances sit in stablecoins, not in ten local accounts.
3. **Quote.** When a payout is due, request a quote: amount, destination currency, destination account.
4. **Convert at execution.** The rate is locked when the payment runs. No balance needed in the destination country beforehand.
5. **Deliver over the local rail.** Pix in Brazil, SPEI in Mexico, SEPA in Europe. Minutes on instant rails.

BlindPay settles this way by design: no capital pre-positioned in destination accounts before a payout clears. It runs 24/7, so Saturday payouts don't wait for Monday top-ups. We wrote about why the stablecoin part should stay invisible to the merchant in [Stablecoin for the Ordinary](/blog/stablecoin-for-the-ordinary).

## A worked example: one merchant, four markets

A US-based marketplace pays sellers in **Brazil, Mexico, Colombia, and Europe**. Monthly payouts: $400,000 to Brazil, $300,000 to Mexico, $150,000 to Colombia, $150,000 to Europe. $1M a month total.

These figures are illustrative, but the shape is what every finance lead running multi-market payouts recognizes.

| | Stablecoin virtual account model | Traditional pre-funded model |
| --- | --- | --- |
| **Capital parked in destination markets** | $0 in destination markets; one stablecoin float | Two weeks of payout buffer per market: about $500,000 |
| **Cost of that capital at 8% a year** | None for destination buffers | About $40,000 a year, before FX losses on idle balances |
| **Local bank relationships** | One API integration | Four, often with a local entity or partner in each |
| **Time to launch a fifth market** | Days to weeks, once the market is covered and your KYB is done | Months: local entity or partner, bank account, compliance setup, then funding |
| **Weekend payouts** | Yes, 24/7 | Limited by top-up windows |
| **Payout speed** | Minutes on Pix, SPEI, and other instant rails | Fast only while the local buffer lasts |
| **FX pricing** | Quoted per payment, spread and payout fee itemized | Wider spreads to cover the provider's funding costs |

The $500,000 is the number that gets a CFO's attention. It's half a month of payouts doing nothing, spread across four currencies, losing value whenever one of them weakens against the dollar.

The launch time is the number that gets a founder's attention. Adding Argentina under the old model is a project. Under the stablecoin model, it's a new destination currency in the same API call: Transfers 3.0 to a CBU or CVU.

## How does local payment rail orchestration work on the payout side?

Stablecoins handle the border. Local rails handle the last mile, and they're different in every country. Orchestration means picking the right rail per destination and handling its quirks so the merchant doesn't have to.

| Destination | Rails BlindPay pays out on | Typical speed |
| --- | --- | --- |
| **Brazil** | Pix, TED, Boleto | Minutes on Pix, 24/7 |
| **Mexico** | SPEI | Minutes, 24/7 |
| **Colombia** | PSE | Usually minutes, within bank windows |
| **Argentina** | Transfers 3.0 (CBU/CVU) | Same day |
| **United States** | ACH, RTP, domestic wire | Seconds on RTP; same day to 2 days on ACH |
| **Europe** | SEPA, across 40 SEPA-zone countries | Same day or next day |
| **Everywhere else** | SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations | 1 to 5 business days |

BlindPay covers 100+ countries and 80+ currencies this way, from one integration. The full list is on the [coverage page](/docs/kb/supported-countries).

On the collection side, [virtual accounts](/virtual-accounts) do the reverse: BlindPay issues US and local bank accounts in your name or your customer's name. A US buyer pays by ACH or wire like any domestic invoice. The deposit auto-converts into stablecoins and can settle to your local currency right after. No US entity required. We covered this in detail when we launched [Named Virtual Accounts](/blog/introducing-virtual-accounts).

## What compliance does this model need?

Moving money across borders without a local bank in every market doesn't mean moving it without rules. Doing this legitimately takes:

- **KYB on the merchant.** Company documents, beneficial owners, business activity. See [what KYB is](/resources/more/what-is-kyb).
- **KYC on individual payees.** Sellers, contractors, and creators receiving payouts get verified before their first payment.
- **Sanctions and watchlist screening** on every counterparty and transaction.
- **On-chain monitoring** of the stablecoin leg for exposure to sanctioned or high-risk wallets.
- **Local licensing** in each market the provider serves. Brazil, for example, licenses virtual asset service providers under its own regime; see our [PSAV explainer](/resources/more/psav-brazil-explained). The EU runs MiCA.

BlindPay runs KYC, KYB, sanctions screening, and transaction monitoring inside the same API, and publishes its licenses on the [licenses page](/licenses). The merchant stays responsible for its own tax and accounting records in each market.

## Is this model right for your expansion plans?

Run through this checklist:

- You pay out, or plan to pay out, in **two or more countries**.
- You currently keep, or would need to keep, **local balances** in those markets.
- Your payees are **sellers, contractors, creators, or suppliers** who want local currency in a local bank account.
- **Payout speed** matters to retention: sellers leave platforms that pay slowly.
- You want to **launch new markets** without opening a bank relationship in each.
- Your finance team wants **one reconciliation flow** instead of one per country.
- You can complete **KYB** and collect KYC data from payees.

Three or more checks, and the pre-funded model is probably costing you more than you think.

For more on the mechanics, read [stablecoin settlement explained](/resources/more/stablecoin-settlement-for-merchants), and for a cost breakdown, [stablecoin fees vs card processing fees](/resources/more/stablecoin-payment-fees-vs-card-processing-fees). If you're comparing conversion partners, see [how to choose an on/off-ramp provider](/resources/more/how-to-choose-on-off-ramp-provider).

## Expand without parking capital

Every market you add under the old model costs a bank relationship and a buffer. Under a stablecoin model it costs a destination currency. If you want to map your current payout flows against this model, [talk to the BlindPay team](/contact).

---

Source: https://blindpay.com/resources/more/what-is-stablecoin-card-issuing

---
title: "What is stablecoin card issuing? How it works, who uses it, and how it differs from crypto debit cards"
seoTitle: "What is stablecoin card issuing?"
description: "Stablecoin card issuing explained: how a USDC or USDT balance pays a card merchant in local currency, who runs each layer, and how it differs from a crypto debit card."
date: "2026-09-02"
updated: "2026-10-12"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is stablecoin card issuing?"
    a: "Stablecoin card issuing is issuing Visa or Mastercard debit, prepaid, or virtual cards whose spending balance is held in a dollar stablecoin such as USDC or USDT instead of a bank deposit. When the cardholder pays, the card program converts the stablecoin to fiat, and the merchant is paid in local currency over the normal card network."
  - q: "How does a stablecoin-backed debit card work?"
    a: "At checkout, the card network sends the authorization to the card program, which checks the cardholder's stablecoin balance, places a hold for the converted amount, and approves or declines within a few seconds. When the transaction clears, the program funds its settlement obligation by selling stablecoins for fiat or, where the network supports it, settling in USDC directly. The merchant is paid in its own currency and never touches a stablecoin."
  - q: "What is the difference between a stablecoin card and a crypto debit card?"
    a: "A crypto debit card sells a volatile asset such as bitcoin or ether at the moment of purchase, so the balance needed for the same purchase changes minute to minute. A stablecoin card spends a token pegged 1:1 to the US dollar, so the amount leaving the balance matches the price. In the US, selling a volatile asset at checkout also realizes a taxable gain or loss on every swipe, while spending a dollar stablecoin usually produces a gain close to zero."
  - q: "Can you spend USDC or USDT directly with a debit card?"
    a: "Not directly at the merchant. Merchants accept Visa and Mastercard, not tokens, so a stablecoin card converts USDC or USDT into the transaction currency behind the scenes during authorization or settlement. From the cardholder's side it feels like spending USDC; from the merchant's side it is an ordinary card payment in local currency."
  - q: "Who are the main players in stablecoin card issuing?"
    a: "Card networks such as Visa and Mastercard route and settle transactions. A licensed bank or e-money institution acts as the issuer and BIN sponsor, an issuer processor such as Marqeta, Lithic, or Galileo runs authorizations, and a program manager owns the cardholder relationship. Stablecoin-native issuing platforms such as Rain, Bridge, Baanx, and Reap bundle several of those layers with stablecoin wallet funding."
---

*Reading time: about 7 minutes.*

**Summary:** Stablecoin card issuing is issuing Visa or Mastercard debit, prepaid, or virtual cards whose spending balance is held in a dollar stablecoin such as USDC or USDT instead of a bank deposit. When the cardholder pays, the card program converts the stablecoin to fiat, and the merchant is paid in local currency over the normal card network.

The card itself is ordinary. Same chip, same Apple Pay button, same decline codes. What changes is the balance behind it and one conversion step that happens either at authorization or at settlement.

This explainer covers the mechanics, the companies in the stack, and the use cases. It is a reference, not a pitch.

## How does a stablecoin-backed debit card work?

Every card transaction runs in two phases: authorization at checkout, which takes seconds, and clearing and settlement, which usually happens the next business day. A stablecoin card program hooks into both.

1. **Authorization.** The cardholder taps. The merchant's acquirer sends the request through Visa or Mastercard to the issuer processor, which asks the program one question: can this card pay? The program checks the cardholder's stablecoin balance, converts the amount at the current rate, places a hold, and approves or declines. The whole round trip has a few seconds, so the balance check reads from a ledger, not from a fresh blockchain confirmation.
2. **Clearing.** The merchant submits the final amount. It can differ from the authorized one (a restaurant tip, a hotel's incidentals, a fuel pre-authorization), so the program adjusts the hold.
3. **Settlement.** The network nets the day's transactions and moves money between issuers and acquirers. The issuer owes the network for its cardholders' purchases, and the program has to fund that. It either sells stablecoins for dollars through a liquidity partner or, where the network allows it, pays in USDC.
4. **Merchant payout.** The acquirer pays the merchant in local currency on its normal schedule. The merchant has no idea a stablecoin was involved.

### Real-time vs. batch conversion

Programs pick one of two funding models, and the choice decides who carries the rate risk.

- **Just-in-time conversion.** The stablecoin stays in the cardholder's wallet until a purchase happens, and the amount is reserved at authorization. The cardholder keeps the full balance in USDC or USDT until they spend it. The program carries a small exposure between authorization and settlement.
- **Pre-converted balance.** The cardholder or business loads a fiat card balance from stablecoins in advance. Simpler for the issuer, but the money sits in fiat until it is spent, which defeats part of the point.

For a USD card funded with USDC, the exposure is small because both sides are dollars. It grows when the card currency differs from the stablecoin, for example a euro card funded with USDC.

### Stablecoin settlement at the network level

The networks now accept stablecoins on the settlement leg itself. Visa lets US issuer and acquirer partners settle in USDC, starting with Cross River Bank and Lead Bank over Solana. Mastercard announced in June 2026 that it would support settlement in USDC, PYUSD, RLUSD, and other regulated stablecoins across several blockchains, with intraday, weekend, and holiday cycles.

What this changes: an issuer can meet its settlement obligation on a Saturday without waiting for a bank wire window. What it does not change: anything the cardholder or merchant sees.

## Stablecoin card vs. crypto debit card: what's the difference?

The first crypto cards were a way to spend an exchange balance. You held bitcoin at an exchange, the exchange issued a card, and every swipe sold a little bitcoin. Stablecoin cards use the same plumbing with a different asset, and that one change affects budgeting, tax, and who uses them.

| Dimension | Crypto debit card | Stablecoin card |
|---|---|---|
| Asset spent | Bitcoin, ether, or an exchange balance | A dollar stablecoin such as USDC or USDT |
| Balance needed for a USD 100 purchase | Changes with the market | USD 100 plus fees |
| Custody | Usually the exchange that issues the card | A program wallet, or a self-custody wallet with a spending allowance, depending on the program |
| Tax event per swipe (US) | Sale of property, realizing a gain or loss | Also a disposal, but the gain is usually close to zero |
| Typical user | Consumers spending crypto holdings | Businesses, contractors, platforms paying people abroad, consumers holding dollars |
| Network settlement | Fiat, after the asset is sold | Fiat, or USDC where the network supports it |

The [USDC vs USDT comparison](/resources/more/usdc-vs-usdt-for-payments) covers which stablecoin fits which program, and [what a stablecoin is](/resources/more/what-is-a-stablecoin) covers the reserve model behind the peg.

## Can you spend USDC or USDT directly with a debit card?

Not at the merchant. A coffee shop's terminal accepts Visa and Mastercard, not tokens. The card program does the conversion, so the cardholder experiences it as spending USDC and the merchant experiences it as a normal card payment in local currency.

A few merchants accept stablecoins directly through crypto payment processors. That is a different product: an on-chain transfer, with no card network, no chargeback rights, and [no reversal](/resources/more/are-stablecoin-payments-reversible) once it confirms.

## Who are the main players in stablecoin card issuing?

A card program is a stack of companies, each with a regulated job. Stablecoin programs keep the same stack and add a funding layer.

| Role | What it does | Examples |
|---|---|---|
| Card network | Sets the rules, routes authorizations, runs settlement | Visa, Mastercard |
| Issuing bank or BIN sponsor | The legal issuer; owns the BIN range and the regulatory responsibility | Cross River Bank, Lead Bank, Pathward in the US; e-money institutions elsewhere |
| Issuer processor | Runs authorizations, card lifecycle, and the card ledger | Marqeta, Lithic, Galileo |
| Program manager | Owns the brand and the cardholder relationship, operates compliance under the sponsor's oversight | The fintech or platform whose name is on the card |
| Stablecoin issuing platform | Bundles sponsor access, processing, and stablecoin wallet funding in one API | Rain, Bridge, Baanx, Reap |
| Liquidity and ramps | Converts stablecoins to fiat for settlement and fiat to stablecoins for top-ups | BlindPay (stablecoin payouts over Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO), plus virtual USD accounts); other on-ramp and off-ramp providers |
| Identity and monitoring | KYC, KYB, sanctions screening, transaction monitoring | Specialist vendors or in-house systems |

The conversion providers in that stack are regulated too. Depending on the country they are a [VASP](/resources/more/what-is-a-vasp), a money services business, or both.

A card is also one payout option among several. A company paying people abroad can issue a card, send money to a local bank account, or offer both. BlindPay handles the bank-account side: stablecoins out to local currency over Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO), and [virtual USD accounts](/virtual-accounts) that turn ACH or wire deposits into USDC or USDT.

## What are stablecoin cards used for?

Five uses account for most programs.

- **Contractor payouts.** A platform pays freelancers in USDC and gives them a card to spend it, so the contractor does not need a US bank account.
- **Marketplace and creator payouts.** Sellers and creators in dozens of countries get earnings on a card the day they are released, not after a weekly wire batch.
- **Treasury and team spend.** A company that holds its treasury in USDC issues corporate cards against it for software, ads, and travel.
- **Dollar access in high-inflation economies.** In Argentina, Turkey, or Nigeria, a USD stablecoin card is a way to hold dollars and spend them without a foreign bank account.
- **Travel and online spend.** A USD balance avoids some of the foreign exchange cost on USD-priced purchases.

The [stablecoin cards in Latin America](/resources/more/stablecoin-cards-latin-america) guide goes country by country on the fourth use.

## What a stablecoin card does not change

Three things work the same as on any other card.

**Identity checks.** Every cardholder passes KYC and every business program owner passes KYB, because the sponsor bank's anti-money-laundering program covers the program. The [compliance guide](/resources/more/stablecoin-card-issuing-compliance) covers who checks what.

**Disputes.** Card network dispute rules apply to the card leg. A cardholder can still dispute a purchase. The on-chain transfer that funded the wallet cannot be reversed.

**Fees.** Interchange, foreign transaction fees, and ATM fees still apply. Stablecoins remove cost on the funding side, not at the point of sale.

## What to read next

This article is the first in a six-part series. Next, compare the two kinds of cards a company can hold in [crypto debit card vs. stablecoin card for business](/resources/more/crypto-debit-card-vs-stablecoin-card-for-business). Then see [stablecoin-funded virtual cards for cross-border payouts](/resources/more/stablecoin-virtual-cards-cross-border-payouts), how programs work in [Latin America](/resources/more/stablecoin-cards-latin-america), the [developer's guide to issuing cards through an API](/resources/more/how-to-issue-stablecoin-cards-api), and [compliance for stablecoin card issuing](/resources/more/stablecoin-card-issuing-compliance).

For the cardholder's side of the same product, start with [what a stablecoin-backed card is](/resources/more/what-is-a-stablecoin-backed-card) and [how a card transaction settles step by step](/resources/more/how-stablecoin-card-transactions-settle). To compare options, read [stablecoin vs. crypto debit, prepaid, and credit cards](/resources/more/stablecoin-card-vs-crypto-debit-prepaid-credit), [stablecoin card fees](/resources/more/stablecoin-card-fees-explained), and [whether stablecoin cards are safe](/resources/more/are-stablecoin-cards-safe). Building a program? See [how to launch a stablecoin card program](/resources/more/how-to-launch-a-stablecoin-card-program) and [cashing out a card balance to a local bank](/resources/more/stablecoin-card-balance-to-local-bank). The numbers are in the [state of stablecoin cards 2026](/resources/more/stablecoin-card-statistics-2026) report.

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

---

Source: https://blindpay.com/resources/more/are-stablecoin-payments-reversible

---
title: "Are stablecoin payments reversible? Finality, custody, and fraud explained"
seoTitle: "Are stablecoin payments reversible? Finality, custody, and fraud explained"
description: "Stablecoin transfers settle final in minutes and cannot be reversed. That finality proves custody at every step, but it also opens a fraud gap on the fiat side of the payment."
date: "2026-09-01"
category: "compliance"
faq:
  - q: "Can a stablecoin payment be reversed once it settles?"
    a: "No. Once a stablecoin transfer confirms on-chain, it is final. There is no chargeback or recall mechanism the way there is with a card payment or a wire. That finality is usually framed as the downside of stablecoins, but it is also what lets a provider prove, hop by hop, who legally held the funds at every point in the transfer."
  - q: "Does irreversibility create a fraud risk in stablecoin payments?"
    a: "The risk is not the stablecoin leg. It is the fiat leg sitting next to it. A payment typically pairs a stablecoin transfer, final in minutes, with an ACH or wire transfer, which stays open to reversal for days. A bad actor can exploit that gap: fund the fiat side, receive stablecoins, then claw back the original fiat payment after the stablecoins have already moved on."
  - q: "How does the fiat-leg reversal scheme actually work?"
    a: "Someone sends a fiat deposit by ACH or wire and receives stablecoins in return. Days later, they trigger a standard ACH return or wire recall on that original deposit, well within the normal window banks allow for reversals. By then the stablecoins are long gone, and the provider is left holding the loss. It is not a hack or a stolen-wallet scam. It is two settlement rails with mismatched finality windows being played against each other."
  - q: "What controls actually catch fiat-leg reversal fraud?"
    a: "Onboarding KYC tells a provider who a customer is, once, at signup. It does not tell them whether a given transaction is timed to exploit the gap between fiat and stablecoin finality. Stopping this requires ongoing monitoring on the incoming fiat leg: velocity limits, funding-source risk scoring, and holds sized to the actual reversal window of whichever fiat rail is in play, not a one-time check done at account opening."
  - q: "Has the GENIUS Act finalized US stablecoin regulation?"
    a: "Not yet, as of September 2026. The law was signed in July 2025 with a January 18, 2027 effective date, but regulators missed their own July 2026 deadline to finish implementing rules. Treasury's proposal for who qualifies as a permitted issuer only came out August 18, 2026, with comments open into October. OCC and FDIC each have parallel proposals on BSA/AML and sanctions compliance still pending. No federal stablecoin issuer license has been finalized more than a year after signing."
  - q: "What should a business ask a stablecoin payment provider about reversibility and fraud?"
    a: "Three things. First, can they trace custody at every hop from bank account to counterparty wallet, with timestamps, not just a summary. Second, do they monitor the fiat-in leg continuously, or only check identity once at signup. Third, does their backup provider clear payouts on the same schedule as the primary, since a slower backup just delays the same exposure rather than closing it."
---

Most stablecoin explainers treat irreversibility as a warning: once a transfer settles, nobody can undo it. That framing misses the more useful half of the story. A stablecoin transfer being final is exactly what lets anyone trace who held custody of the funds at every step. The real weak point sits elsewhere: the ordinary bank transfer that funds the stablecoin leg, because that side of the payment stays reversible for days after the stablecoin side has already closed.

## How custody actually gets proven

A stablecoin payment moves value through a set sequence: a bank account, a pooled account held for the benefit of customers, a conversion between fiat and stablecoin, an operational wallet, then the counterparty's wallet. At each step, one party and only one party legally holds the funds, and that fact locks in the moment the transfer settles.

Compare that to a wire routed through correspondent banks. Each intermediary bank confirms its leg only after the money has already moved, using SWIFT messaging customers never see. Reconstructing who held the money, and when, means asking each bank in the chain and waiting for an answer, sometimes over days. See our [stablecoin API primer](/resources/more/what-is-a-stablecoin-api) for how this custody chain fits into a broader payment integration.

Whether a wallet is custodial or non-custodial gets treated as a minor implementation detail in most explainers, but it decides who is legally on the hook. A custodial wallet means the platform holds the private keys and carries legal responsibility for the asset. A non-custodial wallet means that responsibility ends the instant the stablecoin lands somewhere the counterparty controls.

## What finality is actually worth

With a reversible instrument, "who held this money and when" stays open to dispute after the fact, which is why reconciling a correspondent-banking wire is slow: two institutions comparing notes on a settlement that took days, based on messages sent back and forth.

An irreversible instrument closes that question the moment it settles: named custody, timestamped, no argument later. That is the real payoff of finality, and it barely gets mentioned across the wave of near-identical stablecoin explainers published through 2026.

## Where the exposure really sits

Stablecoin settlement closes in minutes. The fiat transfer that funds or receives it, an ACH payment or a wire, stays open to reversal for days afterward.

That gap is what a fraudster exploits: fund the fiat leg, receive stablecoins for it, then reverse the original ACH or wire while the return window is still open. The stablecoins have already moved on by then, and whoever processed the payment eats the loss. The fiat rail's dispute window simply outlasts the stablecoin rail's finality window. Fast finality on the stablecoin side isn't what creates the exposure; a fiat leg that stays reversible after the stablecoin leg has closed is.

## Why identity checks alone don't catch it

This scheme only exists because two settlement systems with different finality timelines sit next to each other, which is why it tends to get discovered by whoever ends up eating the loss rather than by a compliance checklist.

Know-your-customer checks at signup answer who a customer is, once. They don't answer whether a given transaction is timed to exploit a mismatch between two rails' settlement windows. Catching that takes continuous monitoring on the incoming fiat leg: velocity checks, funding-source risk scoring, and holds sized to the real reversal window of the rail in play, not a single gate that only fires at account opening. Our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) covers where AML and sanctions rulemaking currently stands.

## Regulation is still catching up, and volume already outpaces it

Congress signed the GENIUS Act on July 18, 2025, but regulators [missed their own July 18, 2026 deadline](https://home.treasury.gov/news/press-releases/sb0605) to finalize implementing rules, so the effective date stays January 18, 2027. Treasury's proposed rule on who qualifies as a permitted issuer only [appeared August 18, 2026](https://www.federalregister.gov/documents/2026/08/18/2026-16796/genius-act-regulations-on-payment-stablecoin-issuance-offer-and-sale), with comments open until October 19. The [OCC's BSA/AML and sanctions proposal](https://www.federalregister.gov/documents/2026/04/10/2026-06963/) closed for comment June 9, and the [FDIC's parallel version](https://www.federalregister.gov/documents/2026/06/05/2026-11342/) closed August 4. More than a year after signing, no business holds a completed federal stablecoin issuer license.

The volume moving through this exact structure keeps growing regardless. McKinsey and Artemis put annualized B2B stablecoin flow at [$226 billion in 2025, a 733% jump year over year](https://www.mckinsey.com/featured-insights/week-in-charts/stablecoins-find-their-niche). Mastercard [finished acquiring BVNK for up to $1.8 billion on August 3, 2026](https://www.mastercard.com/us/en/news-and-trends/press/2026/august/mastercard-completes-acquisition-of-bvnk-to-advance-global-stabl.html), CoinDesk reports [Visa is now shopping for a new stablecoin settlement partner](https://www.coindesk.com/business/2026/08/18/visa-is-looking-for-a-new-stablecoin-settlement-partner-now-that-bvnk-is-owned-by-mastercard), and Western Union rolled out [USDPT on Solana](https://www.theblock.co/post/399890/western-union-launches-usdpt-stablecoin-anchorage-solana) back in May. Larger sums keep crossing rails with mismatched finality while the compliance framework everyone assumes is settled sits in open rulemaking dockets. Our [stablecoin payments guide](/resources/more/stablecoin-payments-guide) covers how these flows work end to end.

## What to ask before trusting a provider

Whether it can name the custodian at every hop, from the originating bank account to the counterparty's wallet, with a timestamped record for each one. Without that, "compliant by design" is marketing copy, not a working control. Whether the fiat leg gets monitored continuously or only checked once at onboarding. And whether the backup provider clears payouts on the same approval and settlement timeline as the primary, since a backup that technically works but settles slower just delays the same exposure.

See how this custody chain works in practice in [BlindPay's flow of funds documentation](https://blindpay.com/docs/introduction), or look at a live corridor like [USDC to BRL](https://blindpay.com/usdc-to-brl). If a current provider cannot answer the three questions above, [talk to BlindPay](https://blindpay.com/contact).

---

Source: https://blindpay.com/resources/more/usdc-to-ars-routes-2026

---
title: "USDC to ARS in 2026: routes, fees, and rules compared"
seoTitle: "USDC to ARS in 2026: routes, fees, and rules compared"
description: "Four ways to convert USDC to Argentine pesos in 2026: stablecoin payout APIs, local exchanges, P2P, and global exchanges with Transfers 3.0. Fees, speed, KYC, and Argentina's PSAV rules compared."
date: "2026-09-01"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "What is the cheapest way to convert USDC to ARS?"
    a: "For businesses paying many receivers, a stablecoin payout API is typically cheapest in total cost because it removes manual work, spread stacking, and failed-payment overhead. For individuals, Argentine exchanges are usually cheapest, with trading fees around 0.1 to 1 percent plus a small transfer cost."
  - q: "How fast does a USDC to ARS conversion arrive?"
    a: "Over Transfers 3.0, seconds to minutes. The BCRA's instant transfer scheme credits funds in about 15 seconds, 24 hours a day, so end-to-end time is dominated by the conversion step ahead of it, typically a few minutes on exchanges and payout APIs."
  - q: "Is converting USDC to ARS legal in Argentina?"
    a: "Yes. Law 27,739 (2024) created a registration regime for Proveedores de Servicios de Activos Virtuales (PSAV), supervised by the Comisión Nacional de Valores (CNV). Providers of virtual asset services to Argentines are expected to register; individuals also owe tax on crypto gains under AFIP rules."
  - q: "Is Argentina's cepo cambiario still in effect in 2026?"
    a: "Mostly no. The government lifted most currency purchase restrictions for individuals and companies on April 14, 2025, moving to a single, floating exchange rate inside a band the BCRA adjusts monthly. Some restrictions on corporate profit repatriation and legacy debt eased on a slower timeline; check current BCRA rules before assuming full convertibility for a specific case."
  - q: "Why do Transfers 3.0 payouts get rejected?"
    a: "The most common reason is a mismatch between the receiver's name and the CBU or CVU (or alias) on the receiving account. Argentine institutions verify the beneficiary's name against the account holder before crediting, so accurate receiver data is a hard requirement, the same way Pix works in Brazil."
---

There are four practical routes from USDC to Argentine pesos in 2026: send through a stablecoin payout API that delivers pesos directly, sell on an Argentine exchange and withdraw to a bank or wallet, trade peer-to-peer, or use a global exchange with an ARS ramp. They differ on fees, speed, KYC, and who carries the regulatory burden, and the right one depends on whether you are an individual cashing out or a business paying people at scale. You can see the live USDC to ARS rate on our [corridor page](/usdc-to-ars).

The backdrop matters more here than in most corridors: Argentines have used stablecoins for years as a hedge against peso inflation and devaluation, and by mid-2025 stablecoin purchases made up over half of all exchange transactions involving the Argentine peso, according to Chainalysis's 2025 Latin America crypto adoption report. Every serious USDC-to-ARS route ends in a peso transfer over Transfers 3.0, the BCRA's instant payment scheme. And the exchange rate environment changed sharply in April 2025, when most of the "cepo cambiario" currency controls were lifted, so the honest cost comparison in 2026 looks different than it did two years ago.

## What are the four routes from USDC to ARS?

**Route 1: Stablecoin payout API.** A business sends USDC through an API; the provider converts at a quoted rate and delivers pesos to the receiver's account, after verifying the receiver's identity. One integration replaces the per-transfer manual work of the other three routes. This is the route built for payroll, contractor payments, and marketplace payouts. How this model works in general: [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

**Route 2: Argentine exchange off-ramp.** Send USDC to a local exchange, sell for ARS, withdraw to a bank account or wallet. Trading fees typically run 0.1 to 1 percent, plus network and withdrawal costs. KYC (DNI or CUIT) is required. Best for individuals and small volumes; the drawbacks are manual work per conversion and per-account limits.

**Route 3: P2P marketplaces.** Trade USDC directly with a counterparty who sends you pesos. This has deep roots in Argentina, where informal cash exchange ("cuevas") long predates crypto P2P. Spreads can be competitive and limits flexible, but counterparty risk is real, quality varies, and business use is impractical: no receipts, no compliance trail, no scale.

**Route 4: Global exchange with an ARS ramp.** Some global exchanges support ARS deposits and withdrawals. Useful if your assets already sit there; fees stack (trading plus conversion plus withdrawal) and ARS pairs get thinner liquidity than local venues, with wider spreads during volatile sessions.

## How do the routes compare?

| Route | Speed (end to end) | Typical cost | KYC | Best for |
|---|---|---|---|---|
| Payout API | Minutes | Quoted FX rate + provider fee | Provider-run, per receiver | Businesses paying at scale |
| Argentine exchange | Minutes to hours | 0.1-1% trade + withdrawal | Full, per account | Individuals, occasional cash-out |
| P2P marketplace | Minutes to hours | Spread-dependent | Varies by venue | Small amounts, no business trail |
| Global exchange + ARS ramp | Minutes to hours | Stacked (trade + FX + withdrawal) | Full, per account | Funds already on the exchange |

Compare total amount received, not the headline fee: a low fee over a poor rate loses to a fair rate with a visible fee. This matters more in Argentina than in most corridors, because spreads between venues can move with the day's exchange rate volatility. Provider pricing models are compared in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026).

## What are Argentina's rules for USDC to ARS in 2026?

Two layers, as of 2026:

- **Law 27,739 (2024)** created Argentina's registration regime for Proveedores de Servicios de Activos Virtuales (PSAV), the entities that exchange, transfer, or custody virtual assets on behalf of others, in line with FATF Recommendation 15. The Comisión Nacional de Valores (CNV) is the supervisor, and CNV General Resolution 1058 sets the registration procedure through the government's online filing platform (TAD).
- **Tax**: AFIP taxes crypto disposals for individuals and companies, and reporting obligations continue to expand as Argentina implements the OECD's Crypto-Asset Reporting Framework alongside its existing income and personal-assets tax rules. Track cost basis in pesos at acquisition and disposal.

Worth stating plainly: the PSAV framework exists in law, but enforcement is still catching up to it. As of early September 2026, the CNV's own PSAV Registry lists zero registered legal entities and zero registered natural persons. That does not mean virtual asset activity in Argentina is unregulated on paper, but it does mean the registration regime has not yet produced a visible list of compliant providers the way, for example, Brazil's BCB authorization regime has started to. Businesses choosing a provider should ask directly about compliance posture rather than checking a public registry.

One operational rule dominates day-to-day payouts: Argentine transfers verify the receiver. A CBU (Clave Bancaria Uniforme) or CVU (Clave Virtual Uniforme), often reached through a shorter alias, must resolve to an account whose holder name matches the beneficiary on file, or the transfer is rejected. Mismatched beneficiary data is the top cause of failed Argentina payouts on any route, the same failure mode Brazil's Pix has.

## Is the cepo cambiario still a factor for these routes?

Less than it was. For over a decade, Argentina's currency controls (the "cepo cambiario") forced a gap between the official peso rate and parallel rates like the "dólar blue," and that gap is a large part of why Argentines turned to stablecoins in the first place. That changed on April 14, 2025, when the government lifted most restrictions on buying foreign currency for individuals and companies and moved to a single, floating exchange rate inside a band the BCRA has adjusted monthly since, based on recent inflation data.

The practical effect by late August 2026: the gap between the blue-market rate and the official rate has narrowed to roughly one to two percent, down from over 100 percent at points during 2023 and 2024. That is a genuinely different environment for pricing a USDC-to-ARS conversion than the corridor had for most of its history. It is not a guarantee of stability. Some restrictions on corporate profit repatriation and legacy debt payments eased on a slower schedule than the retail rules, the band itself can move, and a change in policy could reopen the gap. Treat any specific number here as a snapshot, not a permanent fact, and check the current BCRA framework before relying on it for a live conversion.

## Which route fits which business?

- **Freelancer receiving USDC occasionally**: an Argentine exchange account is enough. Watch the spread and keep records for AFIP.
- **Company paying 1 or 2 Argentine contractors**: an exchange works but does not scale; every payment is manual and the compliance trail is yours to build.
- **Company paying tens to thousands of receivers** (payroll, marketplaces, remittance products): a payout API is the only route that scales. Receiver KYC, sanctions screening, name/CBU or CVU matching, and delivery over Transfers 3.0 happen inside one API call.
- **Treasury converting its own balance**: an exchange or OTC desk for large one-off conversions; an API with [virtual accounts](/virtual-accounts) if conversions recur as part of a product flow.

## Which network should you send USDC on?

USDC is issued natively on multiple blockchains, and the network choice affects cost and settlement time on every route. Ethereum mainnet carries the deepest liquidity but the highest fees, often dollars per transfer at busy times. Base, Polygon, Arbitrum, and Solana move the same USDC for cents and settle in seconds to minutes. Two practical rules:

- **Match the destination's supported networks.** An Argentine exchange that only credits Ethereum-based USDC will not see a Solana transfer; funds sent on an unsupported network are painful or impossible to recover. Check the deposit page or API documentation before sending.
- **Prefer a cheap network your counterparty supports.** For payout APIs this is usually a non-issue: the provider accepts several networks and quotes the same ARS amount regardless.

The token is worth one dollar on every chain; only the transport differs. More on how the token itself works: [what is a stablecoin](/resources/more/what-is-a-stablecoin).

## Where these routes fall short

Honest limits, route by route. Exchanges cap withdrawal amounts and require every receiver to have and manage their own account. P2P has no place in a business flow, and Argentina's long informal-exchange culture makes counterparty risk easy to underestimate. Global exchanges quote thin ARS liquidity, and spreads widen fastest exactly when the peso is moving. Payout APIs charge a provider fee on top of FX and require onboarding (KYB for your business, KYC for receivers) before the first real transfer; if you need an anonymous or same-minute one-off conversion, an API is the wrong tool. And no route removes Argentina's tax reporting obligations, or shields a business from exchange rate policy changing again.

## How BlindPay handles USDC to ARS

BlindPay is a stablecoin API: your business sends USDC, the receiver gets pesos over Transfers 3.0, usually within minutes. Receiver verification (including CBU/CVU and name matching), sanctions screening, and travel rule data handling are built in, and the FX quote is shown before you commit; the live rate is on the [USDC to ARS page](/usdc-to-ars). The same API pays out over Pix, SPEI, PSE, SEPA, and SWIFT (POBO/COBO, with UETR tracking and MT103 confirmations) in [100+ countries](/docs/kb/supported-countries), USDT works the same way, and [pricing](/pricing) is public. Agents and automated systems that need to route this corridor programmatically can start from [agentic payments](/agentic-payments).

## Methodology and sources

Rail and regulatory facts from primary sources: the BCRA's Transfers 3.0 documentation ([bcra.gob.ar](https://www.bcra.gob.ar/en/transfers-3-0/)), Law 27,739 and the PSAV framework via the CNV ([argentina.gob.ar](https://www.argentina.gob.ar/noticias/regulacion-de-los-proveedores-de-servicios-de-activos-virtuales-psav)), the CNV's live PSAV Registry count ([cnv.gov.ar](https://www.cnv.gov.ar/SitioWeb/ProveedoresServiciosActivosVirtuales/RegistrosPSAV), checked early September 2026), and the April 2025 currency control changes as summarized by the U.S. International Trade Administration ([trade.gov](https://www.trade.gov/market-intelligence/argentina-eliminates-capital-controls-and-payment-timelines)). The stablecoin adoption statistic is from Chainalysis's 2025 Latin America crypto adoption report ([chainalysis.com](https://www.chainalysis.com/blog/latin-america-crypto-adoption-2025/)). Exchange fee ranges reflect published fee schedules of major Argentine venues as of 2026; live BlindPay FX quotes are on the [corridor page](/usdc-to-ars). Regulatory and exchange-rate status described as of late August 2026 and subject to change.

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

---

Source: https://blindpay.com/resources/more/usdc-to-cop-routes-2026

---
title: "USDC to COP in 2026: routes, fees, and rules compared"
seoTitle: "USDC to COP in 2026: routes, fees, and rules compared"
description: "Four ways to convert USDC to Colombian pesos in 2026: stablecoin payout APIs, local exchanges, P2P, and global exchanges with PSE. Fees, speed, KYC, and Colombia's VASP rules compared."
date: "2026-09-01"
author: "BlindPay Team"
updated: "2026-09-01"
category: "payments"
faq:
  - q: "What is the cheapest way to convert USDC to COP?"
    a: "For businesses paying many receivers, a stablecoin payout API is typically cheapest in total cost because it removes manual work, spread stacking, and failed-payment overhead. For individuals, Colombian exchanges are usually cheapest, with trading fees around 0.1 to 0.5 percent plus a small PSE withdrawal cost."
  - q: "How fast does a USDC to COP conversion arrive?"
    a: "Minutes, over PSE, but not instantly. PSE moves money between Colombian banks in minutes rather than seconds, and transfers outside business hours can queue until the receiving bank's next processing window."
  - q: "Is converting USDC to COP legal in Colombia?"
    a: "Yes. Colombia has not banned crypto activity, and DIAN's Unified Concept 1621 of 2023 confirms cryptoassets are not legal tender but their commercial use is permitted. There is no dedicated licensing regime: Proyecto de Ley 510 de 2025, which would have created one, was archived under Article 190 of Law 5 of 1992 without becoming law, as listed on the Chamber of Representatives' own bill tracker and reported by Colombian outlets in August 2026."
  - q: "Why do PSE payouts get delayed or rejected?"
    a: "The most common causes are a mismatch between the receiver's name or cédula and the destination account, or a transfer initiated outside the receiving bank's processing window. Both are worth checking before assuming a payout has failed."
  - q: "Does Colombia have licensed stablecoin providers like Brazil?"
    a: "Not in any form. Brazil's VASP authorization regime took effect in February 2026 under BCB Resolutions 519, 520, and 521. Colombia's closest equivalent, Proyecto de Ley 510 de 2025, passed committee and plenary debate in the Chamber of Representatives but was archived under Article 190 of Law 5 of 1992 before reaching the Senate. Providers operate under existing AML rules (UIAF Resolution 314 of 2021) and DIAN tax reporting rather than a dedicated crypto license."
---

There are four practical routes from USDC to Colombian pesos in 2026: a stablecoin payout API delivering PSE directly, a Colombian exchange off-ramp, a P2P trade, or a global exchange with a COP ramp. They differ on fees, speed, and KYC. See the live rate on our [corridor page](/usdc-to-cop).

The backdrop matters: stablecoins made up over half of all exchange purchases in Colombia between July 2024 and June 2025, according to [Chainalysis](https://www.chainalysis.com/blog/latin-america-crypto-adoption-2025/), ahead of every other asset class Colombians trade. Persistent inflation, currency volatility, and restrictive capital controls across the region are the drivers Chainalysis names, not a Colombia-specific cause. Every route below ends in a PSE transfer, the interbank system Colombian banks use to move money between accounts, and unlike Brazil's Pix, PSE runs on bank processing windows rather than settling instantly around the clock.

## What are the four routes from USDC to COP?

**Route 1: Stablecoin payout API.** A business sends USDC through an API; the provider converts at a quoted rate and delivers pesos via PSE to the receiver's account, after verifying the receiver's identity. One integration replaces the per-transfer manual work of the other three routes. This is the route built for payroll, contractor payments, and marketplace payouts. How this model works in general: [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

**Route 2: Colombian exchange off-ramp.** Send USDC to a local exchange, sell for COP, withdraw via PSE. Trading fees typically run 0.1 to 0.5 percent, plus network and withdrawal costs. Full KYC (cédula or NIT) is required. Best for individuals and small volumes; the drawbacks are manual work per conversion and per-account limits.

**Route 3: P2P marketplaces.** Trade USDC directly with a counterparty who sends you a bank transfer. Spreads can be competitive and limits flexible, but counterparty risk is real, quality varies, and business use is impractical: no receipts, no compliance trail, no scale.

**Route 4: Global exchange with a COP ramp.** Some global exchanges support COP deposits and withdrawals over PSE or local bank transfer. Useful if your assets already sit there; fees stack (trading plus conversion plus withdrawal) and COP pairs get thinner liquidity than local venues.

## How do the routes compare?

| Route | Speed (end to end) | Typical cost | KYC | Best for |
|---|---|---|---|---|
| Payout API | Minutes | Quoted FX rate + provider fee | Provider-run, per receiver | Businesses paying at scale |
| Colombian exchange | Minutes to hours | 0.1-0.5% trade + withdrawal | Full, per account | Individuals, occasional cash-out |
| P2P marketplace | Minutes to hours | Spread-dependent | Varies by venue | Small amounts, no business trail |
| Global exchange + PSE | Minutes to hours | Stacked (trade + FX + withdrawal) | Full, per account | Funds already on the exchange |

Compare total amount received, not the headline fee: a low fee over a poor rate loses to a fair rate with a visible fee. Provider pricing models are compared in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026).

## What are Colombia's rules for USDC to COP in 2026?

Colombia does not have a consolidated VASP license the way Brazil does. What exists instead, as of 2026:

- **No ban, no dedicated license.** DIAN's Unified Concept 1621 of 2023 confirms cryptoassets are not legal tender in Colombia but their commercial use is permitted. DIAN itself has called for sector-specific regulation, which does not exist yet.
- **Proyecto de Ley 510 de 2025** would have created the licensing regime DIAN is asking for: a framework covering VASP oversight, consumer protection, AML/CTF measures, and financial education, filed in the Chamber of Representatives in February 2025 with Representative Julián López as lead sponsor. It passed committee and plenary debate in the Chamber but was archived under Article 190 of Law 5 of 1992, the rule that shelves a bill not passed within two ordinary legislative sessions, before reaching the Senate. The Chamber's own bill tracker lists it as archived, and [Portafolio](https://www.portafolio.co/economia/mercado-cripto-queda-sin-regulacion-integral-tras-archivo-de-ley-pese-a-mayores-controles-tributarios-500476), Valora Analitik, and Infobae reported the archival in mid-August 2026. The Superintendencia Financiera has separately run a public consultation on a draft circular covering how banks may relate to VASPs.
- **AML reporting already applies.** UIAF Resolution 314 of 2021 requires VASPs to file Suspicious Transaction Reports immediately on detection, plus a monthly report through the SIREL platform even when nothing suspicious occurred. This obligation exists independent of Proyecto de Ley 510.

One operational rule dominates day-to-day payouts: PSE moves money on bank processing windows, not instantly. A transfer initiated late at night or on a bank holiday can sit until the next window opens, and receiver name or cédula mismatches are rejected the same way Pix and SPEI reject them elsewhere in Latin America.

## Which route fits which business?

- **Freelancer receiving USDC occasionally**: a Colombian exchange account is enough. Watch the spread and keep records; Colombia's tax authority already requires exchanges to report user activity.
- **Company paying 1 or 2 Colombian contractors**: an exchange works but does not scale; every payment is manual and the compliance trail is yours to build.
- **Company paying tens to thousands of receivers** (payroll, marketplaces, remittance products): a payout API is the only route that scales. Receiver KYC, sanctions screening, and delivery over PSE happen inside one API call.
- **Treasury converting its own balance**: an exchange or OTC desk for large one-off conversions; an API with [virtual accounts](/virtual-accounts) if conversions recur as part of a product flow.

## Which network should you send USDC on?

USDC is issued natively on multiple blockchains, and the network choice affects cost and settlement time on every route. Ethereum mainnet carries the deepest liquidity but the highest fees, often dollars per transfer at busy times. Base, Polygon, Arbitrum, and Solana move the same USDC for cents and settle in seconds to minutes. Two practical rules:

- **Match the destination's supported networks.** A Colombian exchange that only credits Ethereum-based USDC will not see a Solana transfer; funds sent on an unsupported network are painful or impossible to recover. Check the deposit page or API documentation before sending.
- **Prefer a cheap network your counterparty supports.** For payout APIs this is usually a non-issue: the provider accepts several networks and quotes the same COP amount regardless.

The token is worth one dollar on every chain; only the transport differs. More on how the token itself works: [what is a stablecoin](/resources/more/what-is-a-stablecoin).

## Why does Colombia have so much stablecoin volume?

Remittances are the largest single reason. Colombia received a record 13.098 billion dollars in remittances in 2025, up 10.6 percent from 2024's 11.843 billion, equal to roughly 3 percent of GDP, according to Banco de la República data reported by [Colombia's Migration authority](https://portal.migracioncolombia.gov.co/detalle-noticia/agenda-migcol/comunicaciones-y-prensa/colombia-recibio-13098-millones-de-dolares-en-remesas-en-2025). Most of that still arrives through traditional money transfer operators, but the peso's volatility against the dollar gives senders and receivers alike a reason to hold value in USDC between the moment it is sent and the moment it is spent, rather than converting immediately at each leg.

## How are USDC to COP conversions taxed?

Colombia taxes crypto disposals for individuals and companies under its ordinary income tax rules; DIAN treats cryptoassets as taxable assets, not currency, so selling USDC for COP is a disposal event if the peso value received differs from cost basis. For companies, conversions flow through ordinary corporate accounting, and payouts to Colombian contractors or employees keep their normal labor and withholding treatment regardless of the rail used to deliver them.

Two habits save pain later. Keep the COP value at acquisition and at disposal for every lot (exchanges and payout APIs both provide statements). And do not confuse the rail with the obligation: paying someone over PSE from a stablecoin balance does not change what your business owes in taxes or reporting; it only changes how fast the money arrives.

## Where these routes fall short

Honest limits, route by route. Exchanges cap withdrawal amounts and require every receiver to have and manage their own account. P2P has no place in a business flow. Global exchanges quote thin COP liquidity at bad hours. Payout APIs charge a provider fee on top of FX and require onboarding (KYB for your business, KYC for receivers) before the first real transfer; if you need an anonymous or same-minute one-off conversion, an API is the wrong tool. And no route settles instantly around the clock: PSE's bank windows are a real constraint that Pix and Transfers 3.0 do not share, so plan payroll runs around business hours. AI agents that need to reason about a corridor's constraints before initiating a payout are covered in [agentic payments](/agentic-payments).

## How BlindPay handles USDC to COP

BlindPay is a stablecoin API: your business sends USDC, the receiver gets pesos over PSE, typically within minutes during bank processing windows. Receiver verification, sanctions screening, and travel rule data handling are built in, and the FX quote is shown before you commit; the live rate is on the [USDC to COP page](/usdc-to-cop). The same API pays out over Pix, SPEI, ACH, and SWIFT (POBO/COBO, with UETR tracking and MT103 confirmations) in [100+ countries](/docs/kb/supported-countries), USDT works the same way, and [pricing](/pricing) is public. For the Brazil equivalent of this comparison, see [USDC to BRL routes in 2026](/resources/more/usdc-to-brl-routes-2026), or browse the rest of the [resources library](/resources/more).

## Methodology and sources

Rail facts from BlindPay's own corridor data. Adoption statistic from Chainalysis's 2025 Latin America crypto adoption report ([chainalysis.com](https://www.chainalysis.com/blog/latin-america-crypto-adoption-2025/)). Remittance figures from Banco de la República data as reported by Colombia's Migración authority ([migracioncolombia.gov.co](https://portal.migracioncolombia.gov.co/detalle-noticia/agenda-migcol/comunicaciones-y-prensa/colombia-recibio-13098-millones-de-dolares-en-remesas-en-2025)). Regulatory facts from DIAN's Unified Concept 1621 of 2023, UIAF Resolution 314 of 2021, and Proyecto de Ley 510 de 2025's status on the [Chamber of Representatives' bill tracker](https://www.camara.gov.co/servicios-activos-virtuales), confirmed by [Portafolio's](https://www.portafolio.co/economia/mercado-cripto-queda-sin-regulacion-integral-tras-archivo-de-ley-pese-a-mayores-controles-tributarios-500476) August 2026 reporting on its archival. Exchange fee ranges reflect published fee schedules of major venues as of 2026; live BlindPay FX quotes are on the [corridor page](/usdc-to-cop). Regulatory status described as of September 2026.

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

---

Source: https://blindpay.com/resources/more/usdc-to-mxn-routes-2026

---
title: "USDC to MXN in 2026: routes, fees, and rules compared"
seoTitle: "USDC to MXN in 2026: routes, fees, and rules compared"
description: "Four ways to convert USDC to Mexican pesos in 2026: stablecoin payout APIs, local exchanges, P2P, and global exchanges with SPEI. Fees, speed, KYC, and Mexico's rules compared."
date: "2026-09-01"
author: "BlindPay Team"
updated: "2026-09-01"
category: "payments"
faq:
  - q: "What is the cheapest way to convert USDC to MXN?"
    a: "For businesses paying many receivers, a stablecoin payout API is typically cheapest in total cost because it removes manual work, spread stacking, and failed-payment overhead. For individuals, Mexican exchanges are usually cheapest, though trading fees vary by provider and should be checked before each conversion."
  - q: "How fast does a USDC to MXN conversion arrive?"
    a: "Over SPEI, minutes. SPEI settles in near real time and runs 24/7, so end-to-end time is dominated by the conversion step: typically a few minutes on exchanges and payout APIs."
  - q: "Is converting USDC to MXN legal in Mexico?"
    a: "Yes. Mexico regulates virtual asset activity under the 2018 Fintech Law, with Banco de Mexico and the CNBV as the main supervisors. Banks are generally barred from offering crypto services directly to the public, but non-bank exchanges and payment companies can operate. A Senate bill introduced in May 2026 would add a dedicated licensing regime for peso-pegged stablecoins."
  - q: "Does SPEI verify the receiver before crediting a payment?"
    a: "No, not by name. SPEI credits a transfer based on the CLABE, an 18-digit standardized account number, not on the beneficiary's name matching the account. A valid CLABE confirms the number is well formed and identifies the receiving bank; it does not confirm who owns the account. Getting the CLABE right, and confirming who holds it before sending, is the sender's responsibility."
  - q: "What is a CLABE number?"
    a: "CLABE (Clave Bancaria Estandarizada) is Mexico's 18-digit standard bank account number: 3 digits for the bank, 3 for the branch or region, 11 for the account, and a check digit. Every SPEI transfer needs a correct CLABE; every Mexican bank and most exchanges display it in the account details."
---

There are four practical routes from USDC to Mexican pesos in 2026: a stablecoin payout API delivering SPEI directly, a Mexican exchange off-ramp, a P2P trade, or a global exchange with an MXN/SPEI ramp. They differ on fees, speed, and KYC. See the live rate on our [corridor page](/usdc-to-mxn).

The backdrop matters. SPEI, the interbank payment system run by Banco de Mexico, settles transfers in near real time, 24/7, and Mexico is the world's second-largest remittance recipient after India: Banxico reported $61.8 billion arriving in 2025, even after a 4.6 percent drop from 2024, the biggest annual decline since 2009. Nearly all of it, 99.1 percent, already moves electronically rather than in cash. Every serious USDC-to-MXN route ends in a SPEI transfer, and a Senate bill introduced in May 2026 would give peso-pegged stablecoins their own licensing regime for the first time.

## What are the four routes from USDC to MXN?

**Route 1: Stablecoin payout API.** A business sends USDC through an API; the provider converts at a quoted rate and delivers pesos via SPEI to the receiver's CLABE, after verifying the receiver's identity on its own side (SPEI itself does not). One integration replaces the per-transfer manual work of the other three routes. This is the route built for payroll, contractor payments, and marketplace payouts. How this model works in general: [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

**Route 2: Mexican exchange off-ramp.** Send USDC to a local exchange, sell for MXN, withdraw via SPEI. Trading fees vary by provider, plus network and withdrawal costs. Full KYC is required for the exchange account. Best for individuals and small volumes; the drawbacks are manual work per conversion and per-account limits.

**Route 3: P2P marketplaces.** Trade USDC directly with a counterparty who sends you a SPEI transfer. Spreads can be competitive and limits flexible, but counterparty risk is real, quality varies, and business use is impractical: no receipts, no compliance trail, no scale.

**Route 4: Global exchange with an MXN/SPEI ramp.** Some global exchanges support MXN deposits and withdrawals over SPEI. Useful if your assets already sit there; fees stack (trading plus conversion plus withdrawal) and MXN pairs get thinner liquidity than local venues.

## How do the routes compare?

| Route | Speed (end to end) | Typical cost | KYC | Best for |
|---|---|---|---|---|
| Payout API | Minutes | Quoted FX rate + provider fee | Provider-run, per receiver | Businesses paying at scale |
| Mexican exchange | Minutes to hours | Varies by provider, trade + withdrawal | Full, per account | Individuals, occasional cash-out |
| P2P marketplace | Minutes to hours | Spread-dependent | Varies by venue | Small amounts, no business trail |
| Global exchange + SPEI | Minutes to hours | Stacked (trade + FX + withdrawal) | Full, per account | Funds already on the exchange |

Compare total amount received, not the headline fee: a low fee over a poor rate loses to a fair rate with a visible fee. Provider pricing models are compared in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026).

## What are Mexico's rules for USDC to MXN in 2026?

Three layers, as of 2026:

- **The Fintech Law** (Ley para Regular las Instituciones de Tecnologia Financiera, enacted 2018) is the base framework for virtual asset activity in Mexico, alongside the federal anti-money-laundering law. Banco de Mexico sets how financial institutions may interact with virtual assets; the CNBV supervises banks and fintech companies for compliance.
- **Banks stay out of public-facing crypto.** Mexican banks are generally barred from offering crypto services directly to retail customers; non-bank exchanges and payment companies operate outside that restriction, which is why the exchange and payout-API routes exist as separate businesses from the banking system.
- **A dedicated stablecoin regime is pending, not yet law.** The Murat Initiative, introduced in the Senate in May 2026, would create a licensing regime for Activos Virtuales Estables Referenciados en Moneda Nacional, peso-pegged stablecoins that guarantee par convertibility. It would require 1:1 reserve backing, bankruptcy-remote reserves, and Banxico authorization for foreign issuers, with criminal penalties for unauthorized issuance. As of this writing it has not passed; treat it as a signal of direction, not current law.

One operational rule dominates day-to-day payouts, and it cuts the opposite way from Brazil's Pix: SPEI does not check that the beneficiary's name matches the account. It credits a transfer based on the CLABE, the 18-digit account number, alone. A well-formed CLABE confirms the number is valid and names the receiving bank; it does not confirm who holds the account. Getting the right CLABE, and confirming who controls it before the first transfer, sits entirely with the sender.

## Which route fits which business?

- **Freelancer receiving USDC occasionally**: a Mexican exchange account is enough. Confirm the CLABE before every payout and keep records for tax.
- **Company paying 1 or 2 Mexican contractors**: an exchange works but does not scale; every payment is manual and CLABE verification is on you each time.
- **Company paying tens to thousands of receivers** (payroll, marketplaces, remittance products): a payout API is the only route that scales. Receiver verification, sanctions screening, and delivery over SPEI happen inside one API call instead of one manual check per transfer.
- **AI agents paying suppliers or contractors autonomously**: agent-driven payouts need the same SPEI delivery and receiver checks, callable without a dashboard. See [agentic payments](/agentic-payments) for how that works over an API or MCP server.
- **Treasury converting its own balance**: an exchange or OTC desk for large one-off conversions; an API with [virtual accounts](/virtual-accounts) if conversions recur as part of a product flow.

## Which network should you send USDC on?

USDC is issued natively on multiple blockchains, and the network choice affects cost and settlement time on every route. Ethereum mainnet carries the deepest liquidity but the highest fees, often dollars per transfer at busy times. Base, Polygon, Arbitrum, and Solana move the same USDC for cents and settle in seconds to minutes. Two practical rules:

- **Match the destination's supported networks.** A Mexican exchange that only credits Ethereum-based USDC will not see a Solana transfer; funds sent on an unsupported network are painful or impossible to recover. Check the deposit page or API documentation before sending.
- **Prefer a cheap network your counterparty supports.** For payout APIs this is usually a non-issue: the provider accepts several networks and quotes the same MXN amount regardless.

The token is worth one dollar on every chain; only the transport differs. More on how the token itself works: [what is a stablecoin](/resources/more/what-is-a-stablecoin).

## How are USDC to MXN conversions taxed?

Mexico has no crypto-specific tax law. The SAT, Mexico's tax authority, treats cryptocurrency disposals under the existing income tax rules for the sale of goods: selling USDC for MXN is a taxable disposal, and any gain over cost basis adds to ordinary income for the year. Holding is not a taxable event; converting or spending is. For companies, conversions flow through ordinary corporate accounting, and payouts to Mexican contractors or employees keep their normal labor and withholding treatment regardless of the rail used to deliver them.

Two habits save pain later. Keep the MXN value at acquisition and at disposal for every lot (exchanges and payout APIs both provide statements). And do not confuse the rail with the obligation: paying someone over SPEI from a stablecoin balance does not change what your business owes in taxes or reporting; it only changes how fast the money arrives.

## Where these routes fall short

Honest limits, route by route. Exchanges cap withdrawal amounts and require every receiver to have and manage their own account. P2P has no place in a business flow. Global exchanges quote thin MXN liquidity at bad hours. Payout APIs charge a provider fee on top of FX and require onboarding (KYB for your business, KYC for receivers) before the first real transfer; if you need an anonymous or same-minute one-off conversion, an API is the wrong tool. And no route removes the sender's responsibility to confirm a CLABE belongs to who it should, since SPEI itself will not catch a mismatch.

## How BlindPay handles USDC to MXN

BlindPay is a stablecoin API: your business sends USDC, the receiver gets pesos over SPEI, usually within minutes. Receiver verification, sanctions screening, and travel rule data handling are built in on our side to cover the gap SPEI leaves open, and the FX quote is shown before you commit; the live rate is on the [USDC to MXN page](/usdc-to-mxn). The same API pays out over Pix, ACH, and SWIFT (POBO/COBO, with UETR tracking and MT103 confirmations) in [100+ countries](/docs/kb/supported-countries), USDT works the same way ([USDT to MXN](/usdt-to-mxn)), and [pricing](/pricing) is public. For the Brazil side of this comparison, see [USDC to BRL routes for 2026](/resources/more/usdc-to-brl-routes-2026), or browse the rest of the [resources library](/resources/more).

## Methodology and sources

Rail and regulatory facts from primary and named sources: Banco de Mexico's SPEI documentation ([banxico.org.mx](https://www.banxico.org.mx/services/interbanking-electronic-payme.html)), 2025 remittance figures reported by Banxico via [Mexico News Daily](https://mexiconewsdaily.com/news/remittance-biggest-decline-in-16-years/), and reporting on the Fintech Law and the May 2026 Senate stablecoin bill via [Legal Paradox](https://www.legalparadox.com/insights/stablecoin-regulation-in-mexico-guide-for-foreign-issuers). Exchange fee language stays general rather than quoting a range, because published fee schedules vary by provider and change without notice; live BlindPay FX quotes are on the [corridor page](/usdc-to-mxn). Regulatory status described as of September 2026, and the Senate bill's progress should be checked before relying on it as settled law.

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

---

Source: https://blindpay.com/resources/more/what-is-a-stablecoin-offramp

---
title: "What is a stablecoin off-ramp? How crypto becomes cash"
seoTitle: "What is a stablecoin off-ramp? How crypto becomes cash"
description: "A stablecoin off-ramp converts stablecoins like USDC or USDT back into fiat currency in a bank account. How the conversion works and who regulates it."
date: "2026-09-01"
author: "BlindPay Team"
updated: "2026-09-01"
category: "payments"
faq:
  - q: "What is a stablecoin off-ramp?"
    a: "A service that converts stablecoins like USDC or USDT into fiat currency and delivers it to a bank account. It is the step that turns on-chain dollars into money a business or person can actually spend through normal banking rails."
  - q: "Is a stablecoin off-ramp regulated?"
    a: "Yes, in most jurisdictions. In the US, FinCEN classifies businesses that exchange virtual currency for fiat as money transmitters, a category of money services business subject to AML registration and reporting. Other countries apply similar rules under their own VASP frameworks."
  - q: "What's the difference between an on-ramp and an off-ramp?"
    a: "An on-ramp converts fiat into stablecoins, the entry point into crypto. An off-ramp converts stablecoins back into fiat, the exit point. A payment that starts as a bank transfer and ends as a bank transfer, with a stablecoin in the middle, uses both."
  - q: "How long does off-ramping take?"
    a: "The on-chain transfer settles in minutes regardless of amount. The off-ramp leg then depends on the local rail: Pix in Brazil settles in seconds, ACH in the US takes same-day to a few days, and a wire can take hours. The bottleneck is almost always the bank rail, not the blockchain."
---

A stablecoin off-ramp converts stablecoins like USDC or USDT back into fiat currency and delivers it to a bank account. It is the exit door from crypto: dollars that moved on a blockchain become dollars, reais, or pesos sitting in an ordinary bank account, sent over the same rails a bank transfer would use.

Off-ramps matter because a stablecoin is only useful for payments if it eventually becomes spendable money. A business that receives USDC but has no way to convert it into local currency has a balance sheet entry, not a payment. The off-ramp is what closes the loop.

## How does a stablecoin off-ramp work?

Three things happen, usually inside seconds to minutes of each other:

1. **Receipt.** The off-ramp provider receives the stablecoin, either from the sender's wallet directly or from a payment flow where the sender never touched a wallet at all.
2. **Conversion.** The provider converts the stablecoin to fiat at a quoted rate, sourcing liquidity from exchanges, market makers, or its own inventory.
3. **Payout.** The provider sends the converted fiat over a local bank rail: Pix in Brazil, SPEI in Mexico, ACH or wire in the US, and dozens of others depending on the destination.

Compliance runs underneath all three steps, not after them. A legitimate off-ramp screens the receiver against sanctions lists, verifies identity, and often checks the source of the stablecoin before releasing fiat. Skipping this is not a shortcut, it is the reason regulators built the licensing regimes described below. Most businesses never build this pipeline themselves; they call a [stablecoin API](/resources/more/what-is-a-stablecoin-api) and get the whole flow behind one endpoint.

## Who regulates stablecoin off-ramps?

In the US, FinCEN's 2013 guidance (FIN-2013-G001) is still the operating framework: "an administrator or exchanger is an MSB under FinCEN's regulations, specifically, a money transmitter, unless a limitation to or exemption from the definition applies." An exchanger, in FinCEN's own words, is "a person engaged as a business in the exchange of virtual currency for real currency, funds, or other virtual currency." That single sentence is why off-ramp providers need money transmitter licenses in most US states, not just a terms-of-service agreement. Full guidance is on [FinCEN's site](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-persons-administering).

Internationally, the same activity falls under the FATF's virtual asset service provider (VASP) category, which member countries implement through local licensing regimes. Brazil's PSAV framework is one concrete example, covered in our [PSAV explainer](/resources/more/psav-brazil-explained), and background on the VASP category itself is in [what is a VASP](/resources/more/what-is-a-vasp). The regulatory direction is the same almost everywhere: converting stablecoins to fiat as a business requires a license, AML controls, and reporting, the same obligations a money transfer business carries. How these regimes compare across the EU, US, and Brazil is in our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## What's the difference between an on-ramp and an off-ramp?

An on-ramp moves fiat into stablecoins; an off-ramp moves stablecoins into fiat. A cross-border payout usually needs both, on opposite ends of the same transaction: a US business converts dollars to USDC (on-ramp), sends it in minutes, and a provider in Brazil converts it to reais and pays out over Pix (off-ramp). The sender and receiver each see a normal bank transaction; the stablecoin only exists for the seconds it takes to cross the border. That full flow, and the business cases behind it, is covered in our [stablecoin payments guide](/resources/more/stablecoin-payments-guide).

Some providers only do one side. A crypto exchange might off-ramp for its own users but have no on-ramp product for businesses; a payments company might only care about the off-ramp because its customers already hold stablecoins. Knowing which side, or both, a provider actually covers is the first question to ask. The [on-ramp and off-ramp guide for fintech builders](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp) walks through both flows step by step.

## What should you check before choosing an off-ramp?

- **Settlement speed and hours.** Some rails, like Pix, run 24/7 in seconds. Others follow banking hours.
- **Rate transparency.** The quoted conversion rate should be visible before funds move, not disclosed after the fact.
- **Licensing.** Ask directly which money transmitter or VASP licenses the provider holds in the destination country, and check a published [licenses page](/licenses) rather than taking a sales claim at face value.
- **Compliance depth.** Sanctions screening and KYC should run on every payout, not just above a threshold.
- **Coverage.** Which currencies and rails the provider actually reaches; a provider strong in one region may not off-ramp at all in another.

## How does BlindPay fit in?

[BlindPay](/global-payments) runs both sides of this flow behind one API: convert fiat to USDC or USDT, send it, and off-ramp into local currency over Pix, SPEI, ACH, and wire across 100+ countries, with KYC, sanctions screening, and licensing handled on BlindPay's side. Rates are published, for example [USDC to BRL](/usdc-to-brl), and more on how the pieces fit together is in the [resources hub](/resources/more).

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

---

Source: https://blindpay.com/resources/more/what-is-a-vasp

---
title: "What is a VASP? Virtual asset service provider explained"
seoTitle: "What is a VASP? Virtual asset service provider explained"
description: "A VASP is any business that exchanges, transfers, or custodies virtual assets like stablecoins for customers. FATF's definition and what it requires in practice."
date: "2026-09-01"
author: "BlindPay Team"
updated: "2026-09-01"
category: "compliance"
faq:
  - q: "What does VASP stand for?"
    a: "Virtual Asset Service Provider. FATF, the global anti-money laundering standard setter, uses the term to define any business that handles virtual assets, including stablecoins, on behalf of customers."
  - q: "What activities make a company a VASP?"
    a: "Exchanging virtual assets for fiat, exchanging one virtual asset for another, transferring virtual assets, safekeeping or administering them, or participating in financial services tied to an issuer's offer or sale of a virtual asset. Doing any one of these as a business, for someone else, is enough."
  - q: "Does a stablecoin payments company count as a VASP?"
    a: "Yes, in almost every case. Converting stablecoins to fiat and transferring them for customers falls squarely under the exchange and transfer categories, which is why payment providers built on stablecoins need VASP-equivalent licenses wherever they operate."
  - q: "Is VASP regulation the same in every country?"
    a: "No. FATF sets the standard, but each country implements it through its own law. Brazil's PSAV, the EU's MiCA authorization, and US state money transmitter licenses are three different implementations of roughly the same underlying activities."
---

A VASP, virtual asset service provider, is any business that exchanges, transfers, custodies, or safeguards virtual assets like stablecoins on behalf of customers. FATF, the intergovernmental body that sets global anti-money laundering standards, created the category in 2019 to pull crypto and stablecoin companies under the same AML rules banks already follow.

The category matters because it decides who needs a license. If a company's activity fits FATF's VASP definition, the countries it operates in expect registration, AML controls, and reporting, the same obligations a bank or money transmitter carries, not a lighter version built for crypto.

## What activities make a company a VASP?

FATF Recommendation 15 defines a VASP as any natural or legal person who, as a business, conducts one or more of the following on behalf of another person:

- **Exchange between virtual assets and fiat currency.** Converting crypto or stablecoins to dollars, reais, or any other fiat currency, and back.
- **Exchange between forms of virtual assets.** Swapping one token for another, including stablecoin pairs.
- **Transfer of virtual assets.** Moving a virtual asset from one address or account to another on behalf of a customer.
- **Safekeeping or administration.** Custodying virtual assets or the instruments that control them, such as private keys.
- **Participation in financial services related to an issuer's offer or sale of a virtual asset.** Involvement in a token issuance or sale, such as underwriting or distribution.

Classification is activity-based: a company doing any one of these as a business, for someone else, is a VASP, regardless of what it calls itself. A stablecoin off-ramp that converts USDC to reais sits directly in the first category; background on that specific flow is in [what is a stablecoin off-ramp](/resources/more/what-is-a-stablecoin-offramp). Most VASPs package these activities behind a [stablecoin API](/resources/more/what-is-a-stablecoin-api) rather than exposing raw wallets and exchange rails.

## Who has to register or license as a VASP?

Any business performing the activities above, in a jurisdiction that has implemented Recommendation 15. That covers most of the world's major markets by now, since FATF membership and mutual evaluation pressure pushed adoption broadly through the early 2020s. The details, though, are set by each country individually: registration with a financial intelligence unit in some places, a full authorization regime with capital and governance requirements in others.

Brazil is a concrete example worth studying because the rules are recent and specific: the Banco Central do Brasil built its PSAV authorization directly on the FATF categories, requiring companies that exchange, transfer, or custody virtual assets for Brazilian customers to obtain a license under Resolutions 519, 520, and 521. The full breakdown is in our [PSAV explainer](/resources/more/psav-brazil-explained).

## What does VASP status require in practice?

Once a company is classified as a VASP, the recurring obligations look similar everywhere: customer identification and KYC on individuals, [KYB](/resources/more/what-is-kyb) on business customers, sanctions and watchlist screening, transaction monitoring for suspicious activity, and increasingly the travel rule, which requires sharing sender and receiver information on transfers above a threshold, the same way a wire transfer carries originator data today. How the travel rule and sanctions screening work across jurisdictions is covered in our [cross-border compliance guide](/resources/more/compliance-agents-cross-border-stablecoin-payments). Our [stablecoin payments guide](/resources/more/stablecoin-payments-guide) covers how these checks sit inside an actual payout.

None of this is optional once the activity test is met. A company that calls itself a "technology platform" rather than a payment provider is still a VASP if it exchanges or transfers virtual assets for customers; regulators evaluate the activity, not the label on the pitch deck.

## How does VASP regulation differ by country?

The activities FATF defines are consistent; the implementation is not. The EU folds virtual asset services into MiCA's authorization regime. The US applies its existing money transmitter and money services business framework, state by state, to the same activities. Brazil built a dedicated PSAV license from scratch in 2025. Details on how these regimes compare are in our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026). A company operating across borders typically needs a different license, or license-equivalent, in each market it serves, which is one reason global stablecoin payment coverage is hard to build and harder to fake.

## How does BlindPay fit in?

[BlindPay](/global-payments) operates as a licensed entity in the markets it serves, including as a VASP-equivalent authorized provider in Brazil under the transitional PSAV regime, with KYC, KYB, sanctions screening, and travel rule handling built into every payout. Entity and license details by market are published on the [licenses page](/licenses), and how the full compliance program runs is on the [compliance page](/compliance). More on the mechanics behind the API is in the [resources hub](/resources/more).

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

---

Source: https://blindpay.com/resources/more/what-is-kyb

---
title: "What is KYB? Know Your Business verification explained"
seoTitle: "What is KYB? Know Your Business verification explained"
description: "KYB verifies a company's legal existence, ownership, and control before it can transact. What it checks, who counts as a beneficial owner, and how it differs from KYC."
date: "2026-09-01"
author: "BlindPay Team"
updated: "2026-09-01"
category: "compliance"
faq:
  - q: "What does KYB stand for?"
    a: "Know Your Business. It is the process of verifying a company's legal existence, ownership structure, and the individuals who own or control it before that company is allowed to open an account or transact."
  - q: "What is a beneficial owner?"
    a: "Under FinCEN's rule, an individual who directly or indirectly owns 25 percent or more of a legal entity's equity, or who controls and directs it, such as a CEO or managing member. A company can have several beneficial owners."
  - q: "How is KYB different from KYC?"
    a: "KYC verifies an individual person. KYB verifies a company, and then applies KYC-style checks to the individuals who own or control that company. A business account almost always requires both."
  - q: "How long does KYB take?"
    a: "With registry data available and clean documents, minutes to same-day. It slows down for entities with layered ownership, trusts, or jurisdictions where corporate registries are not digitized, sometimes taking days."
---

KYB, Know Your Business, verifies that a company legally exists, confirms who owns and controls it, and screens those individuals before the company is allowed to send or receive money. It is the business-side counterpart to KYC: a payment provider cannot know whether it is safe to pay a company without first knowing who actually stands behind it.

KYB exists because a shell company is an easy way to hide who is really moving money. A registered business name and a bank account look legitimate on the surface; the ownership and control behind them are where risk actually lives, which is why regulators require providers to look past the entity to the humans running it.

## What does KYB actually verify?

A complete KYB check covers four layers:

- **Legal existence.** Confirming the company is registered, active, and in good standing with the relevant corporate registry, not dissolved or dormant.
- **Ownership structure.** Mapping who owns what percentage of the company, including through holding companies or trusts, until it reaches actual people.
- **Beneficial owners.** Identifying and verifying the individuals who meet the ownership or control threshold, then running standard identity and sanctions checks on each of them.
- **Business activity.** Confirming the company's stated business matches what it actually does, since a mismatch between registered activity and real transaction patterns is a common fraud and money laundering signal.

Skipping any layer leaves a gap. A provider that checks only registration, without tracing ownership to real people, can end up doing business with a company controlled by someone on a sanctions list.

## Who counts as a beneficial owner?

The clearest definition comes from FinCEN's Customer Due Diligence rule, built on two prongs. The ownership prong: any individual who, "directly or indirectly, through any contract, arrangement, understanding, relationship or otherwise, owns 25 percent or more of the equity interests of a legal entity customer." The control prong: at least one individual with "significant responsibility to control, manage, or direct" the entity, such as a CEO, CFO, or managing member, regardless of ownership percentage. Full detail is in [31 CFR 1010.230(d)](https://www.ecfr.gov/current/title-31/subtitle-B/chapter-X/part-1010/subpart-C/section-1010.230).

That two-prong structure exists because ownership alone misses control. A company can be owned by a diffuse group of investors, none crossing 25 percent, while one individual runs every decision. The control prong catches that person even when the ownership math would not.

## How is KYB different from KYC?

KYC (Know Your Customer) verifies one individual: identity documents, address, and screening against sanctions and watchlists. KYB verifies a legal entity and then applies KYC to the people who own or control it. Opening a business account almost always triggers both: KYB on the company, KYC on each beneficial owner and often on signers and directors too.

The practical difference shows up in documentation. KYC needs a passport or ID and a selfie. KYB needs incorporation documents, a certificate of good standing, an ownership chart, and identity documents for every beneficial owner identified along the way, which is why KYB usually takes longer and involves more back-and-forth than an individual signup.

## When does a payments company require KYB?

Any time a business, not an individual, is the account holder or the counterparty receiving payment above a threshold set by the provider's risk policy. Marketplaces onboarding seller accounts, platforms paying out to vendor companies rather than individual contractors, and any B2B cross-border payment all trigger KYB somewhere in the flow. Our [stablecoin payments guide](/resources/more/stablecoin-payments-guide) covers where compliance checks like KYB sit inside a payout flow, and the broader VASP licensing context that requires programs like this is in [what is a VASP](/resources/more/what-is-a-vasp). Requirements also shift as rules like MiCA and the GENIUS Act take effect, tracked in our [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## How does BlindPay fit in?

[BlindPay](/global-payments) runs KYB on every business account before it can send or receive a payout: entity verification, ownership mapping, beneficial owner screening, and sanctions checks, built into the same API used to move USDC and USDT over local rails like Pix and SPEI. The [compliance page](/compliance) covers the full program, and the [resources hub](/resources/more) has more on how the pieces fit together, including [what a stablecoin API does](/resources/more/what-is-a-stablecoin-api) end to end and [how to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) inside a payment flow.

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

---

Source: https://blindpay.com/resources/more/what-is-usdc

---
title: "What is USDC? The dollar-pegged stablecoin explained"
seoTitle: "What is USDC? The dollar-pegged stablecoin explained"
description: "USDC is a dollar-pegged stablecoin issued by Circle, backed 1:1 by cash and short-term Treasuries and redeemable for US dollars. How it works and where it's used."
date: "2026-09-01"
author: "BlindPay Team"
updated: "2026-09-01"
category: "stablecoins"
faq:
  - q: "What is USDC backed by?"
    a: "Cash and cash-equivalent assets, mostly short-dated US Treasuries held through a registered money market fund, plus cash at major banks. Circle states USDC is backed 100 percent by these assets and redeemable 1:1 for US dollars."
  - q: "Who issues USDC?"
    a: "Circle, a US financial technology company. Circle mints USDC when someone deposits dollars and burns it when someone redeems for dollars, and publishes monthly third-party attestations of the reserves."
  - q: "Is USDC the same as a US dollar?"
    a: "No. USDC is a digital token that represents a claim on a dollar held in reserve. It moves like a dollar in value and is redeemable for one, but it lives on a blockchain and settles differently than a bank transfer."
  - q: "Can USDC lose its peg?"
    a: "It can move slightly off one dollar for short periods, most visibly during the March 2023 banking crisis when part of Circle's reserves were briefly stuck at a failed bank. The peg recovered once redemptions resumed. Reserve quality and redemption access are what keep the peg tight."
---

USDC is a stablecoin: a digital dollar issued by Circle, backed 1:1 by cash and short-term US Treasuries, and redeemable for US dollars on demand. It runs on multiple blockchains, moves value in minutes instead of days, and settles into ordinary bank accounts once it passes through a payment provider.

USDC exists to solve one problem: dollars are the world's reserve currency, but moving them across borders through banks is slow and expensive. USDC gives businesses a dollar-denominated asset that transfers over the internet at any hour, then converts back to local currency through providers that plug into bank rails.

## What backs USDC?

Circle states plainly on its transparency page that "USDC is a digital dollar backed 100% by highly liquid cash and cash-equivalent assets and is always redeemable 1:1 for US dollars." The bulk of reserves sit in the Circle Reserve Fund, an SEC-registered money market fund holding cash, short-dated US Treasuries, and overnight Treasury repurchase agreements. The remainder sits as cash at large banks. A Big Four accounting firm, currently Deloitte & Touche, provides a monthly third-party attestation confirming reserve value exceeds circulating supply. Full detail is on [Circle's transparency page](https://www.circle.com/transparency).

That structure matters more than it sounds. A stablecoin backed by risky or illiquid assets can fail to redeem at par under stress. One backed by cash and short-dated government debt can, in principle, always pay out. Reserve composition is the first thing to check with any stablecoin, not an afterthought.

## How does USDC keep its dollar peg?

The peg holds through redemption, not through a trading mechanism. Authorized institutions can mint new USDC by sending Circle dollars, and redeem USDC for dollars at any time. That direct convertibility is what keeps the market price near one dollar: if USDC ever traded meaningfully below a dollar, arbitrageurs would buy it cheap and redeem at par, closing the gap.

The peg is not unbreakable. In March 2023, Circle disclosed that part of USDC's reserves, about 3.3 billion dollars, sat at Silicon Valley Bank when regulators closed it. USDC traded as low as 87 cents on some exchanges over a weekend before US regulators guaranteed depositors and the peg recovered within days. The episode is a real data point on reserve risk, not just a marketing footnote, and it is why reserve transparency and redemption speed are the two variables worth watching for any issuer.

## Where does USDC run, and how do you move it?

USDC exists natively on more than a dozen blockchains, including Ethereum, Solana, Base, and Polygon, plus others. Each network has different transaction costs and speeds; sending USDC on the wrong network to an address that expects another network is a common way to lose funds, which is one reason most businesses never touch a wallet directly and instead move USDC through a provider. Our guide to [what a stablecoin API does](/resources/more/what-is-a-stablecoin-api) covers how that abstraction works.

## What is USDC used for in payments?

For businesses, USDC is mostly plumbing, not a product. It shows up in three patterns: cross-border payouts, where a company converts fiat to USDC, sends it in minutes, and a local provider converts it back to reais, pesos, or another currency over rails like Pix or SPEI; dollar collection, where a company outside the US receives US bank transfers that settle as USDC automatically; and treasury movement, shifting working capital between entities same-day instead of pre-funding accounts in every country. The mechanics of that first pattern are covered in our [stablecoin payments guide](/resources/more/stablecoin-payments-guide).

USDC also competes with USDT (Tether) for payment volume; USDC tends to be preferred by US-regulated businesses for its reserve transparency, while USDT has broader liquidity in some markets. Regulation is converging on requiring exactly the disclosures Circle already publishes: the EU's MiCA and the US GENIUS Act both mandate reserve backing and redemption rights for payment stablecoins, tracked in our [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## How does BlindPay fit in?

[BlindPay](/global-payments) moves USDC (and USDT) between fiat currencies and local bank rails: Pix in Brazil, SPEI in Mexico, ACH and wire in the US, and more across 100+ countries. A business never has to hold a wallet or manage a blockchain node; BlindPay handles conversion, compliance, and delivery behind one API call. Live rates are public, for example [USDC to BRL](/usdc-to-brl), and the full picture of what the API covers is in our [more resources hub](/resources/more).

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

---

Source: https://blindpay.com/resources/more/stablecoin-api-pricing-explained

---
title: "Stablecoin API pricing: mint fees, spread, and what you actually pay"
seoTitle: "Stablecoin API pricing: mint fees, spread, and what you actually pay"
description: "The basis-point figure on a stablecoin provider's pricing page rarely matches the invoice, because mint fees, burn fees, spread, and issuer fees usually live below the line the marketing page shows."
date: "2026-08-31"
category: "stablecoins"
faq:
  - q: "What pricing models do stablecoin API providers actually use?"
    a: "A volume-tiered take rate charges a percentage of each transaction that compresses as monthly volume grows. Per-transaction-plus-gas charges a flat or small fee per call and passes network gas through separately, so cost swings with whichever chain a transfer settles on. A flat enterprise contract sets a negotiated monthly or annual fee regardless of volume, common with larger platforms serving bigger institutional clients. Which one is cheapest depends entirely on volume and how predictable the bill needs to be."
  - q: "What does Zero Hash charge to mint versus redeem a stablecoin?"
    a: "Zero Hash's published fee schedule shows exactly this asymmetry: minting, turning fiat into stablecoin, costs 0 basis points across the seven stablecoins it lists, while turning USDC back into fiat costs 5 basis points on every network Zero Hash supports. An issuer wants stablecoin supply to grow, so minting carries no built-in friction. Redemption is the step that costs the issuer money to process, since it means converting the token back into real dollars, and that's where the fee sits."
  - q: "Which fields does Zero Hash break out in a quote response?"
    a: "Zero Hash's API returns issuer_fee_rate, issuer_fee_amount, spread_notional, and spread_bps as four distinct fields in every quote, rather than folding everything into one blended rate. A single blended number doesn't show whether a rate move next quarter comes from the issuer fee, which the platform doesn't control, or from the platform's own spread, which it does. That distinction is invisible without the itemized breakdown."
  - q: "What four variables need to match before comparing two providers' pricing?"
    a: "Hold the notional amount, the day (FX and spread move daily), the settlement network (gas depends on chain and congestion), and the fee breakdown constant, then compare itemized numbers rather than blended totals. Almost no provider publishes a dated quote that could be reproduced later, which is what makes this hard rather than just inconvenient. Ask each provider for a live quote against the same amount and pair on the same day, and insist on separate issuer fee, spread, and network cost figures before comparing the total."
  - q: "Is a lower advertised basis-point rate always the cheaper option?"
    a: "A provider advertising 20 basis points but charging a separate redemption fee, a wider spread on the FX leg, and gas as a pass-through can land above a provider quoting 40 basis points all-in with nothing else attached. The headline number alone doesn't show which one that is. Request the itemized breakdown for the actual corridor and volume before comparing totals."
  - q: "Does BlindPay require pre-funding before it will quote or settle a payment?"
    a: "BlindPay returns a live FX quote with the spread and payout fee itemized separately and settles without requiring capital held in advance in a destination account. That's a structural difference from providers that need funds pre-positioned in local accounts before a payout can clear."
---

A mint fee of zero looks generous until the redemption fee shows up three lines down the same schedule. Zero Hash's own fee schedule is the clearest public example of why a headline rate and the actual invoice rarely match.

## Stablecoin API pricing comes in three shapes

A 2026 comparison of major providers, a support-article listicle rather than an industry report or any single company's own pricing page, groups [stablecoin API pricing into three shapes](https://eco.com/support/en/articles/15232572-best-stablecoin-settlement-apis-2026-sla-guarantees-audit-trails-and-reconciliation-compared): volume-tiered take rate, per-transaction-plus-gas, and flat enterprise contract.

BlindPay publishes itemized quotes per corridor instead of a blended rate or a sales-only contract; see the [pricing page](/pricing) for the current numbers.

Volume-tiered take rate is what most consumer-facing platforms use: a percentage per transaction that compresses as monthly volume grows. This shape rewards scale and punishes small integrations, since a low-volume developer pays near the top of a provider's published range while a large one negotiates down.

Circle prices closer to a flat per-call fee, with network gas passed through separately as its own line, a shape usually called per-transaction-plus-gas. The effective rate depends on network congestion as much as on the provider's own pricing sheet, and it can swing week to week for reasons that have nothing to do with the integration itself.

Flat enterprise contract is the shape Eco, BVNK, and Fireblocks lean toward for larger customers: a negotiated monthly or annual fee independent of transaction count, with the number only surfacing after a sales conversation, which makes it the least useful shape for a developer trying to compare options early.

None of these is objectively cheaper. A high-volume payments company probably wants the tiered rate because it compresses with scale. A team running unpredictable, spiky volume through a handful of chains might prefer the gas-plus-fee model because it doesn't punish quiet months. What matters is knowing which shape is being quoted before comparing it to anything else: a 0.3 percent take rate and a "$0.02 per call plus gas" quote aren't the same kind of number, and they don't compress the same way as volume grows.

## Why does minting cost nothing but redeeming cost something?

[Zero Hash's documentation](https://docs.zerohash.com/docs/issuer-fees) lists 0 basis points to mint across seven supported stablecoins: DAI, TUSD, USDC, USDT, USDP, PYUSD, and RLUSD. Minting, in plain terms, is depositing fiat and receiving stablecoin back. It's free at the issuer level across the board.

Burning is the reverse: converting the stablecoin back into fiat, and that's where the fee shows up. Zero Hash charges 5 basis points specifically on USDC redemption, across every network it supports. The platform sitting on top of Zero Hash can then layer its own spread on top of that issuer fee, the docs' own worked examples run anywhere from 10 to 50 basis points depending on the scenario, and can choose whether to pass the issuer fee to the end customer or absorb it.

An issuer wants stablecoin supply to grow, so there's no reason to tax the deposit side. Redemption is the step that actually costs money to process on the issuer's end, since it means converting the token back to fiat and moving real dollars, so that's where the fee sits. Comparing only the mint-side rate a provider quotes means comparing the free half of the transaction and ignoring the half that actually costs something. This is the same asymmetry that makes [stablecoin API](/resources/more/what-is-a-stablecoin-api) pricing pages harder to read than they look: the number on the landing page is usually the cheap half of the flow.

## What should a quote response actually itemize?

Zero Hash's quote response returns issuer_fee_rate, issuer_fee_amount, spread_notional, and spread_bps as four separate fields. That's the standard worth asking every provider to match: it's the only way to tell what's actually changing when a rate moves. If a provider raises its take rate next quarter, an itemized quote shows whether that's the issuer fee moving (out of the platform's control) or the platform's own spread widening (very much in its control).

One blended rate doesn't automatically mean overcharging. It might be cheaper. But that's not verifiable from the API response alone, and there's no way to build alerting or reconciliation against a number that can't be decomposed. Zero Hash's docs also note that the only supported settlement_type is "STANDARD," described as instant settlement, so at least on that provider there's no separate tier to price against: the itemization is about fees more than settlement speed.

## How do you compare two providers on the same corridor, same day?

Almost nobody publishes a dated, reproducible quote for a specific corridor and a specific amount. Pricing pages show ranges, sales calls produce numbers that expire the moment the call ends, and aggregator comparisons average across providers in ways that erase exactly the detail that matters for a given integration. Conduit's FX pricing is sometimes cited around 10 basis points in industry writeups, and even that number comes through a third-party aggregator rather than a dated quote that could be reproduced directly. That figure could not be independently verified against Conduit's own current pricing documentation, which is itself the point: transparent, reproducible pricing is rare enough in this space that even finding a citable number takes real digging.

A real comparison holds the same notional amount, the same day (FX and spread both move daily), the same network the transfer settles on (gas depends on chain and congestion), and itemized fees rather than a blended total. Without holding all four constant, the comparison is really between marketing copy from different months. The [best stablecoin APIs comparison](/resources/more/best-stablecoin-apis-2026) applies this same standard across providers side by side.

## Get an itemized quote instead of a headline rate

A BlindPay quote splits the FX spread from the payout fee into two numbers, showing what the conversion costs and what the transfer costs separately, and which one moved when a rate changes. There's no pre-funding requirement sitting underneath any of it, either: no capital needs to sit parked in a destination account before a payout clears, which erases trapped capital as a cost, something a lot of pricing comparisons skip because it never shows up as a line item at all.

For a corridor like [USDC to BRL](/usdc-to-brl), or for payin and payout flows more broadly, the [getting started guide](/docs/introduction) walks through what a live quote actually returns, field by field. Pull a same-day quote against the real volume and corridor before trusting any published rate, including this one, and to get the fees broken out against a real amount, [talk to us](/contact).

---

Source: https://blindpay.com/resources/more/why-are-cross-border-payments-slow

---
title: "Why are cross-border payments slow? Where the days go in an international wire"
seoTitle: "Why are cross-border payments slow? Where the days go"
description: "Most SWIFT payments reach the destination bank within an hour. The days go to cut-offs, correspondent hops, compliance checks, and local crediting."
date: "2026-08-31"
updated: "2026-08-31"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Why do international wire transfers take so long?"
    a: "Because a wire passes through several banks that each work on their own hours. Cut-off times, weekends, time zones, correspondent banks, sanctions screening, currency conversion, and the receiving bank's own crediting process all add waiting time. The message itself moves fast; the money waits at each stop."
  - q: "How long does a SWIFT transfer take?"
    a: "Anywhere from minutes to several business days. Swift reported in October 2024 that 90% of cross-border payments on its network reach the destination bank within an hour, but only 43% reach the end customer's account within an hour. The U.S. Faster Payments Council puts traditional cross-border settlement at 1 to 10 days."
  - q: "Why aren't international payments processed on weekends?"
    a: "Most banks and the settlement systems behind them run on business days. A wire sent after the Friday cut-off waits for Monday at each bank that touches it, and a holiday in either country adds another day. Stablecoin networks run 24/7, but the bank transfers at each end still follow banking hours."
  - q: "Are stablecoin payments faster than SWIFT?"
    a: "The cross-border leg usually is. A stablecoin transfer settles on-chain in seconds to minutes, any day of the week, with no correspondent banks in the middle. The total time still depends on how the payment is funded and paid out: an instant local rail like Pix or SPEI keeps it fast, while ACH or SWIFT at either end brings back cut-offs."
  - q: "What is a correspondent bank?"
    a: "A bank that holds accounts for other banks so they can make payments in a currency or country where they have no direct presence. A cross-border payment can pass through one or more correspondents before it reaches the recipient's bank, and each one adds processing time, screening, and sometimes a fee."
---

Cross-border payments are slow because the money has to wait at every bank it passes through. The payment message moves in minutes, but each bank in the chain works on its own cut-off times, business days, and time zone, screens the payment for sanctions, and may convert currency or hold it for missing data. The last bank then has to credit the recipient, which is often the slowest step of all.

It's an architecture problem, not a speed problem. Nothing in the chain is slow on purpose. The chain is just long, and most of it closes at night.

## How long does an international payment actually take?

It depends on which part you measure. Swift reported in [October 2024](https://www.swift.com/news-events/press-releases/swift-cross-border-payment-processing-speed-stretches-further-ahead-g20-target) that 90% of cross-border payments on its network reach the destination bank within an hour. Only 43% reach the end customer's account within an hour.

That gap is the story. The interbank leg got fast. The last mile, from the receiving bank to the account, didn't.

End to end, the range is wide. The U.S. Faster Payments Council's [July 2026 report on stablecoins for cross-border payments](https://fasterpaymentscouncil.org/userfiles/2080/files/CBPWG_DAWG_Stablecoins%20as%20a%20Cross-Border%20Payment%20Method2_07-22-2026%20Final.pdf) puts traditional cross-border settlement at 1 to 10 days, with international wire fees of up to $50 depending on the business's relationship with its bank.

## Where do the days go?

Six things add waiting time. Most payments hit at least three of them.

| Delay | What happens | Typical cost in time |
| --- | --- | --- |
| Cut-offs and business hours | A payment sent after a bank's daily cut-off waits for the next business day | Hours to a full weekend |
| Time zones | The sending bank's afternoon is the receiving bank's night | Up to a business day |
| Correspondent hops | Each intermediary bank processes the payment on its own schedule | Hours to days per hop |
| Compliance screening | Sanctions and AML checks at each bank, plus holds for missing or unclear data | Minutes to weeks |
| Currency conversion | FX is executed somewhere in the chain, often during that desk's trading hours | Hours |
| Local crediting | The receiving bank books the funds to the customer's account, sometimes after manual checks | Minutes to days |

### Cut-offs, weekends, and time zones

Every bank sets a daily cut-off for outgoing international payments, and the settlement systems behind them only run on business days. A US bank might stop accepting same-day SWIFT instructions mid-morning Eastern time. Miss it and the payment leaves tomorrow.

Now add a second country. A payment from New York to Singapore that leaves at the end of the US business day arrives in the middle of the Singapore night. A Friday payment can sit through two weekends if the countries don't share one, and a holiday on either side adds a day. Nobody made a mistake. The calendars just don't line up.

### Correspondent banks

Most banks don't hold accounts with every other bank in the world. To pay into a country where it has no presence, a bank routes through a correspondent that does, and sometimes through two. Each correspondent holds pre-funded accounts, called nostro and vostro accounts, in the currencies it serves.

Every hop is another queue, another screening, and another chance for a fee to come off the top. The mechanics of those pre-funded accounts, and why they trap capital, are in [correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity).

### Compliance checks and repairs

Each bank in the chain screens the payment against sanctions lists and its own AML rules. Most payments pass in seconds. A name that partially matches a sanctioned party, a missing beneficiary address, or a vague payment purpose can stop the payment until someone reviews it or asks for more information.

This is where the long tail lives. A payment that clears automatically takes minutes. One that needs a human can take days. Structured data helps: Swift's move to ISO 20022 messages, with the coexistence period for cross-border payment instructions ending in November 2025, gives banks cleaner name and address fields and fewer payments to repair by hand.

### Currency conversion

Somebody has to convert the currency. It might be the sending bank, a correspondent, or the receiving bank. For major pairs this is quick. For less-traded currencies, conversion can depend on a specific desk's hours or on liquidity in that market, which adds time and usually a wider spread. [What is a liquidity market](/resources/more/what-is-a-liquidity-market-cross-border-payments) explains where that liquidity comes from.

### The last bank

The receiving bank has to credit the account. Swift's data shows this is the step with the widest variation between countries. Delays come from local market infrastructure hours, local regulation, and practices like checking with the customer that a payment was expected and confirming the final amount before crediting it.

## Why doesn't payment tracking make it faster?

Because tracking shows you where the payment is, not how to move it. Swift gpi gives each payment a unique end-to-end reference, the UETR, so every bank in the chain can report status against it. That ended the era of "we sent it, we don't know where it is." It didn't remove the cut-offs, the hops, or the manual checks.

Visibility still matters. A finance team that can see a payment sitting at a correspondent can chase it. A team that can't just waits.

## What are the G20 targets for cross-border payments?

The G20's roadmap for cross-border payments sets targets for the end of 2027. For speed, the goal is 75% of cross-border payments credited within one hour and the rest within one business day. For cost, the goal is a global average of no more than 1% for retail cross-border payments.

Progress is slow. The Financial Stability Board's [October 2025 progress report](https://www.fsb.org/2025/10/g20-roadmap-for-cross-border-payments-consolidated-progress-report-for-2025/) found that the speed of wholesale payments and remittances improved, but average costs stayed sticky, and that there is "still much distance to cover" to reach the targets.

## What changes when the cross-border leg is a stablecoin?

A stablecoin changes the architecture of the middle of the payment. Instead of hopping between correspondent banks, value moves on a blockchain between two parties in seconds to minutes, any day of the week. There's one settlement asset, one shared record of the transfer, and no correspondent in between.

| Delay | Does a stablecoin leg remove it? |
| --- | --- |
| Correspondent hops | Yes. Value moves directly on-chain |
| Time zones and weekends in the middle | Yes. Blockchains don't close |
| Pre-funded accounts in each country | Mostly. One stablecoin balance replaces a set of local nostro accounts |
| Currency conversion | No. FX still happens, at the on-ramp or the off-ramp |
| Compliance screening | No. KYC, KYB, sanctions, and monitoring still run |
| Cut-offs on the fiat legs | No. Bank transfers in and out keep their own hours |

The FPC report is blunt on the compliance point: requirements "are the same for stablecoins as for cash-based payments and could be far greater." A stablecoin removes waiting time. It doesn't remove checks. For how the on-chain leg works, see [blockchain payments explained](/resources/more/what-are-blockchain-payments).

## Where is a stablecoin payment still slow?

At the fiat edges. A stablecoin payment usually starts and ends in a bank account, and those legs run on bank rails.

- **Funding.** An ACH deposit takes 1 to 3 business days. A domestic wire settles the same business day if it beats the cut-off.
- **Payout.** Pix in Brazil and SPEI in Mexico pay out in minutes, 24/7. A SWIFT payout can still take up to 5 business days, because it's a SWIFT payment.
- **Compliance holds.** A first withdrawal, an unusual amount, or a possible watchlist match can put any payment on hold for review, stablecoin or not.

So the fastest cross-border flows pair a stablecoin in the middle with instant rails at both ends. [How long does a stablecoin payout take](/resources/more/stablecoin-payout-settlement-times) lists the times by country, and [stablecoin API SLAs and settlement finality](/resources/more/stablecoin-api-sla-settlement-finality) explains what "settled" actually means at each step.

## How does BlindPay handle the slow parts?

BlindPay moves the cross-border leg in stablecoins and connects it to local rails at the edges. Payouts over Pix, SPEI, and Argentina's Transfers settle in minutes, including weekends, and RTP payouts in the US are instant. Where a slower rail is the only option, the cut-offs are published: 9:00 PM ET for ACH, 3:00 PM ET for domestic wires, and 10:30 AM ET for SWIFT, as listed in [cut-off times](/docs/kb/cut-off-times).

International wires run as SWIFT payments and collections on behalf of your customers (POBO/COBO), with UETR tracking and MT103 confirmations, so a finance team can see where each payment is. The setup is in [POBO and COBO](/docs/kb/pobo-cobo). Payouts don't need pre-funding: a quote locks the rate for a few minutes and the payout executes against it, covered in [no pre-funding stablecoin payouts](/resources/more/no-pre-funding-stablecoin-payouts).

Compliance runs in the flow too. Customers are verified before their first transaction, and a payout that needs review shows up as a status with a webhook, not a wire that disappears for a week. If you're debugging a slow payout today, [common stablecoin payout mistakes](/resources/more/stablecoin-payout-mistakes) covers the cut-off and paperwork issues that cause most of them.

## What should you do next?

Pull your last 50 international payments and write down when each one was sent, when it reached the recipient, and which of the six delays above it hit. The pattern usually points at one or two causes. If it's correspondent hops and weekends, a stablecoin leg with instant local payouts fixes most of it. If it's compliance holds, better data at onboarding does. For the bigger picture, start with [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

---

Source: https://blindpay.com/resources/more/virtual-accounts-cross-border-payments

---
title: "Virtual accounts for cross-border payments: use cases, payment rails, and costs"
seoTitle: "Virtual accounts for cross-border payments"
description: "How virtual accounts let payers abroad pay a local-style account, which rails collect and pay out, what drives the cost, and five questions to ask."
date: "2026-08-30"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Which countries can use a US virtual account for cross-border payments?"
    a: "Two sets of countries matter: where your customer is, and where the payer is. At BlindPay, some account types serve US customers and others serve non-US businesses from supported countries, and senders can be in the US, abroad, or both depending on the account type. Payouts reach 100+ countries. Sanctioned countries are blocked at customer creation."
  - q: "Can a virtual account receive SWIFT payments?"
    a: "Yes, if the account type supports it. At BlindPay, US virtual accounts receive international SWIFT wires, and SWIFT deposits in fact require an approved virtual account, because there is no memo-code fallback for international wires. The deposit reports the sender's name, bank, account number, and reference, so the receiver can match it without asking who paid."
  - q: "How is FX handled when a virtual account settles in stablecoins?"
    a: "A USD deposit settling into USDC or USDT needs no currency conversion, because both are dollar stablecoins. If the payer's account is in another currency, their bank converts it before sending the wire, at its own rate. FX happens again only when stablecoins pay out into local currency, and at BlindPay a payout quote locks the rate and fees for 5 minutes."
  - q: "Do I need a local entity to receive payments into a US virtual account?"
    a: "Not always. BlindPay issues US virtual accounts to non-US businesses on eligible account types, subject to the customer's country and the banking partner, so a company in Brazil or Mexico can receive US payments without opening a US entity. The customer still passes KYB and the account still goes through compliance and bank review."
  - q: "Does the payer need to know anything about stablecoins?"
    a: "No. The payer sees a normal bank account: a routing and account number for US transfers, or SWIFT details for international wires. They pay it the way they pay any supplier. The conversion into USDC or USDT happens after the deposit lands, on the receiver's side."
---

Virtual accounts simplify cross-border payments by giving payers bank details that look local to them. A US client pays by ACH, a foreign client pays by SWIFT, and both send money to an account in the receiver's name. The receiver collects centrally, often in stablecoins, and pays out locally from the same balance.

The payer's experience barely changes. Everything interesting happens after the deposit.

## Key takeaways

- A virtual account turns "open a bank account in every country your payers are in" into "issue an account number."
- Collection and payout are two separate rail choices. Most cross-border cost hides in the gaps between them.
- Settling collections in stablecoins means no pre-funded balances per corridor: the same dollars fund the next payout.
- Local collection in Latin America (Pix, SPEI) works through per-payment instructions, not virtual accounts. Know which is which.

## How do virtual accounts simplify cross-border payments?

A virtual account removes the need for the receiver to hold a bank account in the payer's country. The payer pays a local-looking account over a rail they already use. The provider routes the funds to the right customer and settles them where the business needs them.

Take a design studio in São Paulo with US clients. Without a virtual account, each client sends an international wire to a Brazilian bank: correspondent banks, deductions in transit, days of waiting. With a US virtual account in the studio's name, the clients pay by ACH or domestic wire, exactly like paying a US supplier. The studio receives dollars in the form of USDC, then converts to reais over Pix when it wants to.

The concept is covered in [what is a virtual account](/resources/more/what-is-a-virtual-account). This page is about the cross-border part.

## Which payment rails matter, and in which direction?

Each rail either collects money, pays it out, or both, and a provider may support a rail in one direction only. The table shows typical network speeds (provider processing adds time) and how BlindPay uses each rail.

| Rail | Where | Typical network speed | Collect at BlindPay | Pay out at BlindPay |
| --- | --- | --- | --- | --- |
| ACH | United States | 1 to 3 business days; same day with Same Day ACH | Yes, into a virtual account | Yes |
| Domestic wire | United States | Same business day | Yes, into a virtual account | Yes |
| SWIFT | Global | Up to 5 business days | Yes, requires a virtual account | Yes, minimum 100 USD |
| RTP | United States | Seconds, 24/7 | Yes, through payment instructions, not a virtual account | Yes |
| SEPA | Euro area | Within one business day; seconds for SEPA Instant | No | Yes, in EUR |
| Pix | Brazil | Seconds, 24/7 | Yes, through a Pix code per payment | Yes |
| SPEI | Mexico | Seconds to minutes, 24/7 | Yes, through a CLABE per payment | Yes |

Sources for the network speeds: the [Federal Reserve on Same Day ACH](https://www.frbservices.org/resources/resource-centers/same-day-ach), the [European Payments Council on SEPA Instant](https://www.europeanpaymentscouncil.eu/what-we-do/sepa-instant-credit-transfer), the [Banco Central do Brasil on Pix](https://www.bcb.gov.br/en/financialstability/pix_en), and BlindPay's own [cut-off times](/docs/kb/cut-off-times) for ACH, wire, and SWIFT windows. Cut-offs push late transfers to the next business day.

The pattern: in the US, virtual accounts collect. In Brazil and Mexico, collection runs on a Pix code or CLABE generated per payment, since those rails are instant and push-based already. Payouts work everywhere on the list.

## What are the main cross-border use cases?

Five use cases account for most cross-border virtual account demand.

- **Remittance.** A sender in the US funds a transfer by ACH into their own virtual account. The funds settle as stablecoins and pay out over Pix or SPEI to family abroad in minutes.
- **Payroll and contractors.** A client company funds payroll into its virtual account by wire. Contractors in Latin America get paid in local currency over local rails, without the company holding pesos or reais.
- **Import and export.** An exporter in Mexico gets a US virtual account so US buyers can pay invoices domestically. The exporter converts to MXN over SPEI when it needs to pay suppliers.
- **Marketplaces.** Each seller is onboarded, verified, and gets an account in their own name. Buyer payments land already attributed, and sellers are paid out on their local rail.
- **Latin America payouts.** A US platform collects dollars from its customers and pays thousands of recipients across Brazil, Mexico, Argentina, and Colombia from one stablecoin balance.

One rule runs through all of these: every party whose money moves through an account must be an onboarded customer. A marketplace can give each verified seller an account. It can't collect for unverified sellers through one master account. That's nesting, and BlindPay doesn't allow it ([nested payments](/docs/kb/nested-payments)).

## How does the collect-and-pay-out loop work?

The loop has money coming in through a virtual account and going out through a local payout, with stablecoins in the middle as the settlement layer.

1. **Collect.** The payer sends USD by ACH, wire, or SWIFT to your customer's virtual account.
2. **Settle.** The deposit converts to USDC or USDT and lands in the customer's wallet. Each deposit is its own payin.
3. **Quote.** When it's time to pay someone, request a payout quote for the destination bank account. It locks the rate and fees for 5 minutes.
4. **Pay out.** Execute the payout. The stablecoins convert to local currency and go out over Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), or another local rail.
5. **Confirm.** Webhooks report each step on both sides, so your ledger matches the deposit on one end with the payout on the other.

At BlindPay, both directions are one integration. The industry terms for them come from corporate treasury. Collecting into an account in your customer's name is collection on behalf of (COBO). Paying out under their name is payment on behalf of (POBO). When a SWIFT wire lands, the payin carries `sender_name`, `sender_bank_name`, `sender_account_number`, and `transaction_reference`, so your customer's receivables can be matched without a follow-up email ([POBO and COBO](/docs/kb/pobo-cobo)).

For the payout half in one market, [how to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) walks through it end to end.

## What drives the cost of a cross-border payment?

Five things drive the cost, and most of them are invisible on the invoice.

- **FX spread.** The gap between the rate you get and the mid-market rate. It's often the biggest cost and the least visible, because it's baked into the rate.
- **Intermediary bank fees.** On SWIFT, correspondent banks between the sender and receiver can take a fee in transit. The charge code on the wire decides who pays: OUR (sender pays all), SHA (shared), or BEN (beneficiary pays). With SHA or BEN, the amount that arrives is less than the amount sent.
- **Network and rail fees.** Wire fees at both banks, ACH fees, and on-chain network fees for the stablecoin leg. On networks like Solana or Polygon, the on-chain fee is usually a fraction of a cent.
- **Pre-funding.** Holding a balance in each destination currency so payouts can go out fast. That capital sits idle, exposed to FX moves, and grows with volume.
- **Provider fees.** Per-account, per-deposit, and per-payout fees. Ask for them itemized.

Two things take friction out. **No pre-funding** means each payout is funded when it's sent, from the stablecoins the collection already delivered, so no money is parked per corridor. **Live quotes** show the exact rate, fee, and amount the recipient gets before you commit, so the FX spread stops being a surprise. [No pre-funding for stablecoin payouts](/resources/more/no-pre-funding-stablecoin-payouts) and [correspondent banking vs stablecoin liquidity](/resources/more/correspondent-banking-vs-stablecoin-liquidity) go deeper on both.

## What should you ask a virtual account provider for cross-border payments?

Five questions, in writing, before you commit:

1. **Which rails can collect into the account, and from which countries?** ACH-only accounts can't take a wire from a client in Germany.
2. **Whose name will the payer see?** Named accounts in your customer's name are easier for foreign payers and their compliance teams to accept.
3. **What does a deposit report about the sender?** Sender name, bank, and reference on every wire save a lot of support time.
4. **How do payouts work from the same balance?** One integration for both directions beats stitching two providers together.
5. **Is pre-funding required, and are quotes itemized?** If you have to park money per corridor, or can't see the fee before you send, the cost is higher than it looks.

## Where does BlindPay fit?

[BlindPay](/virtual-accounts) issues US virtual accounts in your customer's name that receive ACH, wire, and SWIFT and settle automatically to USDC or USDT. The same API pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with UETR tracking and MT103 confirmations on SWIFT, live quotes, no pre-funding, and KYC, KYB, and sanctions screening in the flow.

## What to do next

Pick your largest cross-border inflow and trace one payment: the rail it used, the charge code, and the amount sent versus the amount that arrived. That gap is what a virtual account plus a local payout should close. Then create a test account on a free development instance with [create a virtual account](/docs/virtual-accounts-create), and check the [POBO and COBO guide](/docs/kb/pobo-cobo) for what your customer's payers will see.

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

---

Source: https://blindpay.com/resources/more/stablecoin-payout-mistakes

---
title: "Common stablecoin payout mistakes: wrong network, expired quotes, and bad bank details"
seoTitle: "Stablecoin payout mistakes: wrong network, expired quotes"
description: "The mistakes that make stablecoin payouts fail or stall: wrong network or token, expired quotes, deposits below minimums, bad bank details, and cut-offs."
date: "2026-08-29"
updated: "2026-08-29"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What happens if I send USDC on the wrong network?"
    a: "It depends on who controls the receiving address on that network. On EVM chains the same address format works everywhere, so a transfer on the wrong chain usually lands at the same address on a chain nobody is watching. If the receiver controls that key there, the funds can be moved back; if not, recovery may be slow or impossible. Always confirm the network and the token contract before you send."
  - q: "Is USDC available on Tron?"
    a: "Not as native USDC. Circle does not issue USDC on Tron, so a payout API that settles on Tron takes USDT there. On BlindPay, USDC is not deployed on Tron, and USDT is not available on Base, Arbitrum, or Stellar. The quote endpoint rejects unsupported token and network pairs with a descriptive error."
  - q: "Why did my stablecoin payout quote expire?"
    a: "Quotes lock a rate and fees for a short window, 5 minutes by default on BlindPay and sometimes less for SEPA. If the payout is created after that, the quote is dead and you need a new one. A common bug is reading expires_at as seconds when it is returned in epoch milliseconds."
  - q: "Does a failed stablecoin payout refund automatically?"
    a: "Not always. On BlindPay, a refunded payout returns the stablecoins to the wallet that funded it right away. A failed payout does not refund automatically and needs a support request. Fiat refunds wait for the bank to return the funds and can carry fees."
  - q: "Why is my payout to a US bank account taking until Monday?"
    a: "Because the fiat rail has business hours even when the blockchain does not. ACH, domestic wires, and SWIFT process on business days with daily cut-offs, so a payout created after the cut-off on a Friday moves on the next business day. Pix in Brazil and SPEI in Mexico run 24/7, so they don't have this problem."
---

Most stablecoin payouts that fail don't fail on-chain. They fail at the edges: a token sent on a network the provider doesn't support, a quote that expired while someone clicked "confirm", a deposit smaller than the fee, a bank account with one wrong digit, or a US rail that closed for the weekend. Each one is preventable with a check you can write before go-live.

This is the list we'd hand to any team shipping its first payout integration. Every item has shown up in real integrations.

## Mistake 1: sending a token on the wrong network

A stablecoin is a token contract on a specific blockchain. "USDC" on Ethereum and "USDC" on Solana are different contracts, and a payout API accepts only the combinations it supports. Two facts catch people most often:

- **USDC doesn't exist on Tron.** Circle doesn't issue it there. If your treasury sits in USDT on Tron, settle that way or convert first.
- **USDT isn't on every chain your provider supports.** On BlindPay, USDT isn't available on Base, Arbitrum, or Stellar.

EVM chains add a trap. Ethereum, Polygon, Base, and Arbitrum all use the same `0x` address format, so a wallet will happily send to the right address on the wrong chain. The funds land at that address on a network the receiver isn't watching. Whether they come back depends on who holds the private key there.

Check the contract, not the ticker. Several chains carry both native USDC and an older bridged version, and a payout API expects the native one. [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) covers which token fits which flow, and [what happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) shows what the transfer actually does.

## Mistake 2: mixing test and production

Development and production are separate worlds, and the token tells you which one you're in. On BlindPay, a development instance uses USDB, a test stablecoin, on testnets. A production instance uses USDC or USDT on mainnets. A mismatched pair, like USDC on Sepolia or USDB on Polygon, is rejected.

Two consequences:

- Config that works in development can't be pointed at production by swapping the API key alone. The network names and tokens change too.
- Tron has no testnet, so a Tron flow can't be exercised on a development instance at all. Plan a small, supervised first payout in production.

[Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) lists the other things a sandbox won't show you.

## Mistake 3: letting the quote expire

A payout quote locks the exchange rate, the fees, and the exact amount the recipient gets. It also has a short life. On BlindPay a payout quote lasts 5 minutes by default, and SEPA quotes can be shorter because the rail's own deadline is tighter.

The bugs we see:

1. **Wrong time unit.** `expires_at` is epoch milliseconds. Treat it as seconds and your code thinks the quote expires decades from now.
2. **Human approval in the middle.** A quote created, then sent to a finance approver who clicks 20 minutes later. Create the quote after approval, not before.
3. **Reusing a quote.** One quote backs one payout. A second payout with the same quote fails. Retry with a new quote, and use an [idempotency key](/resources/more/stablecoin-api-idempotency-keys) so a network retry can't send the payout twice.

[Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) covers fee direction and minor units, the other two places quote math goes wrong.

## Mistake 4: deposits below the minimum

Some flows have floors that aren't obvious until money is stuck under them.

| Situation | Floor on BlindPay | What goes wrong below it |
| --- | --- | --- |
| Offramp wallet on Tron | 200 USDT minimum, 15 USDT fee per deposit | The deposit isn't converted into a payout |
| Offramp wallet on Solana | 50 USDC minimum | The deposit isn't converted into a payout |
| Offramp wallet on other supported chains | Must cover the fees | A deposit smaller than the fees isn't converted |
| SWIFT payout | 100 USD requested amount | The quote is rejected with `swift_minimum_is_100_usd` |

The offramp wallet case is the dangerous one. An offramp wallet is a deposit address that converts every incoming transfer into a bank payout. Nobody calls an API to trigger it, so there's no API call to return an error either. A 20 USDT test deposit on Tron just sits there. Tell whoever pays into the address what the minimum is, and monitor for deposits that don't turn into payouts.

## Mistake 5: bad bank details

The stablecoin leg can be perfect and the payout still bounces because the bank side is wrong. The usual suspects:

- **Mexico:** a CLABE with a typo. CLABEs are 18 digits with a check digit at the end, so validate it in your form before it ever reaches a payout.
- **Brazil:** a Pix key that belongs to a different person, or a phone key saved without the +55 country code.
- **US:** an ACH routing number used for RTP when the receiving bank isn't RTP-eligible.
- **Names:** a nickname or a company's trade name where the bank expects the legal name.

Validation should happen once, when the account is saved, not at 2 a.m. on payday. BlindPay validates bank account data on creation (format, length, country rules) the same way on development and production instances, so a bad CLABE fails in testing too. [How to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil) walks through verifying a receiver end to end.

## Mistake 6: forgetting that fiat rails keep business hours

The blockchain runs 24/7. Most of the banking world doesn't. A payout funded at 5 p.m. on a Friday can still wait until Monday, because the fiat rail is the slow part.

| Rail | Daily cut-off (ET) | Settlement |
| --- | --- | --- |
| ACH | 9:00 PM | 1 to 3 business days |
| Same-Day ACH | 3:00 PM | Same business day |
| Domestic wire | 3:00 PM | Same business day |
| International SWIFT | 10:30 AM | Up to 5 business days |
| Pix (Brazil) | None, runs 24/7 | Minutes |
| SPEI (Mexico) | None, runs 24/7 | Minutes |

Requests after a cut-off move to the next business day, and business days exclude weekends and US federal holidays. If your users expect Friday-night payouts, route them over rails that run on weekends, or tell them when the money will actually land. [How long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times) has the full table by country.

## Mistake 7: treating every terminal status as "done"

A payout ends in one of three states, and they mean different things for your ledger:

- **Completed.** The fiat landed. Mark it paid.
- **Refunded.** The stablecoins went back to the wallet that funded the payout instead of being converted. On BlindPay, stablecoin refunds process right away.
- **Failed.** The payout didn't complete. It does not refund automatically, and someone has to open a support request.

Code that treats "not completed" as "refunded" will show a balance that doesn't exist. Handle all three explicitly, alert on `failed`, and reconcile against webhooks instead of polling once and hoping. Fiat refunds on the payin side are slower: they wait for the bank to return the funds, and fees may apply.

## Mistake 8: skipping the paperwork on SWIFT payouts

SWIFT payouts carry more compliance than local rails. On BlindPay every SWIFT payout starts `on_hold`. If the bank account belongs to someone other than your customer, the payout also needs a document proving the relationship, such as an invoice, purchase order, or contract. If it's your customer's own account, the beneficiary name must match the customer, or the request fails.

Teams that don't plan for this see every international payout "stuck" on day one. Collect the invoice when you collect the payment request, and pass the invoice number with the payout. [Automating KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the onboarding side.

## What does a pre-launch checklist look like?

| Mistake | How to prevent it |
| --- | --- |
| Wrong network or token | Hardcode supported pairs, check the token contract, reject others in your UI |
| Test vs production mix-up | Keep network and token config per environment, not just the API key |
| Expired or reused quote | Quote after approval, parse `expires_at` as milliseconds, one quote per payout |
| Deposit below minimum | Publish minimums to payers, monitor deposit addresses |
| Bad bank details | Validate formats and check digits when the account is saved |
| Weekend and cut-off delays | Show the real arrival time per rail, prefer 24/7 rails where they exist |
| Status handling | Handle completed, refunded, and failed separately, reconcile on webhooks |
| SWIFT documents | Collect invoices up front, match first-party names exactly |

Most of these checks cost a few lines of code. Skipping them costs support tickets, and occasionally money. [How to choose an on/off ramp provider](/resources/more/how-to-choose-on-off-ramp-provider) has the tests to run on the provider side.

## How does BlindPay help catch these before they cost money?

BlindPay puts most of the guardrails in the API. Quote creation enforces the supported token and network pairs and returns a descriptive error instead of accepting a transfer it can't settle. Bank account data is validated on creation, on development instances too. Every payout reports its status through webhooks, from `processing` to `completed`, `failed`, or `refunded`.

The development instance lets you rehearse failure on purpose. Set a payout's `request_amount` to `66600` ($666.00) to force `failed`, or `77700` ($777.00) to force `refunded`, and make sure your ledger does the right thing with each. The full lists are in [supported chains](/docs/kb/supported-chains), [cut-off times](/docs/kb/cut-off-times), and [payouts](/docs/payouts).

Before you go live, run all three terminal statuses through your code in development, then send one small supervised payout per rail in production. For the full picture of how the pieces connect, start with [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

---

Source: https://blindpay.com/prompts/integrate-blindpay-wallet

---
title: "Integrate the BlindPay wallet"
description: "Hold customer stablecoin balances in BlindPay-custodied wallets: create the wallet, collect payins into it, pay out from it with no signing step."
date: "2026-08-28"
category: "integrations"
products: ["payins", "payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to build on the BlindPay wallet: BlindPay generates the address and holds the keys, so your customers get a balance inside your product with no browser wallet and no transaction signing.

## Prompt

```text
You are integrating the BlindPay wallet (the managed, BlindPay-custodied wallet) into my application: BlindPay creates and custodies a wallet per customer, and I move money through it with plain API calls, never with private keys or signatures on my side.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the managed wallets, payins, payouts, send, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Prerequisites: an approved customer (kyc_status "approved"). Managed wallets are in beta; support only the chains the docs list (Ethereum, Base, Polygon, Arbitrum, Solana) with USDC/USDT, and USDB on development testnets. Stellar and Tron are not supported for managed wallets; if I need those, fall back to blockchain wallets instead.
2. Create the wallet: POST /v1/instances/{instance_id}/customers/{customer_id}/wallets with network, name, and my database ID as external_id. BlindPay generates the address server-side. Persist both the id (bl_) and the address against my user record: payin quotes reference the id, payouts reference the address. A customer can hold up to 10 wallets; enforce that in my schema. Never confuse bl_ (managed wallet) with bw_ (blockchain wallet) when passing IDs into quotes or payouts.
3. Show the balance: GET /v1/instances/{instance_id}/customers/{customer_id}/wallets/{wallet_id}/balance. Treat this endpoint as the source of truth for available funds and check it before quoting any outbound movement.
4. Money in, two paths:
   a. Fiat payin: POST /v1/instances/{instance_id}/payin-quotes with wallet_id (not blockchain_wallet_id), then POST /payins/evm with the resulting payin_quote_id. Stablecoins settle into the wallet; confirm with payin.complete and wallet.inbound webhooks.
   b. Direct stablecoin deposit: share the wallet address; any USDC/USDT transfer on the matching network credits it and fires wallet.inbound. Warn users that deposits on the wrong chain are lost.
5. Money out, two paths:
   a. Fiat payout: POST /v1/instances/{instance_id}/quotes for a payout quote, then POST /payouts/evm with quote_id and the managed wallet's address as sender_wallet_address before expires_at. Because BlindPay custodies the wallet there is no ERC-20 approve and no signature step; the payout is a single call.
   b. Stablecoin transfer: POST /v1/instances/{instance_id}/transfer-quotes then POST /transfers to move funds to another wallet or external address. The transfer quote expires in 5 minutes, so quote and execute in one server-side sequence. Only USDC crosses chains (Circle CCTP v2 between Ethereum, Polygon, Base, Arbitrum); everything else needs the same network on both sides.
6. Drive state from Svix-verified webhooks (svix-id, svix-timestamp, svix-signature against the raw body): wallet.new on creation, wallet.inbound on deposits, payin.new/complete, payout.new/update/complete, transfer.new/complete. Reconcile every event back to my user via the bl_ ID or external_id.
7. Handle the unit mismatch explicitly: wallet.inbound reports amount scaled by 100 (100 means $1.00) while the balance endpoint reports the raw amount. Normalize both into one internal representation with a documented conversion, and never compare them directly.
8. Test end to end on a development instance: KYC auto-approves, USDB works on every dev testnet, and payout sentinel amounts verify all outcomes ($666.00 forces a failed payout, $777.00 forces a refunded one).

Constraints:
- API keys stay server-side; never expose instance or customer IDs in client code paths that don't need them.
- Amounts are integers in minor units everywhere; never use floating point for money.
- Idempotency on money movement: key payins, payouts, and transfers on my own transaction ID and check for an existing record before creating.
- wallet.inbound only fires for USDC and USDT; don't rely on it for other tokens.

Deliverables: wallet provisioning service with the bl_/address persistence, balance display wired to the balance endpoint, payin-to-wallet and payout-from-wallet flows, the transfer path with the 15-second quote handled, webhook handlers with unit normalization, and a passing end-to-end test on the development instance covering deposit, payout, failed, and refunded cases.
```

## How to use

1. Paste the prompt with your stack details and which chains you actually need.
2. Decide the wallet-per-customer model up front: one balance wallet per user is the common case; the 10-wallet cap matters only for multi-currency or multi-chain designs.
3. Run the sentinel-amount payout tests on a development instance before touching production; the unit mismatch between `wallet.inbound` and the balance endpoint is the most common reconciliation bug.

## Related docs

- [Managed wallets](https://blindpay.com/docs/wallets)
- [Payin with managed wallet](https://blindpay.com/docs/payin-managed-wallet)
- [Payout with managed wallet](https://blindpay.com/docs/payout-managed-wallet)
- [Send](https://blindpay.com/docs/send)
- [Store](https://blindpay.com/docs/store)

---

Source: https://blindpay.com/resources/more/how-to-choose-on-off-ramp-provider

---
title: "How to choose the best on/off ramp provider for your fintech app"
seoTitle: "How to choose the best on/off ramp provider for your fintech app"
description: "Six criteria for evaluating a crypto on/off ramp provider: corridor coverage, live quotes, fiat settlement speed, licensing, API quality, and liquidity depth. Each with concrete tests to run, a comparison table, and a scoring framework."
date: "2026-08-28"
updated: "2026-08-28"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "Is a crypto exchange a good on-ramp provider for a fintech app?"
    a: "Usually not. Exchanges are built for traders who hold balances on the exchange, not for apps that need fiat in and tokens out to a user's wallet through an API. Their APIs are trading APIs, their compliance is scoped to their own customers, and their fiat rails are limited to the countries where they hold banking. A dedicated on/off ramp provider is built for embedding."
  - q: "What is the best on/off ramp API?"
    a: "The best on/off ramp API for a given app is the one that covers its corridors with live executable quotes, settles fiat over instant local rails, holds the licenses those corridors require, and documents everything in an OpenAPI spec with a sandbox that behaves like production. No single provider wins every corridor, so score candidates against those criteria for your actual countries and volumes."
  - q: "What is the difference between an on-ramp provider and a crypto exchange?"
    a: "An on-ramp provider converts a fiat payment into tokens delivered to a wallet, or the reverse, as a service embedded in another product. A crypto exchange is a venue where users trade assets and hold balances in an account. An exchange may run an on-ramp for its own users, but it is not designed to be the conversion layer inside someone else's app."
  - q: "How long does it take to integrate an on/off ramp provider?"
    a: "A working sandbox integration covering onboarding, quoting, and payout takes one to two engineering weeks with a well-documented REST API. Going live takes longer because of compliance review on your side and the provider's, typically two to six weeks. Providers without an OpenAPI spec or without sandbox parity add weeks of back-and-forth to that estimate."
---

*Reading time: about 7 minutes.*

Six criteria decide whether an on/off ramp provider will work for a fintech app: the corridors it actually supports, whether it returns live quotes or batch rates, how fast fiat settles, which licenses it holds, how good the API is, and how deep its liquidity runs. Score every candidate on all six before looking at price.

## What corridors does the provider actually support?

A corridor is a specific pair: a fiat currency and rail on one side, a token and network on the other. A provider that lists "Brazil" may support Pix payouts in BRL but not Pix collection, or USDC on Polygon but not on Base. Coverage lists are marketing; corridors are what you integrate.

### How to test it

- Ask for the exact list of currency, rail, token, and network combinations, in both directions, as a machine-readable table rather than a map with flags.
- Ask which corridors are live in production today versus "coming soon", and how many customers transact on each.
- Run a sandbox quote on each corridor you need and confirm the response includes a real rate, not a placeholder.

A good answer is a published coverage page that names rails and networks per country, and a sandbox that returns quotes on every corridor you plan to ship.

## Does the provider offer live quotes or batch rates?

A live quote is a rate determined at the moment of the request, returned with a quote ID and an expiry, and honored on confirmation. A batch rate is a cached rate refreshed on a schedule, with the difference absorbed either by the provider's spread or by your user at settlement.

Batch rates are not acceptable for consumer-facing products. If the rate on the confirmation screen is not the rate that settles, every rate move becomes a support ticket or a hidden fee.

### How to test it

- Request two quotes ten seconds apart on a volatile corridor such as USDC to ARS and check whether the rate changed.
- Confirm the quote response includes a quote ID and an expiry timestamp, and that the transaction endpoint requires that ID.
- Submit a transaction with an expired quote ID in the sandbox and check that it is rejected with a specific error code.

A good answer is a synchronous quote endpoint that returns rate, fee, quote ID, and expiry in one response, with the rate held for a stated window. Providers with their own liquidity, BlindPay among them, can do this because the quote comes from their own book rather than a partner's cache.

## How fast does fiat actually settle?

The on-chain leg is fast on every provider. Fiat settlement is where providers differ, and it is set by the rail and by how the provider is connected to it: a direct connection to Pix or SPEI settles in seconds, while a provider routing through a partner bank adds hours.

### How to test it

- Ask for median and p95 settlement time per rail over the last 90 days, not "typically minutes".
- Ask whether the provider connects to each rail directly or through an intermediary, and who that intermediary is.
- Run a small live payout on each rail after go-live and time it, including a Friday evening and a weekend.

A good answer is per-rail numbers the provider will put in writing, with instant rails settling in under five minutes end to end. The [settlement finality guide](/resources/more/stablecoin-api-sla-settlement-finality) covers what to ask for in an SLA.

## What licenses and compliance does the provider hold?

Converting fiat to crypto is money transmission in the US and a regulated virtual asset service almost everywhere else. If the provider is not licensed for a corridor, either you are the unlicensed party or the flow stops when a bank asks questions.

### How to test it

- Ask for the FinCEN MSB registration number and the list of state money transmitter licenses or exemptions, and check them against the public registries.
- For each non-US corridor, ask which local authorization covers it (for example, a VASP registration in Brazil under Central Bank rules) and whether it is held directly or through a partner.
- Ask what KYC, KYB, sanctions screening, and travel rule data exchange run inside the flow, and which vendors provide them.

A good answer is a public licenses page, registrations that match the registries, and compliance that runs inside the API rather than being left to you. What a [VASP](/resources/more/what-is-a-vasp) is and who needs one is covered separately.

## How good is the API?

The API is the product. Sales calls, dashboards, and roadmaps are irrelevant if the endpoints are inconsistent, the errors are opaque, or the sandbox behaves differently from production.

### How to test it

- Ask for the OpenAPI spec before the first call and read it: consistent naming, typed errors, and idempotency keys on every write are the minimum.
- Build the full happy path in sandbox (onboard a receiver, quote, execute, receive the webhook) and count the hours it takes.
- Trigger failure paths in sandbox: expired quote, rejected bank account, insufficient balance, and confirm each returns a distinct error code.
- Check that webhooks are signed, retried on failure, and carry enough data to reconcile without a follow-up request.

A good answer is an OpenAPI spec you can generate a client from, a sandbox that exercises failure paths, and a full integration in under two weeks. [Sandbox vs production](/resources/more/stablecoin-api-sandbox-vs-production) explains what sandboxes cannot show you.

## How deep is the liquidity?

Liquidity depth is how much volume a provider can convert on a corridor before the rate degrades. A provider that quotes a tight spread on $500 and a wide one on $50,000 is deep enough for consumer flows and not for treasury or payroll.

### How to test it

- Request quotes for $500, $5,000, and $50,000 on the same corridor within a minute and compare the effective rate on each.
- Ask for the maximum single-transaction size and the daily volume cap per corridor, and whether either changes without notice.
- Ask whether the provider holds its own liquidity or routes to third parties, and what happens to your quote when a third party fails.

A good answer is a spread that barely moves between $500 and $50,000 and volume caps stated per corridor in writing. A provider that will not quote $50,000 in sandbox is telling you something.

## How do the six criteria compare side by side?

| Criterion | What good looks like | Red flag to watch for |
| --- | --- | --- |
| Corridor coverage | Published rails and networks per country, all live in sandbox | A map of countries with no rails or networks named |
| Live quotes | Quote ID, expiry, and rate held for a stated window | Rate "indicative", settled at a rate you learn afterward |
| Fiat settlement | Per-rail p95 in writing, instant rails under 5 minutes | "Typically minutes" with no numbers |
| Licensing | Public licenses page matching FinCEN and state registries | Compliance "handled by our partner", partner unnamed |
| API quality | OpenAPI spec, typed errors, signed webhooks, sandbox parity | PDF documentation, generic 400 errors, sandbox with canned responses |
| Liquidity depth | Spread stable from $500 to $50,000, caps stated per corridor | Sandbox refuses large quotes, caps "depend on market conditions" |

## How should you score providers against these criteria?

Score each provider 1 to 3 on each criterion: 1 means it fails the test, 2 means it passes with caveats, 3 means it passes cleanly. Do the scoring after running the tests, not after the sales call.

Weight corridor coverage, live quotes, and licensing as **High**. Weight fiat settlement, API quality, and liquidity depth as **Medium**.

A score of 1 on any High-weight criterion disqualifies the provider regardless of its total. A provider that does not cover your corridor, cannot hold a rate, or is not licensed where you operate is not a cheaper option, it is a liability you will replace within a year.

Among providers that clear the High-weight bar, sum the Medium scores and pick the highest. Use price to break ties only, and read the [pricing explainer](/resources/more/stablecoin-api-pricing-explained) first so that blended rates do not distort the comparison.

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

---

Source: https://blindpay.com/resources/more/stablecoin-api-sla-settlement-finality

---
title: "Stablecoin API SLAs and settlement finality explained"
seoTitle: "Stablecoin API SLAs and settlement finality explained"
description: "Stablecoin API uptime numbers cluster near 99.9% for a reason: most providers measure API acceptance instead of the point where money becomes final and spendable."
date: "2026-08-28"
category: "payments"
faq:
  - q: "What's the difference between an SLA and a settlement guarantee for a stablecoin API?"
    a: "An SLA measures whether the API responds and how often it stays up. A settlement guarantee is about when the recipient can spend the money, with no reorg risk left. A provider can hit 99.9% uptime on every call while the underlying transfer still takes minutes to clear, because the 99.9% almost always tracks submission, not the point where the transaction becomes final."
  - q: "Why do so many stablecoin API providers publish an SLA close to 99.9%?"
    a: "Most of them measure the same narrow thing: whether an API call was accepted and a transaction was submitted. Whether that transaction reached economic finality is a separate question that most SLAs never answer. Once the industry standardizes on the easiest metric to hit, providers with very different architectures land in a similar range, which makes the number a weak signal for comparing them."
  - q: "What do T1 and T2 mean in stablecoin settlement?"
    a: "T1 is the span from API acceptance to onchain submission, the point where a 200 response and a transaction reference come back. T2 is economic finality: the point at which the transaction can no longer be reversed by a chain reorganization, so the recipient can spend the funds. Published SLAs almost always cover T1 unless a provider states otherwise."
  - q: "How long does a stablecoin FX quote stay valid before it expires?"
    a: "It depends on the provider, and there is no industry standard. Circle publishes a hard number for this: quotes come back in under 500 milliseconds, and once a trade is created, the ten-minute signature window is a documented commitment, not a market default. Other providers publish shorter or looser windows, so the number should be confirmed in writing rather than assumed to match Circle's."
  - q: "Does a stablecoin payout settle at the same speed in every country?"
    a: "No. Settlement speed on the fiat leg depends mainly on the local payment rail; the stablecoin conversion itself typically clears in seconds. Corridors with real-time payment rails, like PIX in Brazil or SPEI in Mexico, settle in minutes once the onchain leg clears. Corridors without that infrastructure settle same-day or the next business day even when the crypto side finished instantly."
  - q: "What should a developer ask a stablecoin API provider before integrating?"
    a: "Whether the published SLA measures API acceptance to submission or acceptance to economic finality, how long a quote stays valid and who absorbs slippage if the market moves inside that window, what the settlement time is for the specific corridor being built against instead of a platform average, and how the integration should handle a settlement webhook that arrives more than once."
---

An SLA percentage and a settlement guarantee are two different promises, and most stablecoin API providers do not say which one they are quoting. A vendor can publish 99.9% uptime and still leave a recipient waiting minutes, or longer, for money they can spend, because the percentage usually covers a narrower window than the one that matters to the recipient. For background on the full flow a stablecoin API handles, see [what is a stablecoin API](/resources/more/what-is-a-stablecoin-api).

## Every stablecoin API's SLA page says roughly the same number

BlindPay does not publish a single blended uptime number, because averaging every corridor into one figure hides the gap described below. Line up a handful of other stablecoin infrastructure providers, though, and their advertised SLAs sit in a narrow band. [Fireblocks' own site commits to 99.9% uptime](https://www.fireblocks.com/blog/how-we-meet-institutional-standards-insurance-compliance-security/), with roughly 99.97% actually delivered month to month. A third-party comparison table estimates Bridge and BVNK's negotiated enterprise SLAs land in that same range, though neither company posts the figure publicly, and puts Circle Mint and Crossmint close to 99.9% as well. Conduit's public tier sits at 99.5%, with a higher figure reserved for its enterprise add-on. Most of these numbers come from [a single third-party comparison](https://eco.com/support/en/articles/15232572-best-stablecoin-settlement-apis-2026-sla-guarantees-audit-trails-and-reconciliation-compared) rather than each company's own contract language, so the exact decimals are indicative and have not been checked against every provider's actual agreement. Companies running different architectures and different custody models converge on nearly the same headline figure.

That convergence is the tell. Uptime measures whether the API answers a request, not how fast money moves or how final it is once it arrives, and a system can drop almost no requests while still making a recipient wait. When every provider clusters around the same three or four nines, the number stops distinguishing anyone, and what is actually being measured behind it matters more than the digits.

## What is the difference between T1 and T2, and which one is a provider promising?

Most published SLAs measure the span between an API call being accepted and a transaction being submitted onchain: call that T1. A request goes out, an accepted status and a transaction hash come back, and the clock stops there, which says nothing about whether the transaction is done. Economic finality, T2, is the point where reorg risk has cleared and the money is unreversibly available to whoever is supposed to receive it. On most chains T1 happens in a second or two. T2 can take meaningfully longer, and the gap between them is where a support ticket gets opened: the dashboard says success, the recipient says nothing has arrived.

This distinction is rarely spelled out on a pricing or SLA page. An accepted API response with a transaction hash is a technical acknowledgment, not a settlement guarantee, so if a provider does not say which one its SLA covers, the safe assumption is T1. It is the cheaper thing to measure and the one that makes the uptime number look best, since submission almost never fails even on the days downstream confirmation stalls. A lot of published reliability numbers answer "did the API work" while implying "did the payment happen," and those are not the same question.

## How long does an FX quote stay valid?

Settlement speed is one number worth interrogating. Quote validity is another, and it gets less attention than it should. [Circle's StableFX documentation states that quotes are generated across competing market makers in under 500 milliseconds](https://developers.circle.com/stablefx/concepts/technical-guide), and once a trade is created from a quote, both sides get a ten-minute window to submit signatures before it expires. That is a specific, written number a developer can hold Circle to. Most competitors are not nearly that explicit. A widely repeated secondary claim puts typical quote staleness across stablecoin APIs somewhere between 15 and 60 seconds, but that figure traces back to an aggregator comparison rather than each vendor's own documentation, so it reads more as a general sense of the market than a commitment any one company has made in writing. No other provider has been found to state its window this plainly in public documentation, though one may exist in materials that have not been published.

FX moves inside that window whether or not the provider discloses it. If an integration shows a customer a rate, waits on confirmation, then submits, and the quote has expired or gets re-priced on execution, someone absorbs the difference. Who that someone is should be established before a customer notices the number that settled does not match the number they saw.

## Why does a payout on one corridor settle faster than another on the same rail?

A blended, platform-wide SLA hides something a corridor-level number would show plainly: the stablecoin leg of a payment is rarely the bottleneck. The fiat off-ramp is. A payout into Mexico or Brazil rides SPEI and PIX, both real-time payment rails, so once the stablecoin conversion clears, the recipient's bank account sees the funds within minutes. A payout riding a corridor without that same real-time layer can settle same-day or the next business day even when the onchain leg finished in seconds. The provider and the underlying token do not change between corridors, and neither does the published SLA, but the wait time differs by close to a full day depending on which currency it lands in. For the full mechanics of a cross-border payout, see the [stablecoin payments guide](/resources/more/stablecoin-payments-guide).

Checking corridor by corridor instead of trusting a platform average matters: a company can be honestly reporting 99.9% uptime while the thing that actually matters, how long a specific payout to a specific country takes, is set by the local rail and has nothing to do with the API's own performance. That gap is easier to see across corridors on the [global payments](/global-payments) page, and in more detail on a single route like [USDC to BRL](/usdc-to-brl).

## What to ask before integrating

A few questions cut through most of what a sales deck will not volunteer. Does the published SLA measure API acceptance to onchain submission, or acceptance to economic finality? How long is a quote valid, and who absorbs the difference if the market moves inside that window? What is the settlement time for this specific corridor, separate from the average across everything else the platform supports? And when a settlement webhook arrives twice, which [most providers' at-least-once delivery models allow for](https://eco.com/support/en/articles/15182330-stablecoin-webhooks-and-real-time-event-streaming-provider-integrations), does the integration correctly ignore the duplicate instead of double-processing it?

BlindPay quotes and settles named corridors: BRL, MXN, ARS, COP, and USD/EUR, so these are not hypothetical questions there either. Rates come from live FX rather than a table refreshed on a schedule, and there is no pre-funding sitting idle in a nostro account. The settlement time quoted is corridor-specific, not a blended figure covering a fast rail and a slow one at once. Virtual account and payout details, along with the KYB and transaction-monitoring model behind them, are in the [docs](/docs/introduction) and on the [compliance page](/compliance). The account infrastructure itself is covered on [virtual accounts](/virtual-accounts). Ask for a live quote on a specific corridor through [blindpay.com/contact](/contact) and compare the number against the SLA percentage quoted elsewhere.

---

Source: https://blindpay.com/prompts/migrate-from-dynamic

---
title: "Migrate from Dynamic to BlindPay"
description: "Agent prompt to keep Dynamic for embedded and server wallets and move the stablecoin-to-fiat offramp leg to BlindPay: register the Dynamic wallet, then quote, pay out, and verify webhooks."
date: "2026-08-27"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat offramp leg of a Dynamic (docs.dynamic.xyz) integration to BlindPay, keeping Dynamic in place for embedded and server wallets.

## Prompt

```text
You are migrating my application's stablecoin-to-fiat offramp leg from Dynamic (docs.dynamic.xyz) to BlindPay. Dynamic stays in place as the wallet layer: users' stablecoins keep living in their Dynamic embedded or server wallets. This migration only replaces whatever converts those stablecoins to fiat and pays it out.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, blockchain wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://www.dynamic.xyz/features/funding
- https://www.dynamic.xyz/docs/overview/developer-dashboard/webhooks/overview
Dynamic itself does not settle fiat; its funding surface is built for onramp (cards, Apple Pay, Google Pay, exchange transfers) rather than a native offramp. Confirm in the Dynamic docs which mechanism this codebase actually wired up for the stablecoin-to-fiat leg (a Dynamic funding integration, a bolted-on third-party offramp, or a manual flow) instead of assuming one; if the code shows something not covered by these pages, phrase it as unconfirmed rather than inventing an endpoint.

Do the migration in this order:
1. Inventory the current offramp path from the codebase: the funding or offramp integration in use, every stored Dynamic wallet ID (embedded or server, and whether it signs directly or through Delegated Access) that sends the crypto leg, any stored provider addresses or transaction hashes, and how completion is detected today (webhook, polling, or manual confirmation). Produce a written mapping from what we actually use to BlindPay concepts: the payee becomes a BlindPay customer (re_) with KYC/KYB, their payout destination becomes a bank account (ba_) on the relevant rail, and the Dynamic wallet that currently sends to the offramp destination becomes the sender_wallet_address on a BlindPay payout instead. Flag anything with no direct equivalent rather than guessing.
2. Register each Dynamic wallet as a BlindPay external wallet: fetch the sign-message challenge (GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message), sign it with the Dynamic wallet's own signing call (the embedded wallet's client SDK, or delegatedSignMessage on the server for a Delegated Access wallet, per the Dynamic docs), submit the signature to POST /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets, and persist the returned bw_ ID against the customer record. Re-onboard each payee's KYC/KYB on BlindPay through terms of service, customer creation, and document upload driven by webhooks, since KYC does not transfer between providers; sequence this ahead of the cutover so approved customers are ready when a flow switches over.
3. Rebuild money movement on BlindPay's explicit two-step model: request a quote (POST /v1/instances/{instance_id}/quotes), sign and confirm the returned approve call through the same Dynamic wallet, then execute the payout (POST /v1/instances/{instance_id}/payouts/evm) with sender_wallet_address set to the Dynamic wallet's address, before the quote's expires_at (about 5 minutes). Store qu_, po_, and bw_ IDs alongside whatever ID the old offramp path used for the same transfer.
4. Replace the old offramp completion signal with BlindPay's Svix-signed webhooks: verify svix-id, svix-timestamp, and svix-signature against the raw request body with whsec_, dedup on svix-id, and update payout state on payout.new, payout.update, and payout.complete.
5. Cut over per payee or corridor behind a feature flag: dual-run new payouts on BlindPay while the old offramp path finishes any in-flight transfers, keep both completion signals live during the window, and only retire the old offramp integration once a full dual-run settlement cycle has completed and reconciled.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves) first, and exercise the $666.00 forced-failed and $777.00 forced-refunded sentinel amounts before touching production traffic.
- Keep BlindPay and Dynamic API keys server-side.
- Store and compare all amounts as integer minor units; never use floating point for money math.
- Produce a written migration report before changing code: the mapping table, the confirmed old-offramp mechanism, gaps, and the re-KYC plan.

Deliverables: the migration report, the external-wallet registration module (challenge fetch, Dynamic signing call, bw_ persistence), the quote-to-payout orchestration with expiry handling, webhook handlers for the three payout events, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories the real offramp integration or manual flow instead of assuming one from the Dynamic funding feature list.
2. Review the migration report, especially the confirmed old-offramp mechanism and the re-KYC sequencing, before approving code changes.
3. Dual-run at least one full settlement cycle per payee or corridor, including the sentinel failure and refund cases, before retiring the old offramp path.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Dynamic funding](https://www.dynamic.xyz/features/funding)
- [Dynamic webhooks overview](https://www.dynamic.xyz/docs/overview/developer-dashboard/webhooks/overview)

---

Source: https://blindpay.com/resources/more/stablecoin-api-sandbox-vs-production

---
title: "Stablecoin API sandbox vs production: what testing misses"
seoTitle: "Stablecoin API sandbox vs production: what testing misses"
description: "Most stablecoin API sandboxes pass every integration test and still leave a team unprepared for production, because webhook delivery and idempotent retries are exactly what sandboxes fake or skip."
date: "2026-08-27"
category: "payments"
faq:
  - q: "Why does a stablecoin API sandbox pass but production still break?"
    a: "Sandboxes validate request and response shapes. The failure paths that only surface under real load, webhook retries and idempotency key expiry chief among them, need separate testing. A sandbox that returns clean 200s on every call can still hide a webhook handler that has never processed a redelivered event."
  - q: "Does Bridge's sandbox send webhooks?"
    a: "No. Bridge states this plainly in its own docs: no webhook covering payments activity fires while a developer is in sandbox, and Bridge recommends validating webhook handling directly in production instead."
  - q: "How long is a Bridge idempotency key valid for?"
    a: "24 hours. After that window, reusing the key returns a 422 error. Changing the request body and reusing the key inside the window produces a second, separate error that Bridge's docs never label with its own status code."
  - q: "What does 'at least once' webhook delivery mean for an integration?"
    a: "A single event can reach a webhook endpoint more than once, for instance if the first delivery attempt times out or the server briefly returns a non-2xx response. The handler has to produce the same result whether it processes that event once or several times. Circle's webhooks, for example, are signed and explicitly documented as [at-least-once](https://developers.circle.com/api-reference/webhooks), and Circle expects integrators to key their dedup logic off the notification ID rather than trust that each delivery is unique."
  - q: "Does BlindPay's sandbox send real webhooks?"
    a: "Yes. Development instances differ from production only in which API key signs the request. The events fired and their shapes stay identical, and verification works the same way too, so nothing about the handler needs to change at go-live."
  - q: "What should a team test before moving a stablecoin integration to production?"
    a: "Send a duplicate idempotency key and confirm the client handles the rejection, force a webhook redelivery and confirm the handler doesn't double-apply it, simulate a failed and a refunded transfer, and confirm dedup logic behaves the same way in sandbox as it will in production."
---

Bridge's own sandbox documentation states it outright: no payments webhook fires while a developer is in sandbox. Most evaluation checklists never catch that gap, because they test whether auth works and whether the response shape matches the docs. Almost none test what happens when a webhook arrives twice, or when a retry hits an idempotency key three seconds after it expired. A sandbox can return a clean 200 on every call and still never once have delivered a webhook to the server, or forced retry logic against an expired key. A green checklist says little about whether an integration survives its first bad day of production traffic.

## What Bridge's own docs admit sandbox can't do

Bridge is the stablecoin orchestration company Stripe acquired, and its docs state this directly: sandbox fires zero payments-related webhooks. There is no testnet or blockchain connectivity in sandbox either, and the environment is subject to what Bridge calls arbitrary rate limits, meaning it may drop requests without warning. Bridge's own recommendation, in [its quickstart documentation](https://apidocs.bridge.xyz/get-started/introduction/quick-start/setting-up-sandbox), is to use sandbox for schema validation and do the rest of the testing in production.

That recommendation has a direct implication. A team that writes its webhook handler against sandbox and ships it has never seen that handler run against production traffic, because sandbox never sent it one. The first webhook it processes arrives after go-live, against a live customer's live transfer. If the handler has a bug, that bug becomes an incident involving somebody's money, not a failed test in CI.

The same gap likely exists elsewhere in the category, though this has not been audited across every competitor's docs the way Bridge documents its own limits, and few providers are this direct about what their sandbox skips. A provider can have solid production infrastructure and a sandbox that tests almost none of it, and a team evaluating providers by reading the docs alone has no way to tell the difference until it switches to a production key.

## Idempotency key expiry is where retry logic breaks

Every serious [stablecoin API](/resources/more/what-is-a-stablecoin-api) requires an idempotency key on requests that move money or trigger something irreversible, because retrying a POST over a flaky connection should never risk creating the same transfer twice. The mechanism is universal. The expiry behavior is not, and that gap is where naive retry logic breaks.

Bridge documents a [24-hour idempotency window](https://apidocs.bridge.xyz/api-reference/introduction/idempotence). Reuse the same key after 24 hours and the result is a 422 Unprocessable Entity: the key has expired and the request is treated as brand new. Circle runs a comparable pattern, a required Idempotency-Key header (UUID v4) on mutating endpoints, plus a separate [idempotencyKey field inside payout request bodies](https://developers.circle.com/api-reference/cpn/managed-payments/payouts/create-payout).

Idempotency is not one behavior. It splits into different outcomes depending on what changed since the first request. Reuse a key exactly as sent and Bridge replays the original response, with no new side effect triggered. Reuse it after the 24-hour window closes, or reuse it inside that window with a changed body, and the result is an error instead: a fresh 422 in the first case, an unlabeled idempotency error in the second. Bridge's docs describe that second error without giving it its own status code, because the key no longer matches the request it originally guarded. A retry loop that only branches on 2xx versus non-2xx collapses both error cases into "failed, try again," which is exactly how a stale key ends up firing a duplicate transfer.

BlindPay follows a similar pattern. Every mutating v1 endpoint, payins and payouts included, accepts an opt-in Idempotency-Key header. A repeated key returns the original response, with no duplicate action triggered. The terms-of-service acceptance endpoint handles idempotency on its own: it takes a separate idempotency_key UUID, and reusing that one is rejected outright. The exact expiry window on the general header, and whether a changed body against a reused key throws a distinct conflict error the way Bridge's does, are not yet public. Check the current [API reference](/docs/api/reference) for the endpoint in question before assuming it matches another provider's behavior.

## Webhook delivery is at-least-once across the industry

Every stablecoin API webhook system worth using assumes the same thing: an endpoint might receive the same event more than once, and handling that safely is on the integrator. That is called at-least-once delivery. It exists because the alternative, guaranteeing exactly-once delivery over an unreliable network, is a much harder distributed-systems problem, and none of the providers covered here claim to have solved it. Providers retry on anything that is not a clean 2xx response, so a slow database write on the receiving end that causes a timeout looks, from the provider's side, exactly like a dropped request that needs retrying.

Circle's implementation is a useful reference for what careful design looks like here. Every webhook is [signed with ECDSA over P-256](https://developers.circle.com/api-reference/verify-webhook-signatures), and the public verification key comes from Circle's API by key ID rather than something hardcoded into the receiving app. That signature travels in an X-Circle-Signature header, checked before the payload is trusted. Circle's [documentation states outright that delivery is at least once](https://developers.circle.com/api-reference/webhooks), and it tells integrators to deduplicate on the Notification ID before applying any side effect. In practice, a handler's job is to check whether it has already processed that ID and do nothing if it has.

BlindPay runs its webhooks through Svix, and the mechanics land in the same place as Circle's. A svix-id header stays constant across every redelivery attempt of the same event. The svix-timestamp and svix-signature pair is verified with HMAC-SHA256 before acting on the payload, and if an endpoint does not return a 2xx, Svix retries with backoff over the following hours. Deduplicating on svix-id covers the case, and a handler already built for Circle's Notification ID pattern needs little more than a header rename to work against BlindPay's.

One part of this has no clean answer. Neither Circle's nor Bridge's public docs, as of this writing, state a maximum retry window, so there is no single number to size a dedup store against. A naive in-memory set of notification IDs that gets wiped on every deploy loses that history the moment a service redeploys, which is exactly when a provider might still be retrying an event from before the restart. The safer posture is a persistent store with a retention window longer than whatever retry period a provider does document. How much longer is a judgment call, and neither company answers it directly.

## What to check before a production key goes live

Run this checklist against a sandbox before a production key goes live. It groups by what kind of failure it catches: money movement or notifications.

On the money-movement side: replay a request with an idempotency key already used, and confirm the client branches on the error rather than retrying it blindly as a network failure. Set request amounts that force a failed transfer and a refunded one, then watch what the reconciliation logic does when a payment sits outside the happy path longer than expected.

On the notification side: trigger a webhook redelivery (most dashboards with an events log allow replaying a specific event manually), and confirm the handler recognizes the repeated ID, skips the side effect, and does not credit an account twice or fire a downstream notification twice. Confirm sandbox and production environments enforce the same dedup and retry rules. A sandbox that silently skips retries will never surface a bug that only shows up once backoff kicks in.

BlindPay's development instances are built so that last check actually holds. Webhooks fire with the same event names and payload shapes in development as in production, and signature verification works the same way too. Payins on a development instance auto-complete around 30 seconds after creation, so a full event can be observed landing rather than guessed at from documentation. Specific outcomes can also be forced by setting the request amount to 666.00 for a failed transfer or 777.00 for a refunded one, which is what "simulate a stalled transfer" means in practice: two API calls with different amounts. Every instance gets its own API key, so switching from a development key to a production one at go-live does not touch a single line of webhook-handling code, since the code was already exercised against the exact contract production uses.

Running that checklist against a current sandbox, on whatever provider is in use, surfaces the gap fast: if any of the four checks cannot run before a production key exists, that is the gap the sandbox is not reporting. For a broader view of what to evaluate across providers before committing to one, see the [comparison of stablecoin APIs](/resources/more/best-stablecoin-apis-2026). To run this checklist against BlindPay's sandbox, start with the [getting started guide](/docs/introduction), or [talk to the team](/contact) about a specific corridor.

---

Source: https://blindpay.com/prompts/build-contractor-payouts

---
title: "Build a global contractor payout product"
description: "Compose onboarding, bank accounts, quotes, payouts, and reconciliation into a complete pay-your-contractors feature across Pix, SPEI, SEPA, and ACH."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "compliance", "quotes", "webhooks"]
---

Paste this prompt into your coding agent to build the classic use case end to end: paying international contractors from a stablecoin balance.

## Prompt

```text
You are building a contractor payout feature on BlindPay: my business holds stablecoins and pays contractors in Brazil (Pix/BRL), Mexico (SPEI/MXN), Europe (SEPA/EUR), Argentina (Transfers/ARS), Colombia, and the US (ACH/USD).

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payout quickstart, customers, bank accounts, quotes, payment methods, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build these product pieces:
1. Contractor onboarding: terms of service, create customer (individual, KYC standard; route high-risk countries to enhanced), collect the rail-specific bank fields per country, all driven by customer.* and bankAccount.new webhooks. A contractor is payable only when KYC is approved and a bank account exists.
2. Payout run: given a list of (contractor, amount, currency), for each one quote (POST /v1/instances/{instance_id}/quotes) and execute (POST /v1/instances/{instance_id}/payouts/evm) before expires_at. Key each payout on my payroll-run line ID so retries can never double-pay, and gate the whole run behind one human approval showing total amount and FX per corridor.
3. Status and reconciliation: drive contractor-visible status from payout.new/update/complete webhooks (Svix-verified); build a per-run report of quoted rate, fees, and settled amounts; alert on payouts stuck past the rail's expected settlement time (Pix/SPEI minutes, ACH days, SEPA one business day).
4. Limits and edge cases: respect per-tier transaction limits, handle rejected KYC and RFIs with a clear contractor-facing state, and handle failed/refunded payouts by returning the line to the next run with a reason.
5. Testing: full run on a development instance (KYC auto-approves, payouts auto-complete), including one line at $666.00 (forces failed) and one at $777.00 (forces refunded) to prove the run survives partial failure.

Constraints: amounts in integer minor units, API keys server-side, no floating point money math anywhere.

Deliverables: onboarding flow, payout-run engine with approval gate and idempotency, webhook-driven status, the reconciliation report, and the failure-path tests.
```

## How to use

1. Paste the prompt with your stack and which corridors you actually pay.
2. Review the approval-gate UX; it is the piece your finance team will live in.
3. Run the sentinel-amount test before every production cutover.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Payment methods](https://blindpay.com/docs/kb/payment-methods)
- [Cut-off times and limits](https://blindpay.com/docs/kb/cut-off-times)

---

Source: https://blindpay.com/prompts/build-reconciliation-ledger

---
title: "Build a reconciliation ledger"
description: "A daily job that compares your database against BlindPay's payout, payin, and transfer statuses, catches drift, and alerts on stuck or mismatched money."
date: "2026-08-26"
category: "diagnostics"
products: ["payouts", "payins", "webhooks"]
---

Paste this prompt into your coding agent to build the safety net every money-moving integration needs: an independent daily reconciliation.

## Prompt

```text
You are building a reconciliation ledger for my BlindPay integration: a scheduled job that independently verifies my database agrees with BlindPay about every payment.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt
- The OpenAPI spec: curl https://api.blindpay.com/doc (use it to find the list/get endpoints for payouts, payins, and transfers; do not guess paths)

Build:
1. A local ledger table if I do not have one: every BlindPay object I create (po_, pi_, tr_, qu_) stored with my own entity ID, amounts in minor units, status, and timestamps, written at creation time and updated only by verified webhooks.
2. The daily reconciliation job: page through BlindPay's records for the last N days via the list endpoints from the OpenAPI spec and diff against my ledger in both directions:
   - Objects BlindPay has that my ledger lacks (a create succeeded but my write failed).
   - Ledger rows BlindPay lacks or reports with a different status or amount (missed or unverified webhooks, manual dashboard actions).
   - Non-terminal statuses older than the rail's expected settlement window (stuck payments).
3. Output: a report per run (clean or discrepancies with IDs and both sides' values) plus an alert to my team channel when anything is found; never auto-correct money records, only flag them.
4. Idempotent healing helper: for the missed-webhook case, a command that re-fetches one object by ID and applies the true status through the same code path webhooks use, so fixes are audited.
5. Tests: seed a fake drift case of each type and assert the job catches all three.

Constraints: API keys server-side; the job must be rate-limit-polite (page, do not hammer) and safe to re-run; all comparisons in integer minor units.

Deliverables: ledger schema/migration if needed, the reconciliation job with report and alerting, the healing command, and the drift tests.
```

## How to use

1. Paste the prompt with your database schema and scheduler (cron, queue, or workflow engine).
2. Run it against your development instance history first; it should come back clean.
3. Treat any production discrepancy as an incident to root-cause, not just heal.

## Related docs

- [API reference](https://blindpay.com/docs/api/reference)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)
- [Sandbox vs production](https://blindpay.com/docs/learn/sandbox-vs-production)

---

Source: https://blindpay.com/prompts/connect-ai-agent-mcp

---
title: "Connect an AI agent with the MCP server"
description: "Wire Claude, Cursor, or any MCP-compatible host to the BlindPay API with the official MCP server and agent skills, with guardrails for money movement."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "payins", "compliance"]
---

Paste this prompt into your coding agent to give an AI assistant safe, tool-based access to BlindPay: balances, customers, quotes, and payments through natural language.

## Prompt

```text
You are connecting an AI agent (Claude Desktop, Claude Code, Cursor, or another MCP-compatible host) to BlindPay using the official MCP server, with guardrails appropriate for tools that move money.

Before configuring anything, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the build with AI page)
- The MCP server card: https://blindpay.com/.well-known/mcp/server-card.json

Set up:
1. Install the MCP server in my host's config: command npx, args ["-y", "@blindpay/mcp"], env BLINDPAY_API_KEY and BLINDPAY_INSTANCE_ID. Use a DEVELOPMENT instance ID and key first; document exactly which config file this lands in for my host.
2. Add the agent skills knowledge layer: npx skills add blindpaylabs/skills, so the agent knows rails, corridors, fees, and KYC patterns instead of guessing.
3. Verify the connection: have the agent list its BlindPay tools, then run a read-only call (for example listing customers) before anything that writes.
4. Guardrails, written into my agent's system prompt or host permissions:
   - Read operations are fine unprompted; any operation that creates a payment (quotes are fine, payouts/payins/transfers are not) requires explicit human confirmation with the amount and destination restated.
   - The agent must never echo the API key, and must refuse to switch to a production instance ID without me changing the config myself.
   - On a development instance, funds are test-only (USDB on testnets); state this in responses so nobody mistakes a test payout for a real one.
5. Produce a short runbook: how to rotate the key (delete and recreate in the dashboard; keys are shown once), how to point at production later, and which operations the agent is allowed to run at each stage.

Deliverables: the host config snippet, the skills install, a verified tool-listing transcript, the guardrail prompt text, and the runbook.
```

## How to use

1. Create a development instance and API key at [app.blindpay.com](https://app.blindpay.com) before starting.
2. Paste the prompt and name your MCP host; config file locations differ per host.
3. Keep the guardrails when you move to production; raise the confirmation bar rather than lowering it.

## Related docs

- [Build with AI](https://blindpay.com/docs/build-with-ai)
- [BlindPay for AI](https://blindpay.com/ai)
- [API keys](https://blindpay.com/docs/learn/api-keys)

---

Source: https://blindpay.com/prompts/debug-webhooks

---
title: "Debug webhook delivery and verification"
description: "Diagnose missing or failing BlindPay webhooks: endpoint config, signature mismatches, raw-body pitfalls, retries, and replay."
date: "2026-08-26"
category: "setup"
products: ["webhooks"]
---

Paste this prompt into your coding agent when webhooks are not arriving or signature verification keeps failing.

## Prompt

```text
My BlindPay webhooks are failing (not arriving, or failing signature verification). Diagnose and fix the problem.

Before debugging, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the webhooks, webhook verification, and webhook events pages)

Work through this checklist against my code and configuration, in order:
1. Endpoint registration: list my webhook endpoints (GET /v1/instances/{instance_id}/webhook-endpoints). Confirm the URL is https, publicly reachable, and that the events array actually includes the events I expect (an empty array means all events; a non-empty array silently excludes everything else).
2. Secret mismatch: confirm the whsec_ secret in my config was fetched for this exact endpoint ID via GET /v1/instances/{instance_id}/webhook-endpoints/{endpoint_id}/secret. Each endpoint has its own secret; a secret from another endpoint or instance verifies nothing.
3. Raw body: verify my handler computes the HMAC over the exact raw request bytes. Framework body parsers that deserialize and re-serialize JSON (reordered keys, changed whitespace, unicode escaping) are the most common cause of signature failures. Read the raw body before any JSON middleware touches it.
4. Signed content and comparison: the signed content must be "{svix-id}.{svix-timestamp}.{raw body}", the key is the base64-decoded portion of the secret after the whsec_ prefix, the digest is base64, and svix-signature contains space-delimited candidates like "v1,<sig>"; strip the version prefix and compare each candidate in constant time. Check the timestamp tolerance (reject only beyond 5 minutes) and my server's clock skew.
5. Response behavior: my handler must return 2xx quickly. Check for slow synchronous processing causing timeouts (which look like failures and trigger retries) and confirm I dedupe on svix-id since retries reuse it.
6. Reproduce and verify the fix: build a local test that signs a fixture payload with a known secret and asserts my middleware accepts it, plus a tampered variant it must reject. Then replay a real event from the BlindPay dashboard's Events view to confirm end to end.

Deliverables: the specific root cause found, the fix, and the signature verification unit tests so this class of bug cannot silently return.
```

## How to use

1. Paste the prompt and give the agent access to your webhook handler code and (redacted) config.
2. Have a real failing request's headers handy if you captured them; they speed up diagnosis.
3. Use the dashboard's event replay to confirm the fix without creating new payments.

## Related docs

- [Webhooks](https://blindpay.com/docs/learn/webhooks)
- [Signature verification](https://blindpay.com/docs/learn/webhooks-verification)
- [Event catalog](https://blindpay.com/docs/learn/webhooks-events)

---

Source: https://blindpay.com/prompts/integrate-circle-wallets

---
title: "Integrate Circle wallets with BlindPay"
description: "Fund BlindPay payouts from Circle developer-controlled wallets: sign the registration challenge and the ERC-20 approve through Circle's API instead of a browser wallet."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "webhooks"]
---

Paste this prompt into your coding agent when your funds live in Circle wallets and you want those wallets to fund BlindPay payouts.

## Prompt

```text
You are integrating BlindPay EVM payouts funded by Circle developer-controlled wallets into my application. My backend already holds funds in Circle wallets and must register one of those wallets with BlindPay, then use Circle's API to sign everything BlindPay's payout flow requires. No browser extension or end-user signing is involved.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the blockchain wallets page and the EVM payout guide)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://developers.circle.com/api-reference/wallets/developer-controlled-wallets/sign-message
- https://developers.circle.com/api-reference/wallets/developer-controlled-wallets/create-developer-transaction-contract-execution
- https://developers.circle.com/wallets/account-types
- https://developers.circle.com/wallets/webhook-notifications

Build the flow:
1. Confirm which Circle wallet (walletId) will fund payouts, verify it is a developer-controlled wallet and not user-controlled (user-controlled wallets require a client-side PIN session and cannot sign headlessly from this server), and persist that walletId as the configured funding wallet for this integration.
2. Register the wallet with BlindPay: call GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message to get the challenge, sign it by calling Circle's POST /v1/w3s/developer/sign/message with walletId, message (set encodedByHex if the challenge is hex), and a freshly generated entitySecretCiphertext, then POST the returned signature to /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets and persist the resulting bw_ ID against the wallet record.
3. Request a payout quote via POST /v1/instances/{instance_id}/quotes with bank_account_id, network, and token, and store the returned quote_id, expires_at, and the contract object (address, abi, functionName, blindpayContractAddress, amount, network) exactly as returned, never hardcoded.
4. Submit the ERC-20 approve through Circle: call POST /v1/w3s/developer/transactions/contractExecution with a fresh idempotencyKey, contractAddress set to the quote's blindpayContractAddress, walletId, entitySecretCiphertext, and either abiFunctionSignature "approve(address,uint256)" with abiParameters built from the quote's abi/amount, or callData if you derive it directly from the quote's abi. Confirm the exact status-polling endpoint in Circle's developer-controlled wallets docs, then track the returned transaction id to a terminal state (COMPLETE or FAILED) by polling that endpoint or handling Circle's webhook notification, and persist the terminal status, including FAILED, DENIED, or CANCELLED outcomes, on the payout record.
5. Once the approve transaction reaches COMPLETE, call POST /v1/instances/{instance_id}/payouts/evm with quote_id and sender_wallet_address before the quote's expires_at. If expires_at passes while the approve transaction is still pending confirmation (an MPC signing and on-chain confirmation delay makes this the likely failure path), re-quote via step 3, check whether the already-approved allowance still covers the new quote's amount, and only resubmit a new approve transaction when it does not.
6. Persist BlindPay's payout.new, payout.update, and payout.complete webhooks (verify svix-id/svix-timestamp/svix-signature against the whsec_ secret over the raw body) into payout status, and store Circle's contractExecution webhook status alongside it so approve-transaction state and payout state are both queryable from one place.
7. Run the full flow end to end on a BlindPay development instance with a Circle testnet wallet on base_sepolia and USDB, including one payout at $666.00 (66600 minor units, forces failed) and one at $777.00 (77700 minor units, forces refunded), and confirm both sentinel outcomes land correctly in your webhook-driven status.

Constraints:
- Keep the BlindPay API key and the Circle API key plus entity secret server-side only; never expose either to a client.
- Represent every amount as an integer in minor units; never use floating point for money math.
- Generate a new entitySecretCiphertext per Circle API call; never reuse one across requests.

Deliverables: wallet registration flow that signs the BlindPay challenge through Circle's sign-message endpoint and persists the bw_ ID, a quote-approve-execute orchestration module that drives Circle's contractExecution call to terminal state before calling BlindPay's execute endpoint, the quote-expiry re-quote-and-reuse-allowance path handled explicitly, and webhook handlers for both BlindPay and Circle wired into one payout status view, tested on a development instance with both sentinel amounts.
```

## How to use

1. Confirm the funding wallet is a Circle developer-controlled wallet before running the prompt; user-controlled wallets cannot sign headlessly.
2. Give the agent your Circle entity secret setup (how entitySecretCiphertext gets generated in your stack) so it wires that into every Circle call, not just the two spelled out here.
3. Run the sentinel-amount tests on a development instance first, and deliberately stall the approve confirmation to verify the quote-expiry re-quote path actually reuses the allowance instead of blindly resubmitting.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [EVM payouts](https://blindpay.com/docs/payout-evm)
- [Circle developer-controlled wallets sign message](https://developers.circle.com/api-reference/wallets/developer-controlled-wallets/sign-message)
- [Circle developer-controlled wallets contract execution](https://developers.circle.com/api-reference/wallets/developer-controlled-wallets/create-developer-transaction-contract-execution)

---

Source: https://blindpay.com/prompts/integrate-customer-onboarding

---
title: "Integrate customer onboarding with KYC and KYB"
description: "Build the full onboarding pipeline: terms of service, individual and business customers, document uploads, RFI handling, and status webhooks."
date: "2026-08-26"
category: "integrations"
products: ["compliance", "webhooks"]
---

Paste this prompt into your coding agent to build compliant customer onboarding, the prerequisite for every other BlindPay flow.

## Prompt

```text
You are building customer onboarding for BlindPay into my application, covering individuals (KYC) and businesses (KYB).

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read customers, the KYC knowledge base pages, supported countries, and webhooks)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the pipeline:
1. Terms of service: POST /v1/e/instances/{instance_id}/tos with a UUID idempotency_key, open the returned session URL for the user, capture completion via the tos.accept webhook.
2. Document uploads: POST /v1/upload?instance_id=... (multipart) for ID documents, selfies, and KYB documents; optionally pre-screen with POST /v1/upload/analyze and warn users when approval_rate is low. Enforce the format rules: PDF/JPEG/PNG, max 5 MB, no screenshots or cropped photos.
3. Create the customer: POST /v1/instances/{instance_id}/customers with type individual or business, and kyc_type standard or enhanced. Route users from high-risk countries to enhanced KYC and block prohibited countries before calling the API.
4. Drive state from webhooks (customer.new, customer.update): handle verifying, approved, rejected, compliance_request (blocking RFI), and approved_rfi (non-blocking RFI). On rejection, surface kyc_warnings and create a new customer rather than editing the rejected one.
5. RFI handling: on compliance_request, fetch the request with GET /v1/instances/{instance_id}/customers/{customer_id}/rfi, collect what is asked, and submit once via POST to the same path. Submission is single-shot and expires at expires_at (27 days), so validate everything client-side first.

Constraints:
- API keys stay server-side. Verify Svix signatures on webhooks.
- Development instances auto-approve KYC (a customer named "Fail" forces rejection), so use that to test both paths.
- Persist re_ and rfi_ IDs and every status transition for audit.

Deliverables: onboarding service, upload helper, webhook-driven state machine for customer status, RFI flow, and a mapping of which form fields are required for individual standard, individual enhanced, and business customers.
```

## How to use

1. Decide which customer types you support (individuals, businesses, or both) and tell the agent.
2. Paste the prompt with your stack details.
3. Use the development instance tricks (auto-approve, the "Fail" name) to exercise every status path.

## Related docs

- [Customers](https://blindpay.com/docs/learn/customers)
- [KYC guide](https://blindpay.com/docs/kb/kyc)
- [Supported countries](https://blindpay.com/docs/kb/supported-countries)

---

Source: https://blindpay.com/prompts/integrate-dfns

---
title: "Integrate Dfns with BlindPay"
description: "Fund BlindPay stablecoin payouts from Dfns MPC wallets: sign the registration challenge and the ERC-20 approve through Dfns's User Action Signature flow."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "compliance"]
---

Paste this prompt into your coding agent when funds live in Dfns wallets and need to fund BlindPay payouts.

## Prompt

```text
You are integrating BlindPay payouts funded from Dfns MPC wallets into my application. Dfns holds the key shares for our wallets; my server calls the Dfns API to sign and broadcast on their behalf.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the blockchain wallets page and the EVM payouts guide)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://docs.dfns.co/d/api-docs/wallets/generate-signature-from-wallet
- https://docs.dfns.co/d/api-docs/wallets/broadcast-transaction
- https://docs.dfns.co/d/api-docs/authentication

Build the flow:
1. Call GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message to get the registration challenge, hex-encode it, and sign it with the Dfns wallet via POST /wallets/{walletId}/signatures using {"blockchainKind":"Evm","kind":"Eip191","message":"0x<hex>"}, authenticated with the Dfns Service Account Token bearer header plus an X-DFNS-USERACTION header built from the User Action Signature flow (submit the intent, sign the returned challenge with the registered credential, attach the signature). Confirm the exact User Action Signature request/response shape against docs.dfns.co/d/api-docs/authentication rather than assuming a field layout. Take the resulting signature, call POST /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets, and persist the returned bw_ ID against the customer record.
2. Request a quote with POST /v1/instances/{instance_id}/quotes for the bank_account_id, network, and token, and hold the contract object (address, abi, functionName "approve", blindpayContractAddress, amount, network) exactly as returned in the response, ready to build the approve calldata in step 3.
3. Build the ERC-20 approve calldata from that contract object and send it through POST /wallets/{walletId}/transactions with {"kind":"Transaction","transaction":{"to":"<token contract address>","data":"<approve calldata>","maxFeePerGas":...,"maxPriorityFeePerGas":...},"externalId":"<idempotency key>"}, again with the bearer token and a fresh X-DFNS-USERACTION header. Poll the returned transaction-request ID until its status reaches Confirmed before moving on, and treat Failed or Rejected as a stop condition that surfaces to the caller.
4. Call POST /v1/instances/{instance_id}/payouts/evm with quote_id and sender_wallet_address before the quote's expires_at (about 5 minutes). If Dfns's Pending to Confirmed cycle (plus any policy-engine approval delay on the transaction) eats into that window and the quote expires first, re-quote and reuse the existing on-chain allowance when it already covers the new amount instead of re-approving from zero.
5. Verify a Svix-signed webhook handler (svix-id, svix-timestamp, svix-signature against the whsec_ secret, HMAC over the raw body) updates payout state on payout.new, payout.update, and payout.complete, and run the full flow end to end on a development instance with USDB on base_sepolia, including one payout at $666.00 (66600 minor units) that lands in failed and one at $777.00 (77700) that lands in refunded.

Constraints:
- Keep the Dfns Service Account Token and the BlindPay API key server-side only; never expose either to a browser or mobile client.
- Carry all amounts as integer minor units through both the BlindPay and Dfns calls; never do floating-point money math.
- If Dfns's docs describe a policy engine or approval workflow on your account, check whether transaction requests require a second approver before Confirmed, since that adds directly to the quote-expiry race in step 4.

Deliverables: the wallet registration flow (challenge signing plus bw_ persistence), the approve-and-poll module built on POST /wallets/{walletId}/transactions, quote-execute orchestration with the expiry race handled, the Svix webhook handler, and a passing end-to-end test against the development instance covering the two sentinel amounts.
```

## How to use

1. Swap in your Dfns Service Account Token and confirm your account's User Action Signature setup (which credential type signs challenges) before running the agent.
2. Ask your Dfns account team whether policy-engine approvals are enabled on transaction requests; if so, have the agent widen the re-quote path since Confirmed will take longer.
3. Run the development-instance test with both sentinel amounts before pointing the integration at a production instance.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [EVM payouts](https://blindpay.com/docs/payout-evm)
- [Dfns generate signature](https://docs.dfns.co/d/api-docs/wallets/generate-signature-from-wallet)
- [Dfns broadcast transaction](https://docs.dfns.co/d/api-docs/wallets/broadcast-transaction)

---

Source: https://blindpay.com/prompts/integrate-external-wallet-payouts

---
title: "Fund payouts from external wallets"
description: "Let customers pay out from their own EVM, Solana, or Stellar wallets: signed-message registration plus the on-chain authorization step per chain."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "compliance"]
---

Paste this prompt into your coding agent when funds live in your users' own wallets, not managed ones, and payouts need an on-chain authorization step.

## Prompt

```text
You are integrating BlindPay payouts funded from customers' own blockchain wallets (not managed wallets) into my application, covering EVM chains, Solana, and Stellar.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the blockchain wallets page and the per-chain payout guides: EVM, Solana, Stellar)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Register the wallet: for EVM, fetch the challenge with GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message, have the user sign it in their wallet, then POST /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets to get the bw_ ID. Handle the direct-address registration path where the docs allow it.
2. Quote: POST /v1/instances/{instance_id}/quotes with bank_account_id, network, and token. For EVM the response includes a contract object (address, abi, functionName "approve", blindpayContractAddress, amount, network): use it verbatim to build the ERC-20 approve transaction for the user's wallet. Never hardcode contract addresses.
3. Authorize on-chain, per chain: EVM sends the approve transaction; Stellar authorizes and signs the XDR, executed via POST /v1/instances/{instance_id}/payouts/stellar; Solana uses token delegation per the docs.
4. Execute: POST /v1/instances/{instance_id}/payouts/evm (or /stellar) with quote_id and sender_wallet_address, before the quote's expires_at. Because the on-chain step takes time, build the timing carefully: request the quote, get the authorization confirmed, and execute immediately; if the quote expired while waiting for the transaction, re-quote and reuse the existing allowance when it covers the new amount.
5. Track payout.new/update/complete webhooks (Svix-verified) and surface on-chain failure separately from payout failure in my UI.

Constraints:
- API keys stay server-side; wallet signing happens client-side only.
- Test on a development instance with USDB on testnets (base_sepolia or solana_devnet) end to end, including a deliberately expired quote.

Deliverables: wallet registration flow (sign-message UX included), the per-chain authorization module, quote-execute orchestration with the expiry race handled, and webhook handlers.
```

## How to use

1. Tell the agent which chains you support; each has a different authorization step.
2. Wire the signing UX into your existing wallet connection (wagmi, solana wallet adapter, or Freighter).
3. Test the quote-expiry-during-authorization race explicitly; it is the flow's main failure mode.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [EVM payouts](https://blindpay.com/docs/payout-evm)
- [Stellar payouts](https://blindpay.com/docs/payout-stellar)
- [Solana payouts](https://blindpay.com/docs/payout-solana)

---

Source: https://blindpay.com/prompts/integrate-fireblocks

---
title: "Integrate Fireblocks with BlindPay"
description: "Fund BlindPay stablecoin payouts from Fireblocks vault accounts: MPC-signed wallet registration and the ERC-20 approve through Fireblocks' transactions API."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "webhooks"]
---

Paste this prompt into your coding agent when your funds sit in Fireblocks vault accounts and need to authorize and fund BlindPay payouts.

## Prompt

```text
You are integrating BlindPay EVM payouts funded from a Fireblocks vault account into my application. Fireblocks holds the private key material (MPC, direct custody); every signature comes from Fireblocks' API, never from a local key or browser wallet.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the blockchain wallets page and the EVM payout guide)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://developers.fireblocks.com/docs/quickstart.md
- https://developers.fireblocks.com/reference/create-transactions.md
- https://developers.fireblocks.com/reference/sign-typed-messages-for-ethereum-and-evm-networks.md
- https://developers.fireblocks.com/docs/interact-with-smart-contracts.md
- https://developers.fireblocks.com/reference/monitoring-transaction-status.md

Build the flow:
1. Set up Fireblocks API authentication: generate an RSA-4096 keypair and CSR, upload the CSR in the Fireblocks Console to create an API user, and store the resulting API key and private key server-side. Confirm the SDK (`new Fireblocks({apiKey, secretKey, basePath})`) signs every request as a JWT automatically, so the private key never leaves the server.
2. Register the sender wallet with BlindPay: call GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message to get the challenge string, then sign it via Fireblocks with a POST /v1/transactions call using operation TYPED_MESSAGE, source pointing at the vault account, and extraParameters.rawMessageData.messages[0] set to {content: hex(challenge), type: "EIP191"}; confirm the correct assetId for typed-message signing on this chain in the Fireblocks docs above rather than assuming one. Poll GET /v1/transactions/{txId} until status is COMPLETED, then assemble the signature from signedMessages[0].signature.{r,s,v} using the byte order and v-value convention documented on the Fireblocks typed-message signing page. POST the assembled signature to /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets and persist the returned bw_ ID against the customer record.
3. Request a payout quote: POST /v1/instances/{instance_id}/quotes with bank_account_id, network, and token, and persist the quote_id plus the full contract object from the response (address, abi, functionName "approve", blindpayContractAddress, amount, network) alongside the pending payout record, reading every field verbatim from that response rather than a stored constant.
4. Send the approve call through Fireblocks: build the ABI-encoded calldata from the quote's contract.abi and functionName "approve" (using ethers.js, viem, or web3.js), then POST /v1/transactions with operation CONTRACT_CALL, assetId matching the chain, source set to the vault account, destination as a ONE_TIME_ADDRESS pointing at the token contract, amount "0", and extraParameters.contractCallData set to the encoded hex. Poll GET /v1/transactions/{txId} (or subscribe to Fireblocks' transaction webhook) through PENDING_SIGNATURE, BROADCASTING, and CONFIRMING until status is COMPLETED, and treat BLOCKED, FAILED, CANCELLED, or REJECTED as a hard stop that surfaces the Fireblocks policy or cosigner rejection reason to an operator.
5. Execute the payout before the quote expires: POST /v1/instances/{instance_id}/payouts/evm with quote_id and sender_wallet_address before expires_at (about 5 minutes out). Since Fireblocks' Transaction Authorization Policy and cosigner approval add latency on top of the approve confirmation, check the remaining time-to-expiry before calling this endpoint; if the quote has already expired, re-quote and skip a fresh approve call when the existing on-chain allowance already covers the new quote's amount.
6. Handle payout status from BlindPay's Svix-signed webhooks (svix-id, svix-timestamp, svix-signature verified with whsec_ against the raw body) for payout.new, payout.update, and payout.complete, and update the payout record's state on each event.
7. Run the full flow end to end on a development instance: use USDB on a testnet (for example base_sepolia), where KYC auto-approves, and verify all three outcomes with sentinel amounts: a normal amount completes, $666.00 (66600 minor units) forces a failed payout, and $777.00 (77700 minor units) forces a refunded payout.

Constraints:
- API keys and the Fireblocks RSA private key stay server-side; nothing about signing touches the client.
- Amounts are integer minor units everywhere, in both BlindPay and Fireblocks calls; never use floating point for money.
- Treat any Fireblocks TAP or cosigner-approval detail you can't confirm from the docs above as unverified and check the Fireblocks Console/docs before hardcoding an assumption about it.

Deliverables: Fireblocks API auth setup, the wallet registration flow (TYPED_MESSAGE sign plus bw_ persistence), the CONTRACT_CALL approve module with async status polling or webhook handling, quote-execute orchestration with the expiry race handled against Fireblocks' approval latency, BlindPay webhook handlers, and a passing end-to-end test on the development instance covering the normal, failed, and refunded sentinel amounts.
```

## How to use

1. Have your Fireblocks API user, CSR-signed API key, and vault account ID ready before running this; the agent needs them to wire the SDK.
2. Point the agent at your actual Transaction Authorization Policy setup if you have approval quorums configured, since that changes how long the approve confirmation takes.
3. Run the sentinel-amount test on a development instance first; the quote-expiry race is the flow's main failure mode when Fireblocks' cosigner approval is slow.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [EVM payouts](https://blindpay.com/docs/payout-evm)
- [Fireblocks quickstart](https://developers.fireblocks.com/docs/quickstart.md)
- [Fireblocks create transactions](https://developers.fireblocks.com/reference/create-transactions.md)

---

Source: https://blindpay.com/prompts/integrate-offramp-wallets

---
title: "Integrate offramp wallets for auto-conversion"
description: "Give each bank account a dedicated crypto deposit address: stablecoins sent to it convert and pay out to the linked bank account automatically."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "webhooks", "compliance"]
---

Paste this prompt into your coding agent to build the zero-touch offramp: users deposit stablecoins to an address, fiat lands in their bank account.

## Prompt

```text
You are integrating BlindPay offramp wallets into my application: a dedicated crypto deposit address tied to a bank account, where any supported stablecoin deposit auto-converts and pays out over the local rail with no per-transaction API call from me.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the offramp wallets, bank accounts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Prerequisites: approved customer (KYC/KYB) and a bank account (ba_) on the right rail (pix for BRL, spei for MXN, ach/wire/rtp for USD, and so on).
2. Create the offramp wallet: POST /v1/instances/{instance_id}/customers/{customer_id}/bank-accounts/{bank_account_id}/offramp-wallets, choosing the chain (Ethereum, Polygon, Base, Arbitrum, Solana, or Tron). Persist the returned deposit address against my user record.
3. Surface the deposit address safely in my UI: show the chain and token explicitly, warn that deposits on the wrong chain are lost, and respect the documented per-chain minimum deposit amounts before showing the address as ready.
4. Drive state from webhooks: wallet.inbound for the deposit, then payout.new/update/complete for the automatic conversion and payout, all Svix-verified and reconciled to my user via the wallet and bank account IDs.
5. Build the reporting view: for each deposit show received amount, FX applied, fees, and the fiat amount settled, from the webhook payloads.

Constraints:
- API keys stay server-side; never log full webhook payloads with PII.
- Test on a development instance with USDB on a testnet before production.
- One offramp wallet maps to one bank account; model that constraint in my schema.

Deliverables: offramp wallet provisioning service, the deposit-address UI component with chain/minimum warnings, webhook handlers, and the per-deposit settlement report.
```

## How to use

1. Paste the prompt with your stack details.
2. Decide which chains you want to expose; fewer chains means fewer wrong-chain support tickets.
3. Verify the full deposit-to-payout loop on a development instance.

## Related docs

- [Offramp wallets](https://blindpay.com/docs/offramp-wallets)
- [Bank accounts](https://blindpay.com/docs/bank-accounts)
- [Supported chains](https://blindpay.com/docs/kb/supported-chains)

---

Source: https://blindpay.com/prompts/integrate-payables

---
title: "Pay boletos and Brazilian bills with payables"
description: "Register boletos, arrecadacao slips, and PIX codes as payables and settle them from stablecoins through the quote-and-execute flow."
date: "2026-08-26"
updated: "2026-09-02"
category: "integrations"
products: ["payables", "quotes", "webhooks"]
---

Paste this prompt into your coding agent to build bill payment for Brazil: your users hold stablecoins, BlindPay pays their boletos.

## Prompt

```text
You are integrating BlindPay payables into my application: registering Brazilian bills (boleto, arrecadacao, or PIX code) and paying them from stablecoins.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payables, boleto and PIX payables, payout quotes, payouts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Prerequisites: an approved customer (KYC/KYB) and a funded wallet, managed or external. Reuse my existing onboarding if present.
2. Register the bill: POST /v1/instances/{instance_id}/payables with currency BRL and exactly one of boleto_barcode (a boleto digitable line or barcode, or an arrecadacao code for utility bills and tax slips; the kind is detected from the code itself) or pix_qrcode (the PIX copia e cola payload). Optionally upload the original boleto first with POST /v1/upload?instance_id={instance_id} using bucket `documents` and pass the returned file_url as document_file; PIX payables reject it. Persist the returned pb_ ID and surface the parsed bill details (amount, due date, beneficiary) back to the user for confirmation before paying.
3. Quote against the payable: POST /v1/instances/{instance_id}/quotes with payable_id instead of bank_account_id, plus network and token; do not send request_amount or currency_type. For a boleto the amount is re-resolved from the rail at quote time and can move with fines, interest, or day-specific discounts, so always show the quote's receiver_amount, never a cached figure. Execute with POST /v1/instances/{instance_id}/payouts/evm before the quote's expires_at.
4. Track the bill through payable.new, payable.update, and payable.complete, and the payment attempt through payout.new, payout.update, and payout.complete, all with Svix signature verification. Correlate the two streams through payable_id and payout_id, and never count a payout.complete and its payable.complete as two payments. Compliance holds, releases, and failure reasons arrive only on the payout events.
5. Handle the failure paths explicitly: expired or already-paid boletos, bills under the 10.00 USD minimum (LIMITS_AMOUNT_OUT_OF_RANGE at registration), a code registered twice (duplicate_payable: quote the existing payable again instead), a failed or refunded attempt that returns the payable to draft with last_attempt_status set, and quote expiry (re-quote and re-confirm with the user when the amount or rate moved).
6. Let the user delete a draft: DELETE /v1/instances/{instance_id}/payables/{payable_id} works only while no payout exists for it (payable_not_cancelable otherwise).

Constraints:
- Amounts are integers in minor units; API keys stay server-side.
- Validate the digitable line format client-side before calling the API so users get instant feedback on typos.
- Read document_file back with POST /v1/presign?instance_id={instance_id}, which returns a one-hour signed link; upload and presign both take instance_id as a query parameter. Never expose the raw file URL.
- Boleto and PIX payables are BRL only; US vendor invoices paid by ACH or wire use the invoice payable shape instead, so do not mix them into this flow.
- Test on a development instance first; use the sentinel amounts ($666.00 forces failed, $777.00 forces refunded) to prove the failure handling.

Deliverables: payable registration service with bill-detail confirmation step, the quote-and-pay path, webhook handlers for both event streams, and an integration test that registers and pays a test payable on the development instance.
```

## How to use

1. Paste the prompt with your stack details and instance ID.
2. Decide where bill confirmation happens in your UX; the parsed payable details are what the user must approve.
3. Run the full flow on a development instance before touching production.

## Related docs

- [Payables](https://blindpay.com/docs/payables)
- [Boleto and PIX payables](https://blindpay.com/docs/payable-boleto-pix)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)

---

Source: https://blindpay.com/prompts/integrate-payins

---
title: "Integrate payins from bank transfers to stablecoins"
seoTitle: "Integrate payins from bank transfers to stablecoins"
description: "Accept Pix, ACH, wire, SPEI, and other local bank transfers and settle them as USDC or USDT in a wallet, with quotes, payment instructions, and webhooks."
date: "2026-08-26"
category: "integrations"
products: ["payins", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to build the fiat-in, stablecoin-out direction: your users pay from a bank account and funds land in a wallet as stablecoins.

## Prompt

```text
You are integrating BlindPay payins (local bank transfer in, USDC/USDT out) into my application.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payin quickstart, payin quotes, wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the full payin flow:
1. Terms of service acceptance, then create a customer (POST /v1/instances/{instance_id}/customers) and wait for KYC approval via webhooks.
2. Create a destination wallet: a managed wallet (POST /v1/instances/{instance_id}/customers/{customer_id}/wallets) or register the customer's own blockchain wallet.
3. Request a payin quote (POST /v1/instances/{instance_id}/payin-quotes) with wallet_id, payment_method (pix, ach, wire, rtp, spei, or pse), request_amount, and currency_type. Note: on payins, currency_type "sender" means the fiat side. Quotes expire; read expires_at.
4. Create the payin (POST /v1/instances/{instance_id}/payins/evm, one endpoint for all payment methods) and surface the returned payment instructions to the payer: memo_code plus bank details for USD rails, pix_code for BRL, CLABE for MXN, or the payment link for PSE.
5. Track payin.new, payin.update, payin.complete, and wallet.inbound webhooks with Svix signature verification, and reconcile by payin ID (pi_).

Constraints:
- Amounts are integers in minor units. API keys stay server-side.
- Develop against a development instance with USDB on a testnet; payins auto-complete about 30 seconds after creation there.
- Show the payer exact transfer instructions including the memo code where the rail requires it; a missing memo is the top cause of unmatched deposits.

Deliverables: payin service, payment-instructions UI or API response, webhook handler with signature verification, and an integration test that creates a payin on the development instance and asserts the completion webhook.
```

## How to use

1. Create a development instance and API key at [app.blindpay.com](https://app.blindpay.com).
2. Tell the agent which rails you need (for example Pix only) so it trims the payment-method handling.
3. Run the flow on the development instance; payins auto-complete in about 30 seconds there.

## Related docs

- [Payin quickstart](https://blindpay.com/docs/quickstart-payin)
- [Payin quotes](https://blindpay.com/docs/payin-quotes)
- [Managed wallets](https://blindpay.com/docs/wallets)
- [Payment methods](https://blindpay.com/docs/kb/payment-methods)

---

Source: https://blindpay.com/prompts/integrate-privy

---
title: "Integrate Privy with BlindPay"
description: "Fund BlindPay stablecoin payouts from Privy Server Wallets: sign the registration challenge and the ERC-20 approve through Privy's wallet RPC endpoint."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "webhooks"]
---

Paste this prompt into your coding agent when your product holds customer funds in Privy wallets and those wallets need to fund BlindPay payouts.

## Prompt

```text
You are integrating BlindPay payouts funded from Privy Server Wallets into my application. The Privy wallet is the sender: it registers with BlindPay, approves the payout contract, and gets recorded as the sender_wallet_address on the payout.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the blockchain wallets page and the EVM payout guide)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://docs.privy.io/guide/server-wallets/quickstart/api
- https://docs.privy.io/guide/server-wallets/usage/ethereum
- https://docs.privy.io/api-reference/wallets/rpc-intent
Confirm the exact Server Wallets RPC request/response shape and the privy-authorization-signature requirement against these pages before coding; do not invent endpoint names or parameters.

Build the flow:
1. Fetch the registration challenge (GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message), sign it with the Privy Server Wallet through POST https://api.privy.io/v1/wallets/{wallet_id}/rpc using method personal_sign, chain_type ethereum, and the challenge as the message, then submit the returned signature to POST /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets and persist the returned bw_ ID against the customer record. Authenticate the Privy call with HTTP Basic app_id:app_secret plus the privy-app-id header, and add privy-authorization-signature when the wallet has an owner_id.
2. Request a quote: POST /v1/instances/{instance_id}/quotes with bank_account_id, network, and token. Store the response's contract object (address, abi, functionName "approve", blindpayContractAddress, amount, network, expires_at) exactly as returned for the approve step.
3. Build the approve calldata from the stored contract object and send it through the Privy wallet: POST https://api.privy.io/v1/wallets/{wallet_id}/rpc with method eth_sendTransaction, caip2 set to the quote's network, and a transaction object with to set to the contract address and data set to the encoded approve call. Store the returned hash and poll the chain RPC until the transaction confirms, since this Privy endpoint returns once the transaction is broadcast, not once it is confirmed.
4. Execute the payout before the quote's expires_at: POST /v1/instances/{instance_id}/payouts/evm with quote_id and sender_wallet_address set to the Privy wallet's address. If expires_at passes while waiting on approve confirmation, request a fresh quote and reuse the existing on-chain allowance when it already covers the new amount.
5. Verify each Svix-signed webhook (svix-id, svix-timestamp, svix-signature against whsec_) and update stored payout state on payout.new, payout.update, and payout.complete.
6. Run the full flow end to end on a development instance with USDB on base_sepolia: one payout that completes, one that hits the $666.00 sentinel to force failed, and one that hits the $777.00 sentinel to force refunded, confirming the webhook handler reaches the correct terminal state each time.

Constraints:
- Keep BlindPay and Privy API keys server-side; the Privy Server Wallet call is the only signer, there is no browser wallet in this flow.
- Store and compare all amounts as integer minor units; never use floating point for money math.
- Call the payout execute endpoint only after the approve transaction hash confirms on-chain.

Deliverables: wallet registration module (challenge fetch, Privy personal_sign call, bw_ persistence), quote-to-approve-to-execute orchestration with the expiry and reused-allowance logic handled, webhook handlers for all three payout events, and a passing development-instance test covering the completed, failed-sentinel, and refunded-sentinel cases.
```

## How to use

1. Confirm which Privy wallets in your system are owner_id-scoped (user-controlled) versus fully server-controlled; that decides whether privy-authorization-signature is required on every call.
2. Point the agent at your existing Privy Server Wallet client so it reuses your app_id/app_secret setup instead of writing a new one.
3. Run the base_sepolia test with real sentinel amounts before pointing the flow at a production instance.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [EVM payouts](https://blindpay.com/docs/payout-evm)
- [Privy Server Wallets quickstart](https://docs.privy.io/guide/server-wallets/quickstart/api)
- [Privy wallet RPC reference](https://docs.privy.io/api-reference/wallets/rpc-intent)

---

Source: https://blindpay.com/prompts/integrate-quotes-fx

---
title: "Integrate quotes and FX handling"
description: "Handle payin, payout, and transfer quotes correctly: expiry windows, currency_type conventions, fees, and displaying rates to users."
date: "2026-08-26"
category: "integrations"
products: ["quotes", "payouts", "payins"]
---

Paste this prompt into your coding agent to build a correct quoting layer, the part of a payments integration where subtle mistakes cost real money.

## Prompt

```text
You are building the quoting and FX layer for my BlindPay integration.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read payin quotes, payout quotes, transfer quotes, and cut-off times)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Implement:
1. Payout quotes: POST /v1/instances/{instance_id}/quotes with bank_account_id, network, and token. Here currency_type "sender" means the stablecoin side.
2. Payin quotes: POST /v1/instances/{instance_id}/payin-quotes with wallet_id and payment_method. Here currency_type "sender" means the fiat side. Encode this asymmetry in named types or enums so call sites cannot mix them up.
3. Transfer quotes (managed wallet to any address): POST /v1/instances/{instance_id}/transfer-quotes with amount_reference sender or receiver; rate is fixed 1:1.
4. Expiry: read expires_at (epoch milliseconds) on every quote and never hardcode a window. Standard quotes last about 5 minutes, BRL OTC payin quotes about 10 seconds. Build a re-quote path: if execution fails because the quote expired, fetch a fresh quote and surface the new rate for confirmation when it moved.
5. Amounts and display: request_amount is an integer in minor units. From the response use commercial_quotation vs blindpay_quotation to show the user the rate and the spread, plus flat_fee and partner_fee_amount for a complete price breakdown. Respect cover_fees when the sender absorbs fees.
6. Enforce documented per-currency minimums and maximums before quoting, so users get a validation error instead of an API error.

Constraints:
- Quotes are point-in-time server state: never cache or reuse one across payment attempts.
- Store the quote ID (qu_) and its full response with each payment for reconciliation and support.

Deliverables: a typed quote client distinguishing the three quote kinds, a re-quote-on-expiry helper, a price-breakdown formatter for UI display, and unit tests covering the currency_type conventions in both directions.
```

## How to use

1. Paste the prompt with your stack details.
2. Tell the agent which corridors you quote (for example USDC to BRL and MXN) so it can bake in the right minimums.
3. Check the rate-display output against the dashboard before shipping.

## Related docs

- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Payin quotes](https://blindpay.com/docs/payin-quotes)
- [Cut-off times and limits](https://blindpay.com/docs/kb/cut-off-times)

---

Source: https://blindpay.com/prompts/integrate-stablecoin-payouts

---
title: "Integrate stablecoin payouts end to end"
description: "Build a complete stablecoin to fiat payout flow: customer onboarding, bank accounts, quotes, and payout execution over Pix, ACH, SPEI, SEPA, and more."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into Claude, Cursor, or any coding agent to scaffold a production-grade payout integration against the BlindPay API.

## Prompt

```text
You are integrating BlindPay stablecoin payouts (USDC/USDT to local fiat) into my application.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (docs index; read the payout quickstart, quotes, bank accounts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the full payout flow:
1. Terms of service acceptance (POST /v1/e/instances/{instance_id}/tos), then create a customer (POST /v1/instances/{instance_id}/customers) and wait for KYC approval via the customer.update webhook, not polling.
2. Add the recipient's bank account (POST /v1/instances/{instance_id}/customers/{customer_id}/bank-accounts) with the right rail type for the corridor (pix for BRL, ach/wire/rtp for USD, spei for MXN, sepa for EUR, transfers for ARS).
3. Request a payout quote (POST /v1/instances/{instance_id}/quotes) with bank_account_id, network, and token. Treat the quote as expiring in 5 minutes; read expires_at instead of hardcoding.
4. Execute the payout (POST /v1/instances/{instance_id}/payouts/evm) with the quote_id before expiry. If funding from an external wallet, handle the ERC-20 approve step using the contract object returned by the quote.
5. Track completion through payout.new, payout.update, and payout.complete webhooks, verifying Svix signatures (svix-id, svix-timestamp, svix-signature headers; HMAC-SHA256 over the raw body with the whsec_ secret; reject timestamps older than 5 minutes).

Constraints:
- All amounts are integers in minor units (cents).
- The API key is a Bearer token and must never reach client-side code.
- Start against a development instance: use USDB on a testnet (for example base_sepolia), where KYC auto-approves and payouts auto-complete.
- Persist BlindPay IDs (re_, ba_, qu_, po_) on my own records for reconciliation.

Deliverables: typed API client (or use the official SDK for my stack), the payout service, the webhook handler, and a happy-path integration test against the development instance.
```

## How to use

1. Create a development instance and API key at [app.blindpay.com](https://app.blindpay.com).
2. Paste the prompt into your agent along with your stack details (language, framework, database).
3. Give the agent your instance ID and let it run against the development instance, where payouts auto-complete in seconds.
4. Review the generated webhook verification code carefully before going live.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Bank accounts](https://blindpay.com/docs/bank-accounts)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)

---

Source: https://blindpay.com/prompts/integrate-utila

---
title: "Integrate Utila with BlindPay"
description: "Fund BlindPay payouts from Utila MPC vaults: sign the wallet-registration challenge and the ERC-20 approve through Utila's service-account API, with async transaction confirmation handled."
date: "2026-08-26"
category: "integrations"
products: ["payouts", "quotes", "webhooks"]
---

Paste this prompt into your coding agent when funds live in Utila-managed MPC wallets and those wallets need to register as the sender and authorize BlindPay payouts on-chain.

## Prompt

```text
You are integrating BlindPay EVM payouts funded from Utila MPC vault wallets into my application. Utila holds the private key shares; my backend calls Utila's REST API to sign the BlindPay registration challenge and the ERC-20 approve, then calls BlindPay to execute the payout.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the blockchain wallets page and the EVM payout guide)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://docs.utila.io/reference/api-overview
- https://docs.utila.io/reference/authentication
- https://docs.utila.io/reference/service-accounts
- https://docs.utila.io/reference/transactions_initiatetransaction
- https://docs.utila.io/reference/blockchains_listnetworks

Build the flow:
1. Authenticate to Utila as a service account: build a locally-signed RS256 JWT (sub = service account email, aud = "https://api.utila.io/", short expiry) from the uploaded RSA key pair and send it as a Bearer token on every Utila call. Confirm the exact claim set and endpoint against the live auth docs before hardcoding it.
2. Register the wallet: call GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message to get the challenge, sign it by calling Utila's POST /v2/vaults/{vault_id}/transactions:initiate with details.evmPersonalSign (fromAddress, message), poll GetTransaction (or handle the equivalent webhook) until the signing transaction reaches its completed state, extract the signature, and POST it to /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets to persist the returned bw_ ID against the customer record.
3. Request a quote: call POST /v1/instances/{instance_id}/quotes with bank_account_id, network, and token, and read back the contract object (address, abi, functionName "approve", blindpayContractAddress, amount, network, expires_at) without hardcoding any contract address.
4. Send the approve: ABI-encode the "approve" call from the quote's contract.abi and amount, then call Utila's POST /v2/vaults/{vault_id}/transactions:initiate with details.evmTransaction (network resolved via ListNetworks for the quote's chain, fromAddress, toAddress = contract.blindpayContractAddress, value "0", data = the encoded call, publish true). Poll GetTransaction (or handle the equivalent webhook) until the transaction reaches CONFIRMED before moving on, and surface Utila's policy-engine states (pending approval, co-signing) as visible statuses in this step since they add latency on top of the quote's expiry window.
5. Execute the payout: call POST /v1/instances/{instance_id}/payouts/evm with the quote_id and sender_wallet_address before the quote's expires_at. If the quote expires while the approve is still confirming, request a fresh quote for the same amount and skip re-sending the approve when the existing on-chain allowance already covers it.
6. Verify the webhook secret and handle payout.new, payout.update, and payout.complete with Svix signature verification (svix-id, svix-timestamp, svix-signature against whsec_) on the raw request body, updating payout state in the database on each event.
7. Run the full flow end to end on a development instance with USDB on a testnet, then repeat it once each with the $666.00 (66600 minor units) sentinel to confirm the failed webhook path and $777.00 (77700 minor units) to confirm the refunded webhook path.

Constraints:
- Keep BlindPay and Utila API keys server-side; never expose either to the client.
- Represent every amount as an integer in minor units end to end; never use floating point for money math.
- Never hardcode the BlindPay contract address, ABI, or Utila network resource name; read them from the quote response and ListNetworks respectively.

Deliverables: the Utila service-account auth helper, the wallet registration flow with the bw_ ID persisted, the quote-approve-execute orchestration with async Utila confirmation and the expiry race handled, Svix-verified webhook handlers, and a passing end-to-end test against a development instance covering the success and both sentinel-amount paths.
```

## How to use

1. Give the agent your Utila service account's key pair location and vault ID, and your BlindPay instance ID.
2. Confirm the Base Sepolia (or your target testnet) network resource name against Utila's ListNetworks before the agent wires the approve call.
3. Watch the quote-expiry-vs-MPC-approval race in testing; Utila's co-signing delay is what usually pushes past the 5-minute window.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [EVM payouts](https://blindpay.com/docs/payout-evm)
- [Utila API overview](https://docs.utila.io/reference/api-overview)
- [Utila InitiateTransaction](https://docs.utila.io/reference/transactions_initiatetransaction)

---

Source: https://blindpay.com/prompts/integrate-virtual-accounts

---
title: "Integrate US virtual accounts"
description: "Give each customer a named US bank account with ACH, RTP, wire, and SWIFT details that settles automatically to USDC or USDT in their wallet."
date: "2026-08-26"
category: "integrations"
products: ["virtual-accounts", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to issue dedicated US account numbers for your customers and settle incoming transfers to stablecoins.

## Prompt

```text
You are integrating BlindPay virtual accounts into my application: each customer gets a dedicated US bank account (routing and account number) whose deposits settle automatically as USDC/USDT to a linked blockchain wallet.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the virtual accounts pages, customers, blockchain wallets, and webhooks)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Create the customer and wait for KYC/KYB approval (customer.update webhook). Business customers need owners and the KYB document set.
2. Register the settlement blockchain wallet for the customer.
3. Make sure the compliance fields virtual accounts require are set on the customer (account_purpose, source_of_wealth, and the business fields for KYB), updating via PUT /v1/instances/{instance_id}/customers/{customer_id} if needed.
4. Create the virtual account: POST /v1/instances/{instance_id}/customers/{customer_id}/virtual-accounts with banking_partner, token, and blockchain_wallet_id.
5. Handle the two-stage review lifecycle (pending_review, verifying, approved or rejected) through virtualAccount.new and virtualAccount.complete webhooks; only show account details to the customer once approved.
6. Record deposit settlements via wallet.inbound webhooks and reconcile fees: deposits under $100 accrue to the monthly invoice (billing_fee_amount), larger ones are charged at transaction time (transaction_fee_amount).

Constraints:
- API keys stay server-side; verify Svix webhook signatures on every event.
- On a development instance virtual accounts skip review and go straight to approved, so also code the rejected path deliberately.
- Persist va_, re_, and bw_ IDs on my own records.

Deliverables: virtual account service, webhook handlers for the account lifecycle and inbound deposits, and a summary of which compliance fields my onboarding form must collect for individuals versus businesses.
```

## How to use

1. Ensure your onboarding collects the compliance fields (account purpose, source of wealth, business documentation for KYB) before creating accounts.
2. Paste the prompt with your stack details and instance ID.
3. Test on a development instance first; review auto-approves there.

## Related docs

- [Virtual accounts overview](https://blindpay.com/docs/virtual-accounts)
- [Creating virtual accounts](https://blindpay.com/docs/virtual-accounts-create)
- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)

---

Source: https://blindpay.com/prompts/integrate-wallet-transfers

---
title: "Integrate wallet transfers and cross-chain USDC"
description: "Move stablecoins from managed wallets to any address with transfer quotes, including cross-chain USDC over Circle CCTP v2."
date: "2026-08-26"
category: "integrations"
products: ["quotes", "webhooks"]
---

Paste this prompt into your coding agent to build wallet-to-wallet movement: withdrawals, treasury sweeps, and cross-chain USDC routing.

## Prompt

```text
You are integrating BlindPay transfers into my application: moving stablecoins from a managed wallet (bl_) to any destination address, including cross-chain.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the transfer quotes, transfers, wallets, and supported chains pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build the flow:
1. Check the source: GET /v1/instances/{instance_id}/customers/{customer_id}/wallets/{wallet_id}/balance before quoting, and reject transfers that would exceed it with a clear client-side error.
2. Quote: POST /v1/instances/{instance_id}/transfer-quotes with amount_reference sender or receiver. The rate is fixed 1:1; still read expires_at from the response and execute promptly rather than assuming a window.
3. Execute: POST /v1/instances/{instance_id}/transfers against the quote, persist the tr_ ID, and drive state from transfer.new and transfer.complete webhooks with Svix verification.
4. Route validation, encoded as checks before quoting: transfers are same-network by default; only USDC can cross chains, via Circle CCTP v2 between Ethereum, Polygon, Base, and Arbitrum; USDT transfers are restricted to Polygon. Map the API errors cross_chain_transfers_only_support_usdc and cctp_route_not_supported to friendly messages, but validate up front so users rarely see them.
5. Build an address-confirmation step: show chain, token, and destination address with a checksum display before executing; transfers to wrong addresses are irreversible.

Constraints:
- Amounts are integers in minor units; API keys stay server-side.
- Develop on a development instance with USDB on testnets; swap to USDC/USDT mainnets only at production cutover.
- Never initiate the same transfer twice: key on my own transaction ID and check for an existing tr_ before creating.

Deliverables: transfer service with route validation, the confirmation UI step, webhook handlers, and tests covering same-chain, valid CCTP cross-chain, and rejected-route cases.
```

## How to use

1. Paste the prompt with your stack details.
2. List which chains your product actually needs; the route matrix drives most of the validation code.
3. Test the rejected-route paths as thoroughly as the happy path.

## Related docs

- [Transfer quotes](https://blindpay.com/docs/transfer-quotes)
- [Transfers](https://blindpay.com/docs/transfers)
- [Supported chains](https://blindpay.com/docs/kb/supported-chains)

---

Source: https://blindpay.com/prompts/integrate-webhooks

---
title: "Integrate webhooks end to end"
description: "Register endpoints, verify Svix signatures correctly, deduplicate retries, and drive payment state from the full BlindPay event catalog."
date: "2026-08-26"
category: "integrations"
products: ["webhooks"]
---

Paste this prompt into your coding agent to build the webhook infrastructure every BlindPay integration should be driven by.

## Prompt

```text
You are building the webhook layer for my BlindPay integration.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the webhooks, webhook verification, and webhook events pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Build:
1. Endpoint registration: POST /v1/instances/{instance_id}/webhook-endpoints with my https URL and an explicit events list (empty array means all events). Fetch the signing secret via GET /v1/instances/{instance_id}/webhook-endpoints/{endpoint_id}/secret.
2. Signature verification, exactly per the docs: build the signed content as "{svix-id}.{svix-timestamp}.{raw request body}" using the raw bytes (never re-serialized JSON), HMAC-SHA256 keyed with the base64-decoded portion of the whsec_ secret, base64 the digest, then compare against each space-delimited "v1,..." candidate in svix-signature using a constant-time comparison. Reject if the timestamp is more than 5 minutes from now.
3. Dedup and retries: svix-id is stable across retries, so use it as the idempotency key. Return 2xx fast and process asynchronously; non-2xx responses are retried with backoff.
4. Event routing for the catalog: customer.new/update/delete, bankAccount.new, blockchainWallet.new, tos.accept, payin.new/update/complete, payout.new/update/complete, payout.partnerFee, virtualAccount.new/complete, transfer.new/complete, wallet.new, wallet.inbound, limitIncrease.new/update. Every payload carries a webhook_event field; route on it and log unknown events instead of failing.
5. A local development story: a tunnel or the dashboard's event replay for re-delivering events while testing.

Constraints:
- The verification code must be covered by unit tests with a known secret and fixture payload, including a tampered-body case and an expired-timestamp case.
- Never log full payloads containing PII; log event type, svix-id, and resource IDs.

Deliverables: registration script or setup code, verification middleware, an idempotent event router with per-event handlers stubbed, and the unit tests described above.
```

## How to use

1. Paste the prompt with your stack details (framework and queue system if any).
2. Point the agent at your endpoint URL; use a tunnel for local development.
3. Replay events from the BlindPay dashboard to test handlers without creating new payments.

## Related docs

- [Webhooks](https://blindpay.com/docs/learn/webhooks)
- [Signature verification](https://blindpay.com/docs/learn/webhooks-verification)
- [Event catalog](https://blindpay.com/docs/learn/webhooks-events)

---

Source: https://blindpay.com/prompts/integration-quality-audit

---
title: "Integration quality audit"
description: "Audit an existing BlindPay integration for correctness and resilience: quote expiry handling, webhook security, idempotency, error paths, and reconciliation."
date: "2026-08-26"
category: "diagnostics"
products: ["payouts", "payins", "webhooks", "quotes", "compliance"]
---

Paste this prompt into your coding agent to grade an existing integration against how the API is meant to be used.

## Prompt

```text
Audit my existing BlindPay integration for correctness, security, and resilience. Read the code, then produce a findings report; do not change code until I approve the findings.

Ground truth for the audit:
- https://blindpay.com/docs/llms.txt (read the pages relevant to the flows you find in my code)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Audit checklist:
1. API key handling: keys only on the server, never in client bundles, logs, or version control; scoped per instance.
2. Quote lifecycle: every quote executed before its expires_at is read from the response (not hardcoded); a re-quote path exists for expiry failures; quotes are never reused across payment attempts; currency_type is used with the correct convention on payins (sender = fiat) versus payouts (sender = stablecoin).
3. Amounts: integer minor units everywhere, no floating point money math anywhere in the pipeline.
4. Webhook security: Svix signature verification over the raw body with constant-time comparison and timestamp tolerance; svix-id dedup; fast 2xx responses with async processing; no state driven by polling where a webhook event exists.
5. Idempotency and double-send protection: payouts and payins are keyed on my own payment IDs so a retry or crash cannot create a duplicate transfer; the ToS call uses a proper UUID idempotency_key.
6. Error and failure paths: rejected KYC (including compliance_request RFIs), failed and refunded payouts, expired quotes, and unsupported-country errors all have explicit handling, not just the happy path.
7. State and reconciliation: BlindPay IDs (re_, ba_, bw_, bl_, va_, qu_, po_, pi_, tr_) persisted against my records; a reconciliation job or report compares my ledger with BlindPay statuses.
8. Environment hygiene: no sentinel test amounts ($666.00/$777.00), USDB token, or testnet networks reachable from production configuration; webhook endpoints configured separately per instance.

For each finding report: severity (critical, high, medium, low), the file and line, what is wrong, the concrete failure it can cause, and the fix. Order by severity. Finish with the three fixes I should make first.
```

## How to use

1. Paste the prompt and point the agent at the code paths that touch BlindPay.
2. Review the findings report before letting it fix anything.
3. Re-run the audit after fixes; it should come back clean.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Signature verification](https://blindpay.com/docs/learn/webhooks-verification)
- [Sandbox vs production](https://blindpay.com/docs/learn/sandbox-vs-production)

---

Source: https://blindpay.com/prompts/migrate-from-anchorage

---
title: "Migrate from Anchorage Digital to BlindPay"
description: "Agent prompt to keep Anchorage Digital for custody and move the stablecoin-to-fiat leg to BlindPay: map transfers, withdrawals, and settlement events to quotes, payouts, and webhooks."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to add BlindPay as the fiat offramp for an application that uses Anchorage Digital (Atlas, API custody, Porto self-custody) for stablecoin custody.

## Prompt

```text
You are adding BlindPay as the fiat offramp for my application. Anchorage Digital stays the custodian and signer for stablecoin balances (Atlas settlement, API custody operations, or Porto self-custody wallets). BlindPay only handles converting those stablecoins to fiat and paying out to a bank account.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, payouts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://docs.anchorage.com/knowledge-base/api-reference/introduction for how our existing Anchorage integration authenticates and what it calls

Do the migration in this order:
1. Inventory my Anchorage usage from the codebase: every Anchorage transfer, withdrawal, Atlas settlement, or webhook call, plus every stored Anchorage ID (vault ID, wallet ID, transfer ID, settlement ID). Note which Anchorage flows stay as-is (custody, signing, on-chain settlement) and which ones today end in an offramp to fiat, since only the latter move to BlindPay. Confirm exact endpoint names and payloads in the Anchorage docs rather than assuming, and flag anything with no direct BlindPay equivalent. Produce a written inventory report before touching code.
2. Onboard the receiving parties as BlindPay customers: create a customer (re_) per payee with KYC or KYB data, add their payout bank account (ba_) for the correct rail (Pix, SPEI, SEPA, ACH, or wire), and store the resulting re_ and ba_ IDs against the same record that holds the Anchorage vault or wallet ID today.
3. If stablecoins are staying in an Anchorage Porto or vault wallet until payout time, register that wallet with BlindPay as an external wallet using the sign-message challenge flow and store the resulting bw_ ID, so BlindPay can recognize funds sent from it without taking custody itself.
4. Rebuild the offramp leg on BlindPay's two-step model: request a quote (qu_) for the payout amount and rail, then call POST /v1/instances/{instance_id}/payouts/evm to execute it as a payout (po_) before the quote's expires_at (about 5 minutes out). Replace whatever Anchorage transfer or withdrawal call currently ends a payout flow with this quote-then-execute pair, and confirm a payout reaches a terminal state end to end against a BlindPay development instance (USDB on testnets, KYC auto-approves) before moving on.
5. Add BlindPay webhook handling alongside whatever Anchorage webhook or polling logic exists today: verify the Svix signature (svix-id, svix-timestamp, svix-signature) against the raw request body with your whsec_ signing secret, dedupe on svix-id, and update payout status from the payout events. Use the $666.00 and $777.00 sentinel amounts in the development instance to confirm the forced-failed and forced-refunded paths are both handled.
6. Cut over per payout flow behind a feature flag: dual-run Anchorage's existing offramp path and the new BlindPay path side by side, compare outcomes on real payouts, and only remove the old offramp code once a full dual-run cycle settles cleanly on BlindPay and Anchorage still reconciles as the custody source of truth.

Constraints:
- Anchorage keeps custody and signing for anything not explicitly moved to BlindPay; do not build a second custody path.
- API keys for both providers stay server-side only.
- Amounts are integer minor units on both sides; no floating point money math anywhere in the payout path.
- Develop and test the new path against a BlindPay development instance before touching production keys.

Deliverables: the Anchorage usage inventory report, the customer and bank account onboarding script, the external wallet registration flow (if funds stay in Anchorage until payout), the quote-then-payout code path, webhook handlers with signature verification, and a cutover checklist per payout flow.
```

## How to use

1. Run the prompt against a branch with both an active Anchorage integration and a BlindPay development instance key on hand, and review the inventory report before letting the agent touch any onboarding or payout code.
2. Provision BlindPay bank accounts and, if wallets stay on Anchorage, complete external wallet registration for a small set of test payees first, then confirm the dual-run cycle settles before onboarding the rest.
3. Once one payout flow has run clean on BlindPay for a full settlement cycle, flip its feature flag and repeat the cutover checklist for the next flow rather than switching everything at once.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)
- [Anchorage API reference introduction](https://docs.anchorage.com/knowledge-base/api-reference/introduction)

---

Source: https://blindpay.com/prompts/migrate-from-bitgo

---
title: "Migrate from BitGo to BlindPay"
description: "Move the stablecoin-to-fiat leg of a BitGo integration to BlindPay: map wallets, transfers, and settlement webhooks to BlindPay customers, quotes, payouts, and Svix events."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat leg of a BitGo (developers.bitgo.com) integration to BlindPay, while BitGo keeps custody and signing.

## Prompt

```text
You are migrating the stablecoin-to-fiat payout leg of my application from BitGo to BlindPay. BitGo stays in place for custody and transaction signing: only the offramp and settlement leg moves.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, external wallets, quotes, payouts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my BitGo usage from the codebase: every BitGo wallet call, send-transaction or transfer call, Go Network settlement call, offramp or settlement partner integration, and wallet webhook (transfer, pendingapproval, address_confirmation), plus every stored BitGo wallet ID and transfer ID. Confirm in the BitGo docs anything in the codebase you cannot map with certainty. Produce a written mapping table before changing code: BitGo concept, BlindPay equivalent, and gaps with no direct match.
2. Register my existing BitGo wallets as BlindPay external wallets using the sign-message challenge flow, storing the resulting bw_ ID against each wallet. Funds keep living in BitGo custody; the bw_ ID is the connection point BlindPay uses to know where stablecoins are coming from.
3. Onboard payout recipients as BlindPay customers (re_) with KYC or KYB, and register their payout rails as BlindPay bank accounts (ba_) for Pix, SPEI, SEPA, ACH, or wire as applicable. Store the re_ and ba_ IDs against the corresponding BitGo wallet or account record. Treat this as new KYC: BitGo qualified-custody or counterparty checks do not transfer to BlindPay.
4. Rebuild the settlement leg on BlindPay's two-step model: request a quote (qu_), then execute the payout (po_) via POST /v1/instances/{instance_id}/payouts/evm before the quote's expires_at, roughly five minutes out. Verify a full cycle end to end in a BlindPay development instance: USDB on testnets, KYC auto-approves, and confirm the $666.00 forced-failed and $777.00 forced-refunded sentinels both produce the expected payout state.
5. Port settlement notifications from BitGo's HMAC-signed wallet webhooks (x-signature-sha256) to BlindPay's Svix-signed webhook events, verifying svix-id, svix-timestamp, and svix-signature against the raw request body with the instance's whsec_ secret, and deduplicating on svix-id. Confirm each BlindPay payout status transition (sent, failed, refunded) reaches your handler and updates the record BitGo used to track that transfer.
6. Cut the payout flow over behind a feature flag: dual-run BitGo and BlindPay settlement side by side for a full cycle, compare outcomes per transfer, then retire the BitGo settlement path only once every in-flight BitGo transfer has settled and every payout in the dual-run window matches. BitGo continues to hold and sign the underlying assets after cutover; only the fiat leg has moved.

Constraints:
- BitGo remains the custodian and signer for any wallet not explicitly re-platformed; do not move custody.
- API keys stay server-side, never in client code or logs.
- All amounts are integer minor units; never use floating point for money math.
- Develop and test the full flow against a BlindPay development instance before touching production.

Deliverables: the migration report (mapping table, gaps, re-KYC plan), the external wallet registration script (bw_ IDs), the BlindPay client and quote-then-payout code path behind a flag, Svix webhook handlers with signature verification, and a cutover checklist covering the dual-run comparison and BitGo retirement criteria.
```

## How to use

1. Fill in your BitGo network (mainnet or testnet), your existing wallet and coin types, and which BitGo webhook events your backend currently consumes.
2. Run the prompt against a feature branch with a BlindPay development instance (test API key, USDB on testnets) before pointing anything at a production instance.
3. Review the migration report the agent produces first: confirm the wallet-to-bw_ mapping and the re-KYC plan before letting it touch the live payout path.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)
- [BitGo webhooks overview](https://developers.bitgo.com/guides/webhooks/overview)

---

Source: https://blindpay.com/prompts/migrate-from-bridge

---
title: "Migrate from Bridge to BlindPay"
description: "Agent prompt to move an existing Bridge integration to the BlindPay API: map customers, external accounts, liquidation addresses, and transfers to their equivalents."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "payins", "virtual-accounts", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to port a Bridge (bridge.xyz) integration to BlindPay with a dual-run cutover.

## Prompt

```text
You are migrating my application from the Bridge (bridge.xyz) API to the BlindPay API.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, virtual accounts, quotes, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Bridge usage from the codebase: every Bridge endpoint, webhook, and stored Bridge ID (customers, external accounts, liquidation addresses, virtual accounts, transfers). Derive the concept mapping from what we actually use, roughly: Bridge customers with KYC map to BlindPay customers (re_) with KYC/KYB; external accounts map to bank accounts (ba_) with rail-specific types; liquidation addresses map to offramp wallets; Bridge virtual accounts map to BlindPay virtual accounts (va_); fiat-to-crypto transfers map to payins and crypto-to-fiat transfers map to quote plus payout. Flag anything with no direct equivalent instead of guessing.
2. Re-onboard customers on BlindPay: terms of service, create customer, KYC/KYB via document upload, driven by webhooks. KYC does not transfer between providers, so plan for re-verification and sequence it before the cutover so approved customers are ready when we switch.
3. Rebuild money movement on BlindPay's explicit two-step model: request a quote, then execute the payout or payin against it before expires_at. Store qu_, po_, and pi_ IDs alongside the legacy Bridge IDs during the transition.
4. Port webhooks to BlindPay's Svix-signed events (customer.*, payin.*, payout.*, virtualAccount.*, wallet.inbound) with proper signature verification and svix-id dedup.
5. Cut over per flow behind a feature flag: dual-run with new activity on BlindPay while Bridge handles in-flight items, keep both webhook handlers live during the window, and only retire the Bridge path once in-flight transfers settle.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets) first.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report before changing code: the mapping table, gaps, and the re-KYC plan.

Deliverables: the migration report, re-onboarding script, the BlindPay client and money-movement code paths behind a flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories real Bridge usage rather than assuming.
2. Review the migration report, especially the re-KYC sequencing, before approving code changes.
3. Dual-run at least one full settlement cycle before retiring Bridge.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Offramp wallets](https://blindpay.com/docs/offramp-wallets)

---

Source: https://blindpay.com/prompts/migrate-from-cobo

---
title: "Migrate from Cobo to BlindPay"
description: "Move an existing Cobo Payments integration to the BlindPay API: keep Cobo for custody if you want, and replace the stablecoin-to-fiat leg with BlindPay's customers, quotes, and payouts."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "payins", "virtual-accounts", "compliance", "webhooks", "quotes"]
---

Paste this prompt into your coding agent to port the payment leg of a Cobo (cobo.com) integration to BlindPay, keeping Cobo wallets as custodian if desired, with a dual-run cutover.

## Prompt

```text
You are migrating the stablecoin-to-fiat payment leg of my application from Cobo Payments to the BlindPay API. Cobo may keep custody of wallets (MPC or custodial) and I may keep using it for that; this migration replaces the payout/offramp flow, not necessarily the wallet layer.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, virtual accounts, quotes, payouts, offramp wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Cobo usage from the codebase: every Cobo Payments endpoint I call (top-up addresses, payment orders, subscriptions, refund links, payout destinations, batch payouts), every Cobo webhook event I handle (order status changes, top-up arrivals, payout completions), and every stored Cobo ID (order ID, top-up address, payout destination, wallet ID). Confirm exact endpoint names and event payloads in the Cobo docs (manuals.cobo.com and the Cobo Developer Hub) rather than assuming; flag anything with no direct BlindPay equivalent instead of guessing. Produce a written mapping table plus a gaps list before touching code.
2. Re-onboard my counterparties on BlindPay: create a BlindPay customer (re_) with KYC or KYB per payer or payee, and register their payout destination as a BlindPay bank account (ba_) for the correct rail (Pix, SPEI, SEPA, ACH, or wire). KYC does not transfer between providers, so every counterparty needs a fresh BlindPay KYC/KYB pass. Store the resulting re_ and ba_ IDs alongside the existing Cobo IDs so both systems can be queried during cutover.
3. If wallets stay in Cobo custody, register each Cobo wallet address as a BlindPay external wallet using the sign-message challenge flow, and store the resulting bw_ ID. This lets funds keep living in Cobo-controlled wallets while BlindPay handles the fiat leg: Cobo continues to hold and move the stablecoin, and BlindPay converts it to fiat on payout.
4. Rebuild money movement on BlindPay's explicit two-step model in place of Cobo's order/payout flow: request a quote (qu_), then execute the payout (po_) via POST /v1/instances/{instance_id}/payouts/evm before the quote's expires_at (about 5 minutes). Do the same for inbound flows using payins (pi_), virtual accounts (va_), or offramp wallets (auto-converting deposit addresses) in place of Cobo's top-up addresses and order mode. Confirm each transfer settles end to end against a BlindPay development instance before moving to the next flow.
5. Port webhooks from Cobo's signed callbacks to BlindPay's Svix-signed events: verify svix-id, svix-timestamp, and svix-signature against the raw request body using the instance's whsec_ secret, and dedup on svix-id. Confirm a real webhook delivery is received and verified for each event type you rely on (payout completed, payin received, customer KYC status) before relying on it in production.
6. Cut over per flow behind a feature flag: dual-run Cobo and BlindPay for the same flow, compare outcomes on a sample of live transfers, and only retire the Cobo payment path once a full dual-run cycle settles cleanly on both sides with matching amounts and statuses.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets) first; KYC auto-approves there, and sentinel amounts $666.00 (forced failed) and $777.00 (forced refunded) let you test failure handling without waiting on real bank rails.
- Amounts are integer minor units on both sides of every conversion; never do money math in floating point.
- BlindPay API keys stay server-side only, never exposed to a client.
- Produce a written migration report before changing code: the Cobo-to-BlindPay mapping table, the gaps list, and the re-KYC/re-onboarding plan per counterparty.

Deliverables: the migration report, the counterparty re-onboarding script (re_, ba_, bw_ creation), the BlindPay client and money-movement code paths behind a flag, the Svix webhook handlers, and a cutover checklist per flow.
```

## How to use

1. Paste the prompt as-is into your coding agent, pointed at the repository that holds your Cobo integration.
2. Let it produce the migration report and mapping table first; review the gaps list and confirm any Cobo mechanism it flagged as unverified against manuals.cobo.com before it writes code.
3. Work through the cutover checklist one flow at a time, keeping Cobo and BlindPay dual-run until each flow's settled transfers match, then retire that flow's Cobo path.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Offramp wallets](https://blindpay.com/docs/offramp-wallets)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)
- [Cobo product manuals](https://manuals.cobo.com/en/portal)

---

Source: https://blindpay.com/prompts/migrate-from-coinbase-cdp

---
title: "Migrate from Coinbase CDP to BlindPay"
description: "Move the stablecoin-to-fiat offramp leg of a Coinbase Developer Platform integration to BlindPay: add Pix, SPEI, SEPA, ACH, and wire payouts while CDP wallets keep custody."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat offramp leg of a Coinbase Developer Platform (docs.cdp.coinbase.com) integration to BlindPay, keeping CDP wallets for custody where you want them.

## Prompt

```text
You are migrating my application's stablecoin-to-fiat offramp leg from Coinbase Developer Platform (CDP) to BlindPay. CDP wallets (or CDP Server Wallets) can stay in place for custody and signing; this migration targets only the cash-out surface: CDP's Offramp session tokens, hosted sell URLs, and offramp webhooks.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, payouts, offramp wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my CDP Offramp usage from the codebase: the session token call (POST to CDP's onramp/v1/token endpoint), the hosted sell URL construction (pay.coinbase.com sell flow with sessionToken, partnerUserRef, defaultCashoutMethod), the sell quote and transaction-status calls, offramp webhook subscriptions, and any stored CDP identifiers (partnerUserRef, transactionId, wallet addresses). Confirm exact endpoint paths and payload fields against the CDP docs rather than assuming. Derive the concept mapping from what we actually use, roughly: CDP's hosted sell flow (session token plus sell URL) maps to a BlindPay quote (qu_) followed by an executed payout (po_); CDP's ACH/PayPal/Coinbase-balance cashout methods map to BlindPay bank accounts (ba_) but BlindPay also covers Pix, SPEI, SEPA, and wire, which CDP Offramp does not support; CDP wallets or CDP Server Wallets have no BlindPay equivalent and can stay as the custody and signing layer. Flag anything with no direct equivalent instead of guessing.
2. Onboard payees on BlindPay directly: create customer, KYC/KYB via document upload, add rail-specific bank accounts (Pix, SPEI, SEPA, ACH, wire), driven by webhooks. CDP Offramp lets Coinbase's own KYC on the end user's Coinbase account stand in for this, so this is new work, not a data migration; sequence it before cutover so payees are ready when we switch. Store the resulting re_ and ba_ IDs next to any legacy CDP identifiers (partnerUserRef, wallet addresses).
3. Rebuild the cash-out leg on BlindPay's explicit two-step model: request a quote, then execute the payout before expires_at (about 5 minutes), replacing CDP's session-token-plus-hosted-sell-URL flow. If funds keep custody in a CDP wallet, register that CDP-controlled address with BlindPay through the external-wallet sign-message challenge (bw_ ID) so BlindPay can source funds from it without moving custody. Store qu_, po_, and bw_ IDs alongside any legacy CDP transaction references.
4. Port webhooks to BlindPay's Svix-signed events (customer.*, payout.*, wallet.inbound), verifying svix-id, svix-timestamp, and svix-signature against the raw request body with whsec_ and deduping on svix-id, replacing CDP's offramp.transaction.* webhook verification. Confirm every CDP offramp event type we currently consume has a BlindPay equivalent before cutting a corridor over.
5. Cut over per payout corridor behind a feature flag: launch Pix, SPEI, SEPA, and wire on BlindPay immediately since CDP Offramp has no equivalent for them, and dual-run the ACH corridor with new payouts on BlindPay while CDP Offramp handles in-flight items. Keep both webhook handlers live during the ACH dual-run window and only retire the CDP Offramp path for that corridor once a full settlement cycle has completed and been verified against expected outcomes.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves) first, and exercise the $666.00 forced-failed and $777.00 forced-refunded sentinel amounts before touching production traffic.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report before changing code: the mapping table, the corridors CDP Offramp never covered, gaps, and the payee-onboarding plan.

Deliverables: the migration report, the payee onboarding script, the BlindPay client and quote/payout code paths behind a flag, the external-wallet registration flow if custody stays on a CDP wallet, webhook handlers, and a per-corridor cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories real CDP Offramp usage rather than assuming; verify any CDP endpoint or webhook detail it names against docs.cdp.coinbase.com.
2. Review the migration report, especially which corridors CDP Offramp never covered versus which one (ACH) needs a dual-run, before approving code changes.
3. Ship the LATAM/EU corridors on BlindPay first since there is nothing to cut over there, then dual-run at least one full ACH settlement cycle, including the sentinel failure and refund cases, before retiring CDP Offramp for that corridor.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Coinbase Developer Platform docs](https://docs.cdp.coinbase.com/)

---

Source: https://blindpay.com/prompts/migrate-from-conduit

---
title: "Migrate from Conduit to BlindPay"
description: "Agent prompt to move a Conduit cross-border payments integration to BlindPay: counterparties, corridors, and settlement tracking on the quote-and-execute model."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "payins", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to port a Conduit integration to BlindPay with a corridor-by-corridor cutover.

## Prompt

```text
You are migrating my application from the Conduit cross-border payments API to the BlindPay API.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Conduit usage from the codebase: every endpoint, webhook, stored ID, and the corridors we move money on. Derive the concept mapping from actual usage, roughly: Conduit counterparties or recipients map to BlindPay customers (re_) with KYC/KYB plus bank accounts (ba_) typed per rail (pix, spei, ach, wire, rtp, sepa, transfers); cross-border payment or conversion calls map to BlindPay's explicit quote then execute steps (payin quotes plus payins for fiat-to-stablecoin, payout quotes plus payouts for stablecoin-to-fiat). Flag anything with no direct BlindPay equivalent instead of guessing.
2. Verify corridor coverage: list every source and destination currency we use and check it against BlindPay's supported rails and limits; call out gaps before any code changes.
3. Re-onboard counterparties on BlindPay: compliance does not transfer between providers, so sequence KYC/KYB re-verification before cutover, driven by customer.* webhooks.
4. Rebuild money movement: quote, execute before expires_at, persist qu_/po_/pi_ IDs alongside legacy Conduit IDs during the transition, and drive all status from Svix-verified payout.* and payin.* webhooks.
5. Cut over corridor by corridor behind a feature flag with a dual-run window; retire the Conduit path only after in-flight settlements clear.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets) first.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report (mapping table, corridor coverage, gaps, re-KYC plan) before changing code.

Deliverables: the migration report, re-onboarding script, BlindPay code paths behind a flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so the mapping reflects real Conduit usage.
2. Check the corridor coverage section of the report first; it decides whether a full cutover is possible.
3. Dual-run at least one corridor before retiring Conduit.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Payment methods](https://blindpay.com/docs/kb/payment-methods)
- [Cut-off times and limits](https://blindpay.com/docs/kb/cut-off-times)

---

Source: https://blindpay.com/prompts/migrate-from-crossmint

---
title: "Migrate from Crossmint to BlindPay"
description: "Agent prompt to move the stablecoin-to-fiat leg of a Crossmint integration to BlindPay while Crossmint keeps handling wallets, checkout, or orchestration."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "payins", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to port the payout and offramp leg of a Crossmint (docs.crossmint.com) integration to BlindPay, keeping Crossmint wallets in place.

## Prompt

```text
You are migrating the stablecoin-to-fiat leg of my application from Crossmint's offramp/payout surface to the BlindPay API. Crossmint wallets, checkout, or stablecoin orchestration may stay in place; only money movement to fiat is moving.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, wallets, quotes, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Crossmint usage from the codebase: every call into Crossmint's offramp API (KYC/bring-your-own-KYC, bank accounts, payout requests), stablecoin orchestration pay-ins, wallet transfer webhooks (wallets.transfer.in, wallets.transfer.out), and payment/checkout webhooks, plus every stored Crossmint ID. Confirm exact endpoint names and payload shapes in the Crossmint docs rather than assuming, since offramp API routes are not fully public. Derive the mapping from what we actually use, roughly: Crossmint offramp customers and KYC map to BlindPay customers (re_) with KYC/KYB; Crossmint bank accounts map to BlindPay bank accounts (ba_) with rail-specific types (Pix, SPEI, SEPA, ACH, wire); Crossmint payout requests map to a BlindPay quote (qu_) followed by an executed payout (po_); if Crossmint receiving/deposit addresses are in use, map those to BlindPay virtual accounts (va_) or offramp wallets. Write the mapping table into a migration report and flag anything with no direct equivalent instead of guessing.
2. Decide what stays on Crossmint: if funds keep living in Crossmint wallets, register each wallet with BlindPay as an external wallet through the sign-message challenge flow and store the resulting bw_ ID, so BlindPay can pull from or verify ownership of the same wallet Crossmint already manages.
3. Re-onboard customers on BlindPay: terms of service, create customer, KYC/KYB via document upload, driven by customer.* webhooks. KYC does not transfer between providers, so plan for re-verification and sequence it before the cutover so approved customers are ready when we switch.
4. Rebuild the payout leg on BlindPay's explicit two-step model: request a quote, then execute the payout against it via POST /v1/instances/{instance_id}/payouts/evm before expires_at (about 5 minutes). Store qu_ and po_ IDs alongside the legacy Crossmint order IDs during the transition.
5. Port status handling to BlindPay's Svix-signed webhooks (svix-id, svix-timestamp, svix-signature verified against whsec_ with raw-body HMAC) in place of Crossmint's offramp order and wallet transfer webhooks, with svix-id dedup.
6. Cut over per corridor behind a feature flag: dual-run with new payouts on BlindPay while Crossmint settles in-flight orders, keep both webhook handlers live during the window, and only retire the Crossmint payout path once one full dual-run settlement cycle has cleared on BlindPay.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves, sentinel amounts $666.00 forced failed and $777.00 forced refunded for testing) before moving to mainnets.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report before changing code: the mapping table, gaps, and the re-KYC plan.

Deliverables: the migration report, re-onboarding script, the BlindPay client and payout/quote code paths behind a flag, external wallet registration for any Crossmint wallets that stay, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories real Crossmint offramp and webhook usage rather than assuming undocumented endpoints.
2. Review the migration report, especially which wallets stay on Crossmint and the re-KYC sequencing, before approving code changes.
3. Dual-run at least one full settlement cycle per corridor before retiring the Crossmint payout path.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Offramp wallets](https://blindpay.com/docs/offramp-wallets)
- [Crossmint offramp overview](https://docs.crossmint.com/offramp/overview)

---

Source: https://blindpay.com/prompts/migrate-from-dfns

---
title: "Migrate from Dfns to BlindPay"
description: "Agent prompt to keep Dfns for MPC wallet custody and move the stablecoin-to-fiat leg to BlindPay: map transfers and withdrawals to quotes, payouts, and registered wallets."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat leg of a Dfns (docs.dfns.co) integration to BlindPay, while Dfns keeps handling wallet custody and MPC signing.

## Prompt

```text
You are migrating the stablecoin-to-fiat leg of my application from Dfns (docs.dfns.co) to the BlindPay API. Dfns stays in place for wallet creation, MPC signing, and custody; only the offramp/payout flow moves to BlindPay.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Dfns money-movement usage from the codebase: every call to Transfer Asset / broadcast transaction on a Dfns wallet, every exchange integration call (Create Exchange, Create Exchange Withdrawal against Kraken, Binance, or Coinbase Prime), any third-party fiat on/off-ramp provider wired in alongside Dfns (confirm the specific provider in the Dfns docs, since Dfns itself does not run fiat rails), every Dfns webhook subscription, and every stored Dfns wallet ID or exchange account ID. Produce a written inventory report before touching code: what moves to BlindPay, what stays on Dfns, and anything with no direct BlindPay equivalent flagged instead of guessed.
2. Re-onboard payees on BlindPay: create customers (re_) and run KYC/KYB via BlindPay's flow, driven by customer.* webhooks. Compliance status does not carry over from Dfns or any prior ramp provider, so sequence re-verification ahead of cutover. In parallel, register each Dfns-controlled wallet that will fund payouts as a BlindPay external wallet via the sign-message challenge, storing the resulting bw_ ID next to the existing Dfns wallet ID.
3. Rebuild the stablecoin-to-fiat leg on BlindPay's quote-then-execute model: request a quote (qu_), then call POST /v1/instances/{instance_id}/payouts/evm before expires_at, signing and broadcasting the funding transfer from the Dfns wallet exactly as before. Store qu_ and po_ IDs alongside the Dfns transfer or exchange-withdrawal record they replace. Where a flow just needs stablecoins converted to fiat on arrival with no quote step, evaluate a BlindPay offramp wallet as the deposit destination instead.
4. Port fiat-leg notifications to BlindPay's Svix-signed webhooks (svix-id, svix-timestamp, svix-signature, verified with whsec_ against the raw body), with svix-id dedup, while leaving any existing Dfns webhook subscriptions for wallet and policy events untouched. Confirm signature verification passes against BlindPay's test webhook delivery before relying on it.
5. Cut over per flow behind a feature flag: dual-run with new payouts settling through BlindPay while in-flight Dfns-side transfers or exchange withdrawals finish on the old path, keep both webhook handlers live during the window, and retire the old fiat-leg path only after one full dual-run settlement cycle clears on BlindPay.

Constraints:
- Dfns wallets keep custody and signing; do not move private key material or MPC shares.
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves, $666.00 forces a failed payout and $777.00 forces a refund for testing) before touching mainnet rails.
- Amounts are integer minor units; BlindPay API keys stay server-side.
- Produce the migration report (inventory, mapping table, gaps, re-KYC plan) before changing code.

Deliverables: the migration report, the external-wallet registration script for existing Dfns wallets, the BlindPay quote-and-payout code path behind a flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so the Dfns inventory reflects the transfer, exchange, and ramp calls you actually make, not a generic list.
2. Review the migration report, especially which Dfns wallets get registered as BlindPay external wallets and the re-KYC sequencing, before approving code changes.
3. Dual-run at least one full settlement cycle per flow before retiring the Dfns-side fiat leg.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Bank accounts](https://blindpay.com/docs/bank-accounts)
- [Offramp wallets](https://blindpay.com/docs/offramp-wallets)
- [Dfns webhooks](https://docs.dfns.co/d/api-docs/webhooks)

---

Source: https://blindpay.com/prompts/migrate-from-fern

---
title: "Migrate from Fern to BlindPay"
description: "Move a Fern stablecoin integration to BlindPay: customers, wallets, on/off ramps, and webhook-driven settlement on the quote-and-execute model."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "payins", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to port a Fern (fernhq.com) integration to BlindPay.

## Prompt

```text
You are migrating my application from the Fern API to the BlindPay API.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, wallets, bank accounts, quotes, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Fern usage from the codebase: every endpoint, webhook, and stored Fern ID (customers, wallets, payment accounts, quotes, transactions). Derive the concept mapping from actual usage, roughly: Fern customers with KYC map to BlindPay customers (re_) with KYC/KYB; payment accounts or external bank accounts map to BlindPay bank accounts (ba_) typed per rail; Fern wallets map to BlindPay managed wallets (bl_) or registered blockchain wallets (bw_); Fern's quote and transaction flow maps to BlindPay's payin quotes plus payins (fiat to stablecoin) and payout quotes plus payouts (stablecoin to fiat). Flag anything with no direct equivalent instead of guessing.
2. Re-onboard customers: compliance status does not transfer between providers, so plan KYC/KYB re-verification on BlindPay, sequenced before cutover and driven by customer.* webhooks.
3. Rebuild money movement on quote then execute: request the quote, execute before expires_at, and persist qu_/po_/pi_ IDs alongside legacy Fern IDs during the transition.
4. Port webhooks to BlindPay's Svix-signed events (raw-body HMAC-SHA256 with the whsec_ secret, svix-id dedup, 5-minute timestamp tolerance).
5. Cut over per flow behind a feature flag with a dual-run window; retire the Fern path only after in-flight transactions settle.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets) first; swap to USDC/USDT on mainnets only at production cutover.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report (mapping table, gaps, re-KYC plan) before changing code.

Deliverables: the migration report, re-onboarding script, BlindPay code paths behind a flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it maps the Fern features you actually use.
2. Review the migration report, especially re-KYC sequencing, before approving code changes.
3. Dual-run before retiring the Fern path.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Managed wallets](https://blindpay.com/docs/wallets)
- [Customers](https://blindpay.com/docs/learn/customers)

---

Source: https://blindpay.com/prompts/migrate-from-fireblocks

---
title: "Migrate from Fireblocks to BlindPay"
description: "Move the stablecoin-to-fiat payout leg of a Fireblocks integration to BlindPay: map payout instruction sets, fiat accounts, and webhooks while Fireblocks stays as custodian."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the fiat payout leg of a Fireblocks (developers.fireblocks.com) integration to BlindPay, keeping Fireblocks for custody and signing where you want it.

## Prompt

```text
You are migrating my application's stablecoin-to-fiat payout leg from Fireblocks (developers.fireblocks.com) to BlindPay. Fireblocks can stay in place for custody and transaction signing (vault accounts, transactions, whitelisted addresses); this migration targets only the fiat payout and offramp surface.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, payout quotes, payouts, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Fireblocks usage from the codebase: every Payments Engine call (payout instruction set creation, payout execution), connected fiat accounts, travel rule policy config, and webhook subscriptions (Fireblocks-Signature or Fireblocks-Webhook-Signature headers), plus every stored Fireblocks ID (payment accounts, payee accounts, payout instruction sets). Derive the concept mapping from what we actually use, roughly: Fireblocks payee fiat accounts map to BlindPay customers (re_) with KYC/KYB and bank accounts (ba_); a Fireblocks payout instruction set maps to a BlindPay quote (qu_) followed by an executed payout (po_); Fireblocks vault accounts, transactions, and whitelisted addresses have no BlindPay equivalent and stay on Fireblocks as the custody and signing layer. Flag anything with no direct equivalent instead of guessing, and confirm any Fireblocks mechanism I have not explicitly listed against the Fireblocks docs before relying on it.
2. Re-onboard payees on BlindPay: create customer, KYC/KYB via document upload, add rail-specific bank accounts (Pix, SPEI, SEPA, ACH, wire), driven by webhooks. KYC does not transfer between providers, so plan for re-verification and sequence it before the cutover so approved payees are ready when we switch. Store the resulting re_ and ba_ IDs next to the legacy Fireblocks payee account IDs.
3. Rebuild the payout leg on BlindPay's explicit two-step model: request a quote, then execute the payout before expires_at (about 5 minutes), replacing the Fireblocks payout instruction set creation-then-execution flow. If funds keep custody in Fireblocks vault accounts, register the Fireblocks-controlled wallet with BlindPay through the external-wallet sign-message challenge (bw_ ID) so BlindPay can source funds from it. Store qu_, po_, and bw_ IDs alongside the legacy Fireblocks IDs during the transition.
4. Port webhooks to BlindPay's Svix-signed events (customer.*, payout.*, wallet.inbound), verifying svix-id, svix-timestamp, and svix-signature against the raw request body with whsec_ and deduping on svix-id, replacing the Fireblocks-Signature RSA verification. Confirm every Fireblocks event type we currently consume has a BlindPay equivalent before cutting a flow over.
5. Cut over per payout corridor behind a feature flag: dual-run with new payouts on BlindPay while Fireblocks payout instruction sets handle in-flight items, keep both webhook handlers live during the window, and only retire the Fireblocks payout path once a full dual-run settlement cycle has completed and been verified against the corridor's expected outcomes.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves) first, and exercise the $666.00 forced-failed and $777.00 forced-refunded sentinel amounts before touching production traffic.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report before changing code: the mapping table, gaps, and the re-KYC plan.

Deliverables: the migration report, re-onboarding script, the BlindPay client and quote/payout code paths behind a flag, the external-wallet registration flow if custody stays on Fireblocks, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories real Fireblocks Payments Engine usage rather than assuming.
2. Review the migration report, especially which Fireblocks pieces stay (custody, signing) versus move (payouts, webhooks), before approving code changes.
3. Dual-run at least one full settlement cycle per corridor, including the sentinel failure and refund cases, before retiring the Fireblocks payout path.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Webhooks](https://blindpay.com/docs/learn/webhooks)

---

Source: https://blindpay.com/prompts/migrate-from-manual-payouts

---
title: "Migrate from manual bank payouts to the API"
description: "Agent prompt to turn a spreadsheet-and-bank-portal payout operation into an automated, webhook-driven API flow with an auditable state machine."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to replace CSV uploads and bank portals with programmatic payouts.

## Prompt

```text
You are migrating my payout operation from a manual process (spreadsheets, bank portal uploads, ops people confirming transfers) to automated BlindPay stablecoin payouts.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payout quickstart, customers, bank accounts, quotes, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory the current process: where payee data lives (spreadsheet columns, database tables), which currencies and rails we pay, who approves what, and how completion is confirmed today. Produce a field-by-field mapping to BlindPay customers and bank accounts.
2. Write an idempotent backfill that onboards existing payees: terms of service, create customer, wait for KYC via webhooks, then add bank accounts. It must be resumable, log every failure with a reason (missing tax ID, unsupported country, rejected KYC), and output an exceptions list for ops instead of crashing.
3. Build the payout pipeline: for each due payment, quote (POST /v1/instances/{instance_id}/quotes), execute (POST /v1/instances/{instance_id}/payouts/evm) before quote expiry, and record the po_ ID. Preserve any existing human approval step as a gate before execution rather than removing it.
4. Replace manual confirmation with payout.complete webhooks (Svix-verified) updating my records, plus a daily reconciliation report comparing my ledger against BlindPay payout statuses.
5. Keep a manual-mode fallback per payee so ops can exclude edge cases from automation during the transition.

Constraints:
- Amounts in integer minor units; API keys server-side only.
- Test the whole pipeline on a development instance first, including the sentinel failure amounts ($666.00 forces failed, $777.00 forces refunded) to prove the failure paths work.
- Never initiate the same payment twice: key payouts on my own payment ID and check for an existing po_ before creating.

Deliverables: the field mapping, backfill script with exceptions report, the payout pipeline with approval gate, webhook-driven status updates, and the reconciliation report.
```

## How to use

1. Export a sample of your current payee spreadsheet and share the columns with the agent.
2. Run the backfill on a development instance first and review the exceptions list.
3. Keep ops in the loop: the approval gate and exceptions report are what make the cutover safe.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Sandbox vs production](https://blindpay.com/docs/learn/sandbox-vs-production)

---

Source: https://blindpay.com/prompts/migrate-from-privy

---
title: "Migrate from Privy to BlindPay"
description: "Agent prompt to keep Privy for embedded and server wallets and move the stablecoin-to-fiat offramp leg to BlindPay: register the wallet, run payouts, and verify webhooks."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat offramp leg of a Privy (docs.privy.io) integration to BlindPay, keeping Privy in place for embedded and server wallets.

## Prompt

```text
You are migrating my application's stablecoin-to-fiat offramp leg from Privy (docs.privy.io) to BlindPay. Privy stays in place as the wallet layer: users' stablecoins keep living in their Privy embedded or server wallets. This migration only replaces whatever converts those stablecoins to fiat and pays it out.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, blockchain wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc
- https://docs.privy.io/wallets/funding/overview
- https://docs.privy.io/recipes/off-ramp-guide
Privy itself does not settle fiat; it hands off a signed onchain transfer to a third-party offramp provider. Confirm in the Privy docs which mechanism this codebase actually wired up (one of those providers, a different funding integration, or a manual flow) instead of assuming; if the code shows something not covered by these pages, phrase it as unconfirmed rather than inventing an endpoint.

Do the migration in this order:
1. Inventory the current offramp path from the codebase: the funding or offramp provider integration in use, every stored Privy wallet ID (embedded or server) that sends the crypto leg, any stored provider addresses or transaction hashes, and how completion is detected today (webhook, polling, or manual confirmation). Produce a written mapping from what we actually use to BlindPay concepts: the payee becomes a BlindPay customer (re_) with KYC/KYB, their payout destination becomes a bank account (ba_) on the relevant rail, and the Privy wallet that currently sends to the offramp provider's address becomes the sender_wallet_address on a BlindPay payout instead. Flag anything with no direct equivalent rather than guessing.
2. Register each Privy wallet as a BlindPay external wallet: fetch the sign-message challenge (GET /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets/sign-message), sign it with the Privy wallet's own signing call (the embedded wallet's provider or the server wallet RPC endpoint, per the Privy docs), submit the signature to POST /v1/instances/{instance_id}/customers/{customer_id}/blockchain-wallets, and persist the returned bw_ ID against the customer record. Re-onboard each payee's KYC/KYB on BlindPay through terms of service, customer creation, and document upload driven by webhooks, since KYC does not transfer between providers; sequence this ahead of the cutover so approved customers are ready when a flow switches over.
3. Rebuild money movement on BlindPay's explicit two-step model: request a quote (POST /v1/instances/{instance_id}/quotes), sign and confirm the returned approve call through the same Privy wallet, then execute the payout (POST /v1/instances/{instance_id}/payouts/evm) with sender_wallet_address set to the Privy wallet's address, before the quote's expires_at (about 5 minutes). Store qu_, po_, and bw_ IDs alongside whatever ID the old offramp provider used for the same transfer.
4. Replace the old offramp completion signal with BlindPay's Svix-signed webhooks: verify svix-id, svix-timestamp, and svix-signature against the raw request body with whsec_, dedup on svix-id, and update payout state on payout.new, payout.update, and payout.complete.
5. Cut over per payee or corridor behind a feature flag: dual-run new payouts on BlindPay while the old offramp path finishes any in-flight transfers, keep both completion signals live during the window, and only retire the old offramp integration once a full dual-run settlement cycle has completed and reconciled.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves) first, and exercise the $666.00 forced-failed and $777.00 forced-refunded sentinel amounts before touching production traffic.
- Keep BlindPay and Privy API keys server-side.
- Store and compare all amounts as integer minor units; never use floating point for money math.
- Produce a written migration report before changing code: the mapping table, the confirmed old-offramp mechanism, gaps, and the re-KYC plan.

Deliverables: the migration report, the external-wallet registration module (challenge fetch, Privy signing call, bw_ persistence), the quote-to-payout orchestration with expiry handling, webhook handlers for the three payout events, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories the real offramp provider or manual flow instead of assuming one from the Privy docs list.
2. Review the migration report, especially the confirmed old-offramp mechanism and the re-KYC sequencing, before approving code changes.
3. Dual-run at least one full settlement cycle per payee or corridor, including the sentinel failure and refund cases, before retiring the old offramp path.

## Related docs

- [Blockchain wallets](https://blindpay.com/docs/blockchain-wallets)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Privy funding overview](https://docs.privy.io/wallets/funding/overview)
- [Privy off-ramp guide](https://docs.privy.io/recipes/off-ramp-guide)

---

Source: https://blindpay.com/prompts/migrate-from-swift-wires

---
title: "Migrate from SWIFT wires to stablecoin payouts"
description: "Replace multi-day international wires with same-day stablecoin settlement over local rails, keeping SWIFT as a fallback where you still need it."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance"]
---

Paste this prompt into your coding agent to move an international wire flow onto stablecoin rails corridor by corridor.

## Prompt

```text
You are migrating my application's international payments from SWIFT wire transfers to BlindPay stablecoin payouts, which convert USDC/USDT to local fiat and settle over local rails (Pix for BRL, SPEI for MXN, SEPA for EUR, ACH/RTP/wire for USD, Transfers 3.0 for ARS).

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payout quickstart, bank accounts, quotes, and payment methods pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my current wire flow: where beneficiary bank details are stored, which currencies and countries we pay, how status is tracked, and what reconciliation looks like today. Produce a corridor-by-corridor mapping to BlindPay rails, flagging any corridor BlindPay does not cover so it stays on SWIFT (BlindPay also supports international_swift as a payment rail where needed).
2. Map beneficiary records to BlindPay: each payee becomes a customer (with KYC/KYB) plus one or more bank accounts with the local rail type. SWIFT fields like IBAN/BIC map to the rail-specific fields documented per bank account type.
3. Replace the wire initiation code path with quote (POST /v1/instances/{instance_id}/quotes) then payout (POST /v1/instances/{instance_id}/payouts/evm), executing before the quote's expires_at.
4. Replace status tracking: instead of waiting days for MT103 confirmations, drive state from payout.new, payout.update, and payout.complete webhooks with Svix signature verification.
5. Plan a phased rollout: dual-run one corridor first (shadow mode comparing costs and settlement times), then cut over corridor by corridor behind a feature flag, keeping the SWIFT path as fallback until each corridor is proven.

Constraints:
- Amounts in integer minor units; API keys server-side only.
- Build and test everything against a development instance (USDB on testnets) before touching production.
- Do not delete the legacy wire code until the rollback window closes.

Deliverables: the corridor mapping document, beneficiary migration script, the new payout code path behind a feature flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Paste the prompt and point the agent at the code that currently initiates wires.
2. Review the corridor mapping it produces before letting it write the migration.
3. Dual-run one corridor before cutting over the rest.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Payment methods](https://blindpay.com/docs/kb/payment-methods)
- [POBO and COBO over SWIFT](https://blindpay.com/pobo-cobo-swift)

---

Source: https://blindpay.com/prompts/migrate-from-turnkey

---
title: "Migrate from Turnkey to BlindPay"
description: "Agent prompt to keep Turnkey for wallets and signing and move the stablecoin-to-fiat offramp leg of your product to BlindPay: map payout accounts, quotes, and webhooks."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat offramp leg of a Turnkey (docs.turnkey.com) integration to BlindPay, keeping Turnkey as the wallet and signing layer.

## Prompt

```text
You are migrating my application's stablecoin-to-fiat offramp and payout leg from whatever I bolted onto Turnkey (docs.turnkey.com) to BlindPay. Turnkey stays in place as the wallet infrastructure, policy engine, and signing API; my product's stablecoins keep living in Turnkey wallets. This migration targets only the fiat payout surface, not custody or signing.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, payout quotes, payouts, external wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Turnkey usage from the codebase: every sign transaction and sign raw payload activity tied to a payout flow, the wallet accounts and addresses those activities sign from, the policies gating them (consensus and condition rules in the policy engine), any activity webhooks I consume, and whatever offramp or fiat rail I built on top of a signed transaction today (a third-party payout API, a manual process, a liquidation address). Confirm any Turnkey mechanism I have not explicitly listed against the Turnkey docs before relying on it. Flag anything with no direct BlindPay equivalent instead of guessing.
2. Onboard payees on BlindPay: create customer, KYC/KYB via document upload, add rail-specific bank accounts (Pix, SPEI, SEPA, ACH, wire), driven by webhooks. Store the resulting re_ and ba_ IDs, and produce a written onboarding report before touching money movement.
3. Connect the Turnkey wallet to BlindPay without moving funds: register the Turnkey wallet address with BlindPay's external-wallet flow (sign-message challenge signed by the Turnkey wallet, resulting bw_ ID). Store the bw_ ID alongside the Turnkey wallet account it maps to.
4. Rebuild the payout leg on BlindPay's explicit two-step model: request a quote (qu_), then execute the payout (po_) via POST /v1/instances/{instance_id}/payouts/evm before expires_at (about 5 minutes), sourcing funds from the Turnkey-controlled wallet you registered in step 3. Store qu_ and po_ IDs next to the legacy payout records they replace.
5. Port webhooks to BlindPay's Svix-signed events (customer.*, payout.*, wallet.inbound), verifying svix-id, svix-timestamp, and svix-signature against the raw request body with whsec_, and deduping on svix-id. Keep Turnkey's own activity webhooks, if I use them, unchanged since Turnkey keeps signing.
6. Cut over per payout corridor behind a feature flag: dual-run with new payouts on BlindPay while the old offramp path handles in-flight items, keep both webhook handlers live during the window, and retire the old offramp path only once a full dual-run settlement cycle has completed and been verified against the corridor's expected outcomes.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets, KYC auto-approves) first, and exercise the $666.00 forced-failed and $777.00 forced-refunded sentinel amounts before touching production traffic.
- Amounts are integer minor units; API keys stay server-side.
- Produce a written migration report before changing code: the mapping table, gaps, and the onboarding plan.

Deliverables: the migration report, the onboarding script, the Turnkey external-wallet registration flow, the BlindPay client and quote/payout code paths behind a flag, webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories real Turnkey sign transaction activity and policy config rather than assuming.
2. Review the migration report, especially the external-wallet registration step, since it is the only point where Turnkey and BlindPay actually connect.
3. Dual-run at least one full settlement cycle per corridor, including the sentinel failure and refund cases, before retiring the old offramp path.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Webhooks verification](https://blindpay.com/docs/learn/webhooks-verification)
- [Turnkey policy engine overview](https://docs.turnkey.com/concepts/policies/overview)

---

Source: https://blindpay.com/prompts/migrate-from-utila

---
title: "Migrate from Utila to BlindPay"
description: "Agent prompt to keep Utila as custodian and signer and route the stablecoin-to-fiat leg through BlindPay: map vaults, wallets, transactions, and webhooks."
date: "2026-08-26"
category: "migrations"
products: ["payouts", "quotes", "compliance", "webhooks"]
---

Paste this prompt into your coding agent to move the stablecoin-to-fiat leg of a Utila (docs.utila.io) integration to BlindPay while Utila keeps custody and signing.

## Prompt

```text
You are migrating the stablecoin-to-fiat leg of my application from Utila (docs.utila.io) to BlindPay. Utila stays in place as custodian and transaction signer (vaults, wallets, transaction initiation, policy engine, co-signer). Only the payout and offramp flow moves to BlindPay.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quickstarts, customers, bank accounts, quotes, payouts, offramp wallets, and webhooks pages)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Do the migration in this order:
1. Inventory my Utila usage from the codebase: every Utila endpoint called (vaults, wallets, transactions_initiatetransaction, transactions_voteontransactionrequest, addressbook entries) and every stored Utila resource name (vault, wallet, transaction). Separate transactions that are actually fiat payouts (transfers to OTC desks, exchange addresses, or address book entries tagged for offramp) from internal treasury moves. Confirm the exact policy engine vote-threshold and co-signer behavior in the Utila docs rather than assuming, since these are account-configurable. Produce a written report listing what stays on Utila (custody, signing, policy engine) and what moves to BlindPay (the fiat leg), before touching code.
2. Register each Utila wallet address that will keep custody with BlindPay as an external wallet, using the sign-message challenge flow, and store the resulting bw_ ID next to the Utila wallet resource name. This is the connection point: funds keep living in Utila wallets, BlindPay only needs proof of ownership to route payouts against them.
3. Onboard recipients as BlindPay customers (re_) with KYC/KYB and add their rail-specific bank accounts (ba_) for Pix, SPEI, SEPA, ACH, or wire. Utila KYC and policy approvals do not transfer, so sequence re-verification ahead of cutover.
4. Rebuild the payout leg on BlindPay's two-step model: request a quote (qu_), then execute the payout (po_) referencing the registered external wallet before expires_at (about 5 minutes). The actual on-chain transfer still goes through Utila's transaction initiation and policy engine vote. Store qu_ and po_ IDs alongside the originating Utila transaction resource name so both sides of one payout are traceable.
5. Port event handling to BlindPay's Svix-signed webhooks (customer.*, payout.*, wallet.inbound) with signature verification and svix-id dedup, and run these handlers alongside the existing Utila webhook handler (x-utila-signature, TRANSACTION_STATE_UPDATED) so custody-side and fiat-side state both stay current.
6. Cut over per flow behind a feature flag: dual-run with new payouts going through the BlindPay quote and payout path while Utila continues to sign and enforce policy on every transfer, keep both webhook handlers live during the window, and retire the old direct-to-OTC or direct-to-exchange transaction path only once a full dual-run settlement cycle completes with no discrepancies.

Constraints:
- Develop against a BlindPay development instance (USDB on testnets) first; test the $666.00 forced-failed and $777.00 forced-refunded sentinels before touching production amounts.
- Amounts are integer minor units on both sides; no floating point money math.
- API keys stay server-side.
- Produce the written inventory and mapping report before changing code.

Deliverables: the migration report, the external wallet registration script and stored bw_ mapping, the BlindPay client and quote/payout code paths behind a flag, both webhook handlers, and a cutover checklist.
```

## How to use

1. Point the agent at your codebase so it inventories real Utila usage instead of assuming which transactions are payouts.
2. Review the migration report, especially which vaults and wallets stay on Utila and the re-KYC sequencing, before approving code changes.
3. Dual-run at least one full settlement cycle, with both webhook handlers live, before retiring the old Utila-to-OTC path.

## Related docs

- [Introduction](https://blindpay.com/docs/introduction)
- [Customers](https://blindpay.com/docs/learn/customers)
- [Offramp wallets](https://blindpay.com/docs/offramp-wallets)
- [Utila webhooks](https://docs.utila.io/reference/webhooks)

---

Source: https://blindpay.com/prompts/production-readiness-checklist

---
title: "Production readiness checklist"
description: "Verify a BlindPay integration is ready to move from a development instance to production: config, tokens, networks, webhooks, compliance, and monitoring."
date: "2026-08-26"
category: "diagnostics"
products: ["payouts", "payins", "virtual-accounts", "compliance", "webhooks"]
---

Paste this prompt into your coding agent before flipping a development-instance integration to production.

## Prompt

```text
My BlindPay integration works on a development instance. Verify it is ready for production and produce a go/no-go checklist with evidence from my code and configuration.

Ground truth:
- https://blindpay.com/docs/llms.txt (read the sandbox vs production and instances pages, plus the pages for the flows in my code)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Verify each item and mark it pass or fail with the evidence:
1. Instance separation: production uses its own instance ID and its own API key (dev keys do not work in prod); both come from environment config, never hardcoded; the production instance has been requested (approval can take up to 3 business days).
2. Token and network swap: no USDB and no testnet networks (base_sepolia, solana_devnet, sepolia, polygon_amoy, arbitrum_sepolia, stellar_testnet) reachable from production config; production uses USDC/USDT on mainnets.
3. Test scaffolding removed: no sentinel-amount logic ($666.00/$777.00), no auto-approve assumptions. Production KYC takes real time (standard about 60 seconds, enhanced and KYB up to a business day), so onboarding must be genuinely webhook-driven with a pending state in the UX, not a synchronous wait.
4. Webhooks re-registered: endpoint configuration does not carry over between instances; the production endpoint is registered on the production instance, its own whsec_ secret is in production config, and a real signed event has been received and verified there.
5. Real-world failure handling: rejected KYC and RFIs surface to users with a path forward; failed and refunded payouts alert someone; quote expiry triggers re-quote, not a stuck payment.
6. Limits and coverage: expected transaction sizes fit the per-transaction, daily, and monthly limits for my customers' KYC tiers, and every corridor I serve is supported in production; flag anything needing a limit increase in advance.
7. Monitoring: alerting exists for webhook delivery failures, payouts stuck in non-terminal states beyond the rail's expected settlement time, and reconciliation mismatches between my ledger and BlindPay statuses.
8. Runbook: a written procedure exists for a stuck or failed payment, including where to find the payout in the dashboard and how to contact BlindPay support.

Output: the checklist with pass/fail and evidence per item, the blocking failures, and the exact changes needed to reach go.
```

## How to use

1. Run this after the [integration quality audit](/prompts/integration-quality-audit) passes; this one focuses on the dev-to-prod transition.
2. Request your production instance early; approval can take days.
3. Keep the output as your launch sign-off document.

## Related docs

- [Sandbox vs production](https://blindpay.com/docs/learn/sandbox-vs-production)
- [Instances](https://blindpay.com/docs/learn/instances)
- [Cut-off times and limits](https://blindpay.com/docs/kb/cut-off-times)

---

Source: https://blindpay.com/prompts/sandbox-quickstart

---
title: "Sandbox quickstart"
description: "Stand up a working BlindPay development environment in one session: instance, API key, test customer, funded wallet, and a completed test payout."
date: "2026-08-26"
category: "setup"
products: ["payouts", "compliance", "quotes"]
---

Paste this prompt into your coding agent to go from zero to a completed test payout on a development instance.

## Prompt

```text
You are setting up a BlindPay development environment for me and proving it works with one completed end-to-end test payout.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the payout quickstart and the sandbox vs production page)
- The OpenAPI spec: curl https://api.blindpay.com/doc

Steps:
1. I will create a development instance and API key in the dashboard (app.blindpay.com) and give you the instance ID (in_...) and key. Confirm the key works with a simple authenticated GET before proceeding.
2. Accept the terms of service (POST /v1/e/instances/{instance_id}/tos with a UUID idempotency_key) and create a test individual customer. On a development instance KYC auto-approves; note that naming a customer "Fail" forces rejection, which we will use later for failure testing.
3. Create a managed wallet on a testnet (for example network solana_devnet or base_sepolia) and fund it with test USDB (on Solana devnet: POST /v1/instances/{instance_id}/mint-usdb-solana).
4. Add a test bank account (type ach) to the customer.
5. Quote (POST /v1/instances/{instance_id}/quotes with bank_account_id, network, token USDB) and execute the payout (POST /v1/instances/{instance_id}/payouts/evm) before the quote expires. On a development instance it auto-completes in seconds.
6. Register a webhook endpoint pointing at a local tunnel URL, fetch its whsec_ secret, and show the payout.complete event arriving with a passing signature verification.
7. Finish with the sentinel amounts: run one payout of $666.00 (66600) to see the failed status and one of $777.00 (77700) to see refunded, confirming my error handling fires.

Constraints:
- Keep everything in a small, rerunnable script (or set of scripts) I can use to reset my dev environment later.
- Print each created ID (re_, bl_, ba_, qu_, po_, we_) clearly as you go.

Deliverables: the setup script, a .env template for instance ID and API key, and a short README describing what was created and how to rerun it.
```

## How to use

1. Sign up at [app.blindpay.com](https://app.blindpay.com), create a development instance, and generate an API key.
2. Paste the prompt, then hand the agent your instance ID and key when it asks.
3. Keep the resulting script as your environment reset tool.

## Related docs

- [Payout quickstart](https://blindpay.com/docs/quickstart-payout)
- [Sandbox vs production](https://blindpay.com/docs/learn/sandbox-vs-production)
- [Instances](https://blindpay.com/docs/learn/instances)

---

Source: https://blindpay.com/prompts/setup-partner-fees

---
title: "Set up partner fees and revenue share"
description: "Attach your own fee to every quote with partner fees, track collected revenue through webhooks, and show users a complete price breakdown."
date: "2026-08-26"
category: "setup"
products: ["quotes", "payouts"]
---

Paste this prompt into your coding agent to monetize your integration: your margin rides on each transaction as a partner fee.

## Prompt

```text
You are adding partner-fee monetization to my existing BlindPay integration: my platform takes a fee on each transaction, collected through BlindPay's partner fee mechanism.

Before writing code, read these sources and follow them over any prior knowledge:
- https://blindpay.com/docs/llms.txt (read the quotes pages and the webhook events page)
- The OpenAPI spec: curl https://api.blindpay.com/doc (check the partner fee endpoints and the partner_fee_id field on quotes)

Build:
1. Fee configuration: create or reference my partner fee (pf_ ID) per the API reference; support the fee structures the API offers and store which pf_ applies to which product or customer tier in my config, not hardcoded at call sites.
2. Quote integration: pass partner_fee_id on payout and payin quote requests, and read partner_fee_amount from the quote response. Update every price display to break down commercial rate, BlindPay rate and flat fee, and my partner fee as separate lines, so the user sees exactly where the spread goes.
3. Revenue tracking: handle the payout.partnerFee webhook (Svix-verified) to record collected fees against my ledger, keyed by po_ and pf_ IDs; build a monthly revenue report per corridor and product.
4. Regression safety: fee handling must not change any quote-expiry, idempotency, or webhook logic; add tests asserting that a quote with a partner fee still settles the expected net amount to the recipient, and that the price breakdown sums exactly to sender_amount.
5. Edge cases: quotes without a partner fee (fee optional per call), fee display when cover_fees is on, and what happens to my fee when a payout fails or refunds; confirm the behavior from the docs or reference rather than assuming.

Constraints: amounts in integer minor units; verify sums with integer math; API keys server-side.

Deliverables: fee config module, updated quote calls and price-breakdown UI, the partnerFee webhook handler and revenue report, and the sum-integrity tests.
```

## How to use

1. Paste the prompt into your agent with access to your existing quote code paths.
2. Decide your fee structure per product before the agent wires it in.
3. Check the price-breakdown math against the dashboard on the first live transactions.

## Related docs

- [Payout quotes](https://blindpay.com/docs/payout-quotes)
- [Payin quotes](https://blindpay.com/docs/payin-quotes)
- [Webhook events](https://blindpay.com/docs/learn/webhooks-events)

---

Source: https://blindpay.com/resources/more/correspondent-banking-vs-stablecoin-liquidity

---
title: "Correspondent banking vs stablecoin liquidity: why pre-funding traps your capital"
seoTitle: "Correspondent banking vs stablecoin liquidity"
description: "Correspondent banking keeps cross-border payouts liquid by parking cash in nostro accounts in every country. What that trapped capital costs a treasury team, and what stablecoin liquidity changes."
date: "2026-08-26"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What does pre-funding mean in cross-border payments?"
    a: "Pre-funding means depositing money in a destination currency before any payment is sent, so local payouts can go out fast. In correspondent banking this cash sits in nostro accounts at banks in each country. A payment company paying out in five countries keeps five balances, sized for its busiest days plus the time it takes to refill them by international wire."
  - q: "What is trapped capital in payments?"
    a: "Trapped capital is working capital held idle in pre-funded accounts so payments can settle on time. It earns little, carries exchange-rate risk in every foreign currency it sits in, and can't be spent on anything else. The more countries and the more volume, the more capital gets trapped."
  - q: "How do stablecoins reduce liquidity risk for treasury teams?"
    a: "They replace balances parked in each country with conversion at the moment of payment. The treasury keeps its dollars until payout day, funds each payout at a quoted rate, and the stablecoin leg settles in seconds. FX exposure shrinks from weeks on foreign balances to the minutes a transfer takes, and there are no foreign bank balances exposed to a local bank failure."
  - q: "Is BlindPay custodial or non-custodial?"
    a: "BlindPay operates as a non-custodial payment processor: funds stay under your control through the flow, and a refunded payout returns the stablecoins to the funding source. BlindPay also offers optional managed wallets, which it custodies, for teams that want to hold a balance inside BlindPay between payins and payouts. You choose the funding source per payout."
  - q: "What are nostro and vostro accounts?"
    a: "They are two views of the same bank balance. A nostro account is money a bank holds at a foreign bank in that country's currency (\"ours, held with you\"). The foreign bank records the same balance as a vostro account (\"yours, held with us\"). Cross-border payments settle by debiting and crediting these balances, coordinated by SWIFT messages."
---

To guarantee fast settlement in several currencies, companies pre-fund accounts in every country they pay into. Reais in Brazil. Pesos in Mexico. Euros in Europe. Each balance is sized for the busiest payout day plus the days it takes to refill it by wire, and it sits there, earning little and moving with the exchange rate, until it is spent. That is trapped capital, and correspondent banking needs it to work.

Stablecoin liquidity removes the country-by-country balance. This guide walks through why the old model needs pre-funding, what it costs in numbers a treasury team can check, and what to ask before switching.

## How does correspondent banking actually move money?

Correspondent banking moves money by debiting and crediting balances that banks hold at each other. No money travels. Ledgers update.

A US company paying a supplier in Colombia typically goes through a chain like this:

1. **Originating bank.** The company's bank debits its account and sends a SWIFT payment message.
2. **USD correspondent.** If the originating bank has no direct relationship with the destination bank, a large correspondent bank, often in New York, moves the dollars between the two on its books.
3. **Local correspondent.** A bank in Colombia with a relationship to that correspondent receives the dollars and converts them to pesos, from its own balances or the local FX market.
4. **Beneficiary bank.** The supplier's bank credits the pesos, after its own compliance screening.

Every arrow in that chain is a nostro/vostro pair. The originating bank's "nostro" is its balance at the correspondent. The correspondent sees the same balance as a "vostro". Settlement means debiting one and crediting the other, then reconciling the statements.

## Why does each hop add cost and delay?

Because each bank in the chain is a separate business with its own fees, screening, and hours.

- **Fees.** Intermediaries can deduct a fee from the principal as the payment passes through. The SWIFT charge code on the payment (OUR, SHA, or BEN) decides who pays those fees, and with SHA or BEN the recipient often gets less than was sent.
- **Screening.** Each bank runs its own sanctions and AML checks. A question at any hop pauses the payment until someone answers it.
- **Cut-offs and time zones.** Miss a correspondent's daily cut-off and the payment waits a business day. International SWIFT payouts at BlindPay, for example, have a 10:30 AM ET cut-off and can take up to five business days. Weekends and local holidays stack on top.
- **Fewer routes.** The BIS Committee on Payments and Market Infrastructures [reported](https://www.bis.org/publications/new-correspondent-banking-data-decline-continues-slower-pace) that active correspondent banks worldwide fell about 22 percent between 2011 and 2019, with Latin America showing the steepest regional decline. Fewer correspondents means longer chains or no route at all.

The result is the 1 to 5 business day window most finance teams already plan around. It is also why fast local payouts over this model need cash already sitting in the destination country.

## What is trapped capital, and why does treasury care?

Trapped capital is working capital held in pre-funded accounts so payments can settle on time. It is the cost of speed on correspondent rails, and it shows up in four places on a treasury report:

- **Opportunity cost.** Cash in a foreign operating account earns little. The same cash in short-term government bills, or in the business, earns more.
- **FX exposure.** Every foreign balance is an open currency position. A 3 percent move against you on a large peso balance is a real loss, even if no payment went wrong.
- **Counterparty exposure.** A balance at a local bank is exposed to that bank, for as long as it sits there.
- **Operational load.** One bank relationship, one KYC file, one set of statements to reconcile, and one refill schedule per country.

It also grows in steps. Add a sixth country and you add a sixth balance, a sixth bank, and a sixth currency position. In markets with currency controls, a local balance can be hard to move back out at all.

## How does stablecoin settlement remove country-by-country pre-funding?

It replaces a balance in every country with a single funding source and conversion at payment time.

The treasury keeps dollars, or USDC and USDT, in one place. When a payout is due, it requests a quote, funds exactly the quoted amount, and the stablecoins move on-chain in seconds. A liquidity provider converts them into local currency and pays the recipient over the local rail. Nothing was parked in the destination country beforehand.

At BlindPay, that single funding source is one of three: a stablecoin wallet you control, a BlindPay-managed wallet, or a [US virtual account](/resources/more/stablecoin-virtual-accounts-explained) that turns ACH, wire, or SWIFT deposits into USDC or USDT. The differences between funding models, including the "provider balance" model that looks like no pre-funding but isn't, are covered in [what "no pre-funding" means in a stablecoin API](/resources/more/no-pre-funding-stablecoin-payouts).

The local currency still has to exist somewhere. The liquidity provider holds it as working inventory across all its customers, which is the pooling effect described in [what a liquidity market is](/resources/more/what-is-a-liquidity-market-cross-border-payments). You stop paying for your own idle buffer.

## What does trapped capital cost? A five-country example

This is an illustrative scenario with round numbers, not data from a real company. Use it as a template and swap in your own figures.

A payments company sends 2,000,000 dollars a month in payouts to five markets, once a week. Under the correspondent model, it keeps about two weeks of volume in each country: one weekly cycle plus up to five business days to refill by international wire. That works out to roughly half a month of volume per country.

| Market | Local rail | Monthly payout volume (USD) | Pre-funded balance, correspondent model (USD) | Destination-currency balance, stablecoin model (USD) |
| --- | --- | --- | --- | --- |
| Brazil | Pix | 800,000 | 400,000 | 0 |
| Mexico | SPEI | 500,000 | 250,000 | 0 |
| Colombia | ACH Colombia | 300,000 | 150,000 | 0 |
| Argentina | Transfers 3.0 | 200,000 | 100,000 | 0 |
| Eurozone | SEPA | 200,000 | 100,000 | 0 |
| **Total** | | **2,000,000** | **1,000,000** | **0** |

What that million dollars costs, with the assumptions stated:

| Cost line (illustrative) | Correspondent model | Stablecoin model |
| --- | --- | --- |
| Idle capital | 1,000,000 USD at all times | None beyond the payouts in flight |
| Yield given up at 4% a year | About 40,000 USD a year | None; dollars stay in treasury until payout day |
| Loss on a 3% adverse FX move | About 30,000 USD across five currencies | Limited to the minutes between quote and settlement |
| Local bank relationships | 5 | 0 (one integration) |
| Refill wires | About 5 a week, one per market | 0 |
| Double the volume | Balances double to 2,000,000 USD | Still 0 |

The last row is the one that matters for a growing company. Under pre-funding, trapped capital scales with volume and with every new market. Funded at send time, it stays at zero, and a new market is a new bank account type instead of a treasury project.

The trade-off is timing. You need the funds on hand when you send, and a payout has to be created inside the quote's window, five minutes by default at BlindPay. USD deposits into a virtual account by ACH or wire can take days to land, so plan the deposit, not a balance. [How long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times) has the timing by rail.

## What should you ask a liquidity partner before switching?

Ask these in writing. The answers expose the real funding and liquidity model fast.

- **Does a payout draw from a balance I topped up in advance?** If yes, it is pre-funded, whatever the website says.
- **Are FX quotes live and binding?** Ask for the quote id, the expiry, and what happens if you submit late.
- **Which local rails does it settle to, directly?** Named rails, such as Pix, SPEI, ACH, RTP, SEPA, and SWIFT, with a settlement window for each.
- **Is the model custodial or non-custodial?** Who holds the funds between your treasury and the recipient's bank, and for how long?
- **Where do funds go when a payout can't settle?** And how fast do they come back?
- **Is there a minimum balance or a volume floor?** Per currency, per rail, or across the account.
- **Who runs KYC, KYB, and sanctions screening?** And does it happen once at onboarding or on every payment?

For reference, here is how BlindPay answers them. Payouts are funded when you create them, with no pre-funded balance. Quotes lock the rate and fees for five minutes by default, and the [quote response](/resources/more/stablecoin-api-quotes-explained) shows the market rate next to BlindPay's rate. Payouts settle over Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, ACH Colombia, Transfers 3.0 in Argentina, ACH, wire, and RTP in the US, SEPA in Europe, and international SWIFT. BlindPay operates as a non-custodial payment processor, and a refunded payout returns the stablecoins to the funding source; stablecoin refunds process immediately. Pricing is published, with per-rail minimums instead of a volume floor. KYC and KYB run inside the API before money moves.

## When does correspondent banking still make sense?

When the counterparty requires a wire, when the corridor has no stablecoin liquidity, or when the payment is a large one-off between two banks that already know each other. SWIFT reaches almost every bank on earth, and that coverage is real. Many teams run both: stablecoin liquidity for recurring payouts into markets with instant local rails, SWIFT for the long tail.

## What to do next

Pull last quarter's balances in every foreign account and add them up. That number is your trapped capital. Then read the [payout quickstart](/docs/quickstart-payout) and run one payout on a development instance to see what funding at send time looks like, or [talk to the BlindPay team](/contact) about moving a specific corridor.

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

---

Source: https://blindpay.com/resources/more/wallet-api-vs-embedded-wallet-sdk-vs-white-label

---
title: "Wallet API vs embedded SDK vs white-label: which fits?"
seoTitle: "Wallet API vs embedded wallet SDK vs white-label wallet"
description: "Compare the three wallet integration models on control, launch time, engineering effort, security, lock-in, and cost, with a five-question decision tree."
date: "2026-08-26"
updated: "2026-08-26"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is wallet as a service (WaaS)?"
    a: "Wallet as a service is hosted wallet infrastructure sold to businesses. The provider runs key management, signing, chain connectivity, and balance tracking, and exposes them through a backend API, a client SDK, or both. The business builds its product on top without operating key storage or blockchain nodes itself. White-label wallets are sometimes sold under the same name."
  - q: "What is the difference between an embedded wallet and a wallet API?"
    a: "An embedded wallet SDK runs inside your web or mobile app and creates a wallet for each user, who signs transactions in your interface after logging in with email, social, or a passkey. A wallet API runs on your server, and your backend creates wallets and requests signatures under policies you set. Consumer apps lean on SDKs. Treasury and payout flows lean on APIs."
  - q: "Is a white-label crypto wallet a good idea?"
    a: "A white-label wallet is a good idea for a pilot or a non-core feature, because it is the fastest way to put a branded wallet in front of users. It is a weaker choice when the wallet is central to your product, since the provider controls the roadmap, much of the user data, and how hard it is to leave."
  - q: "Can I use more than one wallet integration model?"
    a: "Yes, and many products do. A common setup is an embedded SDK for end users who sign their own transactions, plus a wallet API with approval policies for the company's treasury and payout wallets. The two models can come from the same provider or from different ones, as long as your backend tracks which addresses belong to which flow."
  - q: "Which wallet integration model is fastest to launch?"
    a: "White-label is fastest, because the provider ships the whole application and you mostly configure branding. An embedded SDK is next, since the provider supplies login, key, and signing flows while you build the rest of the app. A wallet API takes the most engineering, because your team builds every screen, policy, and state transition around the provider's endpoints."
  - q: "Does the wallet model affect payouts to bank accounts?"
    a: "Not directly. No wallet model on its own converts stablecoins into bank money. That needs an off-ramp with banking partners and local rails. The wallet model only changes who signs the authorization for a payout: the user in an embedded wallet, or your backend under policy with a wallet API. The payments integration can stay the same."
---

Choose a wallet API if you have engineers and need full control of the product, an embedded wallet SDK if you want wallets inside a consumer app without building key flows, and a white-label wallet if speed to launch matters more than control. Most teams land on an API or an SDK, and plenty use both.

All three are forms of **wallet as a service (WaaS)**: hosted wallet infrastructure where the provider runs key management, signing, and chain connectivity. What changes is how much of the product you build around it. If you're earlier in the project, [what is crypto wallet integration](/resources/more/what-is-crypto-wallet-integration) covers the components first.

## Wallet API, embedded SDK, or white-label: which should you choose?

The choice comes down to two questions: who signs transactions, and how much of the interface you want to own. If your backend signs, use an API. If your users sign inside your app, use an SDK. If you want someone else to own the whole app for now, use white-label.

| Choose | When | Avoid when |
| --- | --- | --- |
| Wallet API | Your backend moves funds, you need custom flows, and you have engineers to build the interface | You need a consumer wallet live before you can staff the work |
| Embedded SDK | Your users sign their own transactions inside your web or mobile app | You need deep control over key flows or unusual chains the SDK doesn't cover |
| White-label | You're testing demand, or the wallet is a side feature | The wallet is the core of your product and roadmap |

## What is a wallet API and when does it fit?

A wallet API is a set of server-side endpoints for creating wallets, reading balances, requesting signatures, and receiving webhooks about on-chain activity. Your backend calls the provider, the provider signs under policies you configure, and you build every screen the user sees.

Providers usually protect keys behind a wallet API with MPC or a **hardware security module (HSM)**, a tamper-resistant device that stores keys and signs without exposing them. You never handle raw keys. You do own the policy engine configuration: which destinations are allowed, which amounts need a second approver, and which API keys can request a signature.

A wallet API fits when:

- Your backend initiates transfers: payouts, treasury moves, fee collection, refunds.
- You need custom flows that no prebuilt UI supports.
- You serve businesses, not consumers, and signing happens under company policy rather than a user's thumb.

Your responsibility is larger than it looks. API credentials become the keys to the kingdom, so they need rotation, scoping, and monitoring. Retries need idempotency so a network blip doesn't sign a transfer twice. And every state a transaction can be in needs a screen.

## What is an embedded wallet SDK and when does it fit?

An embedded wallet SDK is a client library that creates a wallet for each user inside your web or mobile app. The user logs in with an email, a social account, or a passkey, and the SDK handles key creation, storage, and signing prompts. Nobody installs a separate wallet app.

Under the hood, embedded wallets usually split the key into MPC shares between the user's device and the provider, or keep it in the device's secure hardware. Passkey login builds on the [W3C WebAuthn standard](https://www.w3.org/TR/webauthn-3/). Some SDKs deploy a smart-contract account for each user, following [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337), which adds features like sponsored gas and spending limits. [Custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets) explains how the share split decides who controls the funds.

An embedded SDK fits when:

- Your users are consumers or small businesses who have never used a crypto wallet.
- Users sign their own transactions, and you want the prompt inside your interface.
- You want wallets tied to your existing login instead of a recovery phrase.

Check four things before you commit: platform coverage (web, iOS, Android, React Native), how far the prebuilt UI can be customized, which chains and signature schemes are supported, and whether users can export their key if you ever change providers.

## What is a white-label wallet and when does it fit?

A white-label wallet is a finished wallet application that the provider runs and you brand as your own. You configure logos, colors, supported assets, and sometimes fees. The provider owns the code, the release schedule, and usually much of the user data.

A white-label wallet fits when:

- You're running a pilot to see whether your users want a wallet at all.
- The wallet is a side feature, not the product.
- You have no engineering capacity for wallet work this year.

The trade-off shows up later. Features you need wait on the provider's roadmap. User data may live in the provider's systems under its terms. And moving users to your own wallet means new addresses for every one of them, which is a support campaign, not a deploy.

## How do the three models compare?

The three models trade control for speed. A wallet API gives the most control and the most work, a white-label wallet the least of both, and an embedded SDK sits in the middle. There is no reliable public benchmark for launch times, so the table describes relative effort.

| | Wallet API | Embedded SDK | White-label |
| --- | --- | --- | --- |
| Control over UX and data | Full | Your app, with prebuilt wallet flows | Branding and configuration |
| Time to launch | Longest | Medium | Shortest |
| Engineering effort | High: backend, policies, every screen | Medium: app integration, login, states | Low: configuration and support |
| Security responsibility | Shared: provider protects keys, you own policies and credentials | Shared: provider owns key flows, you own the app and session security | Mostly the provider |
| Vendor lock-in | Medium: addresses and policies tie you in | Medium to high: user keys live in the provider's scheme | High: the whole product lives with the provider |
| Cost drivers | Platform fee, per-wallet or per-transaction fees, gas | Monthly active wallets, per-transaction fees, gas sponsorship | Licensing or revenue share, per-user fees |

## Which model fits? Five yes/no questions

Answer these in order. Each answer either points to a model or sends you to the next question.

1. **Do you need a wallet in front of users before you can staff wallet engineering?** Yes: start with a white-label pilot, and plan the migration now. No: go to question 2.
2. **Will end users sign transactions themselves inside your app?** No, your backend moves the funds: use a wallet API. Yes: go to question 3.
3. **Do most of your users already have their own wallets?** Yes: let them connect those wallets through the standard [EIP-1193 provider interface](https://eips.ethereum.org/EIPS/eip-1193), and skip the wallet vendor for them. No: use an embedded SDK.
4. **Does your company also move its own funds, such as treasury, fees, or payouts?** Yes: add a wallet API with approval policies next to the SDK. No: the SDK alone may be enough.
5. **Does money have to reach bank accounts?** Yes: add a payments layer for on-ramps and off-ramps. No wallet model solves that on its own. [What is a crypto on-ramp and off-ramp](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp) explains the pieces.

## How do wallet infrastructure and payments infrastructure work together?

Wallet infrastructure holds and signs. Payments infrastructure connects the wallet to bank accounts. They're separate layers, and keeping them separate lets you change one without rebuilding the other.

A typical stack looks like this:

```text
1. Your app            login, balances, business logic
        |
2. Wallet provider     creates wallets, holds or splits keys, signs under your policies
        |              (for example Privy, Dfns, Circle wallets, Fireblocks, or Utila)
        |
3. BlindPay            virtual accounts, quotes, on-ramp and off-ramp, payouts
        |
4. Local rails         Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), TED, ACH Colombia
```

Here's how the layers meet. The wallet address your provider creates is registered with BlindPay as a [blockchain wallet](/docs/blockchain-wallets). A [virtual account](/resources/more/stablecoin-virtual-accounts-explained) gives the customer US bank details, and each deposit converts to USDC or USDT and lands at that address. For a payout, the wallet authorizes the quoted amount, and BlindPay converts it and pays out on the local rail.

BlindPay is not the wallet provider in this picture. It never holds the keys to that wallet, and the wallet provider never has to touch a bank. The integration model only changes who signs the payout authorization: the user in an embedded wallet, or your backend under policy with a wallet API. Nothing has to be pre-funded for an external-wallet payout, as [what no pre-funding means](/resources/more/no-pre-funding-stablecoin-payouts) explains.

## What mistakes do teams make when choosing an integration model?

Most mistakes come from choosing on the demo instead of on the key architecture and the exit. Five that come up again and again:

1. **Picking on UI polish.** A smooth demo says nothing about who can sign without the user. Ask for the key and share diagram first.
2. **Ignoring chain coverage until chain two.** Ethereum and Tron sign with ECDSA, Solana and Stellar with Ed25519. A provider that supports one scheme well may not support the other, and your second chain becomes a second vendor.
3. **Treating the wallet as the payments stack.** A wallet holds stablecoins. It doesn't collect ACH deposits, run KYC, or pay out over Pix. Budget the payments layer from the start ([build vs buy](/resources/more/build-vs-buy-stablecoin-payments) shows what that layer contains).
4. **No exit plan.** Key export, address export, and transaction history export belong in the contract before launch, not after a price increase.
5. **Leaving compliance for later.** User verification and wallet address screening need hooks in the first version. Retrofitting them means re-onboarding users. [How to automate KYC and KYB](/resources/more/how-to-automate-kyc-kyb-stablecoin-payments) covers the verification side.

## What to do next

Run the five questions above with your product and engineering leads in one meeting, and write down the model for each flow: end users, treasury, and payouts. Then ask each shortlisted provider the same thing: who can sign without the user, and how do we leave?

If bank accounts are in scope, check the [blockchain wallet docs](/docs/blockchain-wallets) to see how a wallet from any of these models links to payins and payouts.

---

Source: https://blindpay.com/resources/more/how-to-automate-kyc-kyb-stablecoin-payments

---
title: "How to automate KYC and KYB for stablecoin payments"
seoTitle: "How to automate KYC and KYB for stablecoin payments"
description: "A developer guide to automated KYC and KYB for stablecoin payment flows: how verification runs inside a payment API, step-by-step workflows for individuals and businesses, jurisdiction requirements for the US, EU, UK, Singapore, and Brazil, and what to check before settlement."
date: "2026-08-25"
updated: "2026-08-25"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "What is the difference between KYC and KYB?"
    a: "KYC verifies an individual person: identity document, liveness, address, and sanctions screening. KYB verifies a business entity: registration, good standing, ownership structure, and then KYC on each beneficial owner and controller. A business account needs both."
  - q: "Can KYC for stablecoin payments be fully automated?"
    a: "For most users, yes. Document extraction, face matching, sanctions screening, and risk scoring run without a human, and a clean case is approved in seconds to minutes. A small share of cases with mismatched data or screening hits still goes to manual review."
  - q: "Do I need a separate KYC vendor if I use a stablecoin payment API?"
    a: "Not if the payment API includes verification. BlindPay runs KYC and KYB through the same REST API used to create payouts, so there is no second vendor contract, SDK, or webhook pipeline to maintain."
  - q: "What happens if a user fails automated KYC?"
    a: "The receiver record moves to a rejected status and no payout can be created for it. Your app should show the reason category returned by the API and, where allowed, offer a resubmission path with corrected documents."
  - q: "How long does automated KYB take for a business?"
    a: "Minutes to same day when registry data is available and ownership is simple. Entities with layered holding companies, trusts, or non-digitized registries can take several days because ownership must be traced to real people."
  - q: "Does KYC need to run before every stablecoin payout?"
    a: "Verification runs once per receiver, not per transaction. Sanctions screening and risk checks then run on each payout against the verified record, and the payout is blocked before settlement if anything changed."
---

*Reading time: about 8 minutes.*

**Summary:** You automate KYC and KYB for stablecoin payments by making verification a step in the payment API itself. Create a receiver with identity or entity data, let automated KYC run document checks, sanctions screening, and risk scoring, receive the result by webhook, and only allow payouts once the receiver status is approved.

KYC automation matters for stablecoin companies because a payout on a public blockchain cannot be reversed. Every check has to finish before funds move, and manual review does not scale past a few hundred receivers.

## What is the difference between KYC and KYB for stablecoin payments?

KYC, Know Your Customer, verifies an individual person. It confirms that a government ID is authentic, that the person presenting it is real and present, and that they are not on a sanctions or watch list.

KYB, Know Your Business, verifies a business entity. It confirms the company is registered and active, maps who owns and controls it, and then runs KYC on each of those individuals.

The split maps onto who you pay. Contractors and remittance recipients need KYC. Vendors, marketplaces, and corporate customers need KYB, which always includes KYC on their owners. The [KYB explainer](/resources/more/what-is-kyb) covers beneficial ownership rules in detail.

## How does automated KYC work for stablecoin users?

Automated KYC replaces an analyst reviewing a PDF with a pipeline of machine checks that return a decision and an audit trail.

1. **Data collection.** Your app collects name, date of birth, address, tax ID, and ID document images, then sends them in one API request that creates the receiver.
2. **Document verification.** The system extracts fields from the document, checks security features and expiry, and compares the extracted data against what the user typed.
3. **Liveness and face match.** A selfie or short video is checked for presentation attacks, then matched against the document photo.
4. **Sanctions and PEP screening.** The name, date of birth, and country are screened against OFAC, EU, UK, UN, and local lists, plus politically exposed person databases.
5. **Risk scoring.** Country, document type, IP geolocation, and screening results combine into a risk tier that decides between auto-approval and manual review.
6. **Decision and webhook.** The receiver status becomes approved, rejected, or verifying, and your backend receives a webhook so it can unlock or block payouts.
7. **Audit logging.** Every input, check result, and decision is stored with timestamps so a regulator or bank partner can reconstruct the case.

A clean case clears all seven stages in under a minute. A name mismatch or screening hit stops at stage five for a human decision.

## How does KYB automation work for business receivers?

KYB automation follows the same shape but adds an entity layer before the individual checks. Ownership tracing is the hard part, because it has to end at real people.

1. **Entity data collection.** Collect legal name, registration number, tax ID, incorporation date, registered address, business type, and industry, plus the incorporation document.
2. **Registry verification.** The registration number is checked against the jurisdiction's corporate registry to confirm the entity exists, is active, and matches the stated name and address.
3. **Ownership mapping.** The ownership structure is unwound through holding companies until every individual with 25 percent or more, or with control, is identified.
4. **Beneficial owner KYC.** Each identified owner and controller goes through the full individual KYC flow described above.
5. **Entity screening.** The company name and its owners are screened against sanctions lists, adverse media, and industry restrictions.
6. **Risk scoring and decision.** Entity type, industry, jurisdiction, and owner results combine into a tier. High-risk industries or complex ownership route to enhanced due diligence.
7. **Decision and monitoring.** The business receiver is approved or rejected, and the record is re-screened on a schedule and on every payout.

Registry availability sets the speed. A US LLC or UK Ltd clears in minutes, while an entity in a paper-registry jurisdiction can take days.

## How do you integrate KYC compliance into a stablecoin payment API?

The integration pattern that works at scale treats verification as a state machine on the receiver record, not as a separate system you poll.

1. **Create the receiver.** Call the receivers endpoint with the KYC type, individual or business, and the collected data. The record is created with status verifying.
2. **Subscribe to status webhooks.** Register a webhook for receiver status changes so your backend learns about approval or rejection without polling.
3. **Gate payouts on status.** Your payout code checks that the receiver is approved before creating a quote. The API enforces this too, so a race cannot slip a payout through.
4. **Handle rejection and resubmission.** Surface the rejection reason to the user, collect corrected documents, and update the receiver to trigger a new verification run.
5. **Store the receiver ID, not the documents.** Keep the provider's receiver ID in your database and let the provider hold documents and audit logs.

With BlindPay, these steps use the same REST API and API key as quotes and payouts. The [OpenAPI specification](/docs/api/reference) describes the receiver schema, status values, and webhook payloads, so client code can be generated rather than hand-written.

## Which jurisdictions have specific KYC and KYB requirements for stablecoin payments?

Requirements differ by country in thresholds, beneficial ownership definitions, and the licensing regulator. A multi-corridor provider needs a rule set per jurisdiction, applied automatically from the receiver country.

| Jurisdiction | Regulatory body | Primary KYC/KYB requirements |
|---|---|---|
| United States | FinCEN, state regulators | Customer Identification Program, beneficial ownership at 25 percent plus control prong under 31 CFR 1010.230, OFAC screening, SAR filing |
| European Union | National competent authorities under AMLD and MiCA | Customer due diligence, beneficial ownership at 25 percent, travel rule under the Transfer of Funds Regulation, CASP licensing under MiCA |
| United Kingdom | FCA | Money Laundering Regulations 2017, cryptoasset firm registration, PSC register checks for beneficial owners, travel rule since September 2023 |
| Singapore | MAS | Payment Services Act licensing, MAS Notice PSN02 customer due diligence, travel rule for digital payment token transfers |
| Brazil | Banco Central do Brasil, Receita Federal | CPF and CNPJ validation, name and tax ID matching on Pix, PSAV registration for virtual asset providers, Circular 3978 AML controls |

The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) and [MiCA explainer](/resources/more/mica-stablecoin-rules-explained) go deeper on EU and Brazil rules.

## Why should compliance checks run before settlement instead of after?

On a card or ACH network, a payment flagged after the fact can be reversed. A stablecoin transfer on a public chain is final once confirmed, so a check that runs after settlement is a report, not a control.

Verification before the payout is created means a sanctions hit or failed document check blocks the transaction at zero cost. After settlement, the funds are already in a wallet you do not control.

BlindPay runs KYC, KYB, and per-payout sanctions screening before any quote is executed. A receiver that is not approved cannot receive a payout, and a payout that fails screening is rejected before funds move.

## Can a stablecoin company reuse KYC it already performs?

Partly. A fintech with its own onboarding program can pass verified data through the payment API instead of running users through a second document flow, once the provider has reviewed that program against its own standard.

BlindPay applies this as a reliance model. Onboarding, fraud checks, and limit increase reviews can be relied upon after a review of the partner's policies, while transaction monitoring on every payout always runs on BlindPay's side. All customer data still flows through the API, and BlindPay keeps the right to inspect any partner check.

## What should developers check when choosing automated identity verification for a stablecoin company?

The decision comes down to whether verification is part of the payment flow or bolted on beside it. A separate KYC vendor means a second contract, a second SDK, and a sync problem between verification state and payout permission.

- **Single API surface.** Verification and payouts should share one authentication scheme, one webhook system, and one set of IDs.
- **Enforcement at the payout layer.** The API itself should refuse a payout to an unverified receiver, not just return a status your code has to remember to check.
- **Jurisdiction coverage.** Confirm the provider applies the right rules for every country you pay into, including local tax ID formats and name matching rules.
- **Sandbox parity.** The [sandbox](/resources/more/stablecoin-api-sandbox-vs-production) should return realistic verification states, including rejected and verifying, so every branch is tested before go-live.

## FAQ

**What is the difference between KYC and KYB?**
KYC verifies an individual person: identity document, liveness, address, and sanctions screening. KYB verifies a business entity: registration, good standing, ownership structure, and then KYC on each beneficial owner and controller. A business account needs both.

**Can KYC for stablecoin payments be fully automated?**
For most users, yes. Document extraction, face matching, sanctions screening, and risk scoring run without a human, and a clean case is approved in seconds to minutes. A small share of cases with mismatched data or screening hits still goes to manual review.

**Do I need a separate KYC vendor if I use a stablecoin payment API?**
Not if the payment API includes verification. BlindPay runs KYC and KYB through the same REST API used to create payouts, so there is no second vendor contract, SDK, or webhook pipeline to maintain.

**What happens if a user fails automated KYC?**
The receiver record moves to a rejected status and no payout can be created for it. Your app should show the reason category returned by the API and, where allowed, offer a resubmission path with corrected documents.

**How long does automated KYB take for a business?**
Minutes to same day when registry data is available and ownership is simple. Entities with layered holding companies, trusts, or non-digitized registries can take several days because ownership must be traced to real people.

**Does KYC need to run before every stablecoin payout?**
Verification runs once per receiver, not per transaction. Sanctions screening and risk checks then run on each payout against the verified record, and the payout is blocked before settlement if anything changed.

## How does BlindPay fit in?

Automating KYC and KYB for stablecoin payments means treating verification as a state on the receiver, running every check before settlement, and letting the payment API enforce the result. Doing it inside the payment infrastructure removes the separate vendor integration and its synchronization bugs.

[BlindPay](https://blindpay.com) embeds KYC and KYB in the same REST API used for quotes and payouts, covering document verification, sanctions screening, risk scoring, and audit logging across the US, EU, UK, Singapore, Brazil, and other supported countries. The [compliance page](/compliance) covers the full program, and specific corridors are worth a [conversation](/contact).

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

---

Source: https://blindpay.com/agentic-payments

---
title: "Agentic payments: how AI agents move real money"
description: "Agentic payments are transactions initiated by AI agents through APIs and tool calls instead of dashboards. How they work, what infrastructure they need, and how to ship one with BlindPay's MCP server, agent skills, and API."
date: "2026-08-24"
updated: "2026-09-01"
pillar: true
author: "BlindPay Team"
faq:
  - q: "What are agentic payments?"
    a: "Agentic payments are money movements initiated by an AI agent through an API or tool call rather than by a person in a dashboard. The agent requests a quote, gets explicit confirmation where required, and executes the transfer, while the underlying provider handles settlement and compliance."
  - q: "How do AI agents pay people in other countries?"
    a: "Through stablecoin infrastructure: the agent calls a payments API that converts USDC or USDT to local currency and delivers it over local rails such as Pix in Brazil, SPEI in Mexico, or SEPA in Europe. Settlement runs 24/7, which matters because agents don't keep banking hours."
  - q: "Are agentic payments safe?"
    a: "The controls live in the infrastructure, not in the agent's judgment: API keys scope what an agent can do, money-movement tools gate on explicit confirmation, and every receiver passes KYC before funds are delivered. The agent proposes; the platform verifies and executes within those limits."
  - q: "How do I connect an AI agent to BlindPay?"
    a: "Run the MCP server with npx -y @blindpay/mcp and an API key, install the agent skills with npx skills add blindpaylabs/skills, or call the REST API directly. Agent-readable docs live at blindpay.com/docs/llms.txt."
---

# Agentic payments

Agentic payments are transactions initiated by AI agents through APIs and tool calls instead of a person clicking through a dashboard. The agent requests a quote, confirms intent, and executes. Underneath, the payment infrastructure verifies identities, converts between stablecoins and local currency, and settles over rails like Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO). BlindPay ships this as an MCP server, agent skills, and a REST API, on the same stablecoin rails it already runs for human payments.

## Why agents need different payment infrastructure

Agents are already good at the work around a payment: negotiating, scheduling, reconciling. The payment itself is where they get stuck. Dashboards want clicks. Wires want banking hours. Card checkouts want a person holding a card.

To actually move money, an agent needs three things that payments infrastructure rarely offers together: machine-readable interfaces (tool calls, not forms), settlement that runs 24/7 (agents don't keep banking hours), and hard guardrails so autonomy never outruns authorization.

Stablecoins fit this shape unusually well. USDC settles in seconds at 3am on a Sunday, costs are visible up front, and both ends convert to regular bank money. What's missing is the layer that turns "pay this contractor in Brazil" into a verified, compliant Pix delivery. That layer is a stablecoin payments API.

## How an agentic payment works

1. The agent calls a quote tool with an amount, a currency pair, and a destination. The quote locks the FX rate and fees for a few minutes.
2. Authorization is checked: the API key scopes what this agent may do, and money-movement tools gate on explicit confirmation.
3. The agent executes the payout. BlindPay converts the stablecoin and delivers local currency over the destination rail.
4. Status flows back as structured events the agent can act on: webhooks for settlement, failures, and compliance holds.

That's the whole trick. The agent never touches custody, FX, or compliance directly. It orchestrates; the infrastructure executes.

## What an agent can reach through BlindPay

| Capability | Detail |
| --- | --- |
| Payouts | USDC/USDT to USD (ACH, RTP, SWIFT POBO/COBO), BRL (Pix), MXN (SPEI), COP (PSE), ARS (Transfers 3.0), EUR (SEPA) |
| Payins | Local bank transfers converted to stablecoins credited to a wallet or balance |
| Virtual accounts | US account details per customer that settle to stablecoins |
| Wallets | Managed stablecoin wallets on supported networks |
| Compliance | KYC/KYB, sanctions screening, and travel-rule handling inside the API |
| Settlement speed | Payments processed in under 60 seconds, 24/7 |

## The integration surfaces

Three doors in, one API behind all of them. MCP exists because every agent kept needing a one-off integration for every tool it touched:

> It provides a universal, open standard for connecting AI systems with data sources, replacing fragmented integrations with a single protocol.
>
> Anthropic, in [Introducing the Model Context Protocol](https://www.anthropic.com/news/model-context-protocol)

- MCP server: `npx -y @blindpay/mcp` exposes the payments API as tools for Claude, Cursor, and any MCP client. Server card at [/.well-known/mcp/server-card.json](/.well-known/mcp/server-card.json).
- Agent skills: `npx skills add blindpaylabs/skills` gives coding agents the domain knowledge they'd otherwise guess at: rails, corridors, fees, KYC flows, webhook patterns.
- REST API: [api.blindpay.com](https://api.blindpay.com/reference) with Bearer API keys, for teams building their own agent tooling. Reference: [/docs/api/reference](/docs/api/reference).

The site itself is agent-readable: most pages serve markdown via `Accept: text/markdown` or a `.md` suffix, and the docs publish [/docs/llms.txt](/docs/llms.txt) and [/docs/llms-full.txt](/docs/llms-full.txt).

## Where agentic payments are used today

Agent-driven commerce is already moving real money: Salesforce reported that AI and agents drove $67 billion in Cyber Week 2025 sales, [influencing 20% of all global orders](https://www.salesforce.com/news/press-releases/2025/12/05/cyber-week-ai-agents-sales/) through personalized recommendations and conversational service. Payment infrastructure is the part of that flow still catching up.

- Procurement and back-office agents settling vendor invoices across borders, with nobody waiting to log into a bank portal on Monday.
- Marketplace and platform agents running payouts to sellers and contractors in Latin America over Pix and SPEI.
- Coding agents (Claude Code, Cursor, Lovable, v0, Replit) adding payment flows to apps straight from the [integrations hub](/docs/integrations).
- Treasury automations moving between stablecoins and fiat on a schedule, using quotes to lock rates before execution.

## What BlindPay is and is not

BlindPay is the infrastructure the agent calls: quoting, conversion, local-rail delivery, virtual accounts, and compliance through one API, backed by Y Combinator (W25) with $125M+ processed. It's not an agent framework, not a wallet the agent controls on its own, and not a card network. Payments execute inside scoped keys, confirmation gates, and verified receivers, so autonomy stays inside the lines you drew.

Start at [BlindPay for AI](/ai), read the [docs](/docs/introduction), or [book a demo](https://cal.com/blindpay/demo-call-blindpay). And if your agent is the one reading this: the markdown version of this page lives at [/agentic-payments.md](/agentic-payments.md).

---

Source: https://blindpay.com/resources/more/how-to-send-usdc-to-bank-account-brazil

---
title: "How to send USDC to a bank account in Brazil"
description: "Step-by-step: convert USDC to Brazilian reais and deliver them to a bank account over Pix using a stablecoin payout API. Quote, verify, send, settle in minutes."
date: "2026-08-24"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to send USDC to a bank account in Brazil"
  steps:
    - name: "Get a quote"
      text: "Request a USDC to BRL quote from a stablecoin payout API. The quote locks the exchange rate, fees, and the exact BRL amount the receiver gets, typically for a few minutes."
    - name: "Verify the receiver"
      text: "Provide the receiver's identity details: name, CPF or CNPJ, and Pix key or bank account. Brazilian institutions verify the name against the tax ID before crediting, so accurate data is a hard requirement."
    - name: "Send the USDC"
      text: "Transfer the quoted USDC amount to the provider on a supported network. The provider converts it to reais at the locked rate."
    - name: "Reais arrive over Pix"
      text: "The provider delivers BRL to the receiver's account via Pix, which settles in seconds and runs 24/7. End-to-end time is dominated by the conversion step, usually minutes."
faq:
  - q: "How long does sending USDC to a Brazilian bank account take?"
    a: "Minutes. Pix, Brazil's instant payment system, settles in seconds once the reais leave the sending institution, and the conversion step before it typically takes a few minutes on a payout API."
  - q: "What information do I need from the receiver?"
    a: "Their full name, CPF (individuals) or CNPJ (companies), and a Pix key or bank account details. A mismatch between name and tax ID is the most common reason a Pix payout is rejected."
  - q: "Is this legal in Brazil?"
    a: "Yes. Brazil regulates virtual asset services under Law 14.478/2022, and since February 2026 providers operate under the Central Bank's authorization regime (Resolutions 519, 520, and 521). Use a provider that operates within that regime."
---

To send USDC to a bank account in Brazil, request a USDC to BRL quote from a stablecoin payout API, submit the receiver's name and CPF or CNPJ for verification, transfer the quoted USDC, and the provider delivers reais to the receiver's account over Pix. The whole flow takes minutes, because Pix settles in seconds and runs 24/7. The live rate is on our [USDC to BRL corridor page](/usdc-to-brl).

Below is the flow in detail, plus what can go wrong at each step. For a comparison of this route against exchanges and P2P, see [USDC to BRL routes compared](/resources/more/usdc-to-brl-routes-2026).

## Step 1: get a quote

A quote locks the FX rate, the fee, and the exact BRL amount the receiver gets, typically for a few minutes. This matters because it removes rate risk from the transfer: the receiver amount is known before any money moves. Quotes also declare which side pays fees, so a payroll run can guarantee net amounts.

## Step 2: verify the receiver

Brazilian institutions verify the receiver's name against their tax ID (CPF for individuals, CNPJ for companies) before crediting an account. A payout API collects these once, runs KYC on the receiver, and reuses the verified identity for every later payment. The most common failure in the entire flow is a name and tax ID mismatch, so exact beneficiary data is the one thing to get right.

## Step 3: send the USDC

Transfer the quoted USDC amount to the provider on a supported network. From here the provider converts to reais at the locked rate; there is no separate trading step, order book, or manual withdrawal, which is what separates this route from selling on an exchange.

## Step 4: reais arrive over Pix

Pix, the instant payment system run by the Banco Central do Brasil, settles transfers in seconds and is used by over 150 million Brazilians. Once conversion completes, the reais land in the receiver's account regardless of banking hours, weekends, or holidays.

## Sending at scale

For one transfer, any compliant route works. For payroll, contractor payments, or marketplace payouts, the API route is built to repeat: one integration replaces per-transfer manual work, and each payment follows the same quote, verify, send, settle sequence. How the model works in general: [stablecoin payments explained](/resources/more/stablecoin-payments-guide). Developer reference: [payouts documentation](/docs/payouts).

## The regulatory backdrop

Brazil regulates virtual asset services under Law 14.478/2022, and the Central Bank's Resolutions 519, 520, and 521 (effective February 2, 2026) created an authorization regime for providers. Details in [PSAV in Brazil explained](/resources/more/psav-brazil-explained). Practical implication: choose a provider operating within that regime, and expect real KYC on both sender and receiver.

---

Source: https://blindpay.com/resources/more/source-of-funds-crypto-off-ramps

---
title: "Why do crypto off-ramps ask for source of funds? Documents, triggers, and on-chain proof"
seoTitle: "Source of funds for crypto off-ramps: what to provide"
description: "Why off-ramps ask where your stablecoins came from, how source of funds differs from source of wealth, what triggers a request, and which documents pass."
date: "2026-08-24"
updated: "2026-08-24"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What does source of funds mean for a crypto off-ramp?"
    a: "It's the origin of the specific money you're converting: the invoice a client paid, the exchange account you withdrew from, the capital round that funded your treasury. The off-ramp needs to see that those funds came from a lawful activity that matches what your business says it does. For stablecoins, that usually means documents plus an on-chain trail with wallet addresses and transaction hashes."
  - q: "What is the difference between source of funds and source of wealth?"
    a: "Source of funds is about the particular money in a transaction or account: where this USDC came from. Source of wealth is about how a business or its owners built up their total assets over time, such as years of operating profit, a prior company sale, or long-term investments. FATF guidance treats them as two different concepts. Off-ramps ask for source of wealth less often, usually in enhanced due diligence."
  - q: "How do I prove the source of stablecoins I received?"
    a: "Connect the money to a real activity and show the chain. Pair the commercial document, such as an invoice or contract, with the on-chain transfer that paid it: the sending address, the receiving address, the transaction hash, and the amount. If the stablecoins came from an exchange, add the exchange statement showing the withdrawal. Prove you control the wallet, for example by signing a message with it."
  - q: "Why was my off-ramp asked for source of funds after months of normal use?"
    a: "Reviews aren't one-time. Off-ramps re-check customers when activity changes: higher volumes, a new corridor, a change in ownership or business model, or a transaction that a monitoring rule flagged. Regulators expect ongoing monitoring, not just onboarding checks. A request mid-relationship usually means your activity moved outside the profile you declared, not that you did something wrong."
  - q: "What happens if I don't answer a source of funds request?"
    a: "The account or the transaction stays frozen until you do, and eventually the provider closes it out. At BlindPay, a customer with an open request for information can't send or receive funds and is rejected automatically after 27 days without a response. A held transaction whose request goes unanswered for 24 hours may be refunded to the sender."
---

Crypto off-ramps ask for source of funds to confirm that the stablecoins you convert came from a lawful activity that matches your business. It's part of enhanced due diligence under AML rules, triggered by risk: high volumes, unusual transactions, high-risk countries, or funds with a crypto-only history. Good evidence links a document, like an invoice, to the on-chain transfer that paid it.

It isn't personal. The off-ramp is the point where a blockchain balance becomes a bank deposit ([how off-ramps work](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp)), and someone has to vouch for it.

## Key takeaways

- Source of funds is where this money came from. Source of wealth is how the business or its owners got rich overall. Different questions, different documents.
- Off-ramps ask when risk goes up: onboarding into enhanced checks, limit increases, flagged transactions, and changes in your activity.
- Crypto-origin funds need a trail: transaction hashes, wallet addresses, exchange statements, and proof you control the wallet.
- Documents must be in the business's name, legible, unredacted, and consistent with what you said your business does.

## What is source of funds, and how is it different from source of wealth?

FATF, the global standard-setter for anti-money-laundering rules, draws the line in its [guidance on politically exposed persons](https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Peps-r12-r22.html) (paragraphs 86 to 88). "Wealth" and "funds" are two different concepts. Source of funds is the origin of the particular funds in the business relationship. Source of wealth is the origin of the customer's entire body of wealth.

| | Source of funds | Source of wealth |
| --- | --- | --- |
| Question it answers | Where did this money come from? | How did this business or person accumulate its assets? |
| Scope | One transaction, or the money moving through the account | Total assets over time |
| Typical evidence | Invoices, contracts, bank or exchange statements, on-chain history | Financial statements, tax returns, records of a company sale or investments |
| When off-ramps ask | Higher-risk customers, large or unusual transactions, limit increases | Enhanced due diligence, complex ownership, high-risk profiles |

FATF also makes a point that matters for crypto: knowing which institution the money came from isn't enough. You have to know the activity behind it.

## Why do crypto off-ramps ask for it?

Because their regulators and their banks require it, and stablecoins make the question both easier and harder to answer.

The rules are risk-based almost everywhere:

- **FATF.** The [virtual asset guidance](https://www.fatf-gafi.org/content/fatf-gafi/en/publications/Fatfrecommendations/Guidance-rba-virtual-assets-2021.html) points virtual asset service providers to enhanced due diligence for higher-risk situations, including obtaining information on the customer's source of funds.
- **EU.** The EBA's [ML/TF risk factor guidelines](https://www.eba.europa.eu/sites/default/files/2024-01/a3e89f4f-fbf3-4bd6-9e07-35f3243555b3/Final%20Amending%20%20Guidelines%20on%20MLTF%20Risk%20Factors.pdf), applying since December 2024, tell crypto-asset service providers to get evidence of the source of funds, the source of wealth, or the source of crypto-assets for higher-risk transactions. They also name self-hosted addresses that use mixers as a risk factor.
- **US.** FinCEN's customer due diligence rule doesn't require source of funds for every customer. It requires a risk profile and ongoing monitoring, and source of funds comes in through enhanced checks on higher-risk accounts.

The crypto-specific part: every stablecoin has a public history. Blockchain analytics can show whether a deposit passed through a mixer, a sanctioned address, or a hacked exchange before it reached you. That's why an off-ramp can ask about money you received from a legitimate client. The client's wallet history comes along with the payment. Most of that screening is automated now, which is what [compliance agents](/resources/more/what-are-compliance-agents-in-fintech) do, but the questions it raises still go to a person.

Regulation by country is in the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## When does an off-ramp ask for source of funds?

At predictable moments. Here are the usual triggers, in the order most businesses meet them:

1. **Onboarding into enhanced checks.** Individuals from high-risk countries go through enhanced KYC, which at BlindPay requires a source of funds document and a stated purpose of transactions ([KYC requirements](/docs/kb/kyc), [country tiers](/docs/kb/supported-countries)).
2. **Limit increases.** Asking for higher per-transaction, daily, or monthly caps means showing the money behind the volume: bank statements, financial statements, or tax returns.
3. **Volume or structure that needs validation.** High transaction volumes, or funding that runs through several entities or wallets.
4. **A change in your profile.** New ownership, a new business model, or activity that no longer matches what you declared.
5. **A flagged transaction.** Monitoring holds a payout and compliance asks what it is: who the sender is to you, why the money moved, and what it's for. Some providers review every dollar payout as a standard step, as the [US off-ramp guide](/resources/more/how-to-off-ramp-usdc-to-us-bank-account) explains.

BlindPay's [source of funds guide](/docs/kb/source-of-funds) lists the same triggers for businesses.

## What documents prove source of funds?

Two families: documents for money that came through banks, and documents for money that lives on-chain. These are the categories BlindPay accepts, and most regulated off-ramps ask for the same.

| Funds came from | Documents that prove it |
| --- | --- |
| Operating revenue | Invoices, customer contracts, settlement statements, receipts |
| A bank account | Bank statements or account summaries from a regulated institution |
| Investors or founders | Subscription agreements, capital injection or founder contribution records |
| Borrowing | Executed loan agreements or credit facilities |
| Selling assets | Records of a sale of business assets, securities, or property |
| A crypto wallet | Proof the business or its principals control the wallet |
| On-chain activity | Transaction history with transaction hashes and wallet addresses |
| A crypto exchange | Statements from a regulated exchange showing deposits, withdrawals, or trades |
| Minting or redeeming | Stablecoin issuance or redemption records |
| Trading or market making | Trade history, P&L summaries, liquidity provision records |
| A token sale | Allocation summaries, private placement records, use-of-funds explanations |

## How do you prove funds that came from crypto?

Tell the story of the money, then attach the receipts. A worked example:

A Mexican software company invoices a US client for 25,000 USDC. The client pays from its own wallet on Base. Three months later, the company's off-ramp asks about the deposit.

1. **The commercial reason.** The signed services contract and invoice number INV-2026-0412 for 25,000 USDC.
2. **The payment itself.** The transaction hash, the client's sending address, the company's receiving address, the amount, and the date. A block explorer link lets the reviewer check it in seconds.
3. **The link between the two.** The invoice names the client's company, and the client's wallet was shared in writing before payment, for example in the contract or an email.
4. **Proof you control the receiving wallet.** On EVM networks, signing a message with the wallet proves control without moving funds. BlindPay offers this signed-message option when you [register a blockchain wallet](/docs/blockchain-wallets).
5. **Where the money went next.** If part of it was swapped or bridged before the off-ramp, include those transaction hashes too, so the trail has no gaps.

The common failure is a gap in step 5. Stablecoins that hop through three wallets with no explanation look like layering, even when they're just a messy treasury.

## What makes a source of funds review fail?

Usually the paperwork, not the money. BlindPay's [document standards](/docs/kb/source-of-funds) are typical: documents issued in the name of the business, showing the source and flow of funds, legible and complete with no material redactions, in PDF, JPG, or PNG.

Red flags that trigger follow-up questions or rejection:

- Funds that don't match the declared business activity. A consultancy receiving trading-desk volumes.
- Third-party wallets paying with no contract or explanation.
- Heavy redactions on statements.
- On-chain exposure to mixers, sanctioned addresses, or known scam clusters.
- Round-tripping: the same money leaving and coming back to make volume look larger.
- An owner or controller who doesn't appear in the documents.

## What happens if you don't respond?

The money stops until you do.

At BlindPay, a [request for information](/docs/kb/information-requests) moves the customer to `compliance_request`. While it's open the customer can't send or receive funds, and BlindPay emails your team on days 0, 7, and 17. With no submission by day 27, the customer is rejected automatically. For a single held transaction, the [on-hold process](/docs/kb/on-hold-transactions) is faster: if the request goes unanswered for 24 hours, the transaction may be refunded to the sender.

## Who collects the documents, you or the provider?

Responsibility is shared, and it's worth writing down before the first request arrives.

| Task | Usually the provider | Usually you | Evidence to ask the provider for |
| --- | --- | --- | --- |
| Verify your customers (KYC, KYB) | Runs the checks and decides | Collects data and documents from your customer | Required fields per tier, review times |
| Source of funds | Reviews and decides | Collects documents from your customer and uploads them | Accepted documents and standards |
| Sanctions and wallet screening | Runs on every customer and transfer | Nothing, beyond accurate data | What gets screened and when |
| Transaction monitoring | Flags and holds | Answers requests for information | Response deadlines |
| Records | Keeps its own | Keeps contracts and invoices behind each payment | Retention periods |

At BlindPay, requests go to your team, not straight to your customer, because collecting and uploading the documents is the platform's job. If you sit between BlindPay and your own users, build the upload path into your product before you need it.

## How does BlindPay handle source of funds?

Compliance runs inside the payment flow. BlindPay verifies customers, screens transactions, and reviews source of funds and source of wealth when an account or transaction needs enhanced due diligence. Requests arrive by email and in the dashboard, and you answer them in one submission. Read the [source of funds guide](/docs/kb/source-of-funds) for the full document list before you onboard a high-volume customer.

*This article is educational content, not legal advice. Requirements vary by jurisdiction and provider; confirm your obligations with counsel.*

---

Source: https://blindpay.com/resources/more/business-vs-consumer-crypto-on-ramps

---
title: "Business vs consumer crypto on-ramps: what changes when a company buys stablecoins"
seoTitle: "Business vs consumer crypto on-ramps: what changes"
description: "A consumer on-ramp sells crypto to one person, usually by card. A business on-ramp turns company bank deposits into stablecoins via an API. What differs."
date: "2026-08-23"
updated: "2026-08-23"
author: "BlindPay Team"
category: "stablecoins"
faq:
  - q: "What is the difference between a business and a consumer crypto on-ramp?"
    a: "A consumer on-ramp sells crypto or stablecoins to one person, usually paid by card inside a hosted widget, with KYC on the individual. A business on-ramp converts a company's bank transfers into stablecoins through an API, after KYB on the company and its owners. The conversion is the same. The payment methods, limits, pricing, and integration are not."
  - q: "Can a business buy stablecoins with a credit card?"
    a: "Some consumer on-ramps accept business cards, but it rarely makes sense. Card on-ramps carry higher fees and low purchase caps because the provider has to price in chargebacks on money it already delivered on-chain. For anything beyond a small test, a bank transfer such as ACH, a wire, Pix, or SPEI is cheaper and has higher limits."
  - q: "Do business on-ramps require KYB?"
    a: "Yes. A regulated on-ramp has to verify who it is dealing with, and for a company that means KYB: registration documents, the people who own or control it, its line of business, and often the source of funds. Expect a manual review measured in hours or days, not the minutes a consumer KYC check takes."
  - q: "Is a crypto on-ramp safe?"
    a: "It is as safe as the provider's licensing and controls, and the care you take with the destination. Check that the provider is registered where it operates (in the US, a FinCEN MSB registration you can look up), runs KYC or KYB on every customer, and delivers to the exact wallet and network you specified. A stablecoin transfer can't be reversed once it confirms, so confirm the address before you pay."
  - q: "How long does a business on-ramp take?"
    a: "Onboarding takes longest: a KYB review can take from a few hours to a few business days. After that, each deposit is limited by the bank rail. Pix and SPEI settle in seconds to minutes, a domestic wire in hours, and ACH in one to three business days. The on-chain delivery adds seconds to a few minutes on most networks."
  - q: "Can a platform on-ramp money on behalf of its customers?"
    a: "Only if the provider can see those customers. Regulated on-ramps expect every party whose money moves through the account to be onboarded and screened. A platform that pools many end customers' deposits under its own account, without registering them, is running a nested structure most providers prohibit."
---

A consumer crypto on-ramp sells crypto or stablecoins to one person, usually paid by card inside a hosted widget. A business on-ramp converts a company's bank deposits into stablecoins through an API, after KYB, over rails like ACH, wire, Pix, or SPEI, and delivers them to a treasury or customer wallet. Same conversion, different product.

If you're new to the basics, [what is a crypto on-ramp and off-ramp](/resources/more/what-is-a-crypto-on-ramp-and-off-ramp) covers the core flow. This page is about the split that decides which providers you can even shortlist.

## Key takeaways

- Consumer on-ramps optimize for conversion: cards and mobile wallets, a hosted widget, KYC in minutes, small purchases.
- Business on-ramps optimize for cost and control: bank rails, KYB, quoted rates through an API, and a webhook for every deposit.
- Cards can be disputed after the stablecoins are gone, so card on-ramps price that risk in. Push payments like Pix, SPEI, and wires can't be clawed back by the sender, which is why business flows prefer them.
- The destination matters as much as the source: a personal wallet, a company treasury wallet, or one wallet per end customer.
- Pick by product profile. A consumer wallet, a fintech app, a payout platform, and a treasury team weigh different criteria.

## What is the difference between a consumer and a business on-ramp?

The conversion is identical: fiat in, stablecoins out. Almost everything around it changes.

| | Consumer on-ramp | Business on-ramp |
| --- | --- | --- |
| Who pays | One person | A company, or a platform's verified customers |
| Verification | KYC: ID document, selfie, sanctions screening | KYB: company registration, [beneficial owners](https://www.ecfr.gov/current/title-31/subtitle-B/chapter-X/part-1010/subpart-C/section-1010.230), directors, line of business |
| Typical payment method | Debit or credit card, Apple Pay, Google Pay | ACH, domestic wire, SWIFT, Pix, SPEI, other local bank rails |
| Ticket size | Tens to hundreds of dollars | Thousands to hundreds of thousands per transfer |
| Pricing | One all-in price per purchase | A quote with an exchange rate and a fee |
| Integration | Hosted widget or redirect | REST API plus webhooks |
| Destination | The buyer's own wallet | A treasury wallet, or one wallet per end customer |
| Risk the provider prices in | Card fraud and chargebacks | Compliance: whose money it is, and what it is for |

Most providers specialize in one column. A few run both, but the products behind them are usually separate, with separate pricing and separate onboarding.

## How does a consumer on-ramp work?

A consumer on-ramp is a checkout. The wallet or app embeds it, and the provider runs everything inside.

1. The user taps "buy" inside a wallet app, picks a token and an amount.
2. The provider's widget opens and runs KYC: an ID photo, a selfie, a sanctions check.
3. The widget shows a price that already includes the spread, the network fee, and the card cost.
4. The user pays by card, Apple Pay, or Google Pay.
5. The provider sends the tokens to the wallet address the app passed in.
6. The app gets a callback when the purchase completes.

The wallet app often never touches the money. It passes an address and waits for the callback. That's the appeal: a few lines of front-end code. The tradeoff is control. The provider owns the checkout, the price, and the support ticket when a card gets declined.

## How does a business on-ramp work?

A business on-ramp is an account relationship. The company onboards once, then deposits on a schedule.

1. The company passes KYB. On a platform, each of the platform's business customers passes it too.
2. The provider issues deposit instructions: a [virtual account](/resources/more/what-is-a-virtual-account) with its own account number, or a shared account plus a reference code.
3. The platform requests a quote for the amount, payment method, token, and destination wallet.
4. The company sends the bank transfer.
5. The provider matches the deposit, converts it, and delivers stablecoins on the chosen network.
6. A webhook fires, and the platform reconciles the deposit against its ledger.

Steps 1 and 2 happen once. Steps 3 through 6 repeat for every deposit, and a payroll or treasury team might run them every day. [How to accept bank transfers and settle in stablecoins](/resources/more/accept-bank-transfers-settle-in-stablecoins) walks through the virtual account version end to end.

## Why do consumer on-ramps use cards and business on-ramps use bank rails?

Because of who carries the risk of the money coming back.

A card payment can be disputed by the cardholder after the fact. A stablecoin delivered on-chain can't be pulled back. So a card on-ramp that has already sent USDC is exposed to a chargeback on money it no longer has. It covers that with higher fees, tight purchase caps, and aggressive fraud scoring. [Stablecoin payment fees vs card processing fees](/resources/more/stablecoin-payment-fees-vs-card-processing-fees) has the numbers on what cards cost before any of that.

Push payments work the other way. With Pix, SPEI, a wire, or an ACH credit, the payer's bank sends the money, and the sender can't reverse it on their own. The provider delivers stablecoins after the funds land, so the risk of a clawback is close to zero. That's why business volume runs over bank rails. Nobody tops up a $250,000 treasury wallet by card.

The one bank rail that behaves like a card is an ACH debit, where the provider pulls money from the payer's account. Debits can come back as returns days or weeks later under [Nacha rules](https://www.nacha.org/), so providers that pull by ACH tend to hold delivery or limit amounts.

## Which on-ramp fits which product?

Start from your product, not from a provider list.

| Product | What it needs most | What matters less |
| --- | --- | --- |
| Consumer self-custody wallet | Card and mobile wallet coverage, KYC in minutes, a hosted widget, many countries | Per-transaction cost, deep API control |
| Fintech app or neobank with dollar accounts | Local bank rails in your markets, KYC inside your own onboarding, branded deposit details, an API | A hosted checkout |
| Payout platform or marketplace | Bank deposits in, firm quotes, webhooks, the off-ramp on the other side, [no pre-funding](/resources/more/no-pre-funding-stablecoin-payouts) | Card coverage |
| Corporate treasury | KYB, high limits, wire and SWIFT, delivery to a treasury wallet, predictable settlement times | Widget UX |

A quick test for each:

- **Consumer wallet.** Can a first-time user in your top five countries go from tap to tokens in under five minutes?
- **Fintech app.** Can you show the deposit instructions inside your own UI, under your brand, without sending users to another site?
- **Payout platform.** Does every deposit produce an event with an ID you can reconcile, and does the same provider pay out locally?
- **Treasury.** What are the per-transaction and monthly limits after KYB, and what does it take to raise them?

## Where do the stablecoins land: custodial or non-custodial?

A consumer on-ramp usually delivers to a wallet the buyer controls. A business on-ramp gives you a choice, and the choice decides who is holding the money between the deposit and the next payment.

| Destination | Who holds the keys | Typical use |
| --- | --- | --- |
| The end customer's own wallet | The customer | Self-custody users, fintechs that never want to hold funds |
| A company treasury wallet | The company, or its custodian | Treasury, payout float |
| A wallet the provider holds | The provider (custodial) | Apps that want a balance without running wallets |

Delivering straight to a wallet the customer controls keeps your platform out of custody. Holding balances for customers is a different regulatory position, with different obligations. [Custodial vs non-custodial vs MPC wallets](/resources/more/custodial-vs-non-custodial-vs-mpc-wallets) and [non-custodial payments explained](/resources/more/non-custodial-payments-explained) cover the tradeoffs.

## Are business and consumer on-ramps regulated differently?

No. Licensing follows the activity, not the type of customer.

In the US, a business that accepts fiat and delivers virtual currency is a money transmitter under [FinCEN's 2019 guidance](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-certain-business-models), whether the buyer is a teenager or a public company. In the EU, the service needs authorization as a crypto-asset service provider under [MiCA](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica). Brazil regulates it as a virtual asset service provider, covered in [PSAV Brazil explained](/resources/more/psav-brazil-explained).

What changes is the depth of verification. A business customer means KYB instead of KYC: who owns the company, who controls it, what it does, and what the payments are for. The provider also has to understand whether the company is moving its own money or someone else's.

## Where does BlindPay fit?

BlindPay is a business on-ramp. It is not a consumer card widget.

- **Payins over bank rails.** ACH and domestic wire in the US, Pix in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina. Each payin converts the deposit and delivers stablecoins to a wallet.
- **Virtual accounts.** A US account in the customer's name with its own routing and account number. Each deposit converts to USDC or USDT and settles to the wallet linked at creation. One customer and one wallet per account, and a customer can hold several accounts.
- **Quotes before money moves.** Every payin starts with a quote that locks the amount, the fees, and the destination for 5 minutes. A `cover_fees` flag decides whether the sender or the receiver pays the fee.
- **KYC and KYB in the API.** Individual KYC Standard is automated and takes about 60 seconds. KYB is a manual review that takes 3 hours to 1 business day.
- **Delivery networks.** USDC or USDT on Ethereum, Polygon, Base, Arbitrum, Stellar, Solana, and Tron, depending on the network (USDT only on Tron).
- **Non-custodial delivery.** Payins can deliver straight to an external wallet the customer controls.

**When BlindPay is the right fit:** you're a fintech, payout platform, or treasury team collecting bank transfers in the US or Latin America, and you want stablecoins delivered to wallets your customers control, through one API that also pays out locally.

**When it isn't:** you need card or Apple Pay checkout for retail crypto buyers, or a hosted widget to drop into a consumer wallet. BlindPay also isn't a stablecoin issuer. It converts and moves USDC and USDT, which Circle and Tether issue.

The details are in the docs for [payins](/docs/payins), [virtual accounts](/docs/virtual-accounts), and [KYC requirements](/docs/kb/kyc).

## What to do next

Write down three answers before you talk to any provider: who pays (a person or a company), which rail they pay with, and whose wallet the stablecoins land in. Those three answers rule out half the market.

Then take the shortlist and test the quote. [Stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained) shows what a quote should lock and which fields to check.

*This article is general information, not legal, tax, or financial advice. Rails, limits, and supported countries change; confirm current details with each provider.*

---

Source: https://blindpay.com/resources/more/virtual-account-fees

---
title: "Virtual account fees: every cost between the payer's bank and the stablecoin wallet"
seoTitle: "Virtual account fees: what you pay from bank to USDC"
description: "Monthly, deposit, wire, SWIFT, conversion, and partner fees on a virtual account: who pays each one, and a worked 10,000 USD wire to USDC example."
date: "2026-08-22"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "How much does a virtual account cost?"
    a: "Most providers charge a monthly fee per account plus a fee on each deposit. Some also charge to open the account. At BlindPay, a US virtual account costs $1.50 per month per active account, billed at the end of the cycle, with no setup fee and no monthly minimum. Deposit fees vary by payment method, and each one is a field on the deposit record."
  - q: "Is there a fee to convert USD to USDC?"
    a: "Usually, yes, but it can be small. USDC is redeemable 1:1 for US dollars at the issuer, so there is no exchange rate risk between USD and USDC. The cost is whatever the provider charges to collect the bank transfer and mint or deliver the stablecoin, shown either as a separate fee or inside the rate. Ask which one you're looking at."
  - q: "Who pays the wire fee when someone sends money to a virtual account?"
    a: "The payer pays their own bank's outgoing fee, the same as for any wire. On a domestic US wire that's usually the end of it. On a SWIFT payment, the charge code decides who pays the banks in the middle: OUR puts it on the sender, SHA splits it, and BEN takes everything out of the amount in transit."
  - q: "Is there a withdrawal fee on a virtual account?"
    a: "Not in the usual sense, because a stablecoin virtual account doesn't hold a balance. Each deposit converts and lands in the linked wallet. Moving the stablecoins after that is either an on-chain transfer, which costs a network fee, or a payout to a bank account, which is priced on its own quote. Both are separate from the virtual account."
  - q: "Why did a virtual account deposit arrive for less than the invoice?"
    a: "The most common reason is a SWIFT payment sent with the SHA or BEN charge code, where an intermediary bank deducted its fee from the principal on the way. Less often, the payer's bank took its own fee from the amount, or the payer simply sent less. Check the deposit's sender amount against the invoice before you mark it paid."
---

A virtual account usually costs a monthly fee per account plus a fee on each deposit. Around that, the payer's bank may charge to send, banks in the middle of a SWIFT payment may deduct their own fees, and turning USD into stablecoins can carry a fee or spread. At BlindPay, each US account costs $1.50 per month.

The monthly fee is the number on the pricing page. The deposit is where the real money goes.

## Key takeaways

- Three parties pay fees on a virtual account deposit: the payer, the account holder, and the platform that issued the account.
- SWIFT charge codes (OUR, SHA, BEN) decide whether an international payment arrives whole or short.
- USD to USDC has no exchange rate risk, so the conversion cost is the provider's fee, not FX.
- A stablecoin virtual account holds no balance, so "withdrawal fee" really means the cost of moving stablecoins out of the wallet.
- Monthly fees are small per account and large per thousand accounts. Close the ones nobody uses.

## Which fees can apply to a virtual account deposit?

Up to nine fees can touch one deposit, from the payer's bank to the stablecoin landing in a wallet. Most deposits only hit three or four of them. The table below lists each one, who pays it, and where it shows up.

A quick note on terms. A **virtual account** is a unique set of bank details that routes incoming payments to one customer (the [full definition is here](/resources/more/what-is-a-virtual-account)). A **stablecoin** is a token pegged to a currency, like USDC or USDT to the US dollar. An **on-ramp** turns bank money into stablecoins; an **off-ramp** does the reverse.

| Fee | Who pays | Typical range or how it's set | Where you see it |
| --- | --- | --- | --- |
| Account issuance | Platform or account holder | Often free; some providers charge a setup fee | Pricing page, first invoice |
| Monthly maintenance | Platform (absorbed or passed on) | Flat amount per account per month | Monthly invoice |
| Payer's outgoing bank fee | Payer | ACH often free to a few dollars; domestic wires commonly $25 to $35; international wires commonly $35 to $50 | Payer's bank statement |
| Intermediary (correspondent) deductions | Depends on the SWIFT charge code | Commonly $10 to $30 per bank in the chain | Deposit arrives short |
| Deposit fee | Account holder | Flat, percentage, or both, set by the provider per payment method | Deposit record |
| Conversion fee or spread | Account holder | Separate fee or built into the rate | Deposit record or rate |
| Network fee | Varies by provider | Fractions of a cent on low-cost chains, more on Ethereum during congestion | Included in the deposit fee or listed separately |
| Platform markup (partner fee) | Account holder, set by the platform | Percentage, flat, or both | Deposit record |
| Off-ramp or payout | Whoever moves the money out | Priced per payout quote | Payout quote |

Bank fee ranges are typical figures for US banks and vary by bank and account tier. Treat them as a sense of scale, not a quote.

## Who pays each fee, the payer or the account holder?

The payer pays to send. The account holder pays to receive and convert. The platform pays the provider and decides what to pass on. Keeping those three roles straight is most of the work in pricing a virtual account product.

**The payer** is whoever sends the money: your customer's client, employer, or marketplace. They pay their own bank's outgoing fee, and on SWIFT they may also pay the intermediary banks, depending on the charge code. None of this touches your invoice from the provider.

**The account holder** is your customer, the person or business the account is issued to. Deposit fees, conversion costs, and your platform markup usually come out of what they receive. In most stablecoin setups, the fee is deducted from the stablecoin amount delivered, not added on top of what the payer sends.

**The platform** is you, if you issue accounts to your own customers through a provider's API. You pay the monthly account fees and any fees the provider bills to your invoice instead of deducting them. Whether you pass those costs on, absorb them, or add a margin is a pricing decision, and a partner fee is the usual way to do it.

## How do SWIFT charge codes change what arrives?

Every SWIFT payment carries a charge code that decides who pays the banks along the way. OUR means the sender pays everything. SHA means the sender pays their own bank and the recipient absorbs the rest. BEN means every fee comes out of the amount in transit.

Here's a 10,000 USD SWIFT payment from a German client to a US virtual account, with one intermediary bank charging $20. The numbers are illustrative.

| Charge code | Sender pays on top | Deducted in transit | Arrives in the virtual account |
| --- | --- | --- | --- |
| OUR | Outgoing fee plus intermediary charges | $0 | 10,000.00 USD |
| SHA | Outgoing fee only | $20 (intermediary) | 9,980.00 USD |
| BEN | Nothing | $40 outgoing fee plus $20 intermediary | 9,940.00 USD |

SHA is the default at many banks, which is why international invoices so often land a little short. A $20 gap turns a paid invoice into a partial payment, and someone has to decide whether to chase it. OUR also isn't a guarantee: some intermediaries deduct anyway.

The practical fix is on the invoice. Ask for OUR, or state that bank charges are the sender's responsibility, and tell your customer to expect the occasional short deposit regardless. Domestic US wires and ACH rarely pick up deductions in transit, so this problem is mostly a SWIFT one.

## Does converting USD to USDC cost anything?

There's no exchange rate between USD and USDC in the usual sense, because USDC is designed to be [redeemable 1:1 for US dollars](https://www.circle.com/usdc). What you pay is the provider's fee for collecting the bank transfer and delivering the stablecoin. It can appear as a separate line or as a rate slightly below 1.

Both formats are fine. The one to avoid is the one you can't see. If a provider shows only "you'll receive 9,925 USDC" with no breakdown, ask how much of the gap is their fee, how much is a network fee, and how much is a markup someone else added.

The same logic applies to USDT, with one difference worth checking: which networks the provider can deliver it on. If you're picking between the two, [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) covers the tradeoffs. For how rates, expiry, and fee direction appear on a stablecoin quote, see [stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained).

## What does a 10,000 USD wire look like after fees?

A domestic wire for 10,000 USD usually arrives whole, then the deposit fee and any platform markup come out before the stablecoin lands. In the illustrative example below, 9,925 USDC reaches the wallet. The percentages are placeholders, not BlindPay rates.

A US customer pays a 10,000 USD invoice by domestic wire into a virtual account that settles to USDC. Your platform has a 0.25% markup on deposits.

| Step | Amount | Note |
| --- | --- | --- |
| Invoice | 10,000.00 USD | |
| Payer's outgoing wire fee | 25.00 USD | Paid by the payer on top, not deducted |
| Arrives in the virtual account | 10,000.00 USD | Domestic wire, no intermediary banks |
| Deposit fee (placeholder: 0.50%) | minus 50.00 | Deducted at transaction time |
| Partner fee (placeholder: 0.25%) | minus 25.00 | Your platform's markup |
| Network fee | 0.00 | Assumed included in the deposit fee for this example |
| **Delivered to the wallet** | **9,925.00 USDC** | |

The account holder's all-in cost on this deposit is $75, or 0.75%. Add the monthly account fee ($1.50 at BlindPay) and it's $76.50 for the month if this is the only deposit. The payer spent $25 on top, which they'd pay to wire any bank account.

Now run the same invoice as a SWIFT payment from abroad with SHA. If an intermediary deducts $20, 9,980 USD arrives, the fees apply to that amount, and your customer has a $20 shortfall to resolve with their client. Same rails, different invoice outcome.

## How do monthly account fees add up at scale?

Linearly, which is the problem. One account at $1.50 a month is noise. A platform that issues one account per customer and has 1,000 customers pays $1,500 a month, or $18,000 a year, before a single deposit.

That's fine when every account earns its keep. It hurts when most accounts sit idle. A payroll platform where 30% of contractors never receive a payment through their account is paying for 300 empty mailboxes.

Three ways to manage it: issue accounts when a customer actually needs to receive money, not at signup; delete accounts that go dormant; and price your plans so the monthly cost per account is covered by your partner fee on a realistic deposit volume. Some teams also pass the monthly fee through directly. If you're still deciding between one account per customer and shared payment instructions, [how to accept bank transfers and settle in stablecoins](/resources/more/accept-bank-transfers-settle-in-stablecoins) compares the two.

## Where does each fee show up on the deposit record?

On a well-designed API, every deposit creates its own record with the amounts and fees as fields. You should be able to see what the payer sent, what each party took, and what the wallet received, without opening an invoice. At BlindPay, each deposit creates a payin, and the BlindPay fee lands in one of two fields depending on size.

| Deposit amount | Where the BlindPay fee goes | Field |
| --- | --- | --- |
| Below $100.00 | Accrued to the platform's invoice at the end of the billing cycle | `billing_fee_amount` |
| $100.00 or more | Deducted from the stablecoin delivered | `transaction_fee_amount` |

That split has a consequence people miss. On small deposits, your platform carries the BlindPay fee on its invoice, and the account holder receives the deposit minus only your markup. If your customers receive many small payments, budget for that line on your invoice. Instances set to end-of-month billing accrue every deposit's fee to `billing_fee_amount`, whatever the amount.

Partner fees follow their own rule. You can set one default fee for all virtual account deposits on your instance, or pin a different fee to a specific account, which overrides the default. The partner fee comes out of what remains after any transaction-time BlindPay fee, and every deposit delivers at least $0.01 of stablecoin. So a $5.00 flat fee on a $5.00 deposit collects $4.99, and a $0.01 micro-deposit (the penny tests payroll providers and marketplaces send to verify an account) collects nothing.

Collected partner fees accumulate over the month and are released on the first day of the next month, with your BlindPay invoice netted out first. You get a `payin.partnerFee` webhook as each one is collected. Configuration details are in [partner fees](/docs/learn/partner-fees).

## How can you lower virtual account costs?

Most of the savings come from payment method choice, invoice wording, and account hygiene, not from negotiating the deposit fee. Here's the order to work through:

1. **Steer domestic payers to ACH.** It's the cheapest rail for the payer and avoids intermediaries entirely. Use wires when speed or amount requires it.
2. **Put OUR on international invoices.** Or add a line saying bank charges are the sender's responsibility. It won't stop every deduction, but it stops most.
3. **Issue accounts on demand.** Create the account when a customer needs to receive money, not at signup.
4. **Delete dormant accounts.** Monthly fees bill per active account, so an account nobody pays into is pure cost.
5. **Encourage fewer, larger deposits.** Flat fees and invoice-billed fees hit small deposits hardest. Monthly invoicing beats weekly for the same client.
6. **Pick the settlement token and network on purpose.** Network fees vary widely by chain, and some tokens are only available on some networks.
7. **Set your markup with the fee mechanics in mind.** A percentage fee scales with large deposits; a flat fee eats small ones and collects little on micro-deposits.
8. **Ask for fees as separate fields.** A fee hidden in the rate is a fee you can't reconcile or explain to a customer.

If you're comparing these costs against card acceptance, [stablecoin payment fees vs credit card processing fees](/resources/more/stablecoin-payment-fees-vs-card-processing-fees) runs the numbers for merchants.

## Where does BlindPay fit?

BlindPay issues US virtual accounts in your customer's name that receive ACH, wire, and SWIFT, depending on account type, and convert each deposit to USDC or USDT in a linked wallet. USDT settlement needs a wallet on Polygon, Ethereum, or Solana. Accounts receive USD and hold no balance; the stablecoins land in the wallet.

On cost, the published facts are short. Each active US virtual account costs $1.50 per month, charged on your invoice at the end of the billing cycle rather than at creation. There's no setup fee and no monthly minimum, and development instances are free, accounts included. Deposit fees vary by payment method, so BlindPay doesn't publish a flat rate card; each deposit's fee is a field on its payin, and plans are on [pricing](/pricing).

You can add your own markup as a partner fee, in basis points (up to 99%), as a flat amount, or both, per instance or per account. The fee rules are in the [virtual accounts docs](/docs/virtual-accounts) and [billing](/docs/learn/billing). For the account lifecycle from request to wallet balance, see [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained), and if you're deciding whether a virtual account can stand in for a bank account, see [can a virtual account replace a bank account](/resources/more/can-a-virtual-account-replace-a-bank-account).

## What to do next

Take one real invoice your customers receive, write down the payment method and charge code, and run it through the fee table above with each provider's actual numbers. Then create a free development instance and check that every fee appears as its own field on the deposit record before you sign.

*This article is for general information only and is not legal, tax, or financial advice. Fee ranges are typical and vary by bank and provider.*

---

Source: https://blindpay.com/resources/more/custodial-vs-non-custodial-vs-mpc-wallets

---
title: "Custodial vs non-custodial vs MPC wallets: how to choose"
seoTitle: "Custodial vs non-custodial vs MPC wallets: how to choose"
description: "Custodial, non-custodial, and MPC wallets differ in who holds the keys. Compare control, recovery, risk, and regulation, with product examples for each."
date: "2026-08-21"
updated: "2026-08-21"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between a custodial and a non-custodial wallet?"
    a: "In a custodial wallet, a company holds the private keys and moves funds on the user's instructions, much like a bank account. In a non-custodial wallet, only the user holds the keys, usually backed up as a recovery phrase. Custodial wallets are easier to use and recover. Non-custodial wallets remove the company from control of the funds."
  - q: "Is an MPC wallet custodial or non-custodial?"
    a: "It can be either. MPC splits signing power into key shares, and the custody question depends on who holds enough shares to sign. If the provider or your company can sign without the user, the wallet works like a custodial one. If the user's share is always required, it works like a non-custodial one, with better recovery options."
  - q: "What is the difference between MPC and multisig?"
    a: "Multisig uses several complete private keys and an on-chain rule that checks how many signed, so it is visible on-chain and implemented differently on each chain. MPC produces one ordinary signature from key shares that never meet, off-chain. MPC works on any chain whose signature scheme the provider supports, while multisig depends on each chain's smart contract or native support."
  - q: "Which wallet custody model is safest for a business?"
    a: "There is no universally safest model. Custodial wallets concentrate risk in the provider's solvency and security. Non-custodial wallets move that risk to your own key handling. MPC with approval policies suits most business treasuries, because no single person or server can move funds alone. Pick based on who your team trusts to handle keys and recovery."
  - q: "Can I switch wallet custody models later?"
    a: "Yes, but plan for it. Keys and MPC key shares rarely move between providers, so switching usually means new wallet addresses and on-chain transfers of every balance. Deposit instructions and allowlists change too. Smart-contract accounts are an exception, since they can rotate signers without changing address. Negotiate key-export terms before you launch."
  - q: "Is BlindPay custodial or non-custodial?"
    a: "Both, and it says which one each product uses. For payouts from an external wallet, BlindPay never holds the keys, and the customer authorizes only the quoted amount at the moment a payout executes. BlindPay also offers managed wallets, in beta, which it custodies on the customer's behalf for teams that don't want to sign transactions."
---

A custodial wallet means a company holds the private keys on the user's behalf. A non-custodial wallet means only the user holds them. An MPC wallet splits signing power into key shares held by several parties, so no single party can move funds alone. The right model depends on who handles recovery and who carries the regulatory risk.

MPC is the confusing one. It's a technique, not a custody model, and an MPC wallet can be custodial or non-custodial depending on who holds the shares. This guide compares all three for product and engineering leads choosing what to build on. For the wider picture of what a wallet integration involves, start with [what is crypto wallet integration](/resources/more/what-is-crypto-wallet-integration).

## What is the difference between custodial, non-custodial, and MPC wallets?

The difference is who holds the private key, because whoever holds the key controls the funds. A custodial wallet puts the key with a company. A non-custodial wallet puts it with the user. An MPC wallet never assembles the key at all: shares held by different parties cooperate to sign.

A **private key** is the secret that authorizes transfers from a wallet address. In a non-custodial wallet the user usually backs it up as a **recovery phrase**, 12 or 24 words defined by the [BIP-39 standard](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki). Anyone with the phrase can rebuild the wallet, and anyone without it can't.

**MPC**, multi-party computation, lets several parties compute one signature together without any of them seeing the full key. NIST's [Multi-Party Threshold Cryptography project](https://csrc.nist.gov/projects/threshold-cryptography) is working to standardize these threshold schemes. A **2-of-3 MPC wallet**, for example, has three shares, and any two can sign.

## How does each custody model work?

Each model answers the same three questions differently: who holds the keys, who signs a transaction, and what happens when a user loses access. The answers decide your support load, your security architecture, and your licensing position.

### Custodial wallets

- **Who holds the keys:** the provider, or your company if you run the wallets yourself.
- **Who signs:** the custodian's systems, following instructions from the user's account.
- **Lost access:** the user recovers the account with an identity check or password reset, like a bank login. The funds are still there.

Many custodial products don't give each user an on-chain wallet at all. They pool funds in a few omnibus wallets and track each user's balance on an internal ledger. The balance is a claim on the custodian, not an on-chain asset in the user's name.

### Non-custodial wallets

- **Who holds the keys:** the user, on a phone, browser extension, or hardware device.
- **Who signs:** the user, in their wallet app, for every transaction.
- **Lost access:** if the recovery phrase is gone, the funds are gone. Nobody can reset it.

Smart-contract wallets soften that last point. With **account abstraction**, the wallet is a smart contract with programmable rules instead of a single key, and [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) is the main Ethereum standard for it. A smart account can add recovery guardians, spending limits, or passkey sign-in while the user stays in control.

### MPC wallets

- **Who holds the keys:** nobody holds a full key. Shares sit on different machines, for example one on the user's device, one on the provider's server, and one in a backup.
- **Who signs:** a threshold of shareholders runs a signing protocol together, under policies the operator sets.
- **Lost access:** the remaining shares can often generate a replacement share, if the setup allows it.

MPC is different from **multisig**. A multisig wallet uses several complete keys and an on-chain rule that checks how many signed, so it works differently on each chain. MPC produces one ordinary signature off-chain, so it works on any chain whose signature scheme the provider supports. That detail matters for multi-chain products: Ethereum and Tron use ECDSA signatures, while Solana and Stellar use Ed25519. Ask any MPC provider which schemes it supports.

## How do the three models compare?

Custodial wallets win on user experience and lose on counterparty risk and regulatory exposure. Non-custodial wallets are the mirror image. MPC sits in between, and where exactly depends on how the shares are split.

| | Custodial | Non-custodial | MPC |
| --- | --- | --- | --- |
| Who controls funds | The provider or your company | The user | Whoever holds a signing threshold of shares |
| Recovery experience | Account recovery, like a bank login | Recovery phrase or smart-account guardians; a lost phrase means lost funds | A replacement share from the remaining ones, if the setup allows |
| Counterparty risk | High: users depend on the custodian's solvency and security | None from a provider; the risk is the user's own key handling | Lower when no single party holds a threshold alone |
| Regulatory exposure for your company | Highest: likely money transmission or custody licensing | Lowest, if you never control user funds | Depends on whether you or your vendor can sign without the user |
| User experience | Easiest: email and password | Hardest: recovery phrases, gas, signing prompts | Close to custodial, often with passkeys or social login |
| Best fit | Users new to crypto | Crypto-native users and treasury teams with their own key security | Business treasuries with approval policies, embedded consumer wallets |

## When should you choose custodial, non-custodial, or MPC?

Choose custodial when your users should never see a key, non-custodial when they already have wallets, and MPC when a business needs approval policies or consumers need a wallet that recovers like an account. Three scenarios for each:

### When custodial fits

1. **A neobank offering dollar balances** to users who have never heard of a recovery phrase and expect a "forgot password" link.
2. **A payroll platform** that holds a company's funding balance and pays contractors across Latin America from it.
3. **A remittance app** where the recipient only ever sees local currency, and the stablecoin is plumbing.

### When non-custodial fits

1. **A crypto-native marketplace** where sellers already hold USDC in their own wallets and want to be paid there.
2. **A B2B treasury team** with hardware wallets or a multisig that wants to pay suppliers without parking funds with a provider.
3. **An app that connects to the user's existing wallet** through the standard [EIP-1193 provider interface](https://eips.ethereum.org/EIPS/eip-1193), so the user signs in their own wallet app.

### When MPC fits

1. **A company treasury** that needs two approvers above a set amount and a full audit trail of who signed.
2. **An embedded consumer wallet** with one share on the user's device and one with the provider, so the user stays in control but can recover a lost phone.
3. **A payment service provider** running high-volume operational wallets, signing automatically within policies and escalating anything unusual.

## What are the regulatory implications of each model?

The custody model changes whether your company holds or transmits value for someone else, and that activity is what most regulators license. The general principles below are not legal advice. Rules vary by jurisdiction, so confirm your setup with counsel.

In the US, FinCEN's [2019 guidance on convertible virtual currency](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-certain-business-models) (FIN-2019-G001) looks at four facts: who owns the value, where it is stored, whether the owner interacts with the network directly, and whether the intermediary has total independent control over it. Hosted wallet providers, which receive, store, and transmit value for account holders, are money transmitters. A user of an unhosted wallet buying goods or services for themselves is not.

The same guidance covers the multisig case directly. A provider that only adds a second authorization key to the owner's key is not a money transmitter. A provider that also hosts the wallet, keeps the value on its own books, or has total independent control over the value is one, "regardless of the label" it uses. That test maps onto MPC: if your company holds enough shares to sign without the user, you likely look like a hosted wallet provider, whatever the marketing says.

In the EU, the [Markets in Crypto-Assets Regulation](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023R1114) (Regulation (EU) 2023/1114) lists custody and administration of crypto-assets on behalf of clients as a crypto-asset service that needs authorization. Article 75 adds duties for custodians, including a custody policy, a register of each client's positions, and segregation of client assets. [MiCA stablecoin rules explained](/resources/more/mica-stablecoin-rules-explained) and the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) cover the other markets.

## How does custody affect cross-border payments?

Custody decides who holds the money while a payment waits, and who absorbs the damage when something breaks. Cross-border payments wait a lot: bank cut-offs, compliance reviews, returns from the receiving bank. The longer a provider holds funds, the more its own risks become yours.

In a **custodial flow**, you deposit stablecoins with the provider first, and they sit on its ledger until you pay out. If the provider becomes insolvent, loses its bank, or freezes withdrawals, that balance is stuck. In a **non-custodial flow**, the stablecoins stay in your wallet, and the provider pulls only the quoted amount when a payout executes. Your exposure shrinks to the length of the payout itself.

This is where BlindPay's design choice shows. BlindPay, registered with FinCEN as a money services business, never holds the keys to a customer's external [blockchain wallet](/docs/blockchain-wallets). For a payout, the customer authorizes only the quoted amount: an ERC-20 approve on EVM chains, a signed transaction on Stellar, or a token delegation on Solana. BlindPay then collects that amount, converts it, and sends local currency.

Two honest limits. During the payout itself, BlindPay does control the funds for the minutes it takes to convert and send them. And a payout that ends `refunded` returns the stablecoins to the wallet that funded it, while one that ends `failed` doesn't refund automatically and needs support ([payout statuses](/docs/payouts)). For teams that don't want to sign each payout, BlindPay's [managed wallets](/docs/wallets), in beta, are custodial by design. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers the provider side of this question in more depth.

## Can you switch custody models later?

You can, but it's a migration project, not a setting. Keys and key shares rarely move between providers, so switching usually means new addresses and an on-chain transfer of every balance. Five things to know before you commit:

1. **MPC shares are protocol-specific.** Shares generated by one provider's protocol usually can't be imported into another provider's system. Ask whether the provider offers a key export that reconstructs a full private key, and under what conditions.
2. **New custody means new addresses.** Every deposit instruction, allowlist entry, and counterparty record changes. Customers who send to an old address after the migration become support tickets.
3. **Moving balances costs gas and needs reconciliation.** Plan the transfers chain by chain, with a check that every balance arrived.
4. **Smart accounts are the exception.** An ERC-4337 account can rotate its signers without changing its address, so a move from a provider-held signer to a user-held passkey can keep the same address.
5. **Negotiate the exit before launch.** Put key export, address export, and transaction history export in the contract while you still have negotiating power.

## What to do next

Pick the custody model per flow, not per company. A consumer balance, a company treasury, and a payout flow can each use a different model, and most mature products end up with two.

Then write down, for each flow, who can sign without the user. That one answer tells you your recovery design, your security review scope, and the first question to bring to counsel.

---

Source: https://blindpay.com/resources/more/no-pre-funding-stablecoin-payouts

---
title: "What does \"no pre-funding\" mean in a stablecoin API?"
seoTitle: "What does no pre-funding mean in a stablecoin API?"
description: "No pre-funding means each payout is funded when you send it, not from a balance parked in advance. The three funding models, the math, and what to ask."
date: "2026-08-21"
updated: "2026-10-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What does no pre-funding mean for cross-border payments?"
    a: "It means you fund each payout at the moment you send it, instead of keeping a balance in advance, either in a bank account in each destination country or in a balance held with your payment provider. With a stablecoin API, value moves on-chain at payout time and converts to local currency at a quoted rate, so there is no local balance to draw from."
  - q: "Does BlindPay require pre-funding?"
    a: "No. Each BlindPay payout is funded when you create it, from a stablecoin wallet you control, a BlindPay-managed wallet, or a virtual USD account that converts ACH, wire, or SWIFT deposits into USDC or USDT. There is no minimum balance to maintain in any destination currency."
  - q: "Why do traditional cross-border providers require pre-funding?"
    a: "Because fast local payouts over bank rails need money already sitting in the destination country. The provider, or you, keeps local currency in a local bank account and pays out from it, then refills it with slower international wires. That float is the price of speed on traditional rails."
  - q: "How much working capital does no pre-funding free up?"
    a: "It depends on volume and how long top-ups take. A company paying 900,000 USD every two weeks across three countries typically keeps 1.5 payout cycles in local balances, about 1.35 million USD. Funding each payout at send time frees that capital and cuts FX exposure from weeks to the length of a transfer."
  - q: "Is there any downside to funding payouts at send time?"
    a: "You need the funds available when you send, and you need to create the payout before the quote expires, which is five minutes by default. With a self-custodied EVM wallet there is also an on-chain approval step. Managed wallets skip that step."
---

No pre-funding means each payout is funded at the moment you send it, instead of from a balance you parked in advance. You don't keep reais in a Brazilian bank account to pay Brazilian contractors, and you don't top up a balance with your provider a week before payroll. With a stablecoin API, value moves on-chain at payout time, converts to local currency at a quoted rate, and lands over the local rail. The money leaves your treasury when the payment happens. Not before.

It sounds like a small operational detail. It isn't. Trapped capital is a CFO problem, not a crypto problem, and it's the difference between money that works and money that waits.

## Why did cross-border payouts ever need pre-funding?

Because fast local payouts over bank rails need money that's already local.

If you want a contractor in Mexico paid over SPEI today, someone needs pesos in a Mexican bank account today. An international wire to get those pesos there takes 1 to 5 business days. So either you, or your provider, keeps a pile of pesos in Mexico and refills it with slower wires.

That pile is pre-funding. Banks have run it for decades through nostro and vostro accounts, balances one bank keeps at another in each currency it settles. It's the price of speed on traditional rails. Multiply it by every country you pay into.

## What are the three funding models?

Every payout provider uses one of these. Ask which one before you sign.

| Model | How it works | Capital tied up | FX exposure |
| --- | --- | --- | --- |
| Pre-funded local accounts | You hold a bank account and a balance in each destination currency, and pay out from it | One to two payout cycles per country | Weeks, on every foreign balance |
| Pre-funded provider balance | You top up a balance with your provider in advance; it pays from its own local liquidity | At least one payout cycle, plus top-up lead time | Low to medium, depending on the balance currency |
| Funded at send time | You fund each payout when you create it, from a wallet or a virtual USD account | None beyond the payout itself | Minutes, the length of the transfer |

The middle model is the sneaky one. It gets marketed as "no pre-funding" because you don't hold foreign bank accounts. But if the payout draws from a balance you had to top up days earlier, you're still pre-funding. You just moved the float to the provider.

## How does funding at send time actually work?

At BlindPay, a payout is funded from one of three sources, and none of them is a pre-loaded balance in the destination currency.

**1. A stablecoin wallet you control.** You hold USDC or USDT in your own wallet on a supported network. You request a quote, approve the exact quoted amount on-chain, and create the payout. BlindPay pulls only that amount, only at that moment.

**2. A managed wallet.** BlindPay generates the address and holds the keys, so there's no on-chain approval step. You still decide when funds go in and when each payout goes out.

**3. A virtual USD account.** A [virtual USD account](/virtual-accounts) is a US account number in your customer's name. Send dollars to it by ACH, wire, or SWIFT, and each deposit converts to USDC or USDT in the linked wallet. From there, the payout flow is the same.

In all three, the sequence is:

1. Request a quote. The rate, fees, and exact receive amount are locked for five minutes.
2. Fund the payout with the quoted stablecoin amount.
3. Stablecoins move on-chain in seconds.
4. Local currency lands over Pix, SPEI, ACH, SEPA, or another rail.

Nothing sits in Brazil. Nothing sits in Mexico. No destination-currency balance waits for payroll day.

## What's the working-capital math?

An illustrative example. A staffing company pays contractors every two weeks, about 900,000 USD per cycle:

- Brazil: 450,000 USD
- Mexico: 270,000 USD
- Colombia: 180,000 USD

**With pre-funded local accounts.** Top-up wires take up to five business days, so the finance team keeps about 1.5 cycles in each country to be safe. That's roughly 1,350,000 USD sitting in three foreign bank accounts at all times. If that cash could earn 4% in short-term Treasury bills, the company gives up about 54,000 USD a year in yield. And it holds 1.35 million dollars' worth of reais and pesos, so a 3% adverse move in those currencies is a 40,500 USD swing it didn't plan for.

**With a pre-funded provider balance.** Better. No foreign bank accounts. But the balance still has to hold at least one cycle, plus the top-up lead time, so 900,000 USD or more sits idle with the provider.

**Funded at send time.** The treasury keeps its dollars until payout day. On payout day it funds exactly 900,000 USD worth of payouts, each at a quoted rate. Idle capital: zero. FX exposure: minutes.

Now add a fourth country. With pre-funded accounts, that's a new bank relationship, a new buffer, and a new currency position. Funded at send time, it's a new `type` on a bank account. The expansion stops being a treasury project.

## What are the trade-offs?

Being honest about it. Funding at send time has three constraints:

- **You need the funds on hand when you send.** Stablecoins in the wallet, or a USD deposit that has already landed in the virtual account. USD deposits by ACH or wire can take up to five business days to arrive, so plan the deposit, not the balance. Rail-by-rail timing is in [how long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times).
- **Quotes expire.** A payout quote is valid for five minutes by default. Create the payout inside the window, or request a new quote.
- **Self-custodied EVM wallets need an approval.** You approve the quoted amount on-chain before creating the payout. Managed wallets skip this.

None of these ask you to park capital. They ask you to be ready at the moment of payment, which is what treasury wants anyway.

## What should you ask a provider about pre-funding?

Five questions that expose the funding model fast:

1. **Does a payout draw from a balance I topped up in advance?** If yes, it's pre-funded, whatever the website says.
2. **Is there a minimum balance, per currency or overall?**
3. **Who holds the destination-currency liquidity, and when is it sourced?**
4. **Is the FX quote binding, and for how long?**
5. **If a payout fails, where do the funds go, and how fast?** At BlindPay, stablecoin refunds return to the originating wallet right away.

Get the answers in writing. For the rest of the evaluation, read [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api), and for how stablecoins sit inside a multi-rail strategy, read [stablecoins in payment orchestration](/resources/more/stablecoin-payment-orchestration-cross-border-payouts).

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API built on the funded-at-send-time model. Each payout is funded when you create it, from your own wallet, a managed wallet, or a virtual USD account. Payouts land in local currency over Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, ACH in Colombia, Transfers 3.0 in Argentina, ACH, RTP, and wire in the US, SEPA in Europe, and SWIFT (POBO/COBO) to 100+ countries.

KYC, KYB, and sanctions screening run inside the API before money moves. Official SDKs cover Node, Python, Go, PHP, and Swift, and [pricing is published](/pricing).

## What to do next

Pull last quarter's payout volume by country and add up the balances you kept in each one. That number is your pre-funding cost. Then run one test payout on a development instance with the [payout quickstart](/docs/quickstart-payout) and see what funding at send time looks like in practice.

Card programs have their own version of this problem at the network level. [Prefunding and collateral in card issuing](/resources/more/prefunding-and-collateral-in-card-issuing) covers how daily stablecoin settlement shrinks it.

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

---

Source: https://blindpay.com/changelog/2026-08-20-payables-cross-chain-usdc-fx-export

---
title: 'Payables: pay invoices and bills from stablecoins, cross-chain USDC transfers, and virtual account upgrades'
seoTitle: 'Payables: pay invoices and bills from stablecoins, cross-chain USDC transfers, and virtual account upgrades'
description: 'Pay invoices, boletos, PIX codes, utility bills and tax slips straight from stablecoins with the new Payables product, move USDC across networks in a single transfer, and set partner fees per virtual account.'
date: 2026-08-20
category: New Feature
categoryType: feature
contributors:
  - ericViana
  - andreMayer
  - bernardoSimonassi
isChangelog: true
---

Payables is a new product: upload an invoice or a bill and pay it straight from stablecoins. Also new this month: cross-chain USDC transfers, and per-account partner fees and micro-deposits on virtual accounts.

<!--more-->

## TL;DR

- **Payables**: pay invoices, boletos, PIX copia e cola codes, utility bills and tax slips from USDC or USDT
- **Cross-chain USDC transfers**: move USDC between supported networks in a single transfer
- **Virtual account upgrades**: partner fees per account, and deposits of any size are processed

## Payables: pay invoices and bills from stablecoins

Payables is a new product to pay the bills your business owes directly from stablecoins. Upload an invoice, a boleto, a PIX copia e cola code, a utility bill or a tax slip, and BlindPay figures out the amount, the beneficiary and the due date, then pays it through the right rail. Available today in the dashboard and the API. [Read the Payables guide](/docs/payables).

## Cross-chain USDC transfers

You can now move native USDC between networks in a single transfer. Send from a wallet on one network, deliver to a wallet on another. [Check out the Transfers guide](/docs/transfers).

## Virtual account upgrades

You can now set a different partner fee on each virtual account with the new `partner_fee_id` field, and deposits of any size are processed, including $0.01 verification micro-deposits. [Read the full details](/changelog/2026-08-16-virtual-account-partner-fees-and-micro-deposits).

---

Source: https://blindpay.com/resources/more/stablecoin-payment-fees-vs-card-processing-fees

---
title: "Stablecoin payment fees vs credit card processing fees: what merchants actually pay"
seoTitle: "Stablecoin fees vs card processing fees for merchants"
description: "Cards cost merchants 1.5% to 3.5% plus cross-border, FX, and chargeback fees. Stablecoin payments cost cents on-chain plus a sub-percent conversion spread."
date: "2026-08-20"
category: "payments"
faq:
  - q: "Are stablecoin payments cheaper than credit card processing?"
    a: "Usually, yes, especially for international sales. Card processing typically costs 1.5 to 3.5 percent per transaction, plus about 1 percent in cross-border fees and 1 to 3 percent in currency conversion on foreign cards, plus chargeback fees. A stablecoin payment costs a network fee of cents on low-cost chains, usually paid by the sender, plus a flat payout fee and a sub-percent FX spread if the merchant converts to local currency."
  - q: "What fees does a merchant pay to accept stablecoins?"
    a: "Three possible costs: the network or gas fee, which the sender usually pays and which is cents or less on Polygon, Base, Arbitrum, and Stellar; the FX spread when converting USDC or USDT into local currency; and a payout fee to deliver funds to a bank account over a local rail. Some providers also charge a platform subscription. BlindPay itemizes the spread and payout fee separately on every quote."
  - q: "Do stablecoin payments have chargeback fees?"
    a: "No. A confirmed stablecoin transfer is final, so there are no chargebacks, no chargeback fees, and no rolling reserves held against future disputes. Merchants still issue refunds when they choose to, by sending a new transfer back to the customer."
  - q: "What hidden costs do card payments have for merchants?"
    a: "Beyond the headline rate: cross-border assessments on foreign cards, currency conversion markups, chargeback fees typically between $15 and $100 per dispute, rolling reserves that hold back a share of revenue for months, PCI compliance costs, and the working capital cost of waiting one to three business days for every payout."
  - q: "When are card payments still the better choice?"
    a: "When your customers don't hold stablecoins and won't get them, when you need consumer credit at checkout, or when your sales are small, domestic, and low-risk. Many merchants keep cards for checkout and use stablecoins for the expensive part: cross-border settlement and payouts."
---

Card processing typically costs merchants **1.5% to 3.5% per transaction**, and international sales add roughly **1% in cross-border fees and 1% to 3% in currency conversion**, before chargebacks. A stablecoin payment costs a **network fee of cents** on low-cost chains (usually paid by the sender), plus a **flat payout fee and a sub-percent FX spread** if you convert to local currency. For cross-border merchants, the gap is often several percentage points of revenue.

The headline rates only tell half the story, though. Both rails have costs that don't show up on the pricing page. This guide puts all of them on the table.

## What does a merchant actually pay for a card transaction?

A card fee is three fees wearing a trench coat:

- **Interchange:** paid to the cardholder's issuing bank. The biggest piece, and it varies by card type, rewards tier, and whether the card was present.
- **Network assessment:** paid to the card network.
- **Processor or acquirer markup:** paid to whoever gave you the merchant account.

Blended, that lands at roughly 1.5% to 3.5% for most merchants. Then the international extras:

- **Cross-border fee:** around 1% when the card was issued in another country.
- **Currency conversion:** 1% to 3% when the customer pays in a currency different from yours.

And the ones nobody puts in a sales deck:

- **Chargeback fees:** typically $15 to $100 per dispute, win or lose, on top of the lost sale.
- **Rolling reserves:** higher-risk merchants often have 5% to 10% of revenue held back for months.
- **Payout delay:** one to three business days of float on every sale. At scale, that's real working capital.
- **PCI compliance:** audits, tooling, and scope reduction work.

## What does a merchant pay for a stablecoin transaction?

Fewer layers, so fewer fees:

- **Network fee (gas):** cents or less on Polygon, Base, Arbitrum, and Stellar. The sender usually pays it. Ethereum mainnet costs more, which is why payment flows mostly avoid it.
- **FX spread:** only if you convert USDC or USDT into local currency. The difference between the mid-market rate and your conversion rate.
- **Payout fee:** a flat or small fee to deliver funds to your bank over a local rail like Pix, SPEI, RTP, or SEPA.
- **Platform fee:** some providers charge a subscription. BlindPay's plans are on the [pricing page](/pricing).

No interchange, because there's no issuing bank. No network assessment, because there's no card network. No chargebacks, because confirmed transfers are final.

## Stablecoin vs card fees, side by side

| Cost | Stablecoin (USDC/USDT) | Credit card |
| --- | --- | --- |
| **Base processing** | Network fee of cents, usually paid by the sender | Typically 1.5% to 3.5% |
| **Cross-border** | None; the same transfer works in any country | Around 1% extra on foreign cards |
| **Currency conversion** | Sub-percent FX spread, only if you convert | 1% to 3% markup |
| **Payout to your bank** | Flat payout fee; minutes over instant local rails | Included, but 1 to 3 business days |
| **Chargebacks** | None; transfers are final | $15 to $100 per dispute, plus the lost sale |
| **Reserves** | None | 5% to 10% held for months on higher-risk accounts |
| **Weekend settlement** | Yes, 24/7 | No |

## A worked example: $100,000 a month in international sales

Take an online merchant selling $100,000 a month, mostly to customers outside its home country. These numbers are illustrative; your real rates depend on your processor, risk profile, and corridor.

**Cards:**

- Processing at 2.9%: $2,900
- Cross-border at 1%: $1,000
- Currency conversion at 1.5%: $1,500
- 20 chargebacks at $25 each: $500, plus the value of the disputed goods
- **Total: around $5,900 a month, or 5.9% of revenue,** before reserves and float

**Stablecoins, for the share of customers who pay that way:**

- Network fees: paid by the customer, cents each
- Conversion to local currency at a sub-percent spread, plus a flat payout fee per settlement
- No chargebacks, no reserves
- **Total: typically a fraction of the card cost,** and settled the same day

That's why cross-border merchants are the ones moving first. A domestic merchant on a good card rate saves less. A merchant selling across borders, paying 5% to 6% all-in, saves most of it. BlindPay's own figure for replacing correspondent banking with stablecoin settlement and local rails is up to 90% lower transfer costs.

## What are the hidden costs of stablecoin payments?

Being honest about the stablecoin side:

- **Customer adoption.** Not every customer holds USDC or USDT. Stablecoins work best as an added option, or for B2B invoices and marketplace payouts where the counterparty already uses them.
- **Refunds are manual.** No chargeback also means no automatic reversal. You send refunds yourself, so write the policy down.
- **Wrong-network transfers.** A customer who sends USDC on a network you don't support creates a support ticket and a recovery process. Be explicit at checkout.
- **Conversion spreads vary.** A provider quoting a low headline rate can make it back on the FX leg. Always ask for itemized quotes.
- **Accounting setup.** Your finance team needs a clear process for recording stablecoin receipts and conversions. It's not hard, but it's new.

None of these is a dealbreaker. All of them are cheaper than a 2% cross-border markup on every sale, forever.

## How do you compare quotes fairly?

The trap is comparing a blended card rate to a stablecoin headline rate. Hold these constant instead:

1. **Same amount.** Fees compress with size differently on each rail.
2. **Same day.** FX and spreads move daily.
3. **Same corridor.** USDC to BRL over Pix prices differently from USDT to EUR over SEPA.
4. **Itemized fees.** Spread, payout fee, and network fee as separate numbers.

BlindPay quotes split the FX spread from the payout fee, so you can see what the conversion costs and what the delivery costs, and which one moved if a rate changes. You can check a public corridor like [USDC to BRL](/usdc-to-brl) for today's rate.

## When should merchants keep cards?

When the customer doesn't hold stablecoins and won't. When the purchase depends on consumer credit. When sales are small, domestic, and low-risk on a great rate.

The pattern we see work: keep cards at checkout, and use stablecoins for the expensive part, cross-border settlement and payouts. Our guide to [how merchants accept stablecoin payments](/resources/more/how-merchants-accept-stablecoin-payments) covers the receiving setup, and [stablecoin settlement explained](/resources/more/stablecoin-settlement-for-merchants) covers how funds get to your bank. If you're choosing between tokens, see [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments).

## See your real numbers

Pricing pages don't pay invoices; quotes do. If you want an itemized quote on your actual volume and corridor, [talk to the BlindPay team](/contact).

---

Source: https://blindpay.com/resources/more/stablecoin-api-idempotency-keys

---
title: "Idempotency keys in a stablecoin API: how to never send the same payout twice"
seoTitle: "Stablecoin API idempotency keys"
description: "A timeout on a payout call is the most common way to pay someone twice. How idempotency keys prevent it, what replays, what conflicts, and how to retry."
date: "2026-08-19"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is an idempotency key in a payments API?"
    a: "A unique string you send with a request that changes state, like creating a payout. If you retry the same request with the same key, the API returns the original result instead of running the action again. It turns an ambiguous timeout into a safe retry."
  - q: "How long does BlindPay keep an idempotency key?"
    a: "24 hours after the request completes. After that the key is treated as new, and a request with it runs again. Retries that can happen later than a day need their own duplicate check against your ledger."
  - q: "What happens if I reuse an idempotency key with a different request body?"
    a: "BlindPay returns 422 idempotency_key_payload_mismatch and does not run the request. The body check is a SHA-256 hash of the raw bytes, so even reordered JSON keys or different whitespace count as a different body."
  - q: "What if the original request is still running when I retry?"
    a: "BlindPay returns 409 idempotency_key_in_flight with a Retry-After header in seconds. Wait that long and retry with the same key and the same body."
  - q: "Is a single-use quote enough to prevent duplicate payouts?"
    a: "It helps, but it is not the whole answer. At BlindPay a quote_id can only back one payout, so a second payout on the same quote fails. An idempotency key goes further: a retry gets the original response back, including the payout id, so your code knows what happened instead of seeing an error."
---

An idempotency key is a unique string you attach to a payout request so a retry can't create a second payout. Send the same key with the same body and the API returns the first result instead of running it again. It's the difference between "the request timed out, did it go through?" and "the request timed out, I'll just send it again."

In a payments API that difference is money. Here's how it works, and where it stops protecting you.

## Why do duplicate payouts happen at all?

Not because anyone clicks twice. Because networks are unreliable in one specific way: a request can succeed on the server and the response can still get lost on the way back.

Picture it. Your server sends `POST /payouts`. The API creates the payout, pulls the stablecoins, and starts the Pix transfer. Then the connection drops before the response arrives. Your HTTP client throws a timeout. From your side, it looks exactly like a failure.

So your retry logic does what retry logic does. Sends it again. Without an idempotency key, that's a second payout. The supplier gets paid twice, and on-chain legs don't come back.

## How does an idempotency key fix it?

You generate a key before the first attempt and send the same key on every retry. The API stores the result under that key. When a retry arrives, it replays the stored response instead of running the action.

At BlindPay, you pass it as a header on any `POST`, `PUT`, `PATCH`, or `DELETE` under `/v1/*`:

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/payouts/evm \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Idempotency-Key: a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
  --header 'Content-Type: application/json' \
  --data '{ ... }'
```

Any string up to 255 characters works. A UUID is a good default. The example comes from the [idempotency docs](/docs/learn/idempotency).

## What does the API do on each kind of retry?

Four outcomes. Handle all of them.

| Situation | BlindPay response | What your code should do |
| --- | --- | --- |
| Same key, same body, first request finished | Original response, plus `Idempotency-Replayed: true` | Treat it as success. Nothing ran twice. |
| Same key, different body | `422 idempotency_key_payload_mismatch` | Bug on your side. Don't retry. Alert. |
| Same key, first request still running | `409 idempotency_key_in_flight` with `Retry-After` | Wait the given seconds, retry with the same key and body. |
| Key over 255 characters | `400 idempotency_key_invalid` | Fix the key generation. |

The replay means side effects don't repeat either. No second database write, no second webhook, no second call to a bank.

## Why does the body have to match byte for byte?

Because the check is a SHA-256 hash of the raw request body, not a semantic JSON comparison. `{"a":1,"b":2}` and `{"b":2,"a":1}` are the same object and two different hashes.

This catches people who rebuild the request on retry. If your retry path re-serializes a fresh object, key order or whitespace can change, and a harmless retry becomes a `422`. The fix: serialize once, keep the exact bytes, and send those bytes on every attempt.

## What does a safe retry loop look like?

Provider-neutral pseudocode. The key and body are fixed before the first attempt.

```
key  = new_uuid()
body = serialize(payout_request)       # once, keep the bytes
save_pending(ledger, key, body)        # before any network call

for attempt in 1..5:
    response = post("/payouts", body, headers={"Idempotency-Key": key})

    if response.status in 2xx:
        record_payout(ledger, key, response.body.id)
        return response.body
    if response.status == 409:
        sleep(response.headers["Retry-After"])
        continue
    if response.status in 4xx:
        mark_failed(ledger, key, response.body)   # don't retry a 4xx
        raise
    # timeout or 5xx: back off and retry with the SAME key and body
    sleep(backoff(attempt))

escalate(ledger, key)                  # still unknown, a human looks
```

Two things make this safe. The key is saved to your ledger before the first call, so a crash mid-retry doesn't lose it. And every retry sends identical bytes.

## When does the key stop protecting you?

Know these limits before you rely on it.

- **After 24 hours.** BlindPay keeps a completed request's key for 24 hours. Retry after that and it runs again. A retry queue that can stall for a day needs a check against your own ledger first.
- **After a 5xx.** Only 2xx and 4xx responses with a JSON body are stored. A `5xx` releases the key, so the retry runs as a fresh attempt. That's the right behavior (the first attempt didn't finish), but it means your ledger decides what "done" means, not the key.
- **On multipart uploads.** File uploads get a new random boundary on every encode, so the header is ignored there.
- **During an outage of the key store.** BlindPay's idempotency is best-effort. If the store is briefly unavailable, the request still runs, as if no key was sent. A duplicate in that window isn't caught.
- **Across different paths or credentials.** A key is scoped to your credentials, the HTTP method, and the exact path including query string. The same key on another path is a different key.

That's why idempotency is one layer, not the whole defense.

## What are the other layers?

- **Single-use quotes.** A payout at BlindPay executes against a [quote](/resources/more/stablecoin-api-quotes-explained), and a `quote_id` can only back one payout. A second payout on the same quote fails. Different mechanism, same goal.
- **Your own ledger.** Store the key, the quote id, and the payout id together. Before any retry older than a few hours, check whether a payout for that key already exists.
- **Webhook deduplication.** The API retries webhook deliveries too, so your handler will see the same event more than once. Dedupe on the delivery id, not on the payload.

Idempotent writes and deduplicated reads are two halves of the same thing. Skip either and duplicates find a way in.

## How do you test this before production?

On a development instance, force each case on purpose:

1. Send a payout, then resend with the same key and body. Expect `Idempotency-Replayed: true`.
2. Resend with the same key and a reformatted body. Expect `422`.
3. Fire two identical requests at once. One should get `409` with `Retry-After`.
4. Reuse a `quote_id` on a new key. Expect the payout to fail.

Development instances are free and payouts complete automatically, so this is an hour of work. For where retries sit in the whole flow, see [how a stablecoin payment moves](/resources/more/how-a-stablecoin-payment-works).

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API for cross-border payouts and collections: USDC or USDT in, local currency out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. Every mutating endpoint accepts an `Idempotency-Key` header, KYC, KYB, and sanctions screening run inside the API, and [virtual USD accounts](/virtual-accounts) turn ACH, wire, and SWIFT deposits into stablecoins.

## What to do next

Grep your payout code for the retry path. If it doesn't send a key generated before the first attempt, and the same bytes on every retry, fix that first. Then run the four tests above against a development instance. The [idempotency reference](/docs/learn/idempotency) has every edge case.

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

---

Source: https://blindpay.com/resources/more/what-is-a-crypto-on-ramp-and-off-ramp

---
title: "What is a crypto on-ramp and off-ramp? A guide for fintech builders"
seoTitle: "What is a crypto on-ramp and off-ramp? A guide for fintech builders"
description: "A crypto on-ramp converts fiat into stablecoins or crypto; an off-ramp converts them back into fiat in a bank account. How each works step by step, how they differ, which payment methods on-ramps support, and who they are built for."
date: "2026-08-19"
updated: "2026-08-19"
author: "BlindPay Team"
category: "payments"
faq:
  - q: "Do I need an on-ramp if I already use a stablecoin wallet?"
    a: "Yes, if any money enters that wallet from a bank account or card. A wallet holds and sends tokens, but it cannot accept dollars, reais, or pesos on its own. An on-ramp is the service that takes the fiat payment, converts it, and delivers stablecoins to the wallet address. Without one, the wallet can only receive tokens that already exist on-chain."
  - q: "Is an on-ramp the same as a crypto exchange?"
    a: "No. A crypto exchange is a venue where users trade assets against each other and hold balances in an account. An on-ramp is a conversion service that turns a fiat payment into tokens delivered to a wallet, usually embedded inside another product through an API. Exchanges often run an on-ramp internally, but most fintech apps integrate a dedicated on-ramp provider instead of an exchange."
  - q: "How long does a crypto on-ramp take to complete?"
    a: "The on-chain leg takes seconds to a few minutes on most networks. The fiat leg sets the total: an instant rail like Pix in Brazil or SPEI in Mexico completes in seconds, a card payment authorizes in seconds, ACH takes same-day to two business days, and a wire takes hours. In practice, an on-ramp over an instant rail completes in under five minutes end to end."
  - q: "Are crypto on-ramps and off-ramps regulated?"
    a: "Yes. In the US, a business that exchanges fiat for virtual currency is a money transmitter under FinCEN rules and must register as a Money Services Business and hold or be exempt from state licenses. Brazil licenses these businesses as virtual asset service providers under Central Bank rules, and the EU covers them under MiCA. A provider that cannot show its registrations should not be integrated."
---

*Reading time: about 6 minutes.*

A crypto on-ramp converts fiat currency (dollars, reais, pesos) into crypto or stablecoins delivered to a wallet. A crypto off-ramp converts crypto or stablecoins back into fiat delivered to a bank account. They are the two ends of the same pipe: the on-ramp is how money enters a blockchain, and the off-ramp is how it leaves.

## How does a crypto on-ramp work?

An on-ramp takes a fiat payment on one side and delivers tokens on the other. The six steps below are the same whether the sender is a person paying by card or a company wiring $2 million.

1. The sender submits a fiat payment: a bank transfer, a card payment, or a local instant payment such as Pix or SPEI.
2. The provider verifies the sender's identity (KYC for a person, [KYB](/resources/more/what-is-kyb) for a business) and screens them against sanctions lists.
3. The provider quotes an exchange rate and a fee for converting that fiat amount into the chosen token.
4. The fiat lands in the provider's account and is matched to the quote.
5. The provider sends the equivalent stablecoin or crypto to the destination wallet on the chosen network.
6. The on-chain transaction confirms, and the provider emits a webhook marking the on-ramp complete.

Steps 1 and 2 happen once per sender. Steps 3 through 6 repeat on every payment.

## How does a crypto off-ramp work?

An off-ramp runs the same pipe in reverse: tokens in, fiat out to a verified bank account. The [stablecoin off-ramp explainer](/resources/more/what-is-a-stablecoin-offramp) covers the regulatory side in more depth.

1. The sender requests a quote to convert a token amount into a fiat currency for a verified bank account.
2. The provider returns a rate, a fee, and a quote ID with an expiry timestamp.
3. The sender transfers the stablecoin to the provider's deposit address on the specified network.
4. The provider confirms the on-chain deposit and locks the conversion at the quoted rate.
5. The provider pays out fiat over a local rail such as ACH, wire, Pix, SPEI, or SEPA.
6. The bank account is credited and the provider emits a settlement event.

The on-chain transfer in step 3 is final once confirmed. That is why account verification happens before any money moves.

## What is the difference between an on-ramp and an off-ramp?

The two differ in direction, and everything else follows from that.

| | On-ramp | Off-ramp |
| --- | --- | --- |
| Direction | Fiat into crypto | Crypto into fiat |
| Input | Bank transfer, card, or instant payment | Stablecoin or crypto sent on-chain |
| Output | Tokens in a wallet | Fiat in a bank account |
| Common use case | Funding a wallet, collecting a payment in stablecoins, moving treasury on-chain | Paying a contractor in local currency, cashing out, settling a merchant |
| Typical settlement time | Seconds on an instant rail, hours for a wire, up to 2 business days for ACH | Seconds over Pix or SPEI, same-day for ACH, hours for a wire |

A payment that starts as a bank transfer and ends as a bank transfer, with a stablecoin in the middle, uses both. That pattern is sometimes called the stablecoin sandwich.

## Why do fintech products need an on-ramp or off-ramp?

**Remittances.** A remittance app collects dollars from a sender in the US, moves value on-chain, and needs an off-ramp to deliver pesos over SPEI or reais over Pix. Without the off-ramp, the recipient gets a token they cannot spend at the grocery store.

**Payroll.** A company paying contractors in Argentina, Brazil, and Colombia funds one stablecoin balance and off-ramps each payment into the contractor's local bank account. The off-ramp replaces four banking relationships and four pre-funded accounts with one integration.

**Marketplaces.** A marketplace collects fiat from buyers through an on-ramp, holds the balance as stablecoins, and pays sellers in dozens of countries through an off-ramp. The on-chain balance is what makes a single treasury serve every corridor.

## What payment methods do on-ramps support?

Coverage varies by provider and by country. These are the methods that matter most, with the tradeoff each one carries.

- **Bank wire.** Handles large amounts with no practical ceiling, but costs $15 to $50 and takes hours to a day.
- **ACH (US).** Cheap and familiar for US senders, but takes same-day to two business days and can be reversed for up to 60 days.
- **SEPA and SEPA Instant (EU).** Low cost across the eurozone, and the Instant variant settles in seconds, though not every bank supports it.
- **Pix (Brazil).** Settles in seconds, 24/7, at near-zero cost, which makes it the best on-ramp rail in Latin America.
- **SPEI (Mexico).** Same profile as Pix: instant, round the clock, cheap, and universal among Mexican banks.
- **PSE (Colombia).** Bank-to-bank with broad coverage, but follows bank processing windows rather than settling instantly.
- **Debit and credit cards.** Instant authorization and the widest reach for consumers, but 2 to 4 percent in fees and the highest chargeback risk.
- **Apple Pay and Google Pay.** Same economics as cards with better conversion on mobile, and the same chargeback exposure.

The pattern is consistent: instant local rails are cheaper and safer than cards, and cards win only on reach and convenience.

## What is the difference between an on-ramp provider and a liquidity provider?

An **on-ramp provider** is the service a fintech integrates to convert fiat into tokens for its users. It owns the customer-facing flow: payment collection, identity checks, quoting, and delivery.

A **liquidity provider** is the counterparty that actually holds the fiat and the tokens and stands ready to exchange one for the other at a price. It is the source of the rate the on-ramp quotes.

Many on-ramps are resellers that route to third-party liquidity, which adds a markup and a dependency. Providers that hold their own liquidity, BlindPay is one example, can return a live executable rate directly from the API instead of a cached one from someone else's book.

## Who are on-ramps designed for?

**Fintech developers.** A developer building a wallet, a payments app, or a treasury product needs users to fund accounts from a bank and withdraw to a bank. An on/off ramp API, such as the one described in [what is a stablecoin API](/resources/more/what-is-a-stablecoin-api), replaces months of banking, licensing, and blockchain work with a few endpoints.

**Neobanks.** A neobank offering dollar accounts to customers in a high-inflation country uses an on-ramp to turn local currency deposits into USDC and an off-ramp to let customers spend or withdraw. The customer sees a dollar balance; the ramps do the conversion underneath.

**Marketplaces.** A marketplace or gig platform with sellers in many countries collects buyer payments in fiat and pays sellers in their local currency. BlindPay's [global payments](/global-payments) product is built for this shape: one balance in, local currency out over Pix, SPEI, PSE, ACH, and SEPA.

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

---

Source: https://blindpay.com/resources/more/accept-bank-transfers-settle-in-stablecoins

---
title: "How to accept bank transfers and settle in stablecoins using virtual accounts"
seoTitle: "Accept ACH and wire, settle in USDC: how it works"
description: "Accept ACH, wire, and SWIFT and settle in USDC or USDT: the flow, the token, chain, and custody choices, and when a virtual account beats a memo code."
date: "2026-08-18"
category: "stablecoins"
author: "BlindPay Team"
howto:
  name: "How to accept bank transfers and settle in stablecoins with a virtual account"
  steps:
    - name: "Onboard and verify the customer"
      text: "Create the customer and complete KYC for individuals or KYB for businesses, including the compliance profile fields the banking partner reviews."
    - name: "Link a settlement wallet"
      text: "Add the blockchain wallet where converted stablecoins will land. Its network decides which stablecoins you can settle in."
    - name: "Create the virtual account"
      text: "Request the account with the settlement token and the wallet. It goes through compliance review and bank review before approval."
    - name: "Share the account details"
      text: "Once approved, give the payer the routing and account number, plus SWIFT details for foreign senders."
    - name: "Receive the deposit"
      text: "The payer sends ACH, wire, or SWIFT. Each deposit creates its own payin record and fires a webhook."
    - name: "Settle to the wallet"
      text: "The deposit converts to USDC or USDT and is sent on-chain to the linked wallet. A completion webhook confirms delivery."
faq:
  - q: "How long does settlement take when a virtual account converts to stablecoins?"
    a: "Most of the time is on the bank side. Domestic wires typically settle the same business day and ACH in one to three business days, and BlindPay watches for ACH and wire deposits for up to 5 business days. Once the deposit lands, conversion and the on-chain transfer to the wallet take seconds to minutes depending on the network."
  - q: "Which bank rails can pay into a stablecoin virtual account?"
    a: "It depends on the provider and the account type. BlindPay US virtual accounts receive ACH, domestic wire, and SWIFT, with the exact mix set by the account type. SWIFT deposits from foreign banks require an approved virtual account, since there is no memo-code fallback for international wires."
  - q: "Who holds the funds in a stablecoin virtual account?"
    a: "The fiat lands at the provider's banking partner and is converted by the provider. The stablecoins then go to the wallet linked to the account. At BlindPay that is an external blockchain wallet the customer controls, so once the stablecoins land, the provider no longer holds them. Other providers may settle into a wallet they custody, so ask."
  - q: "What happens if the payer sends the wrong amount?"
    a: "With a virtual account, there is no expected amount. Whatever arrives becomes a payin and converts, from a $0.01 micro-deposit upward, and at least $0.01 of stablecoin always reaches the wallet. Matching that amount against an invoice, and chasing any shortfall, is a job for your own ledger rather than the account."
  - q: "Can the same customer turn stablecoins back into fiat?"
    a: "Yes. The same wallet that receives virtual account settlements can fund payouts to bank accounts. BlindPay pays out over Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), and other local rails to 100+ countries, with a quote that locks the rate and fees before the stablecoins move, and no pre-funding required."
---

To accept bank transfers and settle in stablecoins, give each customer a virtual account: a bank account number in their name that converts every incoming deposit into USDC or USDT and sends it on-chain to a linked wallet. The payer sends an ordinary ACH, wire, or SWIFT transfer. The provider handles the conversion. The customer ends up holding stablecoins.

No checkout page. No crypto on the payer's side.

## Key takeaways

- There are two ways to take a bank transfer and settle in stablecoins: standing virtual account details, or one-time payment instructions with a memo code.
- Virtual accounts win for repeat payers, foreign senders, and anyone who forgets memo codes (everyone).
- The wallet you link decides which stablecoins and chains you can settle in. Pick it before you create the account.
- Most of the settlement time is the bank leg. The on-chain leg takes seconds to minutes.

## How do virtual accounts turn bank deposits into stablecoins?

A virtual account turns bank deposits into stablecoins by pairing a bank account number with a destination wallet. When a deposit lands on the account number, the provider records it, converts the dollars into a stablecoin, and sends the stablecoin to the wallet in an on-chain transaction.

That's the on-ramp, reduced to one object. The deeper walkthrough of approval states and deposit handling is in [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained), and what happens on the blockchain at each step is in [what happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment).

## Virtual account or payment instructions: which one should you use?

Use a virtual account when the same payer sends money more than once or pays from abroad. Use one-time payment instructions when a payer sends a single transfer and you don't want to wait for account approval.

With one-time instructions, you create a quote for a specific payment, then show the payer a shared bank account plus a memo code they must include so the deposit can be matched. With a virtual account, the payer gets bank details in your customer's own name, and the account number does the matching.

| | Virtual account | One-time payment instructions |
| --- | --- | --- |
| What the payer gets | Routing and account number in your customer's name | Shared bank details plus a memo code |
| Reusable | Yes, same details every time | No, one set per payment |
| How a deposit is matched | By the receiving account number | By the memo code the payer types |
| Setup | Account review before first use | Available immediately |
| International SWIFT | Yes, on account types that support it | Not at BlindPay: SWIFT deposits require a virtual account |
| Failure mode | Account rejected or approval delayed | Memo missing or mistyped, deposit waits to be matched |
| Best for | Recurring payers, payroll funding, B2B, foreign clients | Occasional one-off deposits |

At BlindPay, the two paths are connected. Once a customer has an approved virtual account, ACH and wire payins show that account's own details and the memo code is ignored ([payins](/docs/payins)). RTP deposits are the exception: they always use the shared memo-code account, because no virtual account carries an RTP rail.

## What does the end-to-end flow look like?

The flow has six steps, and only the last two involve money.

1. **Onboard and verify the customer.** KYC for individuals, KYB for businesses. At BlindPay, the customer's `kyc_status` must be `approved` before you can request an account, and business customers need fields like `account_purpose`, `source_of_wealth`, `business_industry` (a NAICS code), and at least one owner filled in ([create a virtual account](/docs/virtual-accounts-create)).
2. **Link a settlement wallet.** Add the [blockchain wallet](/docs/blockchain-wallets) where the stablecoins will land. It must belong to the same customer.
3. **Create the virtual account.** One API call, with the settlement token and the wallet:

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "banking_partner": "cfsb",
  "token": "USDC",
  "blockchain_wallet_id": "bw_000000000000"
}'
```

4. **Wait for approval.** Production accounts move from `pending_review` (compliance) to `verifying` (bank) to `approved`, and `virtualAccount.complete` fires with the routing and account numbers. Development accounts are approved instantly.
5. **Receive the deposit.** The payer sends ACH, wire, or SWIFT. Each deposit creates a payin and fires `payin.new`.
6. **Settle to the wallet.** The deposit converts and the stablecoins go on-chain to the linked wallet. The payin reaches `completed` and `payin.complete` fires.

After step 4, nothing else needs an API call. Every future deposit repeats steps 5 and 6 on its own.

## Which design decisions do you need to make?

Six decisions shape a stablecoin collection flow. Most depend on the provider, so the table shows what to ask any provider next to how BlindPay answers.

| Decision | What to ask any provider | BlindPay |
| --- | --- | --- |
| Custody | Do stablecoins settle to a wallet I control, or one you hold? | Virtual accounts settle to an external blockchain wallet the customer controls |
| Which stablecoin | USDC, USDT, or both? Can I switch later? | USDC or USDT, and `token` can be updated on an existing account |
| Which chain | Which networks can receive settlement? | USDC on Ethereum, Polygon, Base, Arbitrum, Stellar, and Solana. USDT needs a wallet on Polygon, Ethereum, or Solana |
| Fees | Monthly cost per account? Per-deposit fee? Where does it show up? | $1.50 per month per account. Per-deposit fees below $100.00 go to your invoice; at $100.00 or more they're deducted from the delivered stablecoin |
| Minimum deposit | Are small deposits ignored or processed? | Every deposit is processed, including $0.01 micro-deposits, and at least $0.01 is always delivered |
| Settlement time | How long for each rail, and what restarts the clock? | ACH and wire deposits can take up to 5 business days to arrive; the on-chain leg takes seconds to minutes |

Two of these are worth a second look.

**Custody.** Settling to a wallet your customer controls means the stablecoins stop being the provider's liability the moment they land. It also means your customer is responsible for that wallet's keys. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers the trade-off in full.

**Token and chain.** They're linked. At BlindPay, choosing USDT means the wallet must be on Polygon, Ethereum, or Solana. Stellar wallets receive USDC only, and need a USDC trustline before they can. If you're unsure which token, [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) compares them. For speed and low network fees, Solana is a common pick: BlindPay payins, payouts, and virtual accounts all run on it.

## What does compliance look like?

Compliance happens at three points: when the customer is onboarded, when the account is approved, and when each deposit arrives.

- **Customer onboarding.** KYC or KYB, plus sanctions screening. The provider has to know who the account belongs to.
- **Account approval.** Banks want to know what the account is for. At BlindPay that means the purpose of the account, source of funds, and source of wealth, backed by documents like recent bank statements or financial statements ([virtual account requirements](/docs/kb/virtual-accounts)).
- **Each deposit.** A deposit can be held for review. At BlindPay, a payin in review shows `on_hold` and resumes when cleared.

Two rules apply beyond the first deposit. First, the money has to belong to the customer the account was issued to. Collecting for your customer's own clients through their account is nesting, which BlindPay does not allow ([nested payments](/docs/kb/nested-payments)). Second, when stablecoins move between providers, travel rule obligations can require originator and beneficiary information to travel with the transfer. How that applies depends on the jurisdiction and the wallets involved, so ask your provider how they handle it. The [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) follows the rules by market.

## What does this look like for a payroll platform?

**Illustrative example.** A contractor payroll platform has three US client companies. Each client is onboarded as a BlindPay customer, passes KYB, and gets its own virtual account settling USDC to its own wallet on Solana.

| Client | Funds payroll by | Deposit | What lands |
| --- | --- | --- | --- |
| Client A | Domestic wire, Monday morning | $48,000.00 | USDC in Client A's wallet, minus the deposit fee |
| Client B | ACH, twice a month | $12,500.00 each | USDC in Client B's wallet after each ACH settles |
| Client C | ACH from a payroll provider that verifies with a $0.01 test | $0.01, then $9,000.00 | Two payins: at least $0.01 of USDC, then the full deposit minus fees |

Nobody types a memo code. Every deposit arrives already labeled by the account it hit. The platform then pays each client's contractors from that client's wallet, over local rails in each contractor's country. (Amounts are illustrative; fees depend on your plan.)

Notice Client C's penny. That's an account-verification micro-deposit, and it shows up as its own payin. Reconcile it, don't flag it.

## Where does BlindPay fit?

[BlindPay virtual accounts](/virtual-accounts) give each customer a US bank account in their own name that receives ACH, wire, and SWIFT and settles automatically to USDC or USDT in the customer's wallet. The same API pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with live quotes, no pre-funding, and KYC, KYB, and sanctions screening built into the flow.

## What to do next

Create a free development instance, add a Solana Devnet wallet, and create one virtual account with `token: "USDB"`, BlindPay's test stablecoin (production accounts use USDC or USDT). It's approved instantly, and every test payin completes about 30 seconds after you create it, so you can wire up `payin.new` and `payin.complete` handling before your first real customer applies. The [payin quickstart](/docs/quickstart-payin) and [create a virtual account](/docs/virtual-accounts-create) have the full requests.

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

---

Source: https://blindpay.com/resources/more/what-is-crypto-wallet-integration

---
title: "What is crypto wallet integration? A developer's guide"
seoTitle: "What is crypto wallet integration? A developer's guide"
description: "Crypto wallet integration adds wallets, key custody, signing, and compliance to an app. The six components, three integration models, and cost drivers."
date: "2026-08-17"
updated: "2026-08-17"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is crypto wallet integration?"
    a: "Crypto wallet integration adds blockchain wallet functions to an existing app: creating or linking wallets, controlling the private keys, signing transactions, tracking balances, and screening transfers. Most teams plug in a wallet provider through a wallet API, an embedded SDK, or a white-label app instead of building key management themselves."
  - q: "What are the main components of a wallet integration?"
    a: "Six components: key management, chain connectivity through RPC nodes, transaction signing under policies you define, balance and transaction monitoring, compliance hooks such as address screening, and the user interface. A wallet provider usually covers the first four. Compliance decisions and the interface stay with your team, even when vendors supply parts of them."
  - q: "Do I need a license to add crypto wallets to my app?"
    a: "It depends on the custody model and the country. In the US, FinCEN's 2019 guidance treats hosted wallet providers that store and transmit value for users as money transmitters, while a person using an unhosted wallet for their own purchases is not one. Working with a registered provider can change your exposure. Confirm your setup with counsel."
  - q: "Which blockchains should a wallet integration support first?"
    a: "Start with the networks your first customers and counterparties already use, and keep the first release to one or two chains. Each extra chain adds an address format, a fee model, confirmation logic, and test coverage. Ask your first ten customers which network and stablecoin they hold today, and build for that."
  - q: "Can I add stablecoin payments without building a wallet?"
    a: "Yes. A payments API with virtual accounts and payouts can convert bank deposits into stablecoins, deliver them to a wallet, and pay out to bank accounts. The customer can use a wallet they already have, or a managed wallet the provider custodies. A wallet still exists somewhere in the flow. You just don't have to build it."
  - q: "Does BlindPay provide crypto wallets?"
    a: "BlindPay is the payments layer, not a wallet provider. It links a customer's existing wallet to payins and payouts without holding its keys, and offers managed wallets in beta for teams that want BlindPay to custody the balance. For key management at scale, BlindPay works alongside wallet infrastructure providers such as Fireblocks, Circle, and Privy."
---

Crypto wallet integration is the work of adding blockchain wallet functions to a product you already run: creating or connecting wallets, deciding who holds the private keys, signing transactions, reading balances, and screening transfers before they move. Most teams don't build this layer themselves. They plug in a wallet provider through an API, an embedded SDK, or a white-label app.

This guide is for developers and product managers at the start of that project. It assumes you know REST APIs and webhooks, and not much about blockchains.

## What is crypto wallet integration?

Crypto wallet integration connects your application to wallets on one or more blockchains, so your users can hold, send, and receive digital assets inside your product. In practice it means wiring four things into your stack: a way to create or link wallets, a way to control their keys, a way to sign and broadcast transactions, and a way to watch what happens on-chain.

A crypto wallet doesn't contain coins. A wallet is a private key plus the public address derived from it. The tokens live on the blockchain's ledger, and whoever controls the private key can move whatever that address holds. That one fact drives most design decisions in a wallet integration: who holds the key, who can sign, and what happens when a key is lost.

For fintech products the asset is usually a stablecoin, a token that tracks a currency like the US dollar. USDC and USDT are the two largest. Stablecoins are tokens issued on existing chains: on Ethereum, Polygon, Base, and Arbitrum they follow the [ERC-20 token standard](https://eips.ethereum.org/EIPS/eip-20), and on Solana, Stellar, and Tron they follow each network's own token model.

## What can a wallet integration do inside a fintech product?

A wallet integration gives a product four capabilities: store a balance, send it, receive it, and convert it to and from local currency. Most fintech use cases combine those four, applied to stablecoins rather than volatile crypto assets.

| Capability | What it means | Example in a product |
| --- | --- | --- |
| Store | Hold a stablecoin balance at a wallet address | A dollar balance for a freelancer in Argentina |
| Send | Sign and broadcast a transfer to another address | Paying a supplier's wallet in USDT |
| Receive | Detect incoming transfers and credit them | A marketplace collecting USDC from buyers |
| Convert | Turn bank money into stablecoins and back | Payroll funded by ACH, paid out over Pix |

The fourth capability is the one teams underestimate. Converting bank money into stablecoins is called an **on-ramp**. Converting stablecoins back into bank money is called an **off-ramp**. A wallet does neither on its own: it holds tokens and never touches a bank account. On-ramps and off-ramps need banking partners, liquidity, and licenses, which is why they usually come from a separate provider. [What is a stablecoin API](/resources/more/what-is-a-stablecoin-api) explains that layer.

Multi-chain support adds another dimension. The same stablecoin exists on several networks, and each network has its own address format, fees, and confirmation times. A user who sends USDC on Solana to an address your product only watches on Ethereum has sent it somewhere your system will never see. [What happens on-chain in a stablecoin payment](/resources/more/what-happens-on-chain-in-a-stablecoin-payment) walks through what each network does during a transfer.

## What are the main components of a wallet integration?

A wallet integration has six components: key management, chain connectivity, transaction signing, balance and transaction monitoring, compliance hooks, and the user interface. A wallet provider usually covers the first four. Compliance and the interface stay with you, even when a vendor supplies parts of them.

| Component | What it does | Usually provided by |
| --- | --- | --- |
| Key management | Generates, stores, and protects private keys, or splits them into shares | Wallet provider, or the user's own device |
| Chain connectivity | Reads blockchain state and broadcasts transactions through RPC nodes | Wallet provider or a node provider |
| Transaction signing | Produces the signature that authorizes a transfer, under rules you set | Wallet provider, with your policies |
| Balance and transaction monitoring | Tracks balances, incoming transfers, and confirmations, then emits webhooks | Wallet provider or an indexer |
| Compliance hooks | Verifies users, screens wallet addresses, monitors transactions | You, plus compliance vendors |
| User interface | Shows balances, addresses, confirmations, and errors | You |

Three terms from that table, defined once:

- **RPC node**: a server that exposes a blockchain's data and accepts new transactions over an API. Every balance read and every broadcast goes through one.
- **Signing policy**: rules that decide whether a transaction may be signed, such as amount limits, allowlisted destinations, or a second approver.
- **Confirmation**: the point at which a transaction is included in a block. Finality, the point after which it can't be reversed, arrives later on some chains.

Key management is where the risk concentrates. A leaked key means lost funds with no chargeback. A lost key means a balance nobody can move. That's why the custody decision comes before any code.

## What are the three ways to integrate a wallet?

There are three integration models: a wallet API, an embedded wallet SDK, and a white-label wallet. They differ in how much of the product you build yourself, and how much control you keep over keys, user experience, and data.

A **wallet API** is a set of backend endpoints for creating wallets, reading balances, and requesting signatures. Your server calls the provider, and you build every screen. A wallet API gives the most control and takes the most engineering.

An **embedded wallet SDK** is a client library that creates a wallet for each user inside your web or mobile app, often tied to an email, social, or passkey login. The user never installs a separate wallet app. You get prebuilt onboarding and signing flows, with less control over how they look and behave.

A **white-label wallet** is a complete wallet application, branded as yours and run by the provider. A white-label wallet is the fastest route to launch and gives the least control over the product and the roadmap.

| | Wallet API | Embedded SDK | White-label |
| --- | --- | --- | --- |
| Control | Full control of UX and data | Your app, prebuilt wallet flows | Branding and configuration only |
| Speed to launch | Slowest | Middle | Fastest |
| Security responsibility | Shared: you own policies and backend security | Shared: provider owns key flows, you own the app | Mostly the provider |
| Best for | Fintechs with an engineering team and custom flows | Consumer apps that want wallets without wallet apps | Teams testing demand before investing |

Many products mix models: an embedded SDK for end users, and a wallet API for the company's own treasury wallets.

## Who holds the private keys?

Every wallet integration picks a custody model, and there are three. In a **custodial** model the provider or your company holds the keys. In a **non-custodial** model only the user holds them. In an **MPC** model the key is split into shares held by different parties, and no single party can sign alone.

MPC stands for multi-party computation, a family of cryptographic techniques that let several parties produce one valid signature without ever assembling the full key. NIST runs a [Multi-Party Threshold Cryptography project](https://csrc.nist.gov/projects/threshold-cryptography) to standardize these schemes. MPC is a key-management technique more than a custody model: who holds the shares decides whether an MPC wallet is custodial.

The custody choice has legal weight. FinCEN's [2019 guidance on convertible virtual currency](https://www.fincen.gov/resources/statutes-regulations/guidance/application-fincens-regulations-certain-business-models) (FIN-2019-G001) treats hosted wallet providers, which receive, store, and transmit value on behalf of account holders, as money transmitters. A person using an unhosted wallet to buy goods or services for themselves is not one. Rules differ by country, so confirm your model with counsel. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers the same question for payment providers.

## How long does a wallet integration take and what does it cost?

There's no reliable public benchmark for wallet integration timelines or costs, and vendor quotes depend on volume and contract terms. What drives both is predictable, though. Five factors set the scope:

1. **Authentication model.** Tying wallets to your existing login (email, passkeys, social) takes more work than a standalone wallet, and it decides how account recovery works.
2. **Number of chains.** Each chain adds an address format, a fee model, confirmation logic, and test coverage. One or two chains keep the first release small.
3. **Custody choice.** Custodial and MPC setups need signing policies, approval flows, and operating procedures. Non-custodial setups need recovery and support flows for users who lose access.
4. **Compliance scope.** User verification, address screening, transaction monitoring, and the Travel Rule each add an integration and a review queue. Moving money for others also raises the licensing question.
5. **Fiat connectivity.** On-ramps and off-ramps add banking rails, quotes, and payout states on top of the wallet work.

On cost, expect a mix of platform fees, per-wallet or per-transaction fees from the wallet provider, network gas fees on every on-chain transaction, and conversion fees whenever money crosses between bank accounts and stablecoins. Ask each vendor for pricing in writing against your own projected volume. [Build vs buy](/resources/more/build-vs-buy-stablecoin-payments) walks through what the in-house version costs in people and time.

## Where does BlindPay fit?

BlindPay is the payments layer around a wallet, not the wallet itself. It connects wallets to bank accounts: virtual accounts that turn bank deposits into USDC or USDT, on-ramps and off-ramps, live quotes, and payouts to local rails. It works alongside wallet infrastructure providers such as Fireblocks, Circle, Privy, Dfns, and Utila instead of replacing them.

A customer's existing wallet is registered with BlindPay as a [blockchain wallet](/docs/blockchain-wallets), either by signing a message or by submitting the address directly. From there:

- A [virtual account](/resources/more/stablecoin-virtual-accounts-explained) gives the customer US bank details. Each deposit converts to USDC or USDT and settles to the linked wallet, and each deposit is tracked as a payin.
- A payout pulls stablecoins from that wallet only after the customer authorizes the quoted amount, then sends local currency over Pix, SPEI, ACH, RTP, SEPA, SWIFT (POBO/COBO), and other rails. BlindPay never holds the keys to an external wallet, so that payout flow is non-custodial.
- For teams that don't want to run signing, BlindPay also offers managed wallets, in beta, which it custodies on the customer's behalf.

BlindPay is registered with FinCEN as a money services business. It is not a stablecoin issuer, a card acquirer, a consumer wallet app, or a key-management platform. If your main need is key custody for thousands of end users, a wallet infrastructure provider is the right first call, and BlindPay can sit behind it for the bank side.

## Glossary: 8 terms you'll see in every wallet integration

| Term | Plain-language definition |
| --- | --- |
| Private key | The secret number that authorizes transfers from a wallet address |
| Wallet address | The public identifier that receives tokens, derived from the key |
| Custodial wallet | A wallet whose keys a company holds on the user's behalf |
| Non-custodial wallet | A wallet whose keys only the user holds |
| MPC wallet | A wallet whose key is split into shares, so no single party can sign alone |
| Account abstraction | A wallet that is a smart contract with programmable rules; [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) is the main Ethereum standard |
| On-ramp and off-ramp | Converting bank money into stablecoins, and stablecoins back into bank money |
| KYT | Know your transaction: monitoring transfers and wallet addresses for risk |

## What to do next

Write down three answers before you talk to vendors: which chains and stablecoins you need at launch, who should hold the keys, and whether money has to reach bank accounts. Those three choices narrow the vendor list faster than any feature comparison.

If bank accounts are part of the answer, read [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works) end to end. Then open the [blockchain wallet docs](/docs/blockchain-wallets) to see what linking an existing wallet to payins and payouts takes.

---

Source: https://blindpay.com/changelog/2026-08-16-virtual-account-partner-fees-and-micro-deposits

---
title: 'Per-account partner fees, micro-deposits, and amount-based fee timing on virtual accounts'
seoTitle: 'Per-account partner fees, micro-deposits, and amount-based fee timing on virtual accounts'
description: 'Pin a partner fee to each virtual account, collect deposits of any size (including $0.01 micro-deposits), and a new rule for when BlindPay fees are charged: below $100 on your monthly invoice, $100 and above at transaction time.'
date: 2026-08-16
category: New Feature
categoryType: feature
contributors:
  - bernardoSimonassi
isChangelog: true
---

Virtual accounts get three upgrades: partner fees can now be set per account instead of one setting for the whole instance, deposits of any size are processed (micro-deposits included), and BlindPay fees are charged on your invoice or at transaction time depending on the deposit amount.

<!--more-->

## TL;DR

- New `partner_fee_id` field on virtual account create and update: pin a partner fee to one account, overriding the instance-wide default
- Every deposit now creates a payin, including $0.01 account-verification micro-deposits; at least $0.01 always reaches the linked wallet
- BlindPay fees on deposits below $100.00 accrue to your monthly invoice (`billing_fee_amount`); deposits of $100.00 and above are charged at transaction time (`transaction_fee_amount`)

## Partner fees per virtual account

Until now, virtual accounts supported a single partner fee for the entire instance: one fee configuration flagged for virtual accounts applied to every account's deposits. You can now pin a fee to each account individually.

Pass `partner_fee_id` when creating a virtual account, or set it later with the update endpoint:

```bash
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/virtual-accounts \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "banking_partner": "cfsb",
    "token": "USDC",
    "blockchain_wallet_id": "bw_000000000000",
    "partner_fee_id": "pf_000000000000"
  }'
```

How the two levels interact:

- A fee pinned to an account **overrides the instance-wide default** for that account's deposits.
- Accounts without a pin keep using the instance-wide default (the fee configuration created with `virtual_account_set: true`), so existing setups keep working unchanged.
- Updating an account with `partner_fee_id: null` clears the pin and falls back to the default.
- Deleting a fee configuration automatically unpins it from any accounts referencing it; those accounts revert to the default.

The dashboard's virtual account create dialog and edit pane both gained a partner fee selector.

## Micro-deposits are now collected

Deposits below $5.00 into a virtual account used to be ignored. Every deposit of any size now creates a payin, including the $0.01 account-verification micro-deposits sent by services like Plaid and Square, and always delivers at least $0.01 of stablecoin to the linked wallet.

Because fees can exceed a small deposit, partner fee collection is now partial rather than all-or-nothing: the fee collects as much as the deposit can bear while preserving the $0.01 delivery floor. A $5.00 fee on a $5.00 deposit collects $4.99; a micro-deposit collects nothing.

## When BlindPay fees are charged

BlindPay fees on virtual account deposits now follow an amount-based rule:

| Deposit amount | When the BlindPay fee is charged | Field on the payin |
| --- | --- | --- |
| Below $100.00 | End of the billing cycle, on your monthly invoice | `billing_fee_amount` |
| $100.00 or more | At the time of the transaction, deducted from the delivered amount | `transaction_fee_amount` |

This keeps small deposits from being consumed by fees at transaction time while charging larger deposits immediately. Instances configured for end-of-month billing keep accruing every fee to `billing_fee_amount`, regardless of amount.

## What you need to do

Nothing is required. Existing virtual accounts keep their behavior: the instance-wide partner fee still applies to accounts without a pin, and fee totals are unchanged, only the timing of when small-deposit fees are charged moves to the monthly invoice. If you reconcile payins, read both `billing_fee_amount` and `transaction_fee_amount` rather than assuming one of them.

To adopt per-account fees, create additional fee configurations and pass `partner_fee_id` on virtual account create or update.

## Learn more

- [Virtual accounts guide](/docs/virtual-accounts): fee rules, account types, and statuses
- [Partner fees guide](/docs/learn/partner-fees): defaults vs. per-account pins for virtual accounts, and quotes
- [Create a virtual account](/docs/virtual-accounts-create): full request reference

---

Source: https://blindpay.com/resources/more/how-to-off-ramp-usdc-to-euros-sepa

---
title: "How to off-ramp USDC to euros over SEPA: networks, IBAN details, and timing"
seoTitle: "How to off-ramp USDC to euros over SEPA"
description: "Converting USDC to EUR in a SEPA bank account: which networks work, the IBAN details you need, SEPA vs SEPA Instant timing, limits, and what MiCA changes."
date: "2026-08-16"
updated: "2026-08-16"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to off-ramp USDC to a euro bank account over SEPA"
  steps:
    - name: "Verify the sender"
      text: "Complete KYB for a business or KYC for an individual with an off-ramp provider that pays out in EUR over SEPA."
    - name: "Add the recipient's IBAN"
      text: "Register the IBAN, the BIC, the beneficiary's full legal name, and their address. The IBAN's country code must match the beneficiary's country."
    - name: "Quote the payout in USDC or EUR"
      text: "Request a quote by the USDC amount you send or by the EUR amount the recipient should get. Check the minimum and read the quote's expiry, which can be shorter on SEPA than on other rails."
    - name: "Send native USDC on a supported network"
      text: "Authorize the quoted USDC from your wallet on a network the provider accepts for SEPA, such as Polygon, Ethereum, Base, Arbitrum, Solana, or Stellar, and create the payout before the quote expires."
    - name: "Track the euro payout"
      text: "The provider converts the USDC and sends EUR to the IBAN as a SEPA credit transfer. Follow the status by webhook until the payout completes."
faq:
  - q: "How long does it take to off-ramp USDC to a European bank account?"
    a: "Two parts add up. The USDC transfer takes seconds to minutes depending on the network. The euro leg depends on the SEPA scheme used: a standard SEPA Credit Transfer must reach the recipient's bank by the end of the next business day, while SEPA Instant settles in seconds, any day. Ask your provider which one it uses and plan for about one business day unless it confirms instant."
  - q: "Can I off-ramp USDT to euros?"
    a: "It depends on the provider, and in the EU it's harder than USDC. Under MiCA, regulated crypto-asset service providers can't offer stablecoins that lack EU authorization, and Tether hasn't sought it. USDC is issued in the EU by Circle under a French e-money license. BlindPay's SEPA payouts take native USDC only, from Polygon, Ethereum, Arbitrum, Base, Solana, or Stellar."
  - q: "What bank details do I need for a SEPA off-ramp?"
    a: "The recipient's IBAN, the bank's BIC, the beneficiary's full legal name, and their street address, city, postal code, and country. The IBAN's country prefix has to match the beneficiary's country. Use the exact legal name on the account: since October 2025, euro-area banks run Verification of Payee, which compares the name you send against the account holder."
  - q: "Is there a minimum amount for a USDC to EUR payout?"
    a: "Most providers set one. On BlindPay, a SEPA payout needs at least 11 USDC when you quote by the amount you send, or 10 EUR when you quote by the amount the recipient receives. Per payout, the rail allows up to $100,000 to an individual and $300,000 to a business, and your verification tier's own limits apply too."
  - q: "Which countries can receive a SEPA payout from stablecoins?"
    a: "Any country in the SEPA scheme can receive euro credit transfers, which covers the EU plus countries such as the UK, Switzerland, Norway, and Iceland. Provider coverage can be narrower. BlindPay pays out to 40 SEPA countries, and seven of them (Austria, Estonia, Finland, France, Lithuania, Norway, and Portugal) are limited to individual-to-individual payouts for now."
---

To off-ramp USDC to euros, verify with a provider that pays out over SEPA, add the recipient's IBAN, BIC, legal name, and address, quote the payout, and send native USDC on a supported network. The provider converts it and sends EUR as a SEPA credit transfer, which reaches the bank by the next business day, or in seconds on SEPA Instant.

Three things trip people up here: the token, the name on the account, and which SEPA scheme the provider uses.

## Key takeaways

- Send USDC, not USDT. MiCA keeps unauthorized stablecoins out of regulated EU channels, and most euro off-ramps take USDC only.
- Standard SEPA has a next-business-day deadline. SEPA Instant settles in seconds, 24/7. Ask which one your provider uses.
- Send the beneficiary's exact legal name. Euro-area banks now check it against the IBAN before paying.
- Check the country list. Provider coverage and allowed use cases differ by country, even inside SEPA.

## What is a SEPA off-ramp?

It's a crypto off-ramp whose fiat leg is a SEPA credit transfer in euros. You send stablecoins to the provider, it converts them to EUR at a quoted rate, and the euros land in an IBAN anywhere the provider covers in the Single Euro Payments Area.

SEPA isn't only the eurozone. The scheme covers [41 countries](https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2025-05/EPC172-25%20Press%20Release%20Serbia_0.pdf), including non-euro members such as the UK, Switzerland, Sweden, and Norway, as long as the account receives euros. For dollar payouts, the [US off-ramp guide](/resources/more/how-to-off-ramp-usdc-to-us-bank-account) covers ACH, RTP, and wire the same way.

## Which stablecoin and network should you send?

USDC, on a network the provider accepts for SEPA.

**Why USDC.** MiCA, the EU's crypto rulebook, only lets regulated service providers offer stablecoins whose issuer is authorized in the EU. Circle [issues USDC and EURC under a French e-money license](https://www.circle.com/fr/pressroom/circle-is-first-global-stablecoin-issuer-to-comply-with-mica-eus-landmark-crypto-law). In January 2025, ESMA told national regulators to make sure providers [restricted non-compliant stablecoins by the end of Q1 2025](https://www.esma.europa.eu/press-news/esma-news/esma-and-european-commission-publish-guidance-non-mica-compliant-arts-and-emts). The [MiCA explainer](/resources/more/mica-stablecoin-rules-explained) covers why USDT ended up delisted for EU users, and [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments) covers the wider trade-off.

**Which network.** On BlindPay, SEPA payouts accept native USDC from these networks, per the [SEPA launch notes](/changelog/2026-06-06-sepa-multi-chain-eur-quotes-and-offramp):

| Network | SEPA payouts (quote and execute) | Offramp wallets on a SEPA account |
| --- | --- | --- |
| Polygon | Yes | Yes |
| Ethereum | Yes | Yes |
| Base | Yes | Yes |
| Arbitrum | Yes | Yes |
| Solana | Yes | Yes |
| Stellar | Yes | No |
| Tron | No | No |

"Native" matters. A bridged version of USDC on the same chain is a different token and won't be accepted.

## What bank details do you need?

SEPA payouts run on the IBAN. These are BlindPay's required fields for a `sepa` bank account, per the [bank accounts reference](/docs/bank-accounts), and most providers ask for the same.

| Field | Example | Watch out for |
| --- | --- | --- |
| IBAN | DE89 3704 0044 0532 0130 00 | The country prefix must match the beneficiary's country |
| BIC | COBADEFFXXX | The bank's SWIFT code. Some banks have several |
| Beneficiary legal name | Müller Logistik GmbH | The exact name on the account |
| Address, city, postal code | Hauptstraße 1, Berlin, 10115 | Required for compliance screening |
| Country | DE | Must match the IBAN |
| Account class | Individual or business | Decides which use cases are allowed in some countries |

The name is the field that causes the most trouble now. Since 9 October 2025, euro-area banks must offer [Verification of Payee](https://finance.ec.europa.eu/news/new-eu-rules-make-instant-euro-payments-faster-and-safer-2025-10-10_en) under the Instant Payments Regulation. It compares the name you send with the account holder's name and returns a match, a close match, or no match. A trading name instead of the legal name is the classic mismatch.

## How long does a SEPA off-ramp take?

Two schemes, two very different clocks.

| | SEPA Credit Transfer (SCT) | SEPA Instant (SCT Inst) |
| --- | --- | --- |
| Settlement | By the end of the next business day ([PSD2, Art. 83](https://eur-lex.europa.eu/eli/dir/2015/2366/oj/eng)) | Seconds: 5-second target, 10-second timeout ([EPC rulebook](https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2025-10/EPC004-16%202025%20SCT%20Instant%20Rulebook%20v1.1.pdf)) |
| Weekends and holidays | No, business days only | Yes, 24/7/365 |
| Amount limit | Set by banks | No scheme maximum since October 2025. Banks set their own |
| Price | Bank-set | Can't cost more than a standard transfer, under the [Instant Payments Regulation](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R0886) |

Since 9 October 2025, euro-area payment providers that offer standard credit transfers must also send and receive instant ones. That doesn't mean every off-ramp uses SEPA Instant for payouts. Ask.

On BlindPay, the [bank accounts reference](/docs/bank-accounts) plans for about one business day on SEPA, and the [launch notes](/changelog/2026-05-29-sepa-eur-payouts) put euros in the IBAN 5 to 30 minutes after the USDC is received. Build your ETA copy on the business-day figure and treat faster as a bonus. Payout quotes on SEPA can also expire sooner than the usual five minutes, so read `expires_at` and execute promptly. The [settlement times by rail](/resources/more/stablecoin-payout-settlement-times) put SEPA next to Pix, SPEI, ACH, and SWIFT.

## What limits and country rules apply?

Three layers, and the lowest one wins.

1. **The provider's minimum.** On BlindPay, 11 USDC when you quote by the amount you send, or 10 EUR when you quote by what the recipient gets.
2. **The rail's maximum.** BlindPay's SEPA rail allows up to $100,000 per payout to an individual and $300,000 to a business.
3. **Your verification limits.** Per-transaction, daily, and monthly caps by KYC or KYB tier, listed in [KYC and limits](/docs/kb/kyc).

Country rules sit on top. BlindPay pays out to 40 SEPA countries, listed in [payment methods](/docs/kb/payment-methods). Seven of them, Austria, Estonia, Finland, France, Lithuania, Norway, and Portugal, are limited to payouts between individuals for now, so a business can't pay a French supplier over this rail yet. Check the recipient's country before you build the flow around it.

## What can go wrong with a SEPA off-ramp?

| Problem | Cause | How to avoid it |
| --- | --- | --- |
| Bank account rejected | IBAN country doesn't match the beneficiary's country | Check the two-letter IBAN prefix against the address |
| Payout not allowed | Business sender or business recipient in an individual-only country | Check the country rules before onboarding the recipient |
| Name check fails | Trading name sent instead of the legal name | Collect the exact account holder name |
| Quote rejected | Below 11 USDC, or below 10 EUR on a receiver-amount quote | Quote above the minimum, or batch small amounts |
| Quote expired | SEPA quotes can expire faster than five minutes | Execute right after quoting, and read `expires_at` |
| Funds sent but not accepted | USDT, a bridged token, or a network SEPA doesn't take | Send native USDC on a listed network |

Most of these fail at account creation or quote time, before any money moves. That's the point of validating early. The last one doesn't, which is why the network check belongs in your own UI, next to the address.

## What does a SEPA off-ramp cost?

Four lines, same as any off-ramp: network gas on the USDC transfer, the USD to EUR spread, the provider's percentage fee, and a flat payout fee. SEPA transfers themselves are cheap, and the Instant Payments Regulation stops banks from charging more for instant than for standard.

The spread is where the money goes. Compare the live rate on [USDC to EUR](/usdc-to-eur) against the mid-market rate at the same minute. Quoting by EUR amount, with fees covered by the sender, lets the recipient get an exact invoice amount. The [quotes explainer](/resources/more/stablecoin-api-quotes-explained) covers fee direction and minor units.

## How does BlindPay handle SEPA payouts?

BlindPay converts native USDC and pays out EUR over SEPA through the same payout API it uses for Pix, SPEI, ACH, and wire. Add a `sepa` bank account, quote by USDC or EUR amount, authorize the USDC from your wallet, and create the payout. For USDC that arrives from third parties, link an offramp wallet to the SEPA account and every USDC deposit pays out on its own. KYB, KYC, and sanctions screening run inside the flow.

Start in the sandbox with the [payout quickstart](/docs/quickstart-payout).

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

---

Source: https://blindpay.com/resources/more/best-stablecoin-apis-2026

---
title: "Best stablecoin APIs in 2026: 10 providers compared"
seoTitle: "Best stablecoin APIs in 2026: 10 providers compared"
description: "Ten stablecoin APIs compared for 2026: BlindPay, Circle, Bridge, BVNK, Fireblocks, Crossmint, Zero Hash, Conduit, Sphere, and Borderless, across rails, custody, pricing, and compliance."
date: "2026-08-15"
updated: "2026-09-01"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is the best stablecoin API?"
    a: "It depends on the job. BlindPay is the strongest fit for paying out stablecoins as local currency in markets like Brazil and Mexico with compliance built in. Circle fits issuer-level integrations, Bridge fits orchestration inside the Stripe ecosystem, BVNK fits high-volume European merchants, and Fireblocks fits custody-heavy institutions."
  - q: "Do stablecoin APIs require a crypto license?"
    a: "Usually the provider holds the licenses and registrations, such as money transmitter licenses or VASP registrations, and the business integrates under the provider's regulatory umbrella. Requirements vary by country, so confirm the provider's licensing posture for each market you operate in."
  - q: "Can a stablecoin API convert USDC to local currency?"
    a: "Yes. Payout-focused stablecoin APIs convert USDC or USDT to fiat at a quoted rate and deliver funds over local rails such as Pix in Brazil, SPEI in Mexico, or ACH in the United States."
  - q: "How long does it take to integrate a stablecoin API?"
    a: "A basic payout or pay-in integration typically takes days to a few weeks. Timelines depend mostly on compliance onboarding (KYB review) rather than engineering work, since most providers expose standard REST APIs and webhooks."
---

A stablecoin API lets a business send, receive, and convert digital dollars programmatically, without building blockchain infrastructure or a compliance program from scratch. The best one for you depends on whether you need issuance, custody, merchant acceptance, or payouts to bank accounts.

The market behind these APIs is large and growing: public trackers such as DeFiLlama put circulating stablecoin supply above 200 billion dollars, and annual settlement volume is measured in trillions. In 2026, most serious providers fall into one of four camps: issuers, orchestration layers, custody platforms, and payout networks. This comparison covers ten of the most cited providers and where each one actually fits.

## What is a stablecoin API?

A stablecoin API is a hosted service that exposes stablecoin operations, such as minting, transfers, conversion, and fiat payouts, through standard HTTP endpoints. Instead of running nodes, managing keys, and registering as a money services business in every market, a business makes API calls and the provider handles execution, custody or settlement, and regulatory obligations.

The build-versus-buy math is lopsided. Building the same capability in-house means blockchain infrastructure across several networks, banking partnerships in every payout country, an FX desk, and a compliance program with KYC, KYB, sanctions screening, and travel rule reporting. That is a multi-year project for a payments company and a distraction for everyone else. An API compresses it into an integration measured in days and a per-transaction cost.

If you are new to the underlying asset, start with [what is a stablecoin](/resources/more/what-is-a-stablecoin) and [what is a stablecoin API](/resources/more/what-is-a-stablecoin-api), then come back to compare providers.

## What makes a stablecoin payments API different?

A stablecoin payments API is the subset of this category built around moving money to people and businesses: quoting FX, converting between stablecoins and local currency, and delivering over local bank rails with compliance inside the flow. Issuer APIs and custody platforms expose the asset; a stablecoin payments API completes the payment. Most of the comparison below turns on which side of that line a provider sits.

## How do the 10 providers compare?

| Provider | Rails | Currencies | Custody model | Pricing model | Compliance scope |
|---|---|---|---|---|---|
| BlindPay | Pix, SPEI, ACH, SWIFT (POBO/COBO), on-chain | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR | Non-custodial for the business | [Flat plus percentage, published](/pricing) | KYC, KYB, sanctions, travel rule handled |
| [Circle](https://www.circle.com) | On-chain (many networks), bank wires | USDC, EURC, USD | Issuer custody or self-custody | Volume-based, enterprise quotes | Issuer-level, US and EU regulated |
| [Bridge](https://www.bridge.xyz) | On-chain, ACH, wire, SEPA | USDC, USDT, USDB, USD, EUR | Provider custody | Percentage per conversion | US money transmission via Stripe entities |
| [BVNK](https://www.bvnk.com) | On-chain, SEPA, Faster Payments, SWIFT | USDC, USDT, EUR, GBP, USD | Provider custody | Enterprise, volume tiers | EMI licenses in Europe, VASP registrations |
| [Fireblocks](https://www.fireblocks.com) | On-chain (60+ networks) | Most major stablecoins | Self-custody via MPC | Platform fee, enterprise | Tooling for your own licenses |
| [Crossmint](https://www.crossmint.com) | On-chain, cards for on-ramp | USDC and others | Managed wallets | Per-transaction | Onboarding and screening built in |
| [Zero Hash](https://zerohash.com) | On-chain, ACH, wire | USDC and others, USD | Provider custody | Enterprise quotes | US MTLs, broker-dealer adjacent |
| [Conduit](https://conduitpay.com) | Pix, SPEI, Interac, mobile money, on-chain | USDC, USDT to LatAm, Africa, Asia locals | Provider custody (Fireblocks-based) | Volume tiers, per-corridor on quote | Provider-run compliance |
| [Sphere](https://spherepay.co) | ACH, wire, SEPA, Pix, on-chain | USDC, USDT, EURC to USD, EUR, BRL | Provider custody | Per-transaction | KYC, KYB, sanctions in the API |
| [Borderless](https://borderless.xyz) | Local rails via partner institutions | Many fiat currencies via partner network | Varies by partner | Enterprise | Locally licensed partner institutions |

Rails, supported currencies, and fees change often. Treat the table as a map of each provider's center of gravity and confirm current details on their sites.

## Where does each provider fit best?

**BlindPay** is a payout and collection network: a business sends USDC or USDT and the receiver gets local currency over [Pix, SPEI, ACH, or wire](/global-payments), with KYC, KYB, sanctions screening, and travel rule compliance handled by the API. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), with UETR tracking and MT103 confirmations for every transfer. Depth is strongest in the Americas corridors, such as [USDC to BRL](/usdc-to-brl), and [virtual accounts](/virtual-accounts) cover the reverse direction, converting incoming bank transfers into stablecoins. BlindPay is not a card acquirer and not a consumer wallet; if you need merchant card acceptance or issuer-level USDC access, pair it with one of the providers below.

**Circle** is the issuer of USDC. If you want mint-and-redeem access at issuer level, or your product is built around holding USDC reserves, Circle is the anchor integration. It is infrastructure for the dollar leg, not a payout network for local currencies.

> USDC has become the largest regulated digital dollar in the world, with 108% year-over-year circulation growth.
>
> Jeremy Allaire, Co-Founder and CEO, Circle, in the [2026 Internet Financial System Report](https://www.circle.com/reports/internet-financial-system/founders-letter)

**Bridge, a Stripe company**, is a stablecoin orchestration API: issuance, conversion, and virtual accounts, tightly integrated with the Stripe ecosystem since the acquisition. A strong default if you already run on Stripe and want stablecoin flows next to card flows.

**BVNK** targets high-volume merchants and PSPs, with European licensing depth (EMI) and strong EUR and GBP rails. It fits businesses collecting large stablecoin volumes and settling into European bank accounts.

**Fireblocks** is custody and wallet infrastructure, not a payments company. Institutions that must self-custody with MPC and route across many chains choose it, then layer payment logic on top themselves.

**Crossmint** comes from the wallet and NFT side and fits consumer-facing apps that need embedded wallets plus stablecoin checkout, more than B2B treasury flows.

**Zero Hash** is regulated B2B plumbing for US fintechs and brokerages that want crypto and stablecoin capabilities inside their own products, under Zero Hash's licenses.

**Conduit** focuses on emerging-market corridors across Africa, Asia, and Latin America, with local rails such as Pix, SPEI, Interac, and mobile money behind one API, and custody built on Fireblocks. It fits businesses whose corridor map skews toward Africa and Asia alongside the Americas.

**Sphere** is an on-ramp and off-ramp API converting between USD, EUR, BRL and USDC, USDT, EURC, with virtual accounts that turn fiat deposits into stablecoins. It fits fintechs that want ramp infrastructure with compliance embedded in the API.

**Borderless** is an orchestration and liquidity network rather than a direct provider: one API routes payouts and collections through locally licensed partner institutions across a wide country set. It fits platforms that want breadth of coverage through partners and accept that capabilities vary by corridor.

## Which blockchain networks should a stablecoin API support?

For payments, the network choice matters less than newcomers expect, because the provider abstracts it, but three things are worth checking. Cost and speed: modern networks such as Base, Polygon, and Solana settle in seconds for cents, while Ethereum mainnet remains the expensive, maximally liquid anchor. Counterparty compatibility: if your customers or partners already hold USDC on a specific chain, receiving natively there avoids bridge risk entirely. And native issuance: prefer stablecoins issued natively on a network over bridged versions, since a natively issued USDC is a direct claim on the issuer's reserves. A good API supports several networks behind one endpoint and lets the business think in dollars, not chains.

## Which questions should you ask before choosing?

- Which direction does your money move: pay-in, payout, or both? Payout networks and merchant gateways are different products, as covered in [how to choose a stablecoin payment provider](/resources/more/best-stablecoin-payment-providers-2026).
- Which corridors matter? A provider with deep US rails may have nothing in Brazil or Mexico. Check [coverage](/docs/kb/supported-countries) country by country.
- Who holds the funds? Provider custody simplifies integration; self-custody reduces counterparty risk but moves obligations to you.
- Whose license do you operate under? Most businesses want the provider's licenses to cover the flow. See the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) for how MiCA, the GENIUS Act, and Brazil's VASP rules split those obligations.
- What is the all-in cost? Compare the delivered amount after FX and fees, not the headline fee.

## How do you compare pricing across stablecoin APIs?

Published pricing rarely tells the whole story, so run the same test against every shortlisted provider: quote a fixed amount, say 1,000 USDC to Brazilian reais, and record the amount delivered to the recipient's bank account. That single number folds together the provider fee, the FX spread, and any hidden minimums.

Three patterns to watch. First, percentage fees compound with spread: a provider advertising 0.5% can deliver less than one advertising 1% if its FX rate sits further from mid-market. Second, flat fees dominate at small ticket sizes and vanish at large ones, so test at your real average payment size. Third, some providers price pay-in and payout differently; if you run both directions, quote both. Live corridor pages like [USDC to BRL](/usdc-to-brl) and [USDT to BRL](/usdt-to-brl) show this delivered-amount math with current rates, and BlindPay's fee schedule is published on the [pricing page](/pricing).

## Where do these options fall short?

No provider on this list covers everything. Issuer platforms do not deliver local currency in emerging markets. Payout networks do not give you issuer-level mint and redeem. Custody platforms leave licensing to you. Most published pricing is incomplete, and FX spreads are usually only visible at quote time. And every provider gates activity behind KYB review, so onboarding time, not engineering, is the usual bottleneck. If your volumes are small and purely domestic in the US, traditional rails may still be cheaper than any stablecoin route.

## When is BlindPay the right choice?

If the job is "we hold digital dollars and need people paid in their local currency, compliantly, through one API", that is the exact problem [BlindPay](/global-payments) is built for. Stablecoin in, Pix, SPEI, ACH, or SWIFT out (POBO/COBO, with UETR tracking and MT103 confirmations), with a quoted FX rate before you commit, published [pricing](/pricing), and compliance checks run before money moves. Teams usually [talk to us](/contact) with one corridor and expand from there.

## Methodology and sources

Provider capabilities summarized from public materials as of August 2026: [circle.com](https://www.circle.com), [bridge.xyz](https://www.bridge.xyz), [bvnk.com](https://www.bvnk.com), [fireblocks.com](https://www.fireblocks.com), [crossmint.com](https://www.crossmint.com), [zerohash.com](https://zerohash.com), and BlindPay's own documentation. Supply and volume figures from public dashboards such as [DeFiLlama](https://defillama.com/stablecoins). Rail descriptions from operator pages, including the [Banco Central do Brasil's Pix overview](https://www.bcb.gov.br/en/financialstability/pix_en).

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

---

Source: https://blindpay.com/resources/more/best-stablecoin-payment-providers-2026

---
title: "Best stablecoin payment providers in 2026: how to choose"
seoTitle: "Best stablecoin payment providers in 2026: how to choose"
description: "How to choose a stablecoin payment provider in 2026: the four provider types, a comparison of 10 options, and the questions that decide the fit."
date: "2026-08-15"
updated: "2026-08-24"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin payment provider?"
    a: "A stablecoin payment provider is a regulated company that moves money between stablecoins and bank accounts for businesses: accepting stablecoin payments, paying out stablecoins as local currency, or both, through an API or dashboard."
  - q: "What is the difference between a stablecoin payment gateway and a payout provider?"
    a: "A gateway collects payments from your customers and settles to you. A payout provider sends money the other way, converting your stablecoins into local currency in someone else's bank account. Some providers do both, but most are stronger in one direction."
  - q: "How much do stablecoin payment providers charge?"
    a: "Most charge a percentage per conversion, sometimes with a flat fee per payout, plus an FX spread on non-USD currencies. Compare the amount delivered to the recipient rather than the quoted fee, because a low fee can hide a wide spread."
  - q: "Are stablecoin payment providers regulated?"
    a: "Serious providers operate as registered money services businesses, EMIs, or VASPs depending on the market, and run KYC, KYB, and sanctions screening before money moves. Check registrations for each country you need, not just the provider's home market."
---

A stablecoin payment provider moves money between digital dollars and bank accounts on behalf of a business: collecting from customers, paying out to people, or both. Choosing one comes down to three questions: which direction your money moves, which countries it moves between, and whose regulatory license covers the flow.

The category is crowded because the volume is real: public trackers such as [DeFiLlama](https://defillama.com/stablecoins) put circulating stablecoin supply above 200 billion dollars, and payment-focused usage keeps growing as businesses replace slow cross-border wires. This guide maps the provider types, compares ten options, and gives you the checklist we would use ourselves.

## What are the four types of stablecoin payment provider?

**Payout and collection networks** (BlindPay, BVNK) connect stablecoins to local bank rails, so a transfer that starts as USDC ends as reais, pesos, or dollars in a bank account. **Issuer platforms** (Circle) sit at the source: they mint and redeem the stablecoin itself and offer APIs around it. **Orchestration layers** (Bridge, Crossmint) wrap issuance, conversion, and wallets into developer products. **Custody and infrastructure platforms** (Fireblocks, Zero Hash) give regulated building blocks that businesses assemble under their own or the provider's licenses.

Most buying confusion comes from comparing across types. A gateway that is excellent at merchant checkout may have no payout rails in Latin America, and an issuer platform will not deliver Pix. Start from your money flow, then compare within the right type. For the underlying mechanics, see [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

Two concrete scenarios show the split. A European marketplace collecting card payments and paying 5,000 sellers across Latin America needs a payout network with local rails, and its gateway choice is almost irrelevant to that problem. A US neobank adding a "buy USDC" button needs a licensed infrastructure platform like Zero Hash, and payout corridors are irrelevant to that one. Write your scenario down first; the provider type usually falls out of the sentence.

## How do the main providers compare?

| Provider | Best for | Directions | Settlement rails | Licensing posture |
|---|---|---|---|---|
| BlindPay | Stablecoin-to-local-fiat payouts, Americas | Payout and collection | Pix, SPEI, ACH, SWIFT (POBO/COBO), on-chain | MSB registrations, compliance in the API |
| [Circle](https://www.circle.com) | Issuer-level USDC access | Mint, redeem, transfer | On-chain, US wires | US and EU issuer licenses |
| [Bridge](https://www.bridge.xyz) | Stripe-ecosystem orchestration | Pay-in and payout | On-chain, ACH, wire, SEPA | US money transmission (Stripe) |
| [BVNK](https://www.bvnk.com) | High-volume EU merchants | Pay-in and payout | SEPA, Faster Payments, SWIFT, on-chain | EU EMI, VASP registrations |
| [Fireblocks](https://www.fireblocks.com) | Institutional self-custody | Infrastructure only | On-chain | Tooling under your licenses |
| [Crossmint](https://www.crossmint.com) | Consumer apps, embedded wallets | Pay-in focused | On-chain, cards | Provider-managed onboarding |
| [Zero Hash](https://zerohash.com) | US fintechs embedding crypto | Both, US-centric | On-chain, ACH, wire | US MTLs |
| [Conduit](https://conduitpay.com) | Emerging-market corridors (Africa, Asia, LatAm) | Payout and collection | Pix, SPEI, Interac, mobile money, on-chain | Provider-run compliance |
| [Sphere](https://spherepay.co) | On/off-ramps with virtual accounts | Pay-in and payout | ACH, wire, SEPA, Pix, on-chain | KYC, KYB, sanctions in the API |
| [Borderless](https://borderless.xyz) | Broad coverage via partner network | Payout and collection | Local rails via licensed partners | Locally licensed partner institutions |

Capabilities shift quarter to quarter. Confirm rails, corridors, and fees on each provider's site before shortlisting; for BlindPay the current numbers are on the [pricing page](/pricing).

## Which questions decide the choice?

1. **Direction.** Collecting from customers, paying suppliers and contractors, or moving your own treasury? Payout depth and pay-in depth rarely live in the same provider.
2. **Corridors.** List the exact country pairs. A provider's marketing map and its production corridors differ; ask for delivered-amount quotes on your top three corridors and check [coverage](/docs/kb/supported-countries) explicitly.
3. **Compliance ownership.** Who runs KYC and KYB, who screens sanctions, who files travel rule data? Built-in compliance shortens your roadmap; bring-your-own-license platforms give control at the cost of obligations. The [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) summarizes what applies where.
4. **Custody.** If holding funds with the provider is unacceptable, your shortlist shrinks to self-custody infrastructure plus a payout network that pulls from your wallet.
5. **All-in cost.** Request the delivered amount for a fixed test payment, say 1,000 USDC to BRL, and compare across providers. Spread hides in the FX rate, not the fee line. Our live [USDC to BRL](/usdc-to-brl) and [USDT to BRL](/usdt-to-brl) pages show quoted rates before you commit.
6. **Time to first payment.** Ask each provider how long KYB review takes at your entity type. Onboarding, not engineering, is the usual critical path.

## What does onboarding with a provider actually involve?

Every regulated provider gates live payments behind business verification, and this step, not the API integration, sets your launch date. Expect to provide incorporation documents, proof of address, ownership structure down to ultimate beneficial owners (each owner passes individual KYC), a description of your business model, and often expected volumes and source of funds. Clean, consistent documents move through review in days; mismatched entity names or opaque ownership add weeks.

Two practical tips. Run onboarding with two providers in parallel rather than serially, so a slow review does not stall the project. And ask each provider what triggers re-review later, such as volume jumps or new corridors, so growth does not surprise your operations team. What verification covers and why is explained in the provider-agnostic terms of our [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## How do pay-ins and payouts differ operationally?

Collecting stablecoins is mostly a reconciliation problem: matching what arrived to who owes what, which is why [virtual accounts](/virtual-accounts) with per-customer account details beat shared wallet addresses for B2B collections. Paying out is mostly a verification problem: local rails reject transfers when the recipient name and tax ID do not match the receiving account, Pix being the strictest example, so payout quality depends on how well the provider validates recipient data before sending. Providers optimized for one direction routinely underperform in the other; weight your evaluation by where your volume actually is.

## Where do these options fall short?

Every provider on the list has a gap. Issuer platforms stop at the dollar leg. EU-licensed gateways thin out outside Europe. US-centric platforms often have no emerging-market rails at all. Payout networks, BlindPay included, do not give you card acquiring or issuer-level mint and redeem. If most of your flow is domestic US ACH between US entities, a stablecoin provider adds a conversion step you may not need. And no provider removes the obligation to understand your own regulatory position, especially if you touch customer funds.

## How should you run a pilot before committing?

Shortlist two providers, then run the same real payment through both within the same week, since FX rates move. A useful pilot has four measurements: the delivered amount for a fixed input (the true price), time from API call to bank credit (the true speed), the number of manual touches required (the true operational cost), and how the provider handled one deliberately imperfect payment, such as a slightly mismatched recipient name (the true failure behavior). The last one matters most in production: providers look identical on the happy path and completely different when a payout needs review, retry, or return. Insist on running the pilot in the corridor you care about, not the provider's best corridor.

## When is BlindPay the right provider?

BlindPay is built for one job done well: a business holds USDC or USDT and needs people paid in local currency, compliantly, through [one API](/global-payments). Payouts go out over Pix, SPEI, ACH, and SWIFT, with wires executed as POBO/COBO transfers carrying UETR tracking codes and MT103 confirmations; [virtual accounts](/virtual-accounts) handle the reverse direction by converting incoming bank transfers into stablecoins. KYC, KYB, sanctions screening, and travel rule handling run inside the flow, and FX is quoted before you commit. Depth is strongest in the Americas: Brazil, Mexico, the US, Argentina, Colombia. If that matches your corridor list, [talk to us](/contact); if you need merchant card checkout or European EMI rails, one of the providers above is the better fit, and the comparison in [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026) goes deeper on each.

## Methodology and sources

Provider positioning summarized from public materials as of August 2026: [circle.com](https://www.circle.com), [bridge.xyz](https://www.bridge.xyz), [bvnk.com](https://www.bvnk.com), [fireblocks.com](https://www.fireblocks.com), [crossmint.com](https://www.crossmint.com), [zerohash.com](https://zerohash.com). Rail behavior from operator documentation, including the [Banco Central do Brasil's Pix overview](https://www.bcb.gov.br/en/financialstability/pix_en). Supply figures from public dashboards such as DeFiLlama.

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

---

Source: https://blindpay.com/resources/more/is-xrp-a-stablecoin

---
title: "Is XRP a stablecoin? No, and here is the difference"
seoTitle: "Is XRP a stablecoin? No, and here is the difference"
description: "XRP is not a stablecoin: its price floats freely with the market. Ripple's actual stablecoin is RLUSD. Here is how the two differ and why it matters."
date: "2026-08-15"
updated: "2026-09-01"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is XRP a stablecoin?"
    a: "No. XRP is a free-floating cryptocurrency whose price moves with supply and demand. A stablecoin is pegged to a fixed value, usually one US dollar, and backed by reserves. XRP has neither a peg nor reserves."
  - q: "What is Ripple's stablecoin?"
    a: "RLUSD (Ripple USD), launched by Ripple in late 2024. It is a dollar-pegged, reserve-backed stablecoin issued under a New York trust charter, and it is a separate asset from XRP."
  - q: "Why do people confuse XRP with stablecoins?"
    a: "Both are marketed for payments and settlement. XRP is used as a bridge asset in some cross-border flows, which sounds similar to how stablecoins are used, but XRP's price can change during the transfer while a stablecoin's cannot."
  - q: "Which is better for payments, XRP or a stablecoin?"
    a: "For holding and moving a known amount of value, stablecoins. Price stability is the property that makes a payment asset predictable; a floating asset adds exchange-rate risk to every minute it is held."
---

No, XRP is not a stablecoin. XRP is a free-floating cryptocurrency: its price is set by market supply and demand and can move sharply in a day. A stablecoin is the opposite by design, pegged to a fixed value (almost always one US dollar) and backed by reserves that make the peg credible. XRP has no peg and no reserves backing a fixed price.

The confusion is understandable, and it spiked when Ripple, the company most associated with XRP, launched an actual stablecoin. As of 2026, XRP remains one of the largest cryptocurrencies by market value according to public trackers like [CoinMarketCap](https://coinmarketcap.com/), while stablecoins as a category exceed 200 billion dollars in circulating supply. They are different tools.

## What is XRP, then?

XRP is the native asset of the XRP Ledger, a blockchain launched in 2012 and designed for fast, cheap transfers. Transactions settle in a few seconds for fractions of a cent. Ripple has long promoted XRP as a bridge asset for cross-border payments: convert currency A into XRP, move it, convert into currency B.

The mechanism works, but it carries a property no treasurer wants: the bridge asset's price floats. Between the moment funds enter XRP and the moment they leave, the amount of value can change. Payments infrastructure exists to remove uncertainty, not add it.

Put numbers on it: XRP has moved more than 10 percent in a single day many times in its history, and double-digit weekly swings are routine in crypto markets. A 100,000 dollar payout bridged through an asset that moves 2 percent during processing is a 2,000 dollar surprise, in either direction. A stablecoin's designed daily move is zero, and its worst recorded deviations (a few cents, for days, during banking crises) are smaller than a floating asset's normal afternoon.

## What makes something a stablecoin?

Three things, all absent in XRP:

- **A peg.** The token targets a fixed value, one US dollar for USDC and USDT.
- **Reserves.** The issuer holds assets (cash, short-term US Treasuries) matching the tokens in circulation.
- **Redemption.** Holders can redeem tokens for the underlying dollars, which is what keeps the market price at the peg.

Our [what is a stablecoin](/resources/more/what-is-a-stablecoin) guide covers the mechanics in depth, and regulation now formalizes these properties: frameworks like MiCA and the US GENIUS Act define payment stablecoins by exactly these requirements (see the [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026)).

## What is RLUSD, Ripple's actual stablecoin?

[RLUSD (Ripple USD)](https://ripple.com/solutions/stablecoin/) is a dollar stablecoin Ripple launched in December 2024, issued under a New York Department of Financial Services trust charter and backed by dollar deposits and US Treasuries. It runs on both the XRP Ledger and Ethereum.

RLUSD is the clearest evidence for this article's answer: if XRP were a stablecoin, Ripple would not have needed to launch one. XRP is the floating network asset; RLUSD is the pegged payment asset. In payments practice, RLUSD is a small newcomer next to USDC and USDT, whose tradeoffs we compare in [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments).

## Why does the difference matter for payments?

Take a real flow: a US business pays a contractor in Brazil.

- **Through a floating asset:** dollars buy XRP, XRP moves, XRP sells for reais. Two market trades, price exposure in between, and unpredictable slippage on size.
- **Through a stablecoin:** dollars become USDC one-to-one, USDC moves, USDC converts to reais at a quoted FX rate and pays out over Pix in seconds. The only variable is the fiat exchange rate, which is quoted upfront, as on our live [USDC to BRL](/usdc-to-brl) page.

Predictability is the product. That is why business payment infrastructure standardized on stablecoins, and why the interesting questions are now about providers and rails rather than bridge assets: our [stablecoin payments guide](/resources/more/stablecoin-payments-guide) covers exactly that ground.

## Do banks and payment companies actually use XRP?

Ripple's enterprise product history is instructive. Its early bank partnerships mostly used Ripple's messaging and settlement software without touching XRP at all. The XRP-based product (on-demand liquidity, since folded into Ripple Payments) found real use in some remittance corridors, but adoption stayed narrow while stablecoin payment volume grew into the trillions per year. By 2024 Ripple itself entered the stablecoin market with RLUSD, and in 2025 pursued a US national bank charter for its stablecoin business.

The market's verdict is visible in that sequence: institutions wanted the always-on settlement rails, but they wanted them denominated in something that does not move. That something turned out to be the fully reserved dollar token, and today the practical infrastructure question is not "which bridge asset" but "which provider and rails", the subject of our [stablecoin API provider comparison](/resources/more/best-stablecoin-apis-2026).

## How does BlindPay fit in?

[BlindPay](/global-payments) is a stablecoin API for global payments: businesses convert USDC and USDT to local fiat over rails like Pix, SPEI, ACH, and wire in 100+ countries, with compliance built in and [flat published pricing](/pricing). No floating bridge assets anywhere in the flow, which is precisely the point.

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

---

Source: https://blindpay.com/resources/more/mica-stablecoin-rules-explained

---
title: "MiCA stablecoin rules explained for payment companies"
seoTitle: "MiCA stablecoin rules explained for payment companies"
description: "What MiCA means if your business uses stablecoins in the EU: EMTs vs ARTs, issuer requirements, why USDC is compliant and USDT was delisted, and a practical checklist."
date: "2026-08-15"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Is USDC MiCA-compliant?"
    a: "Yes. Circle obtained an electronic money institution license in France in 2024 and issues USDC and EURC as MiCA-compliant e-money tokens. As of 2026, USDC is the most widely supported compliant dollar stablecoin in the EU."
  - q: "Can EU businesses still use USDT?"
    a: "Not through regulated channels. Tether did not pursue MiCA authorization, and EU-regulated exchanges delisted USDT for EU customers starting in early 2025. Businesses serving EU users should default to MiCA-compliant tokens like USDC."
  - q: "Does MiCA apply to my company if we only use stablecoins for payouts?"
    a: "Using a compliant stablecoin through a licensed provider does not itself make you an issuer or a crypto-asset service provider. The obligations sit with the issuer and the provider. You are responsible for choosing compliant tokens and licensed partners."
  - q: "What is the difference between an EMT and an ART under MiCA?"
    a: "An e-money token (EMT) references a single fiat currency, like a dollar or euro stablecoin. An asset-referenced token (ART) references a basket of assets. EMTs can only be issued by licensed credit institutions or electronic money institutions, and payment stablecoins are almost always EMTs."
---

MiCA, the EU's Markets in Crypto-Assets regulation (Regulation (EU) 2023/1114), is the single rulebook that decides which stablecoins can circulate in the European Union and who may issue them. Its stablecoin provisions have applied since June 30, 2024. The practical outcome for payment companies is simple: dollar and euro stablecoins in the EU must be e-money tokens issued by licensed institutions, USDC qualifies, USDT does not, and businesses that use compliant tokens through licensed providers carry none of the issuer obligations themselves.

This article explains the parts of MiCA that matter if you pay or get paid with stablecoins. For the wider global picture, see our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## What does MiCA actually regulate?

MiCA covers crypto-assets that were not already regulated under EU financial law. It creates three regimes: one for e-money tokens (EMTs), one for asset-referenced tokens (ARTs), and one for other crypto-assets, plus a licensing regime for crypto-asset service providers (CASPs) such as exchanges and custodians.

The stablecoin rules (Titles III and IV) took effect June 30, 2024. CASP rules followed on December 30, 2024, with national grandfathering periods that ran into 2026 for firms already operating. As of 2026, the transition is essentially over: the EU market runs on authorized issuers and licensed service providers.

## What is the difference between an EMT and an ART?

An e-money token references a single official currency: a dollar stablecoin or a euro stablecoin is an EMT. Under MiCA, only authorized credit institutions and electronic money institutions may issue EMTs, holders get a legal claim to redeem at par at any time, and issuers may not pay interest on holdings.

An asset-referenced token references a basket: multiple currencies, commodities, or crypto-assets. ARTs carry heavier capital, governance, and disclosure requirements and are rare in practice.

For payment flows, the distinction is almost academic: every stablecoin a business would use for payouts or settlement (USDC, EURC, and their peers) is an EMT. The label to look for is whether the issuer holds an EU authorization.

## What must EMT issuers do under MiCA?

The issuer requirements explain why the compliant list is short:

- **Authorization.** The issuer must be a licensed credit institution or electronic money institution in an EU member state.
- **A white paper** notified to the regulator, describing the token, the reserve, and redemption rights.
- **Full reserves** backing every token, segregated from the issuer's own assets, invested conservatively, with strict custody rules.
- **Redemption at par, at any time**, free of charge for holders.
- **No interest** paid on the token, which draws the line between payment instruments and deposit-like products.
- **Significant EMT rules.** Tokens above thresholds for holders, market value, or transaction volume face extra requirements supervised by the European Banking Authority, including transaction-volume monitoring for tokens denominated in non-EU currencies used as a means of exchange.

## Why is USDC available in the EU and USDT not?

Circle became the first major global stablecoin issuer to comply: it obtained an electronic money institution license in France (supervised by the ACPR) on July 1, 2024, and issues both USDC and EURC as MiCA-compliant EMTs. That license passports across all EU member states.

Tether publicly chose not to seek MiCA authorization, criticizing the reserve requirements. The consequence arrived through the service-provider side: CASPs cannot offer non-compliant EMTs to EU customers, so regulated exchanges (Coinbase, Crypto.com, Binance for EEA users, and others) delisted USDT for EU customers between late 2024 and the first quarter of 2025.

The market read the signal. For any product that touches EU users, USDC became the default dollar stablecoin. Our comparison of the two tokens for payment use cases: [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments).

## What does MiCA mean for a business that uses stablecoins?

If your company sends payouts, settles invoices, or holds working balances in stablecoins, MiCA does not turn you into a regulated entity. The obligations attach to issuers and service providers. Your responsibilities are choices:

- **Choose compliant tokens for EU-touching flows.** USDC (and EURC for euro flows) as of 2026. A payout that starts in USDT can still reach an EU-adjacent receiver in local fiat, but the stablecoin leg should not be marketed or offered to EU users.
- **Choose licensed partners.** If a provider custodies stablecoins or converts them for you in the EU, it should hold CASP authorization or operate through appropriately licensed entities. Ask; serious providers publish this. Ours is documented on the [compliance page](/compliance).
- **Mind where your users are.** MiCA applies to tokens offered to persons in the EU. A LatAm payout flow run by a US company is outside its scope, but the same company onboarding EU businesses is not.

## How did the MiCA timeline unfold?

The rollout took three years and explains why 2026 feels settled:

- **June 2023**: MiCA entered into force, starting the clock.
- **June 30, 2024**: Titles III and IV applied; EMT and ART issuance without authorization became unlawful in the EU. Circle's French EMI license landed on July 1, 2024, making USDC the first major compliant dollar stablecoin.
- **Late 2024 to Q1 2025**: CASP rules applied (December 30, 2024) and regulated exchanges completed USDT delistings for EU customers, following ESMA's guidance that non-compliant EMTs should be restricted.
- **Through 2026**: national grandfathering periods for existing CASPs expired member state by member state; the EU market now runs end to end on authorized firms.

The lesson for payment companies watching other jurisdictions (Brazil's VASP transition, GENIUS Act rulemaking in the US): the binding date is rarely the law's publication, it is the moment service providers must drop non-compliant tokens. Distribution, not issuance, is where enforcement bites.

## Who enforces MiCA?

Supervision is layered. National competent authorities (the AMF and ACPR in France, BaFin in Germany, and their peers) license issuers and CASPs and police conduct in their markets. The European Banking Authority (EBA) takes direct supervision of significant EMTs and ARTs, the tokens large enough to matter for financial stability, and the European Securities and Markets Authority (ESMA) coordinates the CASP side and keeps the public registers of authorized firms.

Enforcement so far has been structural rather than punitive: the effective sanction for a non-compliant token is exclusion from regulated distribution, as the USDT delistings showed. For a payment business, the practical check is not reading enforcement actions, it is checking the registers: an issuer should appear as an authorized EMI or credit institution, and an exchange or custodian should appear in ESMA's CASP register. If a partner is on neither list and claims EU coverage, that is the red flag.

## What about euro stablecoins?

MiCA did for the euro what no market force had: it created a regulated euro stablecoin category. EURC (Circle) and a handful of bank-issued euro EMTs now circulate, and EU merchants and platforms increasingly quote in them for on-chain settlement. Volumes remain a fraction of dollar tokens, but for EU-domestic flows a euro EMT avoids FX entirely: a payout that starts and ends in euros has no reason to route through a dollar. Significant-EMT rules also cap how far a non-euro (that is, dollar) token can go as a day-to-day means of exchange inside the EU, a deliberate nudge toward euro-denominated tokens for domestic European payments.

## What is the practical checklist?

For a payment company reviewing MiCA exposure in 2026:

1. Inventory which stablecoins your flows touch and which user geographies can hold them.
2. Default EU-facing flows to MiCA-compliant EMTs (USDC, EURC).
3. Verify your providers' licensing: EMI or credit institution status for issuers, CASP status for exchanges and custodians.
4. Check redemption terms: compliant tokens redeem at par, always, free.
5. Document the above; MiCA compliance questions now appear in enterprise procurement and bank due diligence.

## How BlindPay fits in

BlindPay is a stablecoin API for [global payments](/global-payments): businesses send USDC or USDT and receivers get local currency over Pix, SPEI, ACH, or wire in [100+ countries](/docs/kb/supported-countries), with KYC, sanctions screening, and travel rule handling built into the flow. USDC, the EU-compliant token, is a first-class asset across the platform, including [virtual accounts](/virtual-accounts) that convert incoming bank transfers to USDC automatically. Regulatory questions about a specific corridor are the kind of thing worth a [conversation](/contact).

Primary sources: the MiCA text on [EUR-Lex](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023R1114), ESMA's [MiCA hub](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica), and the EBA's guidance on ARTs and EMTs ([eba.europa.eu](https://www.eba.europa.eu/regulation-and-policy/markets-crypto-assets-mica)). Status described as of August 2026.

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

---

Source: https://blindpay.com/resources/more/psav-brazil-explained

---
title: "PSAV in Brazil: the Central Bank's virtual asset license explained"
seoTitle: "PSAV in Brazil: the Central Bank's virtual asset license explained"
description: "PSAV is Brazil's authorization for virtual asset service providers, created by BCB Resolutions 519, 520, and 521 under Law 14.478/2022. What it requires and who needs it."
date: "2026-08-15"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What does PSAV stand for?"
    a: "Prestadora de Serviços de Ativos Virtuais, provider of virtual asset services. The Central Bank's resolutions use the corporate form SPSAV, Sociedade Prestadora de Serviços de Ativos Virtuais, for the authorized entity. Both refer to the same regime."
  - q: "Who needs a PSAV authorization in Brazil?"
    a: "Any company providing virtual asset services to people or businesses in Brazil: exchanging crypto for reais, transferring virtual assets, custodying them, or intermediating those services. This includes stablecoin on-ramps and off-ramps."
  - q: "When did Brazil's PSAV rules take effect?"
    a: "The Central Bank published Resolutions 519, 520, and 521 on November 10, 2025, effective February 2, 2026. Companies already operating got a transitional window under Article 88 of Resolution 520 to apply for authorization while continuing to operate."
  - q: "Is BlindPay authorized to operate in Brazil?"
    a: "BlindPay's Brazilian operating entity is a Sociedade Prestadora de Serviços de Ativos Virtuais completing the adaptation process required by Resolution 520/2025, and operates under the transitional regime of Article 88. Details are on the licenses page."
---

PSAV (Prestadora de Serviços de Ativos Virtuais) is Brazil's regulatory regime for companies that provide virtual asset services: exchanging, transferring, custodying, or intermediating crypto and stablecoins for Brazilian customers. The Banco Central do Brasil created the authorization framework in Resolutions 519, 520, and 521, published November 10, 2025 and effective February 2, 2026, under the legal foundation of Law 14.478/2022. Since that date, providing these services in Brazil without authorization or a transitional-regime position is illegal.

Brazil is not a side market for this regime. It is one of the largest stablecoin markets in the world, and Pix, the Central Bank's instant payment system used by over 150 million people, is where most stablecoin conversions land. The PSAV rules are the Central Bank taking direct supervision of the companies connecting those two worlds.

## What is a PSAV?

A PSAV is a company authorized by the Banco Central do Brasil to provide virtual asset services. The resolutions define the authorized corporate form as an SPSAV, a Sociedade Prestadora de Serviços de Ativos Virtuais: a Brazilian legal entity whose corporate purpose is virtual asset services and which meets the Central Bank's requirements for capital, governance, and compliance. In practice the terms PSAV and SPSAV describe the same regime from two angles: the activity and the entity that performs it.

The covered services follow the FATF definition of a virtual asset service provider (VASP): exchange between virtual assets and fiat currency, exchange between virtual assets, transfer of virtual assets, custody or administration of virtual assets, and participation in financial services related to an issuer's offer or sale of a virtual asset. A stablecoin off-ramp that converts USDC into reais over Pix sits squarely inside the first category. How those conversions work route by route is covered in [USDC to BRL in 2026](/resources/more/usdc-to-brl-routes-2026).

## Which rules make up the regime?

Three resolutions, one law, as of 2026:

- **Law 14.478/2022** created the legal framework for virtual asset services in Brazil and assigned supervision to the Banco Central do Brasil.
- **Resolution 519/2025** defines the regulated activities and classifies virtual asset services within the national financial system.
- **Resolution 520/2025** is the authorization rulebook: entity form, minimum capital, governance, fit-and-proper requirements for controllers and officers, and the application process. Its Article 88 created the transitional regime for companies already operating.
- **Resolution 521/2025** sets the ongoing conduct rules: AML/CFT obligations, customer asset segregation, reporting, and operational requirements.

Together they moved Brazil from a market where crypto companies operated under general law to one where the Central Bank licenses and supervises them the way it supervises payment institutions. The broader global picture, including MiCA and the GENIUS Act, is in the [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## Who needs the authorization?

Any company serving Brazilian residents with virtual asset services, whether from inside Brazil or offshore. The regime deliberately closes the offshore loophole: targeting the Brazilian market triggers the requirement regardless of where the servers or the corporate entity sit. Foreign exchanges and stablecoin infrastructure companies serving Brazil face the same choice as local ones: incorporate an SPSAV and apply, or exit the market.

Two groups matter for the transition. Companies that started operating before the regime took effect could invoke Article 88 of Resolution 520: they file for authorization within the transitional window and continue operating legally while the Central Bank processes the application. Companies that were not operating before the cutoff must obtain authorization first and operate second. The Central Bank has shown it will enforce the boundary; it has moved against institutions running virtual asset operations outside the permitted structure.

## What does a PSAV have to do in practice?

The obligations look like what Brazil already requires of payment institutions, adapted to virtual assets:

- **Corporate substance.** A Brazilian entity (the SPSAV) with the required minimum capital, local governance, and named responsible officers who pass fit-and-proper review.
- **AML/CFT program.** Customer identification (CPF/CNPJ), transaction monitoring, sanctions screening, suspicious activity reporting to COAF, and travel rule data handling on transfers.
- **Asset segregation.** Customer virtual assets separated from the company's own, with controls the Central Bank can examine.
- **Reporting and transparency.** Periodic regulatory reporting, incident notification, and cooperation with Central Bank supervision.
- **Tax reporting.** Alongside the BCB regime, Receita Federal expanded crypto transaction reporting through Normative Instruction 2,291/2025.

For a business using a provider rather than becoming one, the checklist inverts: you do not need your own PSAV authorization to pay contractors in Brazil through an authorized provider. You need your provider to have one, or to be lawfully inside the transitional regime, because that is what makes the reais leg of your payout legal, supervised, and recoverable if something breaks.

## How does this affect stablecoin payouts to Brazil?

Concretely, three things changed for cross-border money movement in 2026:

1. **Provider due diligence became a compliance requirement, not a preference.** If your payout provider's Brazil leg runs through an unauthorized intermediary, your payments inherit that risk. Ask any provider for its SPSAV entity, CNPJ, and regime status; a serious one publishes them.
2. **Receiver verification got stricter rails.** Pix already rejects transfers where the beneficiary name and CPF/CNPJ do not match the receiving account, and PSAV-regulated providers must run KYC and sanctions screening on receivers before converting. The full picture of what providers verify is in [stablecoin payments explained](/resources/more/stablecoin-payments-guide).
3. **The market cleaned up.** Offshore providers without a Brazilian entity are exiting or restructuring, which concentrates volume in authorized providers and makes the "which provider" question, covered in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026), largely a regulatory question in Brazil.

## How does BlindPay operate under the PSAV regime?

BlindPay's Brazilian operating entity is BLIND PAY SOCIEDADE PRESTADORA DE SERVIÇOS DE ATIVOS VIRTUAIS LTDA, a dedicated SPSAV. The company is completing the regulatory adaptation process required by Central Bank Resolution 520/2025 and operates under the transitional regime set forth in Article 88 of that Resolution, which authorizes continued operation while the application is processed. Entity details, CNPJ numbers, and the full registration picture across markets are published on the [licenses page](/licenses), and our [compliance page](/compliance) describes the program that runs on top: KYC and KYB, sanctions screening, and travel rule handling on every [USDC or USDT to BRL](/usdc-to-brl) payout.

## Methodology and sources

Regulatory facts from primary sources as of August 2026: Law 14.478/2022 ([planalto.gov.br](https://www.planalto.gov.br/ccivil_03/_ato2019-2022/2022/lei/L14478.htm)), Banco Central do Brasil Resolutions 519, 520, and 521 of November 10, 2025 ([bcb.gov.br](https://www.bcb.gov.br)), the BCB's Pix documentation ([bcb.gov.br/en/financialstability/pix_en](https://www.bcb.gov.br/en/financialstability/pix_en)), and Receita Federal Normative Instruction 2,291/2025. BlindPay entity and status details from the published [licenses page](/licenses).

*This article is general information, not legal, tax, or financial advice. Businesses operating in or serving Brazil should consult Brazilian counsel on their specific regulatory position.*

---

Source: https://blindpay.com/resources/more/stablecoin-payments-guide

---
title: "Stablecoin payments explained: a guide for businesses"
seoTitle: "Stablecoin payments explained: a guide for businesses"
description: "Stablecoin payments move dollar-pegged tokens between parties and settle in minutes, 24/7. How they work, what they cost, and how businesses accept and send them."
date: "2026-08-15"
updated: "2026-09-01"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin payment?"
    a: "A stablecoin payment is a transfer of a dollar-pegged digital token, such as USDC or USDT, from one party to another over a blockchain. It settles in seconds to minutes at any hour, and providers can convert either end to regular bank money."
  - q: "Do customers need a crypto wallet to make stablecoin payments?"
    a: "No. With virtual accounts and hosted checkout flows, the payer sends a normal bank transfer and the provider converts it to stablecoins behind the scenes. Wallets are only needed when a party wants to hold the tokens directly."
  - q: "How fast are stablecoin payments?"
    a: "The blockchain transfer itself settles in seconds to minutes. End to end, a cross-border payment that includes conversion to local currency usually completes in minutes when the destination rail is instant, such as Pix in Brazil, or within a business day over ACH."
  - q: "Are stablecoin payments reversible?"
    a: "On-chain transfers are final, with no chargeback mechanism. Businesses get finality and lower dispute costs, and in return they need accurate recipient verification before sending, which is why compliance checks run before money moves."
---

Stablecoin payments are transfers of dollar-pegged digital tokens, most commonly USDC and USDT, that settle on a blockchain in seconds to minutes, at any hour, in any country. Businesses use them to move money across borders without correspondent banks, and modern providers convert either end to ordinary bank money, so neither the payer nor the recipient has to touch crypto.

The scale is no longer niche: circulating stablecoin supply exceeds 200 billion dollars according to public trackers such as [DeFiLlama](https://defillama.com/stablecoins), and annual on-chain settlement runs into the trillions. Visa, Stripe, and the largest banks all ship stablecoin products. This guide covers what stablecoin payments are, how they work end to end, what they cost, and how a business starts accepting or sending them.

## What are stablecoin payments?

A stablecoin is a digital token engineered to hold a fixed value, almost always one US dollar, backed by reserves of cash and short-term US Treasuries (the full mechanics are in [what is a stablecoin](/resources/more/what-is-a-stablecoin)). A stablecoin payment is simply a transfer of those tokens between two parties, recorded on a public blockchain.

What makes it a payment method rather than a crypto trade is the fiat edge on each side. A provider converts the sender's local currency into stablecoins, moves them, and converts back to the recipient's local currency. The token in the middle provides the speed, reach, and programmability; the edges keep both parties in the banking system they already use.

## How do stablecoin payments work end to end?

A typical cross-border business payment has three legs:

1. **Funding.** The business either holds stablecoins in its own wallet or funds the payment with fiat that the provider converts. [Virtual accounts](/virtual-accounts) automate this: incoming bank transfers arrive as stablecoins.
2. **Transfer.** The tokens move on a blockchain network such as Base, Polygon, or Solana. This leg settles in seconds to minutes and costs cents.
3. **Payout.** The provider converts the tokens at a quoted FX rate and delivers local currency over a domestic rail: [Pix](https://www.bcb.gov.br/en/financialstability/pix_en) in Brazil, SPEI in Mexico, ACH or wire in the US.

The recipient sees a normal bank credit. The sender sees an API call and a webhook. Corridor pages like [USDC to BRL](/usdc-to-brl) show the live quoted rate for the full path.

## How do businesses accept stablecoin payments?

Three patterns cover most cases. First, **direct wallet acceptance**: the business publishes a wallet address and receives tokens, simplest but leaves custody and compliance to you. Second, **hosted checkout via a gateway**: the customer pays from their wallet and the provider settles fiat or stablecoins to you, the right pattern for merchant-style flows. Third, **virtual accounts**: the payer sends a regular bank transfer to account details in your name, and it lands as USDC, which suits invoicing and B2B collections where the payer has no wallet at all.

Which pattern fits depends on who your payers are. Crypto-native customers can pay a wallet address today; mainstream businesses paying invoices need virtual accounts so nothing changes on their side; consumer checkout needs a hosted gateway. The provider types behind each pattern are compared in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026), and most companies start with exactly one pattern rather than all three.

## What do businesses actually use stablecoin payments for?

The workloads that moved first share one shape: money leaving a strong-currency business and arriving in another country's banking system.

- **Contractor and payroll payouts.** A US or European company pays engineers and creators in Brazil, Mexico, or Argentina; funds arrive over Pix or SPEI in minutes instead of wire days, and each payout is one API call.
- **Marketplace and platform disbursements.** Platforms with sellers in many countries replace a patchwork of local banking partners with a single payout integration.
- **B2B supplier payments.** Importers settle invoices with exporters without prefunding accounts in the destination country.
- **Treasury.** Companies in volatile-currency markets hold working balances in digital dollars and convert to local currency on the day they spend, rather than the day they invoice.

If your use case matches one of these, the corridor pages, such as [USDC to BRL](/usdc-to-brl), show what the specific route costs today.

## How much do stablecoin payments cost?

Three cost components, in descending order of importance:

- **FX spread**: the gap between the mid-market rate and the rate you are quoted when converting to or from local currency. On non-USD corridors this is usually the largest cost, and the least visible.
- **Provider fee**: a percentage per conversion, a flat fee per payout, or both. BlindPay publishes its numbers on the [pricing page](/pricing).
- **Network fee**: cents per transfer on modern chains; rounding error at business volumes.

Compare providers on the amount delivered for a fixed input, not on the advertised fee. Against the traditional alternative, the difference is structural: an international wire routes through correspondent banks that each take fees over 1 to 5 business days, while a stablecoin path collapses that to one conversion step and minutes of settlement.

## How do stablecoin payments compare with wires and cards?

Against an international wire, the stablecoin path wins on speed (minutes versus 1 to 5 business days), availability (24/7 versus banking hours), and fee structure (one conversion step versus a chain of correspondent bank deductions that can leave the recipient short an unpredictable amount). The wire keeps an edge in one place: universal acceptance at any bank in the world with no provider in the middle.

Against cards, the comparison is really about direction. Cards excel at consumer pay-in, with familiar checkout and chargeback protection for the buyer. Stablecoins excel at business payout and B2B settlement, where card rails barely exist, and their finality becomes a feature: no dispute window, no rolling reserve. Many businesses end up with both: cards collect from consumers, stablecoins pay out to suppliers and contractors. The provider types that serve each direction are mapped in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026).

## Are stablecoin payments legal and regulated?

Yes, in most major markets, and the rules matured fast. The US GENIUS Act established a federal framework for payment stablecoin issuers. Europe's MiCA regulation governs issuance and service providers across the EU. Brazil's central bank brought virtual asset service providers under supervision with Resolutions 519, 520, and 521, effective February 2026. Japan regulates fiat-backed stablecoins under its Payment Services Act.

> President Trump and Congress delivered the GENIUS Act, establishing a landmark framework and clear rules of the road for payment stablecoins, and Treasury is moving quickly to implement that framework.
>
> Scott Bessent, US Treasury Secretary, in the [Treasury press release on the GENIUS Act rulemaking](https://home.treasury.gov/news/press-releases/sb0605)

For a business, the practical consequence is that regulated providers carry the licensing and run KYC, KYB, and sanctions screening before money moves. Expect to verify your entity once at onboarding and to provide accurate recipient details per payment. The per-regime detail lives in our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## What are the benefits and the trade-offs?

The benefits: settlement in minutes instead of days, 24/7 availability including weekends, reach into 100+ countries without local entities, finality with no chargebacks, and programmability, since every payment is an API call that can be automated. Treasury teams also gain a dollar-denominated working balance in markets with volatile local currencies.

The trade-offs are real too. Finality means errors cannot be clawed back, so recipient verification matters more than with cards. FX spread quality varies widely between providers. Accounting and tax treatment of token balances still needs a competent adviser in some jurisdictions. And acceptance is business-to-business first: paying a US landlord in stablecoins remains unusual, while paying a contractor in São Paulo is now routine.

## How does BlindPay handle stablecoin payments?

BlindPay is a [stablecoin API for global payments](/global-payments): one integration that turns USDC or USDT into local currency over Pix, SPEI, ACH, and SWIFT (POBO/COBO wires with UETR tracking and MT103 confirmations), and turns incoming bank transfers into stablecoins through virtual accounts. FX is quoted before you commit, compliance checks run inside the flow, and coverage is deepest across the Americas. The provider field, including where competitors fit better, is compared honestly in [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026).

## How do you get started?

Start with one corridor and one direction. Pick the country pair with the most pain, request delivered-amount quotes from two or three providers, run a small live payment, and compare what actually arrived. Check corridor coverage on the [coverage page](/docs/kb/supported-countries), or [talk to us](/contact) to run that first test payment against a live quote.

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

---

Source: https://blindpay.com/resources/more/stablecoin-regulation-tracker-2026

---
title: "Stablecoin regulation in 2026: MiCA, the GENIUS Act, Brazil, and Japan"
seoTitle: "Stablecoin regulation in 2026: MiCA, the GENIUS Act, Brazil, and Japan"
description: "Where stablecoin regulation stands in 2026: MiCA in the EU, the GENIUS Act in the US, Brazil's VASP regime, and Japan's issuer rules, compared for payment businesses."
date: "2026-08-15"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "Is it legal for businesses to use stablecoins for payments?"
    a: "Yes, in most major markets, provided the business or its provider complies with local rules. The EU regulates stablecoins under MiCA, the US under the GENIUS Act and money transmission laws, Brazil under Law 14.478/2022 and BCB resolutions, and Japan under the revised Payment Services Act. What matters is who issues the stablecoin and who handles the conversion to fiat."
  - q: "Which stablecoins are compliant in the EU under MiCA?"
    a: "As of 2026, USDC is available in the EU because Circle obtained an electronic money institution license in France and issues USDC as a MiCA-compliant e-money token. USDT has been delisted from most EU-regulated exchanges because Tether did not pursue MiCA authorization."
  - q: "What is the GENIUS Act in simple terms?"
    a: "The GENIUS Act is the first US federal law dedicated to payment stablecoins. It requires issuers to hold 1:1 reserves in cash and short-term Treasuries, to be licensed at the federal or state level, and to publish regular reserve disclosures. It gives US businesses a clear legal footing for using regulated dollar stablecoins."
  - q: "Do I need my own license to send stablecoin payouts?"
    a: "Usually not. If you build on a licensed provider, the provider carries the regulatory obligations: registration, custody arrangements, KYC, sanctions screening, and travel rule compliance. You are still responsible for giving the provider accurate customer and payment information."
---

Stablecoin regulation stopped being a gray zone. As of 2026, the four markets that matter most to cross-border payment businesses all have dedicated rules in force: the EU's Markets in Crypto-Assets regulation (MiCA), the US GENIUS Act, Brazil's virtual asset framework under Law 14.478/2022 and Central Bank Resolutions 519, 520, and 521, and Japan's revised Payment Services Act. The direction is the same everywhere: fully reserved, licensed, auditable digital dollars (and euros, and yen) are welcome; everything else is being pushed out of the regulated system.

This tracker summarizes each regime and what it means in practice for businesses that pay or get paid with stablecoins. For the basics of how these payments work, start with our [guide to stablecoin payments](/resources/more/stablecoin-payments-guide).

## What does MiCA require of stablecoin issuers?

MiCA (Regulation (EU) 2023/1114) is the EU's single rulebook for crypto-assets. Its stablecoin provisions have applied since June 30, 2024, and full application for crypto-asset service providers began at the end of 2024, with national transition periods running through 2026.

MiCA splits stablecoins into two categories. E-money tokens (EMTs) reference a single fiat currency and can only be issued by licensed credit institutions or electronic money institutions. Asset-referenced tokens (ARTs) reference baskets of assets and carry heavier requirements. For payment businesses, EMTs are the category that matters: a dollar or euro stablecoin used for payouts is an EMT.

The practical consequences showed up fast. Circle obtained an electronic money institution license in France and issues USDC and EURC as MiCA-compliant EMTs. Tether chose not to pursue authorization, and USDT was delisted from most EU-regulated exchanges. If your business touches EU customers or EU rails, your stablecoin choice is effectively made for you. Our [MiCA explainer for payment companies](/resources/more/mica-stablecoin-rules-explained) covers the details.

## What is the GENIUS Act?

The GENIUS Act (Guiding and Establishing National Innovation for US Stablecoins Act), signed in July 2025, is the first US federal law dedicated to payment stablecoins. Before it, US stablecoin issuers operated under a patchwork of state money transmitter licenses and trust charters.

The core requirements: payment stablecoin issuers must hold reserves 1:1 in cash, insured deposits, and short-term US Treasuries; they must be licensed either federally or under a qualifying state regime; they must publish monthly reserve disclosures; and they face restrictions on paying interest to holders. Issuers of a certain size fall under federal supervision.

For payment businesses, the GENIUS Act removed the biggest US legal question: whether regulated companies could rely on stablecoins at all. The answer is now yes, provided the stablecoin comes from a licensed issuer. It also accelerated bank and fintech adoption; Reuters reported stablecoin circulation passing 250 billion dollars in 2025, with regulated issuers taking a growing share.

## How does Brazil regulate stablecoins and VASPs?

Brazil moved earlier than most. Law 14.478/2022 created the legal framework for virtual asset service providers (VASPs) and assigned supervision to the Banco Central do Brasil (BCB). In November 2025 the BCB published Resolutions 519, 520, and 521, which took effect on February 2, 2026, and created the SPSAV regime: companies providing virtual asset services in Brazil must obtain authorization, with a transition window under Article 88 of Resolution 520 for companies already operating.

Two things make Brazil special for stablecoin payments. First, Pix: the BCB's instant payment system settles transfers in seconds, 24/7, and is the default way Brazilians move money. A stablecoin payout that ends in Pix reaches the receiver faster than an international wire by days. Second, enforcement is practical: Pix payouts require the receiver's name and tax ID (CPF or CNPJ) to match the receiving account, so accurate beneficiary data is a hard requirement, not a nice-to-have.

The authorization regime itself, who needs it, and what it requires are covered in [PSAV in Brazil explained](/resources/more/psav-brazil-explained), and we compare the concrete cash-out options, fees, and rules in [USDC to BRL in 2026: routes, fees, and rules compared](/resources/more/usdc-to-brl-routes-2026).

## What are Japan's stablecoin rules?

Japan regulated stablecoins before either the EU or the US. The revised Payment Services Act, in force since June 2023, treats fiat-pegged stablecoins as electronic payment instruments. Only licensed banks, registered money transfer agents, and trust companies may issue them, and issuers must guarantee redemption at face value. Distribution requires registration as an electronic payment instruments service provider with the Financial Services Agency (FSA).

The first yen-denominated stablecoins under this regime launched in 2025, and Japan continues to refine the framework, with the FSA studying reserve flexibility and intermediary rules. For global payment businesses, Japan matters less for day-to-day payouts than the EU, US, or Brazil, but it shows where regulation converges: licensed issuers, full reserves, guaranteed redemption.

## How do the four regimes compare?

| Regime | In force | Who may issue | Reserve rule | Supervisor |
|---|---|---|---|---|
| MiCA (EU) | Stablecoin titles since June 2024 | Credit institutions, licensed EMIs | Full backing, segregated, redemption at par | National regulators, EBA for significant tokens |
| GENIUS Act (US) | Signed July 2025 | Federally or state-licensed payment stablecoin issuers | 1:1 in cash, insured deposits, short-term Treasuries; monthly disclosure | OCC and state regulators |
| Brazil (Law 14.478 + BCB 519/520/521) | VASP regime effective February 2026 | Issuance and services by authorized SPSAVs | Governance and segregation duties under BCB rules | Banco Central do Brasil |
| Japan (Payment Services Act) | Revised rules since June 2023 | Banks, money transfer agents, trust companies | Redemption at face value guaranteed | Financial Services Agency |

Differences remain in the details (interest bans, disclosure cadence, licensing paths), but the convergence is unmistakable. A stablecoin that is fully reserved, redeemable at par, and issued by a licensed institution clears the bar everywhere; anything else faces shrinking room.

## Where is regulation still unsettled?

Three open fronts worth tracking through the rest of 2026:

- **Interest and yield.** The GENIUS Act bars issuers from paying interest on payment stablecoins, and MiCA does the same for EMTs. Yield-bearing wrappers and tokenized money market funds sit outside these definitions, and regulators on both sides of the Atlantic are still deciding how to treat them when they behave like payment balances.
- **Foreign-issuer access.** Both the EU and the US are refining how offshore issuers reach their markets: MiCA through equivalence-style conditions on non-EU EMTs, the US through GENIUS Act rules on foreign payment stablecoin issuers. Where these land will decide how global a single token's distribution can be.
- **Brazil's transition window.** Companies operating before Resolutions 519/520/521 have Article 88 transition status while their SPSAV authorizations process. Expect the authorized list to firm up through 2026 and diligence questions to shift from "are you applying?" to "are you authorized?".

None of these change the direction. They change who is allowed to distribute, and how fast.

## What should payment businesses do about it?

The pattern across all four regimes is consistent, and it points to a short checklist:

- **Use stablecoins from regulated issuers.** USDC and other licensed EMT/GENIUS-compliant tokens are accepted across all four regimes. Unregulated tokens increasingly are not.
- **Let a licensed provider carry the regulatory load.** Payout providers that hold the required registrations (money transmission in the US, VASP authorization in Brazil, CASP status in the EU) take on custody, KYC, sanctions screening, and travel rule obligations. Building this yourself means acquiring licenses market by market.
- **Get beneficiary data right.** Brazil's name and tax ID matching is the strictest example, but every regime requires accurate sender and receiver information under travel rule requirements. Thresholds and data formats by market are in our [cross-border compliance guide](/resources/more/compliance-agents-cross-border-stablecoin-payments).
- **Watch reserve and redemption terms.** Regulation now guarantees that a compliant stablecoin redeems 1:1. If a token's terms do not say that plainly, it does not belong in a payment flow.

Compliance is becoming the differentiator between providers, not an afterthought. Our own [compliance framework](/compliance) documents how we approach it.

## How BlindPay handles regulation for you

BlindPay is a stablecoin API for global payments: businesses send USDC or USDT and receivers get local currency over Pix, SPEI, ACH, or wire, in [100+ countries](/docs/kb/supported-countries). The regulatory work is built into the flow: KYC and KYB on receivers before money moves, sanctions screening, travel rule data handling, and local rail requirements like Brazil's name and tax ID matching. [Virtual accounts](/virtual-accounts) extend the same model to collections, converting incoming bank transfers to stablecoins automatically. Pricing is public on the [pricing page](/pricing), and the team can walk through specific regulatory questions via [contact](/contact).

## Methodology and sources

Regime details from primary sources: MiCA text, Regulation (EU) 2023/1114 ([eur-lex.europa.eu](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32023R1114)) and ESMA's MiCA hub ([esma.europa.eu](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica)); the GENIUS Act, S.1582, 119th Congress ([congress.gov](https://www.congress.gov/bill/119th-congress/senate-bill/1582)); Brazil's Law 14.478/2022 and BCB Resolutions 519, 520, and 521 plus the Pix system description ([bcb.gov.br](https://www.bcb.gov.br/en/financialstability/pix_en)); Japan's Payment Services Act framework via the Financial Services Agency ([fsa.go.jp](https://www.fsa.go.jp/en/)). Regulatory status described as of August 2026.

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

---

Source: https://blindpay.com/resources/more/usdc-to-brl-routes-2026

---
title: "USDC to BRL in 2026: routes, fees, and rules compared"
seoTitle: "USDC to BRL in 2026: routes, fees, and rules compared"
description: "Four ways to convert USDC to Brazilian reais in 2026: stablecoin payout APIs, local exchanges, P2P, and global exchanges with Pix. Fees, speed, KYC, and Brazil's VASP rules compared."
date: "2026-08-15"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the cheapest way to convert USDC to BRL?"
    a: "For businesses paying many receivers, a stablecoin payout API is typically cheapest in total cost because it removes manual work, spread stacking, and failed-payment overhead. For individuals, Brazilian exchanges are usually cheapest, with trading fees around 0.1 to 0.5 percent plus a small Pix withdrawal cost."
  - q: "How fast does a USDC to BRL conversion arrive?"
    a: "Over Pix, minutes. Pix settles in seconds once reais leave the sending institution, so end-to-end time is dominated by the conversion step: typically a few minutes on exchanges and payout APIs."
  - q: "Is converting USDC to BRL legal in Brazil?"
    a: "Yes. Brazil regulates virtual asset services under Law 14.478/2022, and the Central Bank's Resolutions 519, 520, and 521 (effective February 2026) created an authorization regime for providers. Individuals also owe tax on crypto gains under Receita Federal rules."
  - q: "Why do Pix payouts get rejected?"
    a: "The most common reason is a mismatch between the receiver's name or tax ID (CPF or CNPJ) and the receiving account. Brazilian institutions verify both before crediting, so accurate beneficiary data is a hard requirement."
---

There are four practical routes from USDC to Brazilian reais in 2026: send through a stablecoin payout API that delivers Pix directly, sell on a Brazilian exchange and withdraw over Pix, trade peer-to-peer, or use a global exchange with a BRL/Pix ramp. They differ on fees, speed, KYC, and who carries the regulatory burden, and the right one depends on whether you are an individual cashing out or a business paying people at scale. You can see the live USDC to BRL rate on our [corridor page](/usdc-to-brl).

The backdrop matters: Pix, the instant payment system run by the Banco Central do Brasil, settles transfers in seconds, 24/7, and is used by over 150 million Brazilians. Every serious USDC-to-BRL route ends in a Pix transfer. And since February 2, 2026, providers of virtual asset services in Brazil operate under the Central Bank's authorization regime (Resolutions 519, 520, and 521), so the compliant options are clearly marked.

## What are the four routes from USDC to BRL?

**Route 1: Stablecoin payout API.** A business sends USDC through an API; the provider converts at a quoted rate and delivers reais via Pix to the receiver's account, after verifying the receiver's identity. One integration replaces the per-transfer manual work of the other three routes. This is the route built for payroll, contractor payments, and marketplace payouts. How this model works in general: [stablecoin payments explained](/resources/more/stablecoin-payments-guide).

**Route 2: Brazilian exchange off-ramp.** Send USDC to a local exchange, sell for BRL, withdraw via Pix. Trading fees typically run 0.1 to 0.5 percent, plus network and withdrawal costs. Full KYC (CPF or CNPJ) is required. Best for individuals and small volumes; the drawbacks are manual work per conversion and per-account limits.

**Route 3: P2P marketplaces.** Trade USDC directly with a counterparty who sends you Pix. Spreads can be competitive and limits flexible, but counterparty risk is real, quality varies, and business use is impractical: no receipts, no compliance trail, no scale.

**Route 4: Global exchange with a BRL/Pix ramp.** Some global exchanges support BRL deposits and withdrawals over Pix. Useful if your assets already sit there; fees stack (trading plus conversion plus withdrawal) and BRL pairs get thinner liquidity than local venues.

## How do the routes compare?

| Route | Speed (end to end) | Typical cost | KYC | Best for |
|---|---|---|---|---|
| Payout API | Minutes | Quoted FX rate + provider fee | Provider-run, per receiver | Businesses paying at scale |
| Brazilian exchange | Minutes to hours | 0.1-0.5% trade + withdrawal | Full, per account | Individuals, occasional cash-out |
| P2P marketplace | Minutes to hours | Spread-dependent | Varies by venue | Small amounts, no business trail |
| Global exchange + Pix | Minutes to hours | Stacked (trade + FX + withdrawal) | Full, per account | Funds already on the exchange |

Compare total amount received, not the headline fee: a low fee over a poor rate loses to a fair rate with a visible fee. Provider pricing models are compared in [best stablecoin payment providers in 2026](/resources/more/best-stablecoin-payment-providers-2026).

## What are Brazil's rules for USDC to BRL in 2026?

Three layers, as of 2026:

- **Law 14.478/2022** established the legal framework for virtual asset service providers and made the Banco Central do Brasil the supervisor.
- **BCB Resolutions 519, 520, and 521**, published November 10, 2025 and effective February 2, 2026, created the SPSAV authorization regime. Companies providing virtual asset services to Brazilians must be authorized, with a transition window under Article 88 of Resolution 520 for firms already operating. The full regime is explained in [PSAV in Brazil](/resources/more/psav-brazil-explained).
- **Tax**: Receita Federal rules tax crypto disposals; reporting obligations were expanded by Normative Instruction 2,291/2025. Individuals and companies converting USDC to BRL should track cost basis and report accordingly.

One operational rule dominates day-to-day payouts: Pix transfers verify the receiver. The beneficiary's name and tax ID (CPF or CNPJ) must match the receiving account or the transfer is rejected. Mismatched beneficiary data is the top cause of failed Brazil payouts on any route.

## Which route fits which business?

- **Freelancer receiving USDC occasionally**: a Brazilian exchange account is enough. Watch the spread and keep records for tax.
- **Company paying 1 or 2 Brazilian contractors**: an exchange works but does not scale; every payment is manual and the compliance trail is yours to build.
- **Company paying tens to thousands of receivers** (payroll, marketplaces, remittance products): a payout API is the only route that scales. Receiver KYC, sanctions screening, name/tax ID matching, and delivery over Pix happen inside one API call.
- **Treasury converting its own balance**: an exchange or OTC desk for large one-off conversions; an API with [virtual accounts](/virtual-accounts) if conversions recur as part of a product flow.

## Which network should you send USDC on?

USDC is issued natively on multiple blockchains, and the network choice affects cost and settlement time on every route. Ethereum mainnet carries the deepest liquidity but the highest fees, often dollars per transfer at busy times. Base, Polygon, Arbitrum, and Solana move the same USDC for cents and settle in seconds to minutes. Two practical rules:

- **Match the destination's supported networks.** A Brazilian exchange that only credits Ethereum-based USDC will not see a Solana transfer; funds sent on an unsupported network are painful or impossible to recover. Check the deposit page or API documentation before sending.
- **Prefer a cheap network your counterparty supports.** For payout APIs this is usually a non-issue: the provider accepts several networks and quotes the same BRL amount regardless.

The token is worth one dollar on every chain; only the transport differs. More on how the token itself works: [what is a stablecoin](/resources/more/what-is-a-stablecoin).

## How are USDC to BRL conversions taxed?

As of 2026, Brazil taxes crypto gains for individuals under Receita Federal rules, with reporting expanded by Normative Instruction 2,291/2025, which widened the information providers must report on crypto transactions. Selling USDC for BRL is a disposal: if the reais received exceed the cost basis in reais, the difference is taxable gain. For companies, conversions flow through ordinary corporate accounting, and payouts to Brazilian contractors or employees keep their normal labor and withholding treatment regardless of the rail used to deliver them.

Two habits save pain later. Keep the BRL value at acquisition and at disposal for every lot (exchanges and payout APIs both provide statements). And do not confuse the rail with the obligation: paying someone over Pix from a stablecoin balance does not change what your business owes in taxes or reporting; it only changes how fast the money arrives.

## Where these routes fall short

Honest limits, route by route. Exchanges cap withdrawal amounts and require every receiver to have and manage their own account. P2P has no place in a business flow. Global exchanges quote thin BRL liquidity at bad hours. Payout APIs charge a provider fee on top of FX and require onboarding (KYB for your business, KYC for receivers) before the first real transfer; if you need an anonymous or same-minute one-off conversion, an API is the wrong tool. And no route avoids Brazilian tax obligations.

## How BlindPay handles USDC to BRL

BlindPay is a stablecoin API: your business sends USDC, the receiver gets reais over Pix, usually within minutes. Receiver verification (including CPF/CNPJ matching), sanctions screening, and travel rule data handling are built in, and the FX quote is shown before you commit; the live rate is on the [USDC to BRL page](/usdc-to-brl). The same API pays out over SPEI, ACH, and SWIFT (POBO/COBO, with UETR tracking and MT103 confirmations) in [100+ countries](/docs/kb/supported-countries), USDT works the same way ([USDT to BRL](/usdt-to-brl)), and [pricing](/pricing) is public.

## Methodology and sources

Rail and regulatory facts from primary sources: the Banco Central do Brasil's Pix documentation ([bcb.gov.br](https://www.bcb.gov.br/en/financialstability/pix_en)), Law 14.478/2022 ([planalto.gov.br](https://www.planalto.gov.br/ccivil_03/_ato2019-2022/2022/lei/L14478.htm)), BCB Resolutions 519, 520, and 521 of November 2025 ([bcb.gov.br](https://www.bcb.gov.br)), and Receita Federal guidance including Normative Instruction 2,291/2025. Exchange fee ranges reflect published fee schedules of major Brazilian venues as of 2026; live BlindPay FX quotes are on the [corridor page](/usdc-to-brl). Regulatory status described as of August 2026.

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

---

Source: https://blindpay.com/resources/more/usdc-vs-usdt-for-payments

---
title: "USDC vs USDT for payments: which should businesses use?"
seoTitle: "USDC vs USDT for payments: which should businesses use?"
description: "USDC offers stronger reserve transparency and US regulatory posture; USDT offers deeper liquidity in emerging markets. Most payment flows should support both."
date: "2026-08-15"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is USDC or USDT better for business payments?"
    a: "Neither is better everywhere. USDC is generally preferred by US and European businesses for reserve transparency and regulatory alignment. USDT has deeper liquidity and wider acceptance in emerging markets. Payment infrastructure should support both so each corridor can use what works locally."
  - q: "Are USDC and USDT both fully backed?"
    a: "Both issuers report full reserves. Circle publishes monthly attestations of USDC reserves held in cash and short-term US Treasuries. Tether publishes quarterly attestations for USDT. The frequency and the historical track record of disclosure differ, which is a core part of the comparison."
  - q: "Do USDC and USDT trade at different prices?"
    a: "Both target one US dollar and normally trade within a fraction of a cent of it. Brief deviations happen under stress: USDC dipped in March 2023 during a US banking failure and recovered within days; USDT has seen similar short-lived discounts in past market events."
  - q: "Can I convert USDT to local currency like Brazilian reais?"
    a: "Yes. Stablecoin payment providers convert USDT or USDC to local fiat and deliver over local rails, for example a Pix transfer in Brazil, without the receiver touching crypto."
---

USDC and USDT are the two dollar stablecoins that matter for payments, and the honest answer to "which one?" is: it depends on where your money goes. USDC leads on reserve transparency and regulatory posture, which US and European businesses care about. USDT leads on liquidity and acceptance across emerging markets, where much of real-world stablecoin usage lives. Together they account for the large majority of the 200+ billion dollars in circulating stablecoin supply tracked by [DefiLlama](https://defillama.com/stablecoins).

If stablecoins themselves are new territory, read [what is a stablecoin](/resources/more/what-is-a-stablecoin) first; this article assumes the basics.

## How do USDC and USDT compare at a glance?

| Dimension | USDC (Circle) | USDT (Tether) |
|---|---|---|
| Issuer | Circle, US-based, publicly listed | Tether, incorporated in El Salvador |
| Reserves | Cash and short-term US Treasuries, largely in a regulated government money market fund | Mostly US Treasuries plus other assets, including bitcoin and secured loans |
| Attestations | Monthly, by an independent accounting firm ([circle.com/transparency](https://www.circle.com/transparency)) | Quarterly ([tether.to/transparency](https://tether.to/en/transparency/)) |
| Circulating supply | Second largest | Largest by a wide margin |
| Liquidity depth | Strongest in US and European venues | Strongest globally, dominant in emerging markets |
| Regulatory posture | Aligned early with US and EU frameworks; MiCA-authorized issuance in the EU | Historically offshore; has faced US regulatory settlements over past disclosures |
| Typical strength | Compliance-sensitive flows, US corridors | Emerging-market corridors, deepest market acceptance |

## What do the numbers look like in 2026?

Scale first: USDT remains the largest stablecoin, with circulating supply well above 100 billion dollars, roughly twice USDC's, and it consistently ranks as the most traded asset in all of crypto. USDC leads in a different column: regulated venues, US trading pairs, and on-chain payment integrations in US and European fintech.

Geography splits the same way. Public blockchain data shows Tron, where USDT dominates, carrying the majority of small retail-sized stablecoin transfers, the signature of emerging-market usage: remittances, savings, and merchant payments across Latin America, Africa, and Asia. USDC's share concentrates on Ethereum and Base, where US institutional and fintech flows live.

Neither dataset declares a winner. They describe two markets: USDT owns the global street, USDC owns the regulated stack. A payments business usually needs to touch both.

## Why do compliance-focused businesses lean toward USDC?

Three reasons come up consistently:

- **Reserve visibility.** Monthly third-party attestations with a simple reserve composition (cash plus short-term Treasuries) are easy for a finance or compliance team to underwrite.
- **Regulatory alignment.** Circle pursued regulation early: US state licenses, EU authorization under MiCA, and public-company reporting since its 2025 listing. For companies whose own regulators ask questions about counterparties, this shortens the conversation. Our [MiCA guide](/resources/more/mica-stablecoin-rules-explained) covers what authorized issuance means in practice.
- **Banking compatibility.** Banks and auditors are more familiar with USDC's structure, which matters when stablecoin flows touch audited financial statements.

The cost of that posture showed once: in March 2023, a portion of USDC reserves sat at a failing US bank and the token briefly traded below one dollar before recovering fully within days. The lesson was about bank concentration, not backing, and Circle restructured reserve custody afterward.

## Why does USDT dominate emerging markets?

USDT got there first and built liquidity where dollar demand is strongest. In Latin America, Africa, South Asia, and Southeast Asia, USDT is often the default digital dollar: more local exchange pairs, more P2P volume, more counterparties that quote in it. For payment flows into these regions, USDT frequently has tighter effective spreads simply because more of it changes hands.

Tether's history includes real blemishes: US regulators fined it in 2021 over historical misstatements about reserves, and its attestations are quarterly rather than monthly. Its scale is also its argument: USDT has held its peg through repeated market crises while remaining the most traded crypto asset in the world.

## Which one should a payments business actually use?

Both, routed by corridor. The practical pattern we see:

- **US collections and compliance-heavy flows: USDC.** Incoming ACH and wire transfers through [virtual accounts](/virtual-accounts) settle naturally as USDC.
- **Emerging-market payouts: whichever the corridor favors.** A payout to Brazil works identically from USDC or USDT; the receiver gets reais over Pix either way. Compare live rates: [USDC to BRL](/usdc-to-brl) vs [USDT to BRL](/usdt-to-brl).
- **Treasury: hold what you can underwrite.** Many businesses hold USDC as the treasury asset and convert to USDT only at the moment a corridor needs it.

The deciding factor is rarely the token; it is whether your [stablecoin API](/resources/more/what-is-a-stablecoin-api) supports both and lets you switch per corridor without new integrations. That flexibility is a line item in our [provider comparison](/resources/more/best-stablecoin-apis-2026).

## How do their track records under stress compare?

Both tokens have been tested, and both recovered, but the failure modes differ:

- **USDC, March 2023.** Roughly 8 percent of reserves sat at Silicon Valley Bank when it failed. USDC traded as low as about 87 cents over a weekend, then returned to the peg within days once US authorities guaranteed deposits. The reserves were real; the risk was bank concentration, and Circle moved reserve custody primarily into a regulated government money market fund and global systemically important banks afterward.
- **USDT, repeatedly since 2017.** USDT has seen brief discounts during market panics, including 2018 solvency rumors and the 2022 Terra collapse, when it processed billions in redemptions within days and returned to the peg each time. Its historical issue was disclosure, not redemption: US regulators fined Tether in 2021 for past misstatements about reserve composition.

The practical read: USDC's risk is concentrated and visible (US banking system exposure), USDT's is structural and reputational (broader reserve mix, lighter disclosure cadence). Businesses that must explain their choices to auditors usually find USDC's story easier to tell; businesses optimizing for market depth in emerging corridors keep using USDT through every news cycle.

## How does chain support differ in practice?

Both tokens exist on many blockchains, but their centers of gravity differ. USDC issues natively on Ethereum, Base, Solana, Polygon, Arbitrum, and other US-favored networks, with Circle's cross-chain transfer protocol moving native USDC between them. USDT's largest deployment by far is on Tron, which dominates emerging-market P2P flows because transfers cost fractions of a cent, alongside major supply on Ethereum and Solana.

For payments this matters twice. First, the counterparty side: an exchange or OTC desk in Lagos or São Paulo most likely quotes USDT on Tron. Second, the cost side: network fees on the wrong chain can exceed the payment fee itself. A good [stablecoin API](/resources/more/what-is-a-stablecoin-api) abstracts chain selection entirely, which removes this whole decision from your integration.

## What about the other stablecoins?

PYUSD (PayPal), RLUSD (Ripple), and bank-issued tokens are growing but remain a small fraction of payment volume. Yield-bearing dollar tokens are treated differently by regulators and are generally unsuitable as a payment leg. For business payments in 2026, USDC and USDT cover nearly every corridor that matters; new entrants earn their place corridor by corridor.

## How does BlindPay handle USDC and USDT?

[BlindPay](/global-payments) supports both tokens through one API: convert USDC or USDT to local fiat and pay out over Pix, SPEI, ACH, and wire in 100+ countries, or collect fiat that settles as stablecoins, with KYC and sanctions screening on every flow and flat [published pricing](/pricing). Live corridor quotes are public, so you can compare the effective rate per token before moving anything.

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

---

Source: https://blindpay.com/resources/more/what-is-a-stablecoin

---
title: "What is a stablecoin? Definition, types, and how they work"
seoTitle: "What is a stablecoin? Definition, types, and how they work"
description: "A stablecoin is a digital token designed to hold a fixed value, usually one US dollar. Learn how they stay stable, the main types, and what they are used for."
date: "2026-08-15"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin in simple terms?"
    a: "A stablecoin is a digital token built to always be worth a fixed amount, almost always one US dollar. The issuer holds reserves such as cash and short-term US Treasuries so that every token can be redeemed for a dollar."
  - q: "What is the difference between a stablecoin and Bitcoin?"
    a: "Bitcoin's price floats freely with supply and demand, so it can move sharply in a day. A stablecoin is designed not to move: its value is pegged to an asset like the US dollar and backed by reserves, which makes it useful for payments rather than speculation."
  - q: "Are stablecoins safe?"
    a: "It depends on the issuer and the structure. Fully reserved, regulated stablecoins that publish independent attestations, such as USDC, have maintained their peg through market stress. Algorithmic stablecoins without full reserves have failed, most famously TerraUSD in 2022."
  - q: "What are stablecoins actually used for?"
    a: "The main uses are cross-border payments, dollar savings in high-inflation economies, and settlement in crypto markets. Businesses use stablecoins as fast, low-cost rails between currencies, often without holding them directly."
---

A stablecoin is a digital token designed to hold a constant value, almost always one US dollar. Unlike Bitcoin or Ether, whose prices float freely, a stablecoin is built to be boring: a dollar today, a dollar tomorrow, a dollar next year.

That stability is what makes stablecoins useful for payments. Circulating stablecoin supply has grown past 200 billion dollars, according to public trackers such as [DefiLlama](https://defillama.com/stablecoins), and stablecoins now settle trillions of dollars in transfer volume per year. Most of that activity is not speculation. It is money movement: businesses paying suppliers, workers receiving salaries, and companies holding digital dollars in markets where local currency loses value.

## How does a stablecoin keep its value?

The dominant model is simple: for every token in circulation, the issuer holds one dollar of reserves, typically cash and short-term US Treasuries. When a customer deposits dollars, the issuer mints new tokens. When a customer redeems tokens, the issuer burns them and returns dollars. As long as reserves match supply and redemption works, arbitrage keeps the market price pinned to one dollar.

Trust depends on proof. Serious issuers publish regular reserve reports. [Circle](https://www.circle.com/transparency), the issuer of USDC, publishes monthly attestations from an independent accounting firm. [Tether](https://tether.to/en/transparency/), the issuer of USDT, publishes quarterly attestations. Regulation increasingly turns this from good practice into law: reserve, redemption, and disclosure requirements are now written into frameworks like the EU's MiCA and the US GENIUS Act, which we cover in our [stablecoin regulation tracker](/resources/more/stablecoin-regulation-tracker-2026).

## What types of stablecoins exist?

Three structures cover almost everything in circulation:

- **Fiat-backed stablecoins.** Reserves are held in cash and cash equivalents at banks and custodians. USDC and USDT both work this way, and together they account for the large majority of stablecoin supply. This is the model regulators have chosen to formalize, and the only model widely used for business payments.
- **Crypto-collateralized stablecoins.** The token is backed by other crypto assets locked in smart contracts, with more collateral than issued value to absorb price swings. DAI is the best-known example. These are transparent by design but more complex, and their supply is small compared to fiat-backed coins.
- **Algorithmic stablecoins.** These tried to hold a peg through supply algorithms rather than full reserves. The model failed badly: TerraUSD collapsed in May 2022 and erased tens of billions of dollars of value. Modern regulation, including MiCA, effectively excludes unbacked algorithmic designs from operating as payment stablecoins.

There is also a growing category of **yield-bearing dollar tokens** that pass reserve interest to holders. Regulators generally treat these differently from payment stablecoins, and most payment flows avoid them.

## Which stablecoins matter for payments?

Two tokens dominate: USDT (Tether) is the largest by circulation and dominates trading volume, especially outside the US. USDC (Circle) is generally preferred by US businesses for its reserve transparency and regulatory posture. The practical differences, chain support, liquidity, and compliance considerations are covered in our comparison of [USDC vs USDT for payments](/resources/more/usdc-vs-usdt-for-payments).

Both run on multiple blockchains, including Ethereum, Base, Polygon, Arbitrum, Solana, and Tron. The network affects transfer cost and speed, but a properly backed dollar token is worth one dollar on any of them.

One common confusion is worth clearing up: not every large crypto asset is a stablecoin. XRP, for example, is a floating asset, not a pegged one. We explain the distinction in [Is XRP a stablecoin?](/resources/more/is-xrp-a-stablecoin)

## How did stablecoins get here?

A short timeline explains why the category looks the way it does:

- **2014.** Tether launches the first widely used dollar token, initially on a Bitcoin sidechain, to give crypto traders a stable unit between trades.
- **2018.** Circle and Coinbase launch USDC with a compliance-first posture: US licensing, monthly attestations, and reserves in cash and Treasuries.
- **2020 to 2021.** Supply grows tenfold as stablecoins become the settlement layer of crypto markets, and the first serious payment use cases appear in emerging markets.
- **May 2022.** TerraUSD, an algorithmic stablecoin with no full reserves, collapses from 18 billion dollars to nearly zero in a week. The failure reshapes both the market and the coming regulation: full reserves or nothing.
- **2023 to 2025.** Regulation arrives. The EU adopts MiCA, the US passes the GENIUS Act, and Brazil, Japan, Singapore, and the UAE build licensing regimes. Stablecoins become a regulated payments product rather than a crypto curiosity.
- **2026.** Supply exceeds 200 billion dollars, banks pilot their own tokens, and businesses adopt stablecoin rails through APIs rather than exchanges.

The pattern across the timeline: every crisis removed a weak design, and every regulation locked in the strong one. What survived is the fully reserved, redeemable, attested dollar token.

## How is a stablecoin different from bank money and CBDCs?

A dollar in a bank account is a claim on that bank, moved through systems like ACH that run on banking hours. A stablecoin is a claim on the issuer's reserves, moved on public blockchains that run continuously. In practice the differences that matter are hours (24/7 vs banking days), speed (minutes vs days for cross-border), programmability (API-native vs portal-native), and counterparty (issuer reserves vs bank balance sheet).

A central bank digital currency (CBDC) would be a direct claim on the central bank. Despite years of pilots, no major economy has launched a retail CBDC at scale, and the US has moved in the opposite direction, formalizing private stablecoin issuance through the GENIUS Act instead. For the foreseeable future, regulated private stablecoins are the digital dollar that actually ships.

## What are stablecoins used for?

- **Cross-border payments.** A stablecoin transfer settles in seconds to minutes, at any hour, on any day, without correspondent banks. A payment that takes 3 to 5 business days by international wire can arrive the same day when it moves as a stablecoin and pays out over a fast local rail like Pix in Brazil. This is the core of [stablecoin payments](/resources/more/stablecoin-payments-guide) as a business practice.
- **Dollar access and savings.** People and companies in high-inflation economies hold digital dollars without a US bank account. This is one of the largest real-world uses in Latin America, Africa, and parts of Asia.
- **Market settlement.** Stablecoins are the cash leg of most crypto trading, which is where their liquidity depth comes from.
- **Programmable treasury.** Because stablecoins are software objects, payouts, conversions, and sweeps can be automated through an API rather than a banking portal.

## How do businesses use stablecoins without holding crypto?

Most businesses that benefit from stablecoins never touch a token directly. They use infrastructure providers that handle the crypto leg in the middle:

1. Money enters as regular fiat, for example a Pix transfer in Brazil or an ACH transfer in the US, and is converted to stablecoins.
2. The stablecoins move across a blockchain in minutes.
3. On the other side, the stablecoins convert to local currency and pay out over the local rail.

The sender sees a normal bank payment out. The receiver sees a normal bank payment in. The stablecoin leg supplies the speed and reach. Providers expose this as a [stablecoin API](/resources/more/what-is-a-stablecoin-api), and products like [virtual accounts](/virtual-accounts) let a business receive US bank transfers that settle directly as USDC.

## What does it cost to move money with stablecoins?

Three costs stack in a stablecoin payment, and all three are usually smaller than their traditional equivalents:

- **Network fees.** The blockchain transfer itself: fractions of a cent on networks like Tron, Base, or Solana, a few cents to a few dollars on Ethereum depending on congestion. Fixed per transfer regardless of amount, which makes large transfers extremely cheap to move.
- **Conversion.** The FX rate and fee when stablecoins become local currency or the reverse. This is the meaningful cost in a cross-border flow, and it is where providers differ most: an opaque rate can hide more margin than any stated fee. Always compare the total amount received.
- **Provider fees.** Flat or percentage fees per payout or collection, published upfront by transparent providers.

Compare that stack to an international wire: 25 to 50 dollars in bank fees, correspondent deductions along the way, an FX margin frequently above 2 percent, and days of waiting. The stablecoin route compresses all of it into one quoted conversion and a settlement measured in minutes.

## What are the risks of stablecoins?

An honest list, because the risks are real and manageable:

- **Issuer risk.** The token is only as good as the reserves behind it. Prefer issuers with frequent independent attestations and clear redemption rights.
- **Depeg events.** Even well-run stablecoins can trade briefly below one dollar during stress. USDC dipped in March 2023 when a reserve bank failed, then recovered fully within days. Structure matters more than headlines: the reserves were there.
- **Regulatory change.** Rules are tightening in most major markets. That is mostly good for payment users, since it standardizes reserves and redemption, but it means issuer and provider choices should track the rules. Our [regulation tracker](/resources/more/stablecoin-regulation-tracker-2026) follows the main regimes.
- **Operational risk.** Sending tokens on the wrong network or to a wrong address can lose funds. Using a provider with compliance checks and managed wallets removes most of this class of error.

## How are stablecoins regulated?

The short version: payment stablecoins are becoming a licensed, reserve-regulated product category worldwide. The EU's MiCA regime requires authorization, full reserves, and redemption at par, explained in our [MiCA guide](/resources/more/mica-stablecoin-rules-explained). The US GENIUS Act establishes federal requirements for payment stablecoin issuers. Brazil regulates stablecoin service providers through its central bank framework for virtual asset service providers. Japan limits issuance to licensed entities such as banks and trust companies.

For a business, the practical consequence is that compliance lives at the provider layer: the provider that converts and moves your funds should run KYC, sanctions screening, and travel rule compliance on every transfer.

## How does BlindPay fit in?

[BlindPay](/global-payments) is a stablecoin API for global payments. Businesses use it to convert USDC and USDT to local fiat and pay out over local rails like Pix, SPEI, ACH, and wire in 100+ countries, with KYC and compliance built into every flow, plus [virtual US accounts](/virtual-accounts) that turn incoming bank transfers into stablecoins automatically. Live conversion rates are public, for example [USDC to BRL](/usdc-to-brl), and [pricing](/pricing) is flat and published. The point of the product is the theme of this article: your customers and counterparties see normal bank money, and the stablecoin layer does the work invisibly.

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

---

Source: https://blindpay.com/resources/more/what-is-a-stablecoin-api

---
title: "What is a stablecoin API? Infrastructure explained"
seoTitle: "What is a stablecoin API? Infrastructure explained"
description: "A stablecoin API lets businesses move money with stablecoins through code: wallets, conversion, local payout rails, and compliance behind one integration."
date: "2026-08-15"
updated: "2026-09-01"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "What does a stablecoin API do?"
    a: "It exposes stablecoin money movement as software: create a payout or collection with an API call, and the provider handles wallets, currency conversion, blockchain transfers, local bank rails, and compliance checks behind the scenes."
  - q: "Do I need to hold crypto to use a stablecoin API?"
    a: "No. Most businesses send or receive regular fiat on their side. The provider converts between fiat and stablecoins in the middle, so the stablecoin leg is invisible to customers and counterparties."
  - q: "How is a stablecoin API different from a payment gateway like Stripe?"
    a: "A card gateway processes card payments inside the banking system. A stablecoin API uses stablecoins as the settlement layer between currencies and countries, which makes cross-border transfers faster and cheaper, then delivers funds over local bank rails."
  - q: "What should I evaluate in a stablecoin API provider?"
    a: "Coverage (countries, rails, currencies), compliance scope (KYC, sanctions screening, travel rule), custody model, pricing transparency including FX spread, and developer experience: sandbox, docs, and webhooks."
---

A stablecoin API is a software interface that lets businesses move money using stablecoins without building crypto infrastructure themselves. One integration exposes the whole flow as code: accept fiat, convert to digital dollars, move value across borders in minutes, and pay out in local currency over rails like Pix, SPEI, ACH, and wire.

The category exists because the underlying demand is large and the plumbing is hard. Stablecoins settle trillions of dollars in transfer volume per year, with circulating supply above 200 billion dollars according to public trackers like [DefiLlama](https://defillama.com/stablecoins). Almost none of the businesses driving that volume want to manage wallets, blockchain nodes, exchange accounts, and money transmission licenses. The API layer packages all of it.

## What does a stablecoin API abstract away?

Behind a single "create payout" call, a stablecoin API is doing four jobs:

- **Wallets and custody.** Creating and securing blockchain wallets, managing keys, and choosing networks. Sending USDC on the wrong chain to the wrong address loses money; the API layer removes that entire class of error.
- **Conversion.** Quoting and executing fiat-to-stablecoin and stablecoin-to-fiat conversions at a known rate. Providers publish or expose the FX rate and fee, for example a live [USDC to BRL](/usdc-to-brl) quote.
- **Local rails.** Delivering and collecting money over each country's banking system: Pix in Brazil, SPEI in Mexico, ACH and wire in the US. Each rail has its own formats, hours, and failure modes.
- **Compliance.** KYC and KYB on receivers, sanctions screening, transaction monitoring, and travel rule data exchange. This is a legal requirement in essentially every market and the hardest part to build alone.

If a provider offers only some of these, you are still building the rest. The evaluation checklist in our [best stablecoin APIs comparison](/resources/more/best-stablecoin-apis-2026) covers who does what.

## Why are businesses adopting stablecoin APIs?

The pattern behind most adoption is the same: money needs to cross a border, and the traditional route is slow and expensive. An international wire takes 3 to 5 business days and passes through correspondent banks that each take a cut. A stablecoin transfer settles in minutes at any hour, and local delivery on a fast rail like Pix takes seconds.

Concrete use cases:

- **Global payouts.** Marketplaces and platforms paying contractors, sellers, or partners across Latin America and beyond. See our guide to [stablecoin payments](/resources/more/stablecoin-payments-guide) for the full flow.
- **Dollar collection.** A company outside the US invoices with US banking details through [virtual accounts](/virtual-accounts); incoming ACH or wire transfers settle as USDC automatically.
- **Treasury movement.** Moving working capital between countries same-day instead of pre-funding local accounts.
- **Embedded finance.** Fintechs offering dollar balances or cross-border transfers inside their own product, with the stablecoin provider as the engine.

## What does a typical payment flow look like?

A payout from a US business to a contractor in Brazil, through a stablecoin API:

1. The business calls the API with the receiver, amount, and currency.
2. The provider runs compliance checks on the receiver (KYC status, sanctions screening).
3. The business funds the payout in USDC, or fiat that the provider converts.
4. The provider converts USDC to reais at the quoted rate and sends a Pix transfer.
5. The contractor's bank account is credited in seconds. Webhooks report each state change.

The contractor never sees a wallet or a token. That invisibility is the point: stablecoins are the settlement layer, not the user experience. If the concepts here are new, start with [what is a stablecoin](/resources/more/what-is-a-stablecoin).

The unhappy paths matter as much as the happy one. A production-grade API surfaces every failure as a typed state you can handle in code: a receiver who fails sanctions screening before funds move, a Pix key whose registered name does not match the payout name, a transfer held for a compliance information request. Each of these is routine in real payment operations, and the difference between providers shows in whether the API tells you what happened and what to do next, or leaves you emailing support.

## Should you build or buy stablecoin infrastructure?

Building in-house means: wallet security and key management, integrations with exchanges or OTC desks for conversion, banking partners in every payout country, licensing or agent relationships for money transmission, and a compliance program (KYC, AML, travel rule) that regulators will examine. Teams that have done it typically describe 12+ months and a dedicated crew before the first dollar moves, and the compliance surface never stops growing as rules like MiCA and the GENIUS Act come into force (tracked in our [stablecoin regulation guide](/resources/more/stablecoin-regulation-tracker-2026)).

Buying means one API integration, typically live in days against a sandbox, with the provider carrying the licenses, banking relationships, and compliance program. The tradeoffs are provider fees and dependency on the provider's coverage map, which is why coverage and pricing transparency belong at the top of the evaluation.

For most companies whose product is not payments infrastructure itself, buying wins. The exceptions are companies at very large scale or with unusual corridor needs.

## What should you evaluate in a stablecoin API?

- **Coverage.** Which countries, currencies, and rails. A provider strong in Europe may not deliver over Pix or SPEI at all.
- **Compliance scope.** Who runs KYC and sanctions screening, and who holds the regulatory relationships. If the answer is "you do", the integration is much bigger than the API docs suggest.
- **Custody model.** Whether funds sit in provider-managed wallets, your own wallets, or regulated third-party custody, and what happens to funds in flight if the provider fails.
- **Pricing.** Flat fee, percentage, and the FX spread, which matters most. Compare the total amount received, not the quoted fee: a low fee can hide a poor rate. Published pricing, like [BlindPay's](/pricing), makes this comparable.
- **Developer experience.** Sandbox quality, API reference, webhooks, idempotency, and error semantics. You find out about the bad ones in production.
- **Stablecoin support.** At minimum USDC and USDT, since [each dominates in different regions](/resources/more/usdc-vs-usdt-for-payments), plus the chains your counterparties actually use.

## What does a stablecoin API cost?

Pricing has three components, and comparing providers means comparing all three:

- **Transaction fees.** A flat fee, a percentage, or both, per payout or collection. Flat fees favor large transfers; percentages favor small ones.
- **FX spread.** The gap between the mid-market rate and the rate you receive on conversion. This is where opaque providers make their real margin, and why the comparison metric should always be the total amount received, not the advertised fee.
- **Fixed costs.** Monthly minimums, account fees, or committed volume tiers, common at the enterprise end of the market.

Two practical tests: does the provider publish pricing without a sales call, and does the API return the exact rate and fee in the quote before you commit funds? Providers confident in their pricing do both.

## How long does integration take?

For an API-first provider, the typical path is: sandbox account on day one, first test payout the same week, production keys after business verification (KYB), and live corridor traffic in 2 to 4 weeks total. The long pole is usually your own compliance onboarding as a customer, not the code.

Signals that the estimate will hold: a public sandbox with realistic test data, webhooks for every state transition (created, processing, completed, failed), idempotency keys on money-moving endpoints, and API references with real request and response examples. Signals that it will not: PDF documentation and an integration that starts with a scheduled call.

## How does BlindPay fit in?

[BlindPay](/global-payments) is a stablecoin API for global payments. It covers the four jobs above in one integration: managed wallets, published FX quotes, payouts over Pix, SPEI, ACH, and wire in 100+ countries, collections through [virtual US accounts](/virtual-accounts) that settle as stablecoins, and KYC, sanctions screening, and travel rule compliance built into every flow. Pricing is flat and public, and a full sandbox is available before any commitment: [talk to the team](/contact) or explore the docs to see the API shape.

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

---

Source: https://blindpay.com/resources/more/virtual-account-requirements-kyc-kyb

---
title: "Virtual account requirements: KYC, KYB, and what the bank reviews before it says yes"
seoTitle: "Virtual account requirements: KYC, KYB, and documents"
description: "What you need to open a virtual account: KYC or KYB, the extra fields and source of funds documents the bank reviews, who owns each step, and timelines."
date: "2026-08-14"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What documents do I need to open a virtual account?"
    a: "A business needs its KYB documents first: formation documents, a share register showing beneficial owners, proof of address, and ID for each owner. The account review then adds source of funds evidence, such as the last 3 months of bank statements, financial statements, tax returns, or client contracts. Individuals need ID, proof of address, and documents like tax returns or bank statements."
  - q: "How long does virtual account approval take?"
    a: "It happens in two stages. Identity checks come first: automated KYC for an individual can finish in about a minute, and manual KYB usually takes 3 hours to 1 business day. The account review follows. At BlindPay its SLA is 24 hours or 3 to 5 business days depending on the account type, and the clock restarts if the bank asks for more documents."
  - q: "Is KYB enough to open a virtual account for a business?"
    a: "Usually not. KYB proves the company exists and who owns it. The account review asks a different question: what money will flow through this account, and where does it come from? Expect to give an account purpose, an industry code, an expected revenue band, and source of funds and source of wealth, with supporting documents."
  - q: "Can a sole proprietor open a virtual account?"
    a: "Often yes, with extra paperwork. At BlindPay an individual customer needs approved KYC, an account purpose, and a source of wealth on file, plus one supporting document sent with the account request: a master service agreement, a salary slip, or a bank statement. The document should show the income the account will receive."
  - q: "Why was my virtual account application rejected?"
    a: "The common reasons are fixable: an industry code that doesn't match the incorporation documents, an expired ID, a proof of address older than 90 days, or an information request that nobody answered in time. Others are not, such as a structure where the account would collect money for clients the provider never verified. Ask the provider for the reason code before reapplying."
---

To open a virtual account, the account holder first passes KYC (for individuals) or KYB (for businesses). Then the provider and its bank review the account itself: what it's for, the industry code, expected revenue, who owns the business, and where the money comes from, backed by documents like bank statements or tax returns. Plan for two reviews, not one.

Most delays come from treating the second review like a formality. It isn't.

## Key takeaways

- KYC or KYB approves the customer. The virtual account then gets its own review, with its own fields and documents.
- The bank wants to know what money will flow through the account and where it comes from.
- You collect documents and answer information requests. The provider reviews. The bank has the final say.
- Most rejections are mismatches or silence: a wrong industry code, stale documents, an unanswered request.

## Why do virtual accounts require KYC and KYB?

A named virtual account is a set of bank details issued in your customer's name, so the bank behind it needs to know who that customer is and what the account is for. US anti-money laundering rules require exactly that. The provider runs the process for you, but it can't skip it. (New to how these accounts route into a master account? Start with [what is a virtual account](/resources/more/what-is-a-virtual-account).)

Two FinCEN rules do most of the work. The customer identification program (CIP) rule requires banks to collect, at minimum, a customer's name, date of birth for individuals, address, and identification number, and to verify identity ([FDIC summary](https://www.fdic.gov/news/inactive-financial-institution-letters/2024/collecting-identifying-information-required-under-customer)). The customer due diligence ([CDD](https://www.fincen.gov/resources/statutes-and-regulations/cdd-final-rule)) rule adds beneficial owners: each person who owns 25% or more of a legal entity, plus one person who controls it, such as a CEO or managing member. It also requires understanding the nature and purpose of the relationship and monitoring it over time. That's where the account purpose and revenue fields come from.

One recent change: in February 2026, FinCEN [granted relief](https://www.fincen.gov/news/news-releases/fincen-issues-exceptive-relief-streamline-customer-due-diligence-requirements) from re-verifying beneficial owners each time an existing legal entity customer opens a new account. Verification still happens at the first account, when earlier information looks unreliable, and under risk-based procedures. Providers and banks can still ask for more under their own policies, and how any of this applies to your platform is a question for counsel.

## What is the difference between KYC and KYB, and which documents are typical?

KYC (know your customer) verifies an individual: name, date of birth, address, government ID, and often a selfie. KYB (know your business) verifies a company: that it legally exists, where it's registered, and which people own or control it. For a business, KYB includes KYC on each beneficial owner.

| Check | Who it covers | Typical documents |
| --- | --- | --- |
| KYC | Individuals, and every owner of a business | Government ID (passport, ID card, or driver's license), proof of address under 90 days old, selfie, tax ID |
| KYB | Businesses | Articles of organization or certificate of incorporation (all pages), share register showing owners and percentages, proof of business address under 90 days old |
| Account review | The virtual account itself | Account purpose, industry code, revenue band, source of funds and source of wealth documents |

The third row is what most teams miss. BlindPay's [KYB document list](/docs/kb/kyb-documents) states it directly: virtual account requests go through a separate evaluation with their own documentation, on top of KYB.

## What does the bank review on top of KYB?

The bank reviews the expected activity of the account: why it exists, what business it serves, how much money will move, and where that money comes from. Deposits that later don't fit that baseline are what trigger holds.

| Field or document | Individual (sole proprietor) | Business | Why the bank asks |
| --- | --- | --- | --- |
| Account purpose | Required | Required | Sets the expected use, such as collecting client payments or treasury |
| Industry code (NAICS) | No | Required | Must match the activity in the incorporation documents |
| Business type and description | No | Required | Confirms the legal structure and what the company sells |
| Estimated annual revenue | No | Required | Gives a volume baseline for monitoring |
| Source of wealth | Required | Required | How the owners built their wealth: earnings, prior ventures, investments |
| Source of funds documents | A supporting document with the request: service agreement, salary slip, or bank statement | Bank statements, financials, tax returns, contracts, or invoices | Proves where the money flowing into the account comes from |
| Owners, percentages, and titles | No | At least one owner | Identifies who benefits from and controls the account |
| Publicly traded flag | No | Required | Listed companies carry a different risk profile |

Source of funds and source of wealth sound alike. They aren't. Source of funds is where *this money* comes from (client payments, operating revenue, investment capital). Source of wealth is how the business or its owners got their money in the first place. Accepted documents for each are in BlindPay's [virtual account requirements](/docs/kb/virtual-accounts) and [source of funds guide](/docs/kb/source-of-funds).

## Who is responsible for compliance: you, the provider, or the bank?

All three, for different parts. You know your customer and collect their information. The provider verifies identities, reviews each account, and monitors transactions. The bank makes the final call on every account and can ask for more.

| Party | What it owns |
| --- | --- |
| You (the platform) | Collecting accurate customer data and documents, getting terms accepted, answering information requests on time, and keeping each account's money tied to that customer |
| The provider | KYC and KYB review, the compliance review of each virtual account, transaction monitoring, and holds |
| The bank | Final approval, extra document requests, and the right to reject an application |

One line is worth reading twice. At BlindPay, information requests go to your team, not to your customer: collecting the documents is your job as the partner ([information requests](/docs/kb/information-requests)). If your customer doesn't reply, you're the one holding the deadline.

The other line is about whose money it is. A virtual account should only receive money that belongs to the customer it was issued to. Using one customer's account to collect for that customer's own clients, who were never onboarded, is called nesting, and it gets accounts frozen. BlindPay's rule and quick test are in [nested payments](/docs/kb/nested-payments).

### Compliance questions to ask your virtual account provider

1. Which fields and documents does the bank require beyond KYB, per account type?
2. Does the API reject incomplete account requests up front, or does manual review find the gaps?
3. Who contacts my customer when compliance or the bank needs something?
4. How long do I have to answer a request on a customer, and on a held deposit?
5. Does the SLA restart when the bank asks for more documents?
6. Which sectors trigger enhanced due diligence?
7. Where exactly is the line on nesting for my business model?

## What ongoing monitoring applies after approval?

Approval is not the end. Every deposit gets checked against what the customer declared, so expect transaction monitoring, sanctions screening on the parties involved, and periodic reviews of the customer file.

At BlindPay, a deposit flagged by transaction monitoring lands `on_hold`. If compliance can't clear it internally, you get a request for the relationship between sender and customer, the purpose of the payment, and its expected outcome. If that request isn't answered within 24 hours, the deposit may be returned to the sender ([on-hold transactions](/docs/kb/on-hold-transactions)).

Customer files get revisited too. A request on an approved customer can run without pausing them (`approved_rfi`), while a blocking request (`compliance_request`) stops payins and payouts until you respond. Either way you have 27 days, with reminders on days 7 and 17. A blocking request that's still unanswered on day 27 rejects the customer automatically.

## What gets an application rejected or delayed?

Mismatches and silence cause most of it: one document contradicts another, a document is stale, or a request goes unanswered. BlindPay publishes its [rejection reasons](/docs/kb/rejection-reasons), and the fixable ones repeat:

- **Industry code mismatch.** The NAICS code on the customer doesn't match the activity in the articles of incorporation.
- **Stale proof of address.** Older than 90 days, cropped, or not in the entity's name.
- **ID problems.** Expired, issued more than 10 years ago, blurry, or a photo of a screen.
- **Partial documents.** Page one of the articles of organization instead of all pages.
- **No response to a request.** The 27-day window ran out.
- **Nesting.** The account would collect money for parties nobody verified.

Delays have one extra cause: when the bank asks for more documents during its review, the SLA clock restarts from the day you submit them. Companies in higher-risk sectors, including money services, fintech, and digital assets, should also expect enhanced due diligence and more document requests.

## How can automation cut onboarding time?

Automation removes the back-and-forth, not the review. Collect the account review fields during onboarding so the request goes in complete, and catch bad files before a human sees them. The sequence that avoids rework:

1. Have your customer accept the provider's terms of service.
2. Create the customer with full KYC or KYB data, including every owner with their ownership percentage and title.
3. Wait for approval. At BlindPay, automated KYC can finish in about 60 seconds, and KYB is a manual review of 3 hours to 1 business day.
4. Fill in the account review fields: purpose, industry code, revenue band, source of wealth.
5. Upload source of funds documents, plus the supporting document if the customer is a sole proprietor.
6. Link the wallet where deposits settle.
7. Request the virtual account. It enters compliance review (`pending_review`).
8. Compliance approves and sends it to the bank (`verifying`).
9. The bank approves (`approved`), the account details are issued, and you share them with payers.

Two features help at steps 4 and 5. BlindPay's API rejects an account request with `missing_required_fields`, naming each blank field, so validation can happen in your form instead of a review queue. And a document analysis endpoint returns a low, medium, or high approval rate for a file, so you can ask for a better scan before it's submitted ([KYC requirements](/docs/kb/kyc)). For the broader picture of software running these checks, see [compliance agents in fintech](/resources/more/what-are-compliance-agents-in-fintech).

## What does a real application look like?

Here's an illustrative example. The company, names, and dates are made up. The fields and stages are real.

**Harbor Code LLC** is a US software studio that builds apps for US clients and wants a virtual account for incoming ACH and wire payments, settled to USDC. It has two owners, both US residents: Ana owns 60% and is managing member, and Ben owns 40%.

**What it fills in:**

- Business type: LLC. Industry code: 541511 (custom computer programming services), which matches its articles of organization.
- Business description: "Custom mobile and web app development for US small businesses."
- Account purpose: collecting client payments. Estimated annual revenue: the band that covers its prior-year revenue.
- Source of wealth: business profits. Publicly traded: no.
- Owners: Ana (60%, managing member) and Ben (40%), each with an SSN as tax ID.

**What it uploads:** all pages of the articles of organization, an operating agreement showing the 60/40 split, a utility bill for the office dated last month, ID and proof of residence for both owners, the last 3 months of business bank statements, and two signed client contracts.

**Illustrative timeline:**

| Day | What happens |
| --- | --- |
| Monday | Customer created. KYB enters manual review |
| Tuesday | KYB approved. Account request submitted, `pending_review` |
| Wednesday | Compliance approves, `verifying` (bank review begins on a 3 to 5 business day SLA) |
| Following Monday | The bank asks for a signed copy of one client contract. Harbor uploads it the same day and the SLA clock restarts |
| Following Thursday | Bank approves, `approved`. Routing and account numbers are issued |

Ten days, end to end, and the restart after one unsigned contract added about three of them. An industry code like "financial services" would have been worse: a mismatch with the articles is a listed rejection reason.

## Where does BlindPay fit?

BlindPay issues US virtual accounts in your customer's own name. They receive ACH, wire, and SWIFT, depending on account type, and deposits settle as USDC or USDT to a wallet you link. Each account costs $1.50 per month and goes through compliance review, then bank review, with SLAs of 24 hours or 3 to 5 business days by account type.

The requirements are public: [create a virtual account](/docs/virtual-accounts-create) lists the required fields, and the [virtual account requirements](/docs/kb/virtual-accounts) list the documents. Development instances approve accounts instantly, so you can build onboarding before any real review. If you're still deciding whether a virtual account fits next to your existing bank, see [can a virtual account replace a bank account](/resources/more/can-a-virtual-account-replace-a-bank-account).

## What to do next

Take the field table above and add every row to your onboarding form today, marked required by customer type. Then create a test customer on a development instance and request an account with [create a virtual account](/docs/virtual-accounts-create). If the API returns `missing_required_fields`, your form is missing something.

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

---

Source: https://blindpay.com/resources/more/what-happens-on-chain-in-a-stablecoin-payment

---
title: "What happens on-chain in a stablecoin payment? A step-by-step walkthrough"
seoTitle: "How stablecoin payments work on-chain, step by step"
description: "A stablecoin payment in five steps: bank deposit, conversion to USDC or USDT, on-chain delivery to a wallet, payout authorization, and local currency out."
date: "2026-08-13"
category: "stablecoins"
author: "BlindPay Team"
howto:
  name: "How a stablecoin payment moves from a bank deposit to a local payout"
  steps:
    - name: "A bank transfer lands in a virtual account"
      text: "The payer sends an ACH, wire, or RTP transfer to a bank account issued in the customer's name. Each deposit creates its own payin record."
    - name: "The deposit converts into USDC or USDT"
      text: "Once the deposit clears, the provider converts the dollars into a stablecoin at the rate locked in the quote."
    - name: "Stablecoins settle to the linked wallet"
      text: "One on-chain transfer delivers the stablecoins to the wallet linked to the virtual account. The transaction hash is the public receipt."
    - name: "The wallet authorizes a payout"
      text: "For a payout, a quote locks the rate and fees, and the wallet authorizes the exact amount. Managed wallets need no signature."
    - name: "Stablecoins convert back and pay out locally"
      text: "The provider pulls the authorized amount, converts it to local currency, and sends it over a rail like Pix or SPEI."
faq:
  - q: "How do stablecoin payments work?"
    a: "In four moves. A bank transfer arrives in a virtual account, it is converted into USDC or USDT, the stablecoins settle on-chain to the customer's linked wallet, and for a payout they are converted back to local currency and sent over a local rail like Pix or SPEI. The blockchain only handles the middle: short on-chain transfers that confirm in seconds to minutes and leave a public receipt."
  - q: "What happens if a stablecoin payment fails partway through?"
    a: "It depends on the step. If the deposit never arrives, the payin fails and nothing moves on-chain. If a payout quote expires before execution, request a new one; no funds moved. If the receiving bank rejects or returns a payout, BlindPay marks it refunded and sends the stablecoins back to the wallet that authorized it. A payout that ends failed, for example after a rejected compliance check, does not refund automatically and needs a follow-up with support."
  - q: "Which stablecoins are supported?"
    a: "USDC and USDT. At BlindPay, Ethereum, Polygon, and Solana support both. Base, Arbitrum, and Stellar support USDC, and Tron supports USDT only."
  - q: "Do I need to hold cryptocurrency myself?"
    a: "No. A business can receive bank transfers into virtual accounts and pay out to bank accounts without ever opening a wallet app or choosing a chain. The stablecoins settle in a linked wallet behind the scenes. Teams that do want to hold their own stablecoins can link an external wallet they control."
  - q: "How long does the on-chain part of a stablecoin payment take?"
    a: "Seconds to a few minutes, depending on the network. Stellar closes a ledger about every five seconds, and Solana finalizes in about 13 seconds. Ethereum takes around 13 minutes to reach full finality. The bank legs at each end almost always take longer than the blockchain does."
---

A stablecoin payment works in four moves. A bank transfer lands in a virtual account, it's converted into USDC or USDT, the stablecoins settle on-chain to the customer's linked wallet, and for a payout they're converted back into local currency and sent over a rail like Pix or SPEI. The blockchain handles only the middle: a couple of short transactions, each confirmed in seconds to minutes, each with a public receipt.

The end-to-end version, with bank cut-offs and payout timing, is in [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works). This walkthrough zooms in on the part most explainers skip: what the blockchain is actually doing at each step, and what an operations team can see while it happens.

No code required. If you can read a bank statement, you can follow this.

## What does the whole flow look like?

Picture a line of five boxes, left to right. The first and last are bank accounts. The three in the middle are the payment provider's conversion step, the customer's wallet, and the provider's conversion step again. Money enters on the left as dollars, becomes a stablecoin for the middle stretch, and leaves on the right as local currency. Only two arrows in the whole picture are on-chain: the delivery into the wallet, and the pull out of it.

```
[Payer's bank]
     |  1. ACH, wire, or RTP deposit            (bank rail)
     v
[Virtual account in the customer's name]
     |  2. dollars convert to USDC or USDT      (provider)
     v
[Customer's linked wallet]  <-- 3. on-chain delivery, tx hash #1
     |
     |  4. wallet authorizes the payout amount
     |     and the stablecoins are pulled        on-chain, tx hash #2
     v
[Provider's off-ramp]
     |  5. stablecoins convert to local currency (provider)
     v
[Recipient's bank, paid over Pix or SPEI]       (bank rail)
```

## Step 1: A bank transfer lands in a virtual account

A virtual account is a real bank account number, routing and account, issued in your customer's name. Anyone can pay it like any other account. At BlindPay, each virtual account belongs to one customer and settles to one linked wallet, and a customer can hold more than one ([virtual accounts](/docs/virtual-accounts)).

Why that matters for reconciliation: every deposit into the account creates its own payin record. You match money to customers by account, not by hoping the payer typed a reference code correctly. Without a virtual account, a US payin returns BlindPay's bank details plus a `memo_code` the payer has to include.

**On-chain so far:** nothing. This step is pure banking. ACH and wire deposits can take up to five business days to arrive; RTP arrives in seconds.

The approval flow and fees are covered in [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained).

## Step 2: The deposit converts into USDC or USDT

Once the deposit clears, the provider converts the dollars into a stablecoin at the rate locked in the quote. USDC is issued by Circle and USDT by Tether; both are designed to be redeemable one-for-one for US dollars through their issuers.

New tokens come from one of two places. Either the issuer mints them against fresh dollars, or the provider sends tokens it already holds. BlindPay's docs describe exactly that: once the deposit is confirmed, BlindPay mints or transfers the equivalent stablecoin amount to the destination wallet ([overview](/docs/overview)).

**On-chain so far:** possibly a mint on the issuer's side. Your customer doesn't see it and doesn't need to.

## Step 3: Stablecoins settle to the linked wallet

This is the first on-chain moment your team can actually look at. One transfer moves the stablecoins from the provider to the wallet linked to the virtual account.

A transfer "confirms" when a block containing it is added to the chain. It's final when the network guarantees that block can't be undone. How long that takes depends on the network:

| Network | New block roughly every | Practical finality |
| --- | --- | --- |
| Stellar | 5 seconds | At ledger close, about 5 seconds |
| Solana | 0.4 seconds | About 13 seconds |
| Tron | 3 seconds | About a minute |
| Polygon | 2 seconds | Seconds |
| Base, Arbitrum | 2 seconds or less | Seconds for the sequencer, minutes to settle on Ethereum |
| Ethereum | 12 seconds | About 13 minutes |

Every confirmed transfer has a **transaction hash**, a unique ID anyone can paste into a block explorer to see the amount, the sending and receiving addresses, and the time. It's a receipt no one can edit.

**What BlindPay shows you:** the payin fires `payin.complete` once the stablecoins land, and the hash appears in the payin's `tracking_complete` object. One gotcha from the [payins docs](/docs/payins): during a gas spike, a broadcast transaction can be replaced by another one, so the final hash may differ from the first one you saw. Treat the payin `status` as the source of truth, not a specific hash.

The wallet itself comes in two kinds. An external wallet is controlled by your customer. A managed wallet is custodied by BlindPay (in beta). Why that choice matters for risk is in [non-custodial payments](/resources/more/non-custodial-payments-explained).

## Step 4: The wallet authorizes the payout

Paying someone starts with a quote: the rate, the fee, and exactly how much local currency arrives. At BlindPay a payout quote lasts five minutes ([payout quotes](/docs/payout-quotes)). How to read one is in [stablecoin API quotes explained](/resources/more/stablecoin-api-quotes-explained).

Then the wallet has to let the stablecoins go. How depends on the wallet:

- **Managed wallet:** nothing to sign. BlindPay moves the funds.
- **External wallet on an EVM chain** (Ethereum, Base, Polygon, Arbitrum): the wallet signs an ERC-20 `approve` for the exact quoted amount.
- **External wallet on Stellar:** a signed XDR transaction.
- **External wallet on Solana:** a token delegation, prepared, signed, and submitted.

After authorization, BlindPay pulls exactly that amount. Not a cent more.

**On-chain:** the approval (on EVM chains) and the transfer out of the wallet. If an external wallet signs the approval, that wallet pays the network fee for it in the chain's native token.

## Step 5: Stablecoins convert back and pay out locally

The off-ramp converts the stablecoins into local currency and sends them over the recipient's rail. Pix in Brazil, SPEI in Mexico, Transfers in Argentina, and RTP in the US are instant. Wire and SEPA take about one business day, ACH about two, and SWIFT (POBO/COBO) about five ([settlement times by rail](/resources/more/stablecoin-payout-settlement-times)).

**On-chain:** done. From here it's banking again, and `payout.complete` fires when the recipient's bank confirms.

That's the whole trip. On-chain time is usually minutes. The bank legs are what take hours or days.

## What happens if a payment fails partway through?

Failures cluster at the bank edges, not on-chain. Here's the map:

| Where it stops | What happened on-chain | What you see at BlindPay |
| --- | --- | --- |
| Deposit never arrives | Nothing | The payin fails. Pix and SPEI payins wait up to 30 minutes first |
| Quote expires before execution | Nothing | Request a new quote |
| Delivery transaction replaced in a gas spike | The replacement lands | Resolved automatically; the hash may change |
| Held for compliance review | For US payouts, the stablecoins are usually already collected | `on_hold` until review clears. An unanswered request for information can lead to a refund to the sender |
| Receiving bank rejects or returns the payout | A refund transfer back to the wallet | `refunded`: stablecoins return to the wallet that authorized them |
| Payout rejected in compliance review | The stablecoins may already be collected | `failed`, no automatic refund; contact support |

A confirmed on-chain transfer can't be reversed by anyone. That's why the destination and amount are locked in the quote before anything moves.

## What does this mean for a business that never wants to touch a wallet?

It means it doesn't have to. Everything above can run behind a bank-shaped API. In [BlindPay](/global-payments)'s Abstracted flavor, you issue virtual accounts, receive payins, and send payouts to bank accounts. The stablecoins settle in the linked wallet in the background, and no one on your team picks a chain, holds a key, or signs a transaction.

Teams that want the chain-level controls from steps 3 and 4 use the Advanced flavor of the same API. Same keys, same webhooks.

## What to do next

Watch one payment cross the chain yourself. Create a free development instance, where payins auto-complete about 30 seconds after you create them and settle in a test token called USDB. Then open the transaction hash from `tracking_complete` in a testnet block explorer. The [payin quickstart](/docs/quickstart-payin) walks through it step by step.

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

---

Source: https://blindpay.com/resources/more/what-are-compliance-agents-in-fintech

---
title: "What are compliance agents in fintech? How they work and what they do for payments"
seoTitle: "What are compliance agents in fintech? How they work and what they do for payments"
description: "Compliance agents are autonomous software components that run KYC, KYB, sanctions screening, and transaction monitoring inside a payment flow, then document every decision. How they work, what they do for payments, how they differ from traditional compliance software, and how BlindPay embeds them in its API."
date: "2026-08-12"
updated: "2026-08-12"
author: "BlindPay Team"
category: "compliance"
faq:
  - q: "What is a compliance agent in simple terms?"
    a: "A compliance agent is software that performs a regulatory check on its own, decides whether a payment or customer passes, and records why. It replaces a human analyst for routine work and hands the unusual cases to one."
  - q: "Do compliance agents replace a compliance officer?"
    a: "No. Agents handle volume: document checks, list screening, and routine alert review. A compliance officer still owns the policy, approves high-risk decisions, and answers to the regulator."
  - q: "Are compliance agents the same as AI?"
    a: "Not always. Many agents combine deterministic rules with machine learning for document reading, entity matching, and anomaly detection. The defining feature is autonomous action inside a workflow, not the model behind it."
  - q: "How fast do compliance agents make a decision?"
    a: "Sanctions screening and transaction monitoring return in milliseconds, so they run inline before a payment settles. Identity verification takes seconds to a few minutes when a document must be read and matched to a face or a registry."
  - q: "Can compliance agents work across multiple countries?"
    a: "Yes, if the provider maintains rules and data sources per jurisdiction. The same agent screens a Brazilian company against Central Bank requirements and a US company against FinCEN and OFAC requirements, using the rule set that applies to each."
  - q: "How does BlindPay handle compliance for developers?"
    a: "Compliance runs inside the BlindPay payment API. When a developer creates a receiver or a payout, KYC or KYB, sanctions screening, AML monitoring, and audit logging execute automatically, with no separate compliance vendor to integrate."
---

*Reading time: about 7 minutes.*

**Summary:** Compliance agents are autonomous software components that execute regulatory checks inside a payment flow. They verify identities (KYC and KYB), screen counterparties against sanctions lists, monitor transactions for money laundering patterns, and write an audit record for every decision. Unlike traditional compliance software, which produces alerts for humans to work, compliance agents act on the result and escalate only the cases that need judgment.

## What are compliance agents in fintech?

A compliance agent is a piece of software that owns one regulatory task end to end: it gathers the inputs, applies the rules, reaches a decision, and records the evidence. The word "agent" signals that it acts rather than reports.

In a payments company, compliance agents sit between the request to move money and the movement itself. A payout does not settle until the relevant agents return a pass.

Most fintech compliance programs decompose into a small set of agents, each mapped to a regulatory obligation:

- **Identity agent.** Runs KYC on individuals and [KYB](/resources/more/what-is-kyb) on businesses, reading documents, matching them to registries, and verifying beneficial owners.
- **Sanctions agent.** Screens names, addresses, wallet addresses, and bank accounts against OFAC, UN, EU, and local lists, and resolves fuzzy matches.
- **Monitoring agent.** Watches transaction patterns for structuring, velocity spikes, and counterparties that do not fit the customer's stated profile.
- **Blockchain screening agent.** Traces the source of on-chain funds and blocks deposits linked to mixers, hacks, or sanctioned wallets.
- **Audit agent.** Stores the inputs, the rule version, the decision, and the timestamp for every check so a regulator can reconstruct it later.

## How do compliance agents work?

Compliance agents run a loop: observe, decide, act, record. Each step is deterministic enough to audit and fast enough to run before a payment settles.

1. **Trigger.** An event in the payment system fires the agent: a new customer, a new bank account, a payout request, or an on-chain deposit.
2. **Collect.** The agent pulls what it needs: uploaded documents, registry data, list feeds, transaction history, and blockchain analytics.
3. **Evaluate.** It applies the rule set for the customer's jurisdiction and risk tier. Rules can be deterministic thresholds, machine learning scores, or both.
4. **Decide.** The output is one of three states: pass, block, or escalate to a human reviewer.
5. **Act.** A pass lets the payment proceed. A block stops it and notifies the customer. An escalation opens a case with the evidence already attached.
6. **Record.** Every input and decision is written to an immutable log tied to the transaction ID.

The escalation path is what separates a well-designed agent from a black box. The agent does not guess on ambiguous cases; it routes them to a person with the file already assembled.

Rule sets change by jurisdiction. A single agent may hold one policy for Brazilian virtual asset service providers, another for US money transmitters, and a third for [MiCA](/resources/more/mica-stablecoin-rules-explained) in the EU, selecting the right one from the customer's country and entity type.

## What do compliance agents do for payments?

For a payments company, compliance agents turn a set of legal obligations into checks that execute on every transaction without slowing it down. They are the reason a cross-border payout can be both instant and defensible.

The concrete jobs are:

- **Onboarding.** Verify the sender and the receiver before the first payment, so the money never touches an unverified account.
- **Pre-settlement screening.** Screen every payout against sanctions lists at the moment it is created, not in a nightly batch, because a stablecoin transfer is final once confirmed.
- **Ongoing monitoring.** Re-screen existing customers as lists update and flag transaction patterns that drift from the profile established at onboarding.
- **Source-of-funds checks.** Trace inbound stablecoin deposits to confirm they did not originate from a sanctioned or hacked wallet.
- **Regulatory reporting.** Assemble suspicious activity reports and threshold reports from the audit log instead of from analyst memory.
- **Evidence retention.** Keep the decision trail for the five to ten years most regulators require.

Stablecoin payments raise the stakes. A wire can be recalled; an on-chain transfer [cannot](/resources/more/are-stablecoin-payments-reversible). Compliance agents that run inline are the only practical way to check a transaction before an irreversible settlement.

## What is the difference between compliance agents and traditional compliance software?

Traditional compliance software is a system of record and alerting. It ingests transactions, flags the ones that match a rule, and queues them for analysts to review. The software informs; people decide.

Compliance agents invert that division of labor. The agent decides the routine cases and reserves human attention for the exceptions.

| | Compliance agents | Traditional compliance software |
| --- | --- | --- |
| Where it runs | Inside the payment API, before settlement | Alongside the payment system, often in batch |
| Output | A decision: pass, block, or escalate | An alert for a human to review |
| Speed | Milliseconds to minutes, per transaction | Hours to days, per alert queue |
| Human role | Handles escalations and owns the policy | Works every alert, including the obvious ones |
| Integration | Inherited with the payment API | Separate vendor, separate contract, separate integration |
| Audit trail | Written automatically with each decision | Assembled from case notes and system exports |
| Jurisdiction coverage | Rule set selected per customer and country | Usually configured for one primary jurisdiction |
| Scaling cost | Flat per transaction | Grows with analyst headcount |

The trade-off is control. Traditional software gives a compliance team full visibility into every rule and every case. Agents require the team to trust the rules, review the escalation rate, and audit decisions by sampling rather than by reviewing each one.

## How does BlindPay use compliance agents?

[BlindPay](/global-payments) embeds its compliance layer directly in the payment API. There is no separate compliance product to buy, integrate, or keep in sync with the money movement.

When a developer creates a receiver, BlindPay runs KYC or KYB on that entity before it can send or receive funds. When the developer requests a payout, sanctions screening and AML monitoring execute inline, and the payout does not settle until they pass.

What a developer inherits by integrating the API:

- **KYC and KYB** for individuals and businesses, including beneficial owner verification, run at receiver creation.
- **Sanctions screening** on every counterparty, bank account, and wallet address, at onboarding and at each transaction.
- **AML transaction monitoring** that watches patterns across the customer's payment history, not just the current payout.
- **Blockchain screening** on inbound stablecoin deposits to block funds from sanctioned or compromised wallets.
- **Audit logging** for every decision, retained and available for regulatory review.
- **Multi-jurisdiction rule sets** covering the countries BlindPay operates in, including Brazil, Mexico, Colombia, Argentina, the US, and the EU.

The developer writes one integration. Compliance state surfaces through the same objects and webhooks used for payments, so a blocked payout looks like any other failed payout with a reason attached.

BlindPay holds the licenses and registrations the agents enforce against, listed on the [licenses page](/licenses). The [compliance page](/compliance) describes the full program, and the [resources hub](/resources/more) has related explainers on [what a VASP is](/resources/more/what-is-a-vasp) and how [regulation is changing](/resources/more/stablecoin-regulation-tracker-2026).

---

Compliance agents are autonomous components that run KYC, KYB, sanctions screening, AML monitoring, and audit logging inside the payment flow, deciding routine cases and escalating exceptions. They differ from traditional compliance software by acting on results rather than producing alerts, which is what makes instant, irreversible stablecoin settlement defensible. BlindPay builds this layer into its payment API, so developers inherit global compliance coverage with a single integration. See how it works at [blindpay.com](https://blindpay.com).

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

---

Source: https://blindpay.com/resources/more/how-to-off-ramp-usdc-to-us-bank-account

---
title: "How to off-ramp USDC to a US bank account: ACH, RTP, or wire"
seoTitle: "Off-ramp USDC to a US bank account: ACH, RTP, or wire"
description: "Cashing out USDC or USDT to a US bank account: when ACH, Same Day ACH, RTP, and wire pay out, the cut-offs in ET, the fields you need, and what delays it."
date: "2026-08-11"
updated: "2026-08-11"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to off-ramp USDC to a US bank account"
  steps:
    - name: "Verify the business or person sending"
      text: "Complete KYB for a business or KYC for an individual with the off-ramp provider. Business customers also need a NAICS industry code, and individuals need a local tax ID such as an SSN."
    - name: "Add the US bank account"
      text: "Register the beneficiary name, routing number, account number, account type (checking or savings), account class (individual or business), and the beneficiary's US address. For RTP, the routing number must belong to an RTP-enabled bank."
    - name: "Pick the rail"
      text: "Choose RTP for an instant payout any day of the week, a domestic wire for large same-day payments, or ACH for the lowest cost when one to two business days is fine."
    - name: "Quote and send the stablecoins"
      text: "Request a payout quote for USDC or USDT on a supported network. The quote locks the rate and fees for a few minutes. Authorize the amount from your wallet and create the payout before the quote expires."
    - name: "Track the payout to the bank"
      text: "Follow the payout status by webhook. USD payouts can pass through a compliance review step after the stablecoins are collected, then the dollars go out over the chosen rail."
faq:
  - q: "How long does it take to cash out USDC to a US bank account?"
    a: "It depends on the rail. RTP pays out in seconds, any day of the week, if the recipient's bank is on the network. A domestic wire sent before the provider's cut-off usually lands the same business day. Standard ACH takes one to two business days. Add the provider's own review time on top, since many off-ramps review USD payouts before they release them."
  - q: "What is the cheapest way to off-ramp USDC to USD?"
    a: "ACH is usually the cheapest rail for both sides, which is why most payroll and vendor payments use it. The trade is speed: one to two business days and no weekends. Wires cost more and some receiving banks charge for incoming wires. Compare the full quote, including spread, percentage fee, and the flat fee per rail, rather than the rail alone."
  - q: "Can I off-ramp USDC to my bank account on a weekend?"
    a: "Only over an instant rail. RTP runs 24/7/365, so a payout to an RTP-enabled bank lands on a Saturday. ACH and Fedwire only settle on business days, so a Friday evening payout on those rails waits until Monday, or Tuesday after a federal holiday. Check whether the recipient's bank is on RTP before you promise weekend delivery."
  - q: "What bank details do I need to receive USDC as dollars?"
    a: "The beneficiary's legal name, the bank's routing number, the account number, the account type (checking or savings), whether it's a personal or business account, and the beneficiary's address. Off-ramps also ask for a tax ID for individuals and an industry code for businesses. RTP needs a routing number that belongs to a bank on the RTP network."
  - q: "Why is my USD payout on hold?"
    a: "Off-ramps review dollar payouts for sanctions, fraud, and money laundering risk, and some review every USD payout as a standard step, not only flagged ones. A hold usually clears without action. If the provider sends a request for information, answer it fast, since an unanswered request can end in a refund. On BlindPay, all USD ACH, wire, RTP, and SWIFT payouts pass through review."
---

To off-ramp USDC to a US bank account, verify with a licensed provider, add the recipient's routing and account numbers, quote the payout, and send the stablecoins. The dollars arrive over RTP in seconds any day, over a domestic wire the same business day before cut-off, or over ACH in one to two business days.

The rail decides the speed. The chain barely matters.

## Key takeaways

- RTP is the only US payout rail that runs on weekends and holidays. ACH and Fedwire settle on business days only.
- Provider cut-offs sit earlier than network deadlines. A 3:00 p.m. ET provider cut-off for same-day delivery is normal.
- Plan for a compliance review on USD payouts. At some providers it's a standard step for every payout.
- Collect the full bank details up front: routing number, account number, account type, account class, and address.

## Which US payout rail should you use?

| Rail | When the money lands | Runs on weekends | Best for |
| --- | --- | --- | --- |
| RTP | Seconds, once released | Yes, 24/7/365 | Urgent payouts, contractors, anything customer-facing |
| Domestic wire (Fedwire) | Same business day before cut-off | No | Large, time-sensitive payments |
| Same Day ACH | Same business day before cut-off | No | Faster batch payouts under $1 million |
| ACH | One to two business days | No | Payroll, vendors, low-cost recurring payouts |

**RTP** is The Clearing House's real-time network. It runs [24/7/365, settles each payment as final, and takes payments up to $10 million](https://www.theclearinghouse.org/payment-systems/rtp). The catch is reach: the recipient's bank has to be on the network, so an off-ramp will check that the routing number is RTP-enabled before it accepts the account.

**Wires** move over Fedwire, which opens at 9:00 p.m. ET the evening before and closes at 7:00 p.m. ET, with [customer transfers cut off at 6:45 p.m. ET](https://www.frbservices.org/resources/financial-services/wires/operating-hours.html). Monday to Friday only. The Fed has [announced Sunday-to-Friday operation](https://www.federalreserve.gov/newsevents/pressreleases/other20251009a.htm), but no earlier than 2028.

**ACH** is the batch network behind most US payroll. Nacha describes it as settling [same-day or within one to two business days](https://www.nacha.org/content/ach-payments-fact-sheet). Same Day ACH has three submission windows, at 10:30 a.m., 2:45 p.m., and 4:45 p.m. ET, and a [$1 million per-payment limit](https://www.nacha.org/news/same-day-ach-payment-limit-increase-10-million). Nacha has approved raising it to $10 million, effective September 2027.

**FedNow**, the Fed's own instant rail, also runs around the clock. It's a separate network from RTP, and a bank can be on one without the other. Ask your provider which instant rail it pays out on.

## What do you need before the first payout?

Two sets of details.

**For the sender (your business or your customer).** KYB for a business or KYC for an individual. US dollar payouts usually add two fields: an industry code for businesses (NAICS in the US) and a local tax ID for individuals, such as an SSN. Verification limits cap each payment, day, and month, so check them against your volume before launch.

**For the recipient's account.** These are BlindPay's required fields for ACH, wire, and RTP accounts, per the [bank accounts reference](/docs/bank-accounts). Most providers ask for the same set.

| Field | Example | Watch out for |
| --- | --- | --- |
| Beneficiary name | Acme Supplies LLC | Must match the name on the account |
| Routing number | 9 digits | For RTP, it must be RTP-enabled. Wire and ACH routing numbers can differ at the same bank |
| Account number | Up to 17 digits | Typos come back as returns, not errors |
| Account type | Checking or savings | |
| Account class | Individual or business | |
| Address | Street, city, state, ZIP, country | Required for wires and for compliance screening |
| Relationship | Employee, vendor, first party | Third-party accounts are allowed. A first-party account is name-checked against the customer |

## How long does each rail really take?

The network time is only part of it. Add three things.

1. **The quote window.** A payout quote locks the rate and fees for a short time, five minutes by default on BlindPay. Read `expires_at` instead of hardcoding it. [How quotes work](/resources/more/stablecoin-api-quotes-explained) covers expiry and fee direction.
2. **The on-chain leg.** Seconds on Solana, Stellar, or Polygon. Minutes on Ethereum. Rarely the bottleneck.
3. **The provider's cut-off and review.** BlindPay's [cut-off times](/docs/kb/cut-off-times) are 3:00 p.m. ET for Same Day ACH and domestic wires and 9:00 p.m. ET for standard ACH. Every USD ACH, wire, RTP, and SWIFT payout also passes through an `on_hold` compliance review after the stablecoins are collected. Most clear quickly, but the docs allow up to 30 days for a review to resolve.

Put together, here's what a few real-world sends look like:

| You send | Rail | What happens |
| --- | --- | --- |
| Tuesday 11:00 a.m. ET | Wire | Before the 3:00 p.m. cut-off. Lands Tuesday once review clears |
| Tuesday 4:00 p.m. ET | Same Day ACH | Misses the 3:00 p.m. cut-off. Goes out with standard ACH, lands in one to two business days |
| Friday 8:00 p.m. ET | ACH | Before the 9:00 p.m. cut-off, but ACH doesn't settle on weekends. Lands Monday or Tuesday |
| Saturday 10:00 a.m. ET | RTP | Pays out as soon as review clears. No banking day needed |

For every rail side by side, including Pix, SPEI, and SEPA, see [stablecoin payout settlement times](/resources/more/stablecoin-payout-settlement-times).

## How much does it cost to off-ramp USDC to USD?

Less than most corridors, because there's no currency conversion. USDC and USDT are dollar tokens, so the spread from token to bank dollars is usually small. What you pay is a stack of line items:

1. **Network gas** on the stablecoin transfer, paid by whoever sends it.
2. **A percentage fee** on the amount.
3. **A flat fee per payout**, which depends on the rail. Wires usually cost more than ACH.
4. **Receiving-bank fees**, mostly on incoming wires, charged to the recipient.

The formula for comparing providers is the same everywhere: all-in cost % = (percentage fee + flat fee + gas + receiving fee) / amount sent. BlindPay's docs use a 0.1% percentage fee and a $0.40 ACH fee in their [offramp wallet example](/docs/offramp-wallets), and real fees depend on your pricing. With those example numbers, a hypothetical 10,000 USDC payout over ACH costs $10.00 plus $0.40, about 0.10% all-in before gas. A flat fee matters more on small payouts: on 100 USDC, the same $0.40 is 0.4% by itself.

Ask for an itemized quote per rail. A provider that only shows "you receive" without the lines behind it makes comparison impossible.

## What can go wrong with a US payout?

| Problem | Cause | What happens |
| --- | --- | --- |
| Payout returned | Account closed (ACH return R02), account not found (R03), or invalid account number (R04), per [Nacha's return codes](https://www.nacha.org/system/files/2023-08/NACHA_ISO20022_Guide_camt.053_returns%2008-09-23.pdf) | The payment comes back. Correct the details and send a new payout |
| RTP account rejected | Routing number isn't on the RTP network | Use ACH or wire for that recipient |
| Payout late | Sent after cut-off, or on a weekend over ACH or wire | Lands the next business day |
| Payout held | Standard USD review, or a risk flag | Wait, and answer any request for information quickly |
| Name mismatch | First-party account in a different name | Fails the name check. Fix the name or set the real relationship |

Returns cost time on both sides. When a fiat payment bounces, the money has to come back through the bank first, and fiat refunds can carry fees. A stablecoin refund, where the provider sends the tokens back before converting, is faster. The [non-custodial payments explainer](/resources/more/non-custodial-payments-explained) covers why that matters.

## How does BlindPay pay out to US bank accounts?

BlindPay converts USDC or USDT and pays out over ACH, domestic wire, RTP, or SWIFT for international USD, through one payout API. Add the bank account once, request a [payout quote](/docs/payout-quotes), approve the quoted amount from your wallet, and create the payout. From an external wallet, the funds stay with you until the payout executes. Statuses arrive by webhook from `processing` through `on_hold` to `completed`. Check live rates on [USDC to USD](/usdc-to-usd) and [USDT to USD](/usdt-to-usd).

Start in the sandbox with the [payout quickstart](/docs/quickstart-payout).

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

---

Source: https://blindpay.com/resources/more/stablecoin-api-quotes-explained

---
title: "Stablecoin API quotes explained: expiry, fee direction, and minor units"
seoTitle: "Stablecoin API quotes explained"
description: "A stablecoin API quote locks the rate, fees, and amounts for a few minutes. How expiry works, which side pays the fee, and the field that flips meaning."
date: "2026-08-10"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a quote in a stablecoin API?"
    a: "A short-lived price lock. It fixes the exchange rate, the fees, the amount the sender pays, and the amount the recipient gets, before any money moves. You execute the payment against the quote id while it is still valid, or request a new one."
  - q: "How long does a stablecoin API quote last?"
    a: "It varies by provider and product. At BlindPay, payin, payout, and transfer quotes expire 5 minutes after creation by default. OTC Pix payin quotes expire in 10 seconds, and SEPA payout quotes can be shorter than 5 minutes. Read the expires_at field on each response instead of hardcoding a window."
  - q: "What happens if a quote expires before I execute the payment?"
    a: "The payment is rejected and nothing moves. Request a new quote, show the user the new numbers, and execute against the new id. At BlindPay, a transfer against an expired quote returns a 400 quote_expired error."
  - q: "What does currency_type mean on a BlindPay quote?"
    a: "It tells the API which side of the payment request_amount is denominated in. On a payout quote, sender means the stablecoin being sent and receiver means the fiat the bank account gets. On a payin quote the meaning flips: sender means the fiat the payer sends."
  - q: "Why are amounts integers instead of decimals?"
    a: "Stablecoin APIs usually take amounts in minor units to avoid floating point errors. At BlindPay, request_amount is an integer and does not accept floats: 10000 means 100.00. For MXN, COP, and ARS payins quoted on the sender side, the amount must also be a whole peso, a multiple of 100."
---

A stablecoin API quote is a price lock. It fixes the exchange rate, the fees, the amount the sender pays, and the amount the recipient gets, for a short window. You execute the payment against the quote's id before it expires. If it expires, nothing moves, and you ask for a new one.

Simple on paper. In practice, three fields cause most of the bugs: when the quote expires, which side pays the fee, and which currency the amount is in.

## What does a quote actually lock?

Everything the user needs to say yes. A good quote response answers four questions with numbers, not estimates:

- What rate am I getting, and what was the market rate?
- What does this cost, fee by fee?
- How much leaves the sender?
- How much arrives at the recipient?

Here's a BlindPay payout quote response, straight from the [payout quotes docs](/docs/payout-quotes):

```json
{
  "id": "qu_000000000000",
  "expires_at": 1712958191000,
  "commercial_quotation": 1,
  "blindpay_quotation": 0.998,
  "sender_amount": 10000,
  "receiver_amount": 9980,
  "partner_fee_amount": 0,
  "flat_fee": 20,
  "billing_fee_amount": null
}
```

`commercial_quotation` is the raw market rate. `blindpay_quotation` is the rate net of the fee. The gap between them is the spread, visible on every quote. `sender_amount` and `receiver_amount` are the two numbers your UI shows. EVM payout quotes also carry a `contract` object: the ERC-20 `approve` payload for wallets that sign their own transactions.

If a provider's quote gives you one rate and one total, you can't tell spread from fee. Ask for the itemized version.

## How long does a quote last, and why so short?

Because FX moves. A quote that lasted an hour would either carry a fat buffer (you pay for it) or leave the provider exposed. Minutes is the normal range.

At BlindPay the defaults are:

| Quote type | Default expiry | Exception |
| --- | --- | --- |
| Payin quote | 5 minutes | OTC Pix payin quotes: 10 seconds |
| Payout quote | 5 minutes | SEPA payout quotes can be shorter |
| Transfer quote | 5 minutes | None |

Read `expires_at` from every response. Don't hardcode 5 minutes. And note the unit: `expires_at` is epoch milliseconds, not seconds. Divide by 1,000 before passing it to a library that expects seconds, or your countdown will say the quote expires in the year 56,000.

Every rail's window is in the [cut-off times reference](/docs/kb/cut-off-times).

## What happens when a quote expires?

The execute call fails and no money moves. That's the point: an expired quote protects both sides from a stale price.

Build the UX around it:

1. Show the quote with a visible countdown driven by `expires_at`.
2. When it hits zero, disable the confirm button and fetch a new quote.
3. Show the new numbers. If they moved, say so.
4. Execute against the new id.

On an external wallet flow, there's one extra trap. If the user signs an on-chain approval and the transaction is slow to mine, the quote can expire while they wait. Quote again rather than committing an expired one.

Also: a quote backs one payment. At BlindPay, a `quote_id` can only back one payout, and a second call with the same quote returns an error. That's a useful second layer against double-sends, but it's not a substitute for proper idempotency on your retries.

## Who pays the fee: sender or recipient?

The `cover_fees` flag decides it, and the choice changes which number stays fixed.

| `cover_fees` | Who pays | What happens to the amounts |
| --- | --- | --- |
| `false` | The recipient | The fee comes off what the recipient gets. The common case. |
| `true` | The sender | The fee is added on top, so the recipient gets the full amount. |

Payroll is the classic `true` case. A company paying a contractor in Mexico wants them to receive exactly 20,000 MXN, so the company absorbs the fee. A marketplace paying out sellers usually leaves it `false` and shows the net.

## Which currency is request_amount in?

This is the one that bites. `currency_type` says which side of the payment `request_amount` refers to, and on BlindPay it means opposite things on payins and payouts:

| Quote | `currency_type: "sender"` | `currency_type: "receiver"` |
| --- | --- | --- |
| Payout quote | The stablecoin being sent | The fiat the bank account receives |
| Payin quote | The fiat the payer sends | The stablecoin the wallet receives |

Same field, same values, flipped direction. If you share one "build quote" helper across both flows, test both. A payout helper that assumes `sender` means fiat will quote the wrong side of every payment.

## Why are amounts integers?

Floating point and money don't mix. `0.1 + 0.2` isn't `0.3` in JavaScript, and you don't want to find that out in a reconciliation report. So stablecoin APIs usually take minor units.

At BlindPay, `request_amount` is an integer and doesn't accept floats. `10000` is 100.00. `500000` is 5,000.00. Two more rules worth knowing:

- **Whole pesos.** For MXN, COP, and ARS payins quoted on the sender side, the amount must be a multiple of 100. `10050` fails with `request_amount_must_be_a_whole_currency_unit`, because those rails settle in whole units.
- **Minimums.** SWIFT payouts need at least 100 USD requested. SEPA needs 11 USDC on the sender side or 10 EUR on the receiver side.

Convert at the edge of your system, once. Store minor units everywhere else.

## What should you check in a provider's quote API?

- **Is the fee itemized?** Market rate, applied rate, flat fee, and partner fee as separate fields.
- **Is the expiry machine-readable?** A timestamp on every response, not a number in the docs.
- **Can you choose who pays?** A `cover_fees` style flag, not a support ticket.
- **Can you quote either side?** "Send exactly X" and "receive exactly Y" are different products.
- **Is a quote single-use?** It should back one payment and fail loudly on reuse.

The quote is where the price gets set, so it's also where hidden costs hide. Settlement speed matters too: see [how long a stablecoin payout takes](/resources/more/stablecoin-payout-settlement-times). For where the quote sits in the full flow, see [how a stablecoin payment moves](/resources/more/how-a-stablecoin-payment-works).

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API for cross-border payouts and collections: USDC or USDT in, local currency out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. Every quote itemizes the market rate, the applied rate, and each fee, and [virtual USD accounts](/virtual-accounts) turn ACH, wire, and SWIFT deposits into stablecoins. Pricing is on the [pricing page](/pricing).

## What to do next

Create a payout quote on a free development instance and read the response field by field. Then flip `cover_fees` and `currency_type` and watch which numbers move. Ten minutes of that beats an hour of docs. Start with the [payout quotes guide](/docs/payout-quotes), then the [payin quotes guide](/docs/payin-quotes) for the flipped direction.

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

---

Source: https://blindpay.com/resources/more/direct-vs-indirect-stablecoin-exchange

---
title: "Direct vs indirect stablecoin exchange: who holds the stablecoin, and who carries compliance"
seoTitle: "Direct vs indirect stablecoin exchange, explained"
description: "In direct exchange, both parties hold stablecoins and own compliance. In indirect exchange, a provider settles in stablecoins behind a normal bank payment."
date: "2026-08-08"
updated: "2026-08-08"
category: "compliance"
author: "BlindPay Team"
faq:
  - q: "What is direct stablecoin exchange?"
    a: "Direct exchange is when both parties know they're using stablecoins. The buyer acquires stablecoins, usually through an exchange, and sends them to the seller's wallet. The seller holds, reuses, or redeems them. Each party carries its own compliance obligations, wallet security, and conversion back to local money."
  - q: "What is indirect stablecoin exchange?"
    a: "Indirect exchange is when banks or fintechs use stablecoins as a settlement layer behind an ordinary payment. The payer sends a bank transfer, the recipient gets a bank deposit, and the stablecoin moves between providers in the middle. The regulated providers carry the compliance work, and the end parties may never see the stablecoin."
  - q: "Which model does the U.S. Faster Payments Council recommend?"
    a: "The Faster Payments Council's July 2026 report on stablecoins for cross-border payments compares the two and argues that the indirect model has important advantages: clarity on compliance, operational simplicity, and reuse of existing payment rails. The report is scoped to business payments across borders, not consumer use."
  - q: "Do compliance rules change if stablecoins are hidden from the customer?"
    a: "No. KYC, AML, sanctions screening, and the travel rule apply the same way. What changes is who carries them. In indirect exchange, the provider that converts and moves the funds is the regulated party and runs the checks. The business still has to give accurate customer and payment information."
  - q: "Is indirect exchange the same as custodial?"
    a: "Not necessarily. Indirect describes what the end parties see: bank money in, bank money out. Custody describes who controls the stablecoin while it exists. A provider can run an indirect flow that converts within the same payment, so no balance sits with anyone for long, or it can hold balances for customers."
  - q: "Can a business mix direct and indirect exchange?"
    a: "Yes, and many do. A common hybrid: the business holds stablecoins in its own wallet, then uses a provider to pay suppliers in local currency. The business carries wallet security on its side, the provider carries the off-ramp compliance, and the supplier sees an ordinary bank deposit."
---

Direct stablecoin exchange means both parties knowingly use stablecoins: the buyer gets them, sends them to the seller's wallet, and each side carries its own compliance and wallet risk. Indirect exchange means a bank or fintech uses stablecoins only as a settlement layer behind an ordinary bank payment, so the provider carries compliance. Most businesses want indirect, or a hybrid of the two.

The terms come from the U.S. Faster Payments Council (FPC), an industry body that published a report on stablecoins as a cross-border payment method in [July 2026](https://fasterpaymentscouncil.org/userfiles/2080/files/CBPWG_DAWG_Stablecoins%20as%20a%20Cross-Border%20Payment%20Method2_07-22-2026%20Final.pdf). Its conclusion is direct: the indirect model has "several important advantages, foremost of which are clarity on compliance, operational simplicity, and reuse of existing rails."

*This article is general information, not legal advice. Confirm your own obligations with counsel.*

## What is direct stablecoin exchange?

In the FPC's first scenario, the buyer acquires stablecoins, typically through an exchange such as Coinbase, by sending fiat. The stablecoins land in the buyer's wallet and move from there to the seller's wallet. The seller can hold them, use them for its own payments, or redeem them for fiat through an exchange or the issuer.

Nothing in this model needs a bank in the middle. A self-custody wallet works. That's also the problem. Everyone in the chain is responsible for their own:

- **Wallet security.** Whoever holds the keys holds the risk of losing them.
- **Compliance.** The FPC notes that direct transfers carry "meaningful compliance exposure," the same money laundering, sanctions, and terrorism financing risks that apply to cash and cashier's checks.
- **Conversion.** The seller has to find a way to turn stablecoins into local money, and stablecoins aren't supported in every country.
- **Accounting.** Both sides hold a digital asset, at least for a while, and have to book it.

Direct exchange makes sense for companies that already run crypto operations, hold stablecoin treasury, and have a compliance team that understands wallet screening.

## What is indirect stablecoin exchange?

In the FPC's second scenario, the stablecoin isn't visible to the buyer or the seller. To them, the payment looks like a normal transfer: a wire, an ACH payment, or a local instant payment. Behind the scenes, the payment providers on each side settle with each other in stablecoins.

That settlement can run net, aggregating inflows and outflows and moving only the difference, and it can run any day at any time instead of only during banking hours. The end parties get the speed of the stablecoin leg without holding a token, picking a network, or screening a wallet.

The regulated providers carry the work: KYC and KYB at onboarding, sanctions screening, transaction monitoring, travel rule data between providers, and the conversion in and out of stablecoins. [How a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works) shows the same flow at the API level.

## How do direct and indirect exchange compare?

| | Direct exchange | Indirect exchange |
| --- | --- | --- |
| Who sees the stablecoin | Both parties | Only the providers |
| Who holds it | Buyer, then seller | Providers, usually only within the payment |
| Payer sends | Stablecoins from a wallet | A bank transfer in local currency |
| Recipient gets | Stablecoins in a wallet | A bank deposit in local currency |
| KYC, KYB, sanctions screening | Each party, plus any exchange they use | The regulated providers |
| Travel rule | Applies between the exchanges and custodians involved | Handled provider to provider |
| Wallet security | Each party | The providers |
| Conversion to local money | The recipient's problem | Built into the payout |
| Accounting | Both sides hold a digital asset | Usually a normal bank payment on both sides |
| Best for | Crypto-native companies with their own compliance team | Businesses that want faster cross-border payments without new operations |

## Who carries compliance in each model?

The rules themselves don't change between models. The FPC report says compliance requirements are "the same for stablecoins as for cash-based payments and could be far greater." What changes is who owns each obligation.

In direct exchange, it's spread across everyone. The exchange that sold the stablecoins ran KYC on the buyer. Nobody necessarily ran it on the seller's wallet. The FPC flags exactly this gap: KYC is possible at issuance, but stablecoins can then be passed to unknown parties, and self-custody wallets can bypass sanctions controls unless someone screens them.

In indirect exchange, the provider that converts and moves the money is a regulated money transmitter or virtual asset service provider. It verifies both sides before anything moves, screens names and wallet addresses against lists like [OFAC's](https://ofac.treasury.gov/), monitors patterns, and exchanges travel rule data with the counterparty provider. The business's job shrinks to giving accurate information and answering requests for information when a payment is flagged.

The GENIUS Act doesn't change this split. It regulates issuers and, from July 18, 2028, the platforms that offer stablecoins in the US. It doesn't decide who runs KYC on a given payment.

## Is there a middle ground between direct and indirect?

Yes. The most common setup in practice is a hybrid:

- The business holds stablecoins in a wallet it controls, maybe because customers pay it in USDC or because it keeps a dollar treasury on-chain.
- When it pays a supplier, it sends stablecoins to a provider's payout flow.
- The provider converts them and pays the supplier in local currency over a local rail.

The business carries wallet security on its side. The provider carries the off-ramp compliance. The supplier sees a bank deposit and never touches a stablecoin. If the payout is non-custodial, the stablecoins stay in the business's wallet until the quoted payout executes, so the provider never holds a balance on its behalf. [Non-custodial payments explained](/resources/more/non-custodial-payments-explained) covers that model.

## How do you choose a model?

1. **Ask whether your counterparties want stablecoins.** If your suppliers want bank deposits in reais or pesos, direct exchange pushes conversion onto them. Go indirect.
2. **Check whether you already hold stablecoins.** If customers pay you in USDC or you keep a stablecoin treasury, the hybrid model fits.
3. **Map who will run KYC, KYB, and sanctions screening.** If the honest answer is "nobody on our side," use a provider that runs them in the payment flow.
4. **Decide who holds the keys.** If you hold them, write down the key management policy. If a provider holds them, read its custody terms.
5. **Ask finance how it books a stablecoin balance.** If the answer is "we don't know yet," prefer flows where you never hold one.
6. **Test one corridor end to end.** Send a few real payments and compare the amount received, the time to arrive, and the reconciliation effort against your current wire.

## How does BlindPay handle this?

[BlindPay](/global-payments) supports both the indirect and the hybrid model through one API. In the Abstracted flavor, a business sends a bank transfer, often to its own [virtual account](/virtual-accounts), and the recipient gets a bank deposit over Pix, SPEI, Transfers (Argentina), ACH COP (Colombia), ACH, wire, RTP, SEPA, or SWIFT (POBO/COBO). The stablecoin settles behind the scenes and nobody on either side holds it. That's indirect exchange.

In the Advanced flavor, a business that holds its own USDC or USDT pays out from an external wallet. Those payouts are non-custodial: the stablecoins stay in the customer's wallet until the quoted payout executes. That's the hybrid. In both, KYC, KYB, sanctions screening, and travel rule checks run inside the API before money moves, and BlindPay is registered with FinCEN as a Money Services Business (NMLS #2745309), which anyone can check in FinCEN's [MSB registrant search](https://www.fincen.gov/msb-registrant-search). The [licenses page](/licenses) lists its status by country.

## What to do next

Write one line for each of your cross-border payment flows: who sends, who receives, and whether either of them wants to hold a stablecoin. If neither does, you want indirect exchange, and the next step is deciding whether to build that layer or buy it. [Build vs buy for stablecoin payments](/resources/more/build-vs-buy-stablecoin-payments) covers what each path takes on. For the vocabulary behind this page, see the [blockchain payments glossary](/resources/more/blockchain-payments-glossary), and for the bigger picture, [what blockchain payments are](/resources/more/what-are-blockchain-payments).

*This article is for general information only and is not legal advice.*

---

Source: https://blindpay.com/resources/more/can-a-virtual-account-replace-a-bank-account

---
title: "Can a virtual account replace a business bank account? What each one does for cross-border companies"
seoTitle: "Can a virtual account replace a business bank account?"
description: "Usually not. A virtual account collects and settles payments; a bank account runs payroll, taxes, and credit. A job-by-job guide for cross-border teams."
date: "2026-08-07"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Do I need a business bank account if I have a virtual account?"
    a: "In most cases, yes. A virtual account is built to receive payments and attribute them to one customer, and a stablecoin virtual account converts each deposit and sends it to a wallet. Payroll, local taxes, card spending, and credit lines still run through a bank account in your home country. Most cross-border companies use both, each for a different job."
  - q: "Can a virtual account receive payments from abroad?"
    a: "It depends on the rails the account accepts. A US virtual account receives ACH and domestic wires from US payers, and some account types also receive SWIFT transfers from foreign banks. Ask the provider which rails each account type accepts before you put the details on an invoice, because a payer whose rail isn't supported will see the transfer bounce or stall."
  - q: "Is money in a stablecoin virtual account insured like a bank deposit?"
    a: "No. In a stablecoin virtual account, each deposit is converted and sent to a wallet, so the value you hold afterwards is a stablecoin, not a bank deposit. Stablecoins are backed by the issuer's reserves, not by deposit insurance. If you need insured cash, keep that money in a bank account and convert only what you plan to move."
  - q: "Can I pay suppliers or payroll from a virtual account?"
    a: "You can pay suppliers and contractors by converting stablecoins back into local currency over payout rails such as Pix, SPEI, ACH, or SWIFT. Local payroll is different. Withholding, social contributions, and government payments usually have to come from a local bank account, so payroll tends to stay where it is even after collections move to a virtual account."
  - q: "How long does it take to get a virtual account compared to a bank account?"
    a: "A business bank account for a foreign company can take weeks, and some US banks won't open one at all without a US entity. A virtual account is requested through an API and goes through compliance and bank review. At BlindPay that review has an SLA of 24 hours or 3 to 5 business days, depending on the account type."
---

A virtual account can't fully replace a business bank account, and it isn't meant to. A virtual account collects payments and attributes them to one customer; a stablecoin virtual account also converts each deposit and settles it to a wallet. Payroll, local taxes, card spending, and credit still need a bank account. Most cross-border companies run both.

The interesting question is which jobs move. For a company selling into the US from abroad, collections usually move first.

## Key takeaways

- A virtual account replaces the collection job, not the whole bank account.
- Payroll, local taxes, cards, and credit stay with a bank in your home country.
- For cross-border collections, the gap is speed and fee leakage: a SWIFT transfer can lose money to intermediaries and an FX spread, and takes days.
- A stablecoin virtual account ends in a wallet, so the value runs 24/7 after conversion, but it isn't a bank deposit and isn't insured like one.
- The common setup is hybrid: collect into the virtual account, pay out to your own bank account when you need local currency.

## Which jobs does each account actually do?

A business bank account is the operating account: it pays salaries, taxes, and cards, holds insured cash, and anchors credit. A virtual account is a collection account: it gives payers a set of bank details and turns each deposit into a record you can match. With stablecoin settlement, the money then lands in a wallet rather than staying in the account.

| Job | Business bank account | Virtual account (stablecoin settlement) | Notes |
| --- | --- | --- | --- |
| Receive ACH from a US client | Only with a US account, which foreign companies often can't open | Yes, the client pays a US routing and account number | The client's bank treats it as a domestic payment |
| Receive SWIFT from abroad | Yes, as a standard international wire | Depends on the account type; some US accounts receive SWIFT | Confirm per account type before invoicing |
| Run local payroll | Yes | Not directly; convert and pay out first | Withholding and social contributions usually need a local account |
| Pay local taxes | Yes | No | Tax authorities collect from local bank accounts |
| Card spending | Yes, with a debit or corporate card | No card, no checks, no online banking login | The account exists to receive and attribute money |
| Hold a balance | Yes, as an insured deposit where insurance applies | No balance in the account; value sits as USDC or USDT in a wallet | A stablecoin is not a bank deposit |
| Credit line | Yes, based on the banking relationship | No | Lenders look at your bank history |
| Settlement hours | Banking days, cut-offs, weekends off | Deposits follow banking days; once converted, stablecoins move 24/7 | The bank leg still has cut-offs |
| Reconciliation | Match by reference or amount | Each account number identifies one customer | The account number does the matching |
| Compliance owner | The bank does KYC/KYB on you | The provider and its banking partner review the account holder | Both verify who you are |
| Integration effort | Usually none, or a bank API for treasury | An API: create the customer, request the account, listen for deposits | Built for platforms issuing many accounts |
| Main risk | Bank failure, mitigated by deposit insurance up to a limit | Provider, stablecoin issuer, and wallet key management | Different risks, not zero risk |

Reconciliation is where a virtual account earns its keep. With a bank account, a payment from abroad shows up with a payer name and maybe a reference, and someone matches it to an invoice by hand. With one virtual account per customer, the receiving account number tells you who paid. For the mechanics behind that, see [what is a virtual account](/resources/more/what-is-a-virtual-account).

## Which is faster for cross-border collections?

A US virtual account is faster for US payers, because the payer sends a domestic ACH or wire instead of a SWIFT transfer. Domestic wires usually settle the same business day. SWIFT transfers can take up to 5 business days.

Both still run on banking days. In the US, the ACH cut-off is 9:00 PM ET with 1 to 3 business days to settle, same-day ACH cuts off at 3:00 PM ET, domestic wires at 3:00 PM ET, and international SWIFT at 10:30 AM ET. A transfer sent on Friday evening waits until Monday on any of these rails. The full table is in [cut-off times](/docs/kb/cut-off-times).

The difference is what happens after the deposit lands. With a stablecoin virtual account, the deposit converts and settles to a wallet, and from there the value moves on blockchain time: seconds to minutes, weekends included. If you then pay out over an instant local rail such as Pix, the last leg is minutes too. [Stablecoin payout settlement times](/resources/more/stablecoin-payout-settlement-times) has the per-rail numbers.

## Which costs less once intermediary and FX fees are counted?

For a US payer paying a company abroad, the virtual account route usually costs less, because it skips SWIFT intermediaries and the receiving bank's FX spread. The price you see on a wire is rarely the full cost. The deductions and the exchange rate are where the money goes.

**Worked example (illustrative numbers, not quotes).** A Brazil-based software company invoices a US client for 25,000 USD. Assume a mid-market rate of 5.40 BRL per USD.

**Route 1: SWIFT into the company's Brazilian bank account.**

- The client's bank charges an outgoing international wire fee, often 25 to 50 USD, paid by the client.
- One intermediary bank deducts 25 USD in transit, so 24,975 USD arrives.
- The Brazilian bank charges a receiving fee of about 35 USD and converts at 1.5% below mid-market.
- Result: 24,940 USD at 5.319 BRL is about 132,656 BRL, 2 to 5 business days after the client sends it.

**Route 2: US virtual account, settled to USDC, paid out over Pix.**

- The client sends a domestic ACH or wire to the company's US virtual account. ACH is often free for the sender; a domestic wire is a flat fee.
- The deposit converts to USDC and settles to the company's wallet.
- The company converts USDC to BRL and pays out over Pix to its own Brazilian bank account. Assume 0.5% to 1% in combined conversion fees and spread.
- Result: about 133,650 to 134,325 BRL, often the same business day the deposit lands, depending on the bank leg.

That's roughly 1,000 to 1,670 BRL more on one invoice, plus a few days back. Not a rounding error at 20 invoices a month. Your numbers will differ, so ask each provider for an all-in quote on the exact amount and corridor.

Notice where Route 2 ends: in the company's Brazilian bank account. The virtual account didn't replace the bank account. It replaced the SWIFT leg.

## Who holds the funds, and who does KYC?

In a bank account, the bank holds your money in an account titled to you and runs KYC or KYB when you open it. In a virtual account, a bank still holds the funds behind the scenes, while the provider issues the account details and runs onboarding together with its banking partner. With stablecoin settlement, the funds leave the account and arrive in a wallet, so after conversion the custody question is about that wallet.

Ask two things. Whose name is on the account the payer sees? And who controls the wallet the deposits settle to? If the wallet is one you control, the provider doesn't hold your stablecoins after settlement, which is the idea behind [non-custodial payments](/resources/more/non-custodial-payments-explained). The tradeoff is that you own the key management.

On compliance, expect the same depth as a bank or more. A named virtual account is reviewed twice: once by the provider's compliance team and once by the banking partner. Expect to explain your business, the purpose of the account, and where the money comes from. The document list is in [virtual account requirements](/docs/kb/virtual-accounts).

## When should you still use a traditional bank account?

Keep a traditional bank account for everything that isn't collecting payments. That means payroll, taxes, card spending, rent and local suppliers who only take local transfers, insured cash, and any relationship that might turn into credit.

Also keep it when:

- **Your payers are local.** If your clients pay you in your own country and currency, a local account is already the cheapest path.
- **You collect in a currency the virtual account doesn't take.** A US virtual account receives USD. EUR collections over SEPA need a different setup.
- **Your accounting or regulator expects bank statements.** Some auditors and tax authorities want every receipt on a bank statement. Check before you move collections.
- **You don't want to manage a wallet.** Stablecoin settlement means someone on your team handles wallet security and conversion timing.

## When does a stablecoin virtual account make sense?

A stablecoin virtual account makes sense when you sell to US payers from outside the US, when you pay out to many countries from one balance, or when you want collected dollars available outside banking hours. It also makes sense for platforms that need one account per customer, which a single bank account can't give you.

Setting up the hybrid version takes a handful of steps:

1. Keep your local operating bank account for payroll, taxes, and cards.
2. Request a virtual account in your company's name and pass the provider's KYB and account review.
3. Link a wallet you control as the settlement destination, and pick the stablecoin (USDC or USDT) and network.
4. Put the virtual account's routing and account number on invoices to US clients, and tell them to send ACH or a domestic wire.
5. Decide how much to keep in stablecoins and how much to convert, based on what you owe in local currency.
6. Pay out to your own local bank account over an instant rail when you need local currency.
7. Record each deposit, conversion, and payout with its rate, so your accountant can book the FX.

## What are the limits of stablecoin rails?

Stablecoin rails are fast after conversion, but they carry risks a bank account doesn't. Treat these as part of the decision, not footnotes.

- **Regulation.** Rules for stablecoins, and for converting them into local currency, differ by country and are still changing. In some countries the conversion counts as an FX operation with its own reporting. Check how your route is classified before you move all collections.
- **Off-ramp availability.** Getting back to local currency depends on a payout rail and a licensed partner in your country. Coverage is strong in some corridors and thin in others.
- **Depeg risk.** A stablecoin is worth a dollar only while the market trusts its reserves. In March 2023, USDC [traded below 90 cents](https://www.axios.com/2023/03/11/circle-usdc-peg-svb) for a weekend after part of its reserves was stuck at a failed bank. Holding a stablecoin balance for weeks carries that risk; converting soon after settlement reduces it.
- **Wallet security.** If you control the wallet, a lost key or a wrong address is your loss. Use a setup with approvals and allowlisted addresses.

## Where does BlindPay fit?

BlindPay issues US virtual accounts in your customer's own name, with their own routing and account number. Deposits arrive over ACH, wire, or SWIFT, depending on the account type, and each one converts to USDC or USDT and settles to the blockchain wallet linked to the account. USDT settlement needs a wallet on Polygon, Ethereum, or Solana. The account holds no balance of its own; the value lands in the wallet.

Each account costs $1.50 per month, and requests go through compliance review and then bank review, with an SLA of 24 hours or 3 to 5 business days depending on the account type. Payouts from the same stablecoin balance go out over Pix, SPEI, ACH, wire, SEPA, and SWIFT (POBO/COBO), under your customer's name. Details are in the [virtual accounts docs](/docs/virtual-accounts) and [pay out to bank](/docs/payouts).

BlindPay doesn't issue local bank accounts outside the US or IBANs, and a virtual account won't replace your operating bank. It replaces the collection leg.

## What to do next

Pull last quarter's incoming international wires and compare the amount each client sent with the amount you received in local currency. That gap is your cost today. If it's material, request a virtual account for your largest US client relationship and route that one client's next invoice through it.

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

---

Source: https://blindpay.com/resources/more/stablecoin-payout-settlement-times

---
title: "How long does a stablecoin payout take? Settlement times by country and rail"
seoTitle: "How long does a stablecoin payout take?"
description: "Stablecoin payouts settle in minutes on Pix, SPEI, RTP, and Transfers 3.0, and in 1 to 5 business days on ACH, SEPA, and SWIFT. Full table by rail."
date: "2026-08-06"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How long does a stablecoin payout take?"
    a: "The on-chain leg takes seconds to a couple of minutes. The total time depends on the local rail at the end: instant over Pix in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina, and RTP in the US; about one business day over TED, wire, SEPA, and Colombian ACH; about two business days over US ACH; and up to five business days over SWIFT."
  - q: "Do stablecoin payouts work on weekends?"
    a: "On instant rails, yes. Pix, SPEI, and Transfers 3.0 run 24/7, so a payout sent on a Saturday night lands on a Saturday night. ACH, wire, SEPA, TED, and SWIFT follow banking days, so a weekend payout on those rails is delivered after the next business day opens."
  - q: "Why is my stablecoin payout on hold?"
    a: "A payout can sit in on_hold for compliance or banking review before release. At BlindPay every SWIFT payout starts in on_hold, and USD ACH, wire, and RTP payouts pass through it. Screening matches or unusual activity can also trigger a hold. A hold is a status, not an error, so show it as pending and do not retry."
  - q: "What is the fastest country to send a stablecoin payout to?"
    a: "Brazil, Mexico, and Argentina are among the fastest, because Pix, SPEI, and Transfers 3.0 settle in minutes, around the clock. In the US, RTP settles instantly, though USD payouts pass through a review step first."
  - q: "How long is a stablecoin payout quote valid?"
    a: "At BlindPay a payout quote is valid for five minutes by default and can be shorter for SEPA. Read expires_at from the response, which is in epoch milliseconds, rather than hardcoding the window."
---

A stablecoin payout takes as long as the local rail at the end of it. The on-chain leg settles in seconds to a couple of minutes. After that, the receiver gets funds instantly over Pix in Brazil, SPEI in Mexico, Transfers 3.0 in Argentina, and RTP in the US; in about one business day over TED, domestic wire, SEPA, and Colombian ACH; in about two business days over US ACH; and in up to five business days over SWIFT.

So "stablecoin payouts are instant" is half true. The stablecoin part is. The bank part is whatever the bank rail does.

Here's the full breakdown, with the rail-by-rail table, the steps that add time, and a few timelines you can reason about.

## What are the settlement times by rail?

These are the estimated times of arrival for BlindPay payouts, by the `type` you set on the receiver's bank account.

| Country | Rail | `type` | Estimated arrival | Runs 24/7 |
| --- | --- | --- | --- | --- |
| Brazil | Pix | `pix` | Instant | Yes |
| Brazil | PIX Safe | `pix_safe` | Instant | Yes |
| Brazil | TED | `ted` | ~1 business day | No |
| Mexico | SPEI | `spei_bitso` | Instant | Yes |
| Argentina | Transfers 3.0 | `transfers_bitso` | Instant | Yes |
| Colombia | ACH | `ach_cop_bitso` | ~1 business day | No |
| United States | RTP | `rtp` | Instant | Yes |
| United States | Domestic wire | `wire` | ~1 business day | No |
| United States | ACH | `ach` | ~2 business days | No |
| Europe | SEPA | `sepa` | ~1 business day | No |
| Global | SWIFT | `international_swift` | ~5 business days | No |

High transaction volumes can stretch any of these. SWIFT payouts have a 100 USD minimum and carry a UETR and an MT103 confirmation, so you can trace the wire. The live rail list is in the [bank accounts docs](/docs/bank-accounts).

## What happens between "send" and "arrived"?

A stablecoin payout is four steps. Only one of them is slow, and it's rarely the blockchain.

1. **Quote (you control this).** Request a quote, show the receive amount, confirm. A quote is valid for five minutes by default, sometimes less on SEPA.
2. **On-chain transfer (seconds to a couple of minutes).** USDC or USDT moves from the funding wallet. Fast networks like Base, Polygon, Solana, and Stellar confirm in seconds.
3. **Compliance and conversion (usually seconds, sometimes a review).** Screening runs on the payout. Most clear automatically. Some go to `on_hold`.
4. **Local delivery (the rail).** This is the number in the table above.

Add them up and a Pix payout is minutes end to end. A SWIFT payout is days, and nearly all of that is SWIFT.

For the Pix path in depth, with the quote fields and webhooks at each step, see [USDC to Pix, from quote to settlement](/resources/usdc-pix-quote-to-settlement).

## Why would a payout take longer than the table says?

Three reasons, in order of how often they show up.

**Cut-off times.** Banking rails have daily cut-offs. Submit after it and you're in the next business day's batch. In Eastern Time:

| Rail | Daily cut-off (ET) | Settlement after cut-off |
| --- | --- | --- |
| ACH | 9:00 PM | 1 to 3 business days |
| Same-Day ACH | 3:00 PM | Same business day |
| Domestic wire | 3:00 PM | Same business day |
| International SWIFT | 10:30 AM | Up to 5 business days |
| TED (Brazil) | End of Brazilian banking day | Same or next banking day |

Business days exclude weekends, US federal holidays, and applicable international banking holidays. The full reference is in [cut-off times](/docs/kb/cut-off-times).

**Compliance holds.** A payout can land in `on_hold` for review. At BlindPay, every SWIFT payout starts in `on_hold`, and USD ACH, wire, and RTP payouts pass through it too. Screening matches, unusually large amounts, and first-time activity can also trigger a hold. If compliance needs more information, it sends a request, and an unanswered request can end with the funds returned to the sender. Read [on-hold transactions](/docs/kb/on-hold-transactions) for how that works.

**Bad bank details.** A wrong account number or a closed account means the receiving bank rejects the payment. The payout ends `failed` or `refunded`. Stablecoin refunds go back to the originating wallet right away; fiat returns take as long as the receiving bank takes.

## What do real timelines look like?

A few scenarios. On USD and SWIFT payouts, review time comes on top of the rail time.

**Saturday, 11:00 PM, 5,000 BRL to Brazil over Pix.** Quote, send, done. Reais land in minutes. Pix doesn't care that it's Saturday.

**Tuesday, 2:00 PM ET, 20,000 MXN to Mexico over SPEI.** Minutes. SPEI runs around the clock too.

**Friday, 4:00 PM ET, 3,000 USD to a US bank account over domestic wire.** That's after the 3:00 PM wire cut-off, so it goes out Monday and settles the same business day, plus any review time.

**Friday, 4:00 PM ET, 3,000 USD over ACH.** Before the 9:00 PM ACH cut-off, so it's submitted Friday. About two business days means Tuesday, plus any review time.

**Wednesday, 9:00 AM ET, 25,000 USD to a supplier in Hong Kong over SWIFT.** Before the 10:30 AM cut-off, starts in `on_hold` for review, then up to five business days on SWIFT, depending on the correspondent chain. Track it with the UETR.

**Monday, noon, 2,000,000 COP to Colombia over ACH.** About one business day, so Tuesday.

## How does this compare with a traditional wire?

A SWIFT wire from a US bank to Brazil passes through one or two correspondent banks, each updating its own ledger and taking its own fee. That usually means 1 to 5 business days, and the receiving bank applies its own FX rate when the dollars arrive.

The same payment as a stablecoin payout over Pix settles in minutes, at a rate you saw before you sent it. For corridors with an instant local rail, the difference is days versus minutes. For corridors that still end in SWIFT, the difference is smaller on speed and bigger on traceability and quote certainty. We go deeper in [stablecoins vs SWIFT for B2B payments](/resources/more/stablecoin-vs-swift-b2b-payments), and on what "final" actually means in [stablecoin API SLAs and settlement finality](/resources/more/stablecoin-api-sla-settlement-finality).

## How should your product show payout timing?

A few things that save support tickets:

- **Show the ETA per rail, not per provider.** "Arrives in minutes" for Pix, "about 2 business days" for ACH.
- **Treat `on_hold` as pending.** Don't retry, don't show an error. It resolves to `processing`, `completed`, `failed`, or `refunded`.
- **Listen for webhooks.** `payout.update` fires on every status change, including `failed`, and `payout.complete` fires when local currency is delivered.
- **Read `expires_at` from the quote.** It's in epoch milliseconds. Don't hardcode five minutes.
- **Store the rail reference.** On SWIFT, keep the UETR; your finance team will ask for it.

The full integration flow, with endpoints and statuses, is in [how to integrate a stablecoin API](/resources/more/how-to-integrate-a-stablecoin-api).

## Where does BlindPay fit?

[BlindPay](/global-payments) pays out USDC and USDT as local currency over every rail in the table above, with [no pre-funding](/resources/more/no-pre-funding-stablecoin-payouts), a quote that locks the receive amount before you commit, and compliance screening inside the API. Payouts start from your own stablecoin wallet or from a [virtual USD account](/virtual-accounts) that converts ACH, wire, and SWIFT deposits into stablecoins. Rails cover Brazil, Mexico, Colombia, Argentina, the US, Europe, and 100+ countries over SWIFT (POBO/COBO). [Pricing is published](/pricing).

## What to do next

List your top three payout countries and look up each rail in the table. If any of them has an instant rail, that's the corridor to launch first. Then create a development instance, run a test payout, and use the sentinel amounts `66600` and `77700` to force `failed` and `refunded` so your UI handles the slow paths before real users hit them.

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

---

Source: https://blindpay.com/resources/more/stablecoin-settlement-for-merchants

---
title: "Stablecoin settlement explained: how merchants get paid faster than card networks"
seoTitle: "Stablecoin settlement for merchants, explained"
description: "Stablecoin payments settle in seconds to minutes, final and 24/7. Cards take 1 to 3 business days and wires up to 5. How it works and how to cash out."
date: "2026-08-06"
category: "payments"
faq:
  - q: "How does stablecoin settlement work for merchants?"
    a: "The customer sends USDC or USDT to the merchant's address. The blockchain confirms the transfer in seconds to a few minutes, and at that point the funds are final and usable. If the merchant wants local currency, an off-ramp converts the stablecoins at a quoted rate and pays out over a local rail like Pix, SPEI, RTP, or SEPA, usually within minutes."
  - q: "How long does stablecoin settlement take compared to card payments?"
    a: "On-chain settlement on networks like Polygon, Base, Stellar, or Tron takes seconds to a few minutes, 24 hours a day, including weekends. Card networks typically pay merchants one to three business days after the sale, and nothing moves on weekends or bank holidays. International wires take one to five business days."
  - q: "What is settlement finality?"
    a: "Finality is the point after which a payment cannot be reversed. A confirmed stablecoin transfer is final within minutes. A card payment is not truly final for months, because cardholders can file chargebacks, typically for up to 120 days. An ACH debit can be returned for days, and up to 60 days when a consumer claims it was unauthorized."
  - q: "Do merchants need pre-funded accounts to receive stablecoin settlement?"
    a: "No. With a stablecoin settlement provider like BlindPay, the merchant does not need to park capital in local accounts in each country before money can move. Funds are converted and delivered at execution time, at a rate quoted and locked before the payment runs."
  - q: "How do merchants convert stablecoin balances into local currency?"
    a: "Through an off-ramp. The merchant requests a quote for the amount and destination currency, accepts it, and the provider sells the stablecoins and pays out to the merchant's bank account over the local rail. BlindPay supports payouts in 100+ countries and 80+ currencies, including Pix in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH and RTP in the US, and SEPA in Europe."
---

Stablecoin payments settle in **seconds to a few minutes**, on any day of the week, and the funds are final once the blockchain confirms them. Card networks typically pay merchants **one to three business days** after the sale, and cross-border wires take **one to five business days**. If the merchant needs local currency, an off-ramp converts the stablecoins and pays out over a local rail like Pix, SPEI, or RTP, usually within minutes. No pre-funded accounts required.

That gap is not a small speed bump. It changes how much working capital a merchant needs, how exposed they are to chargebacks, and whether Friday night sales can pay Monday's suppliers.

> **Quick glossary**
>
> **Settlement:** the moment the merchant has usable funds in the account and currency they want. Not authorization, not "pending." Usable.
>
> **Finality:** the point after which a payment can't be reversed by the payer, the bank, or the network.
>
> **On-ramp / off-ramp:** services that convert fiat into stablecoins (on-ramp) and stablecoins back into fiat (off-ramp).

## How long does settlement take on each payment rail?

Here's the side-by-side most finance teams actually need:

| Rail | Time to usable funds | Typical cost to merchant | When is it final? | Runs on weekends? |
| --- | --- | --- | --- | --- |
| **Stablecoin (USDC/USDT)** | Seconds to minutes on-chain; minutes to local bank over instant rails | Network fee of cents, plus FX spread and payout fee if converted | Once confirmed on-chain, minutes | Yes, 24/7/365 |
| **Card networks** | 1 to 3 business days | Typically 1.5% to 3.5%, more on international cards | Open to chargebacks, typically for up to 120 days | Authorization yes, payout no |
| **ACH** | Same day to 2 business days | Usually under $1 per transfer | Returns possible for days; up to 60 days on unauthorized consumer debits | No |
| **International wire (SWIFT)** | 1 to 5 business days | $25 to $50 per wire, plus FX spread and intermediary deductions | Final once credited, but recalls get requested | No |

The pattern: every traditional rail is either fast and reversible (cards), cheap and slow (ACH), or slow and expensive (wires). Stablecoin settlement is the first one that's fast, cheap, and final at the same time.

## Why is stablecoin settlement faster than card settlement?

Because there are fewer parties in the middle.

A card payment moves through the cardholder's issuing bank, the card network, the merchant's acquirer, and a processor. Each one batches, nets, and reconciles on its own schedule. The acquirer usually waits for the network's daily clearing cycle, then pays the merchant on the next business day or two. Weekends and bank holidays add days.

A stablecoin payment is a single transfer recorded on a shared ledger. The payer's wallet sends the tokens, validators confirm the block, and the recipient's balance updates. There's no batch window and no bank that closes at 5pm.

What's interesting here is that the speed doesn't come from the blockchain being "faster" in some raw sense. It comes from the architecture: one ledger that everyone reads, instead of four ledgers that reconcile to each other overnight.

## What does settlement finality mean for merchant risk?

A card sale that "settled" on Tuesday can come back in March. The cardholder files a dispute, the network pulls the funds, and the merchant pays a chargeback fee on top of losing the sale. For merchants selling digital goods or shipping internationally, chargebacks are a line item, not an edge case.

A confirmed stablecoin transfer can't be pulled back. No network, bank, or payer can reverse it. That gives merchants three things:

- **No chargeback fraud.** The "friendly fraud" pattern, where a buyer receives goods and then disputes the charge, doesn't exist on this rail.
- **No dispute fees.** No per-chargeback penalty, no reserve held back by the acquirer to cover future disputes.
- **Cleaner cash forecasting.** Money that arrived is money you have.

Two honest caveats. First, refunds still exist; the merchant just sends them as a new transfer, so you need a written refund policy. Second, finality on the stablecoin leg doesn't make the fiat leg next to it final. If a customer funds a stablecoin purchase with an ACH debit, that ACH debit can still be returned for days. Good providers monitor the fiat side continuously for exactly this reason.

## How do merchants turn stablecoin balances into local currency?

Most merchants don't want to hold USDC forever. They have payroll in reais, rent in pesos, and suppliers who invoice in euros. The conversion step is where settlement either stays fast or quietly becomes slow again.

A good off-ramp flow looks like this:

1. **Request a quote.** Amount, source stablecoin, destination currency, destination bank account.
2. **Review the itemized numbers.** The FX rate, the spread, and the payout fee, as separate lines.
3. **Accept and execute.** The rate is locked at execution, so the amount that lands is the amount you were quoted.
4. **Receive over the local rail.** Pix in Brazil and SPEI in Mexico land in minutes. RTP in the US lands in seconds. SEPA in Europe, PSE in Colombia, and Transfers 3.0 in Argentina follow their own windows, usually same day.

BlindPay runs this conversion and payout in 100+ countries and 80+ currencies through one API. Live rates for common corridors are public, for example [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn).

## What does "no pre-funding required" mean in practice?

In traditional cross-border payments, a provider that pays out in Brazil needs reais sitting in a Brazilian account before the payment can go out. Same for Mexico, Colombia, the Philippines. That capital is trapped, spread across a dozen countries, idle until it's spent. Someone pays for it, and it's usually the merchant, through wider FX spreads.

With stablecoins as the settlement layer, the value crosses the border as a digital dollar and converts at the destination at execution time. The merchant doesn't park money in every market ahead of time. BlindPay settles without requiring capital pre-positioned in destination accounts, which is one of the main reasons its quotes can stay tight.

For merchants who receive dollars from customers by bank transfer rather than from wallets, [Named Virtual Accounts](/blog/introducing-virtual-accounts) close the loop: a US account in your name with ACH, Wire, and RTP, where deposits auto-convert into stablecoins and can settle to local currency right after.

## A settlement timeline, side by side

A merchant in Mexico sells $10,000 of goods to a US buyer on a Friday evening.

**By card:** the authorization clears instantly. The acquirer includes the sale in Monday's batch. Funds reach the merchant's account Tuesday or Wednesday, minus 3% or more once cross-border and FX fees are counted. The sale stays disputable for months.

**By international wire:** the buyer's bank sends it Monday morning. It passes through one or two correspondent banks and lands Wednesday or Thursday, minus a $25 to $50 fee and an FX spread set by the receiving bank.

**By stablecoin:** the buyer sends 10,000 USDC Friday night. It confirms in seconds. The merchant requests a quote, locks the MXN rate, and the pesos land over SPEI in minutes. Friday night. Final.

Same sale. The difference is four to five days of working capital and zero dispute exposure.

## What should a finance lead check before switching?

- **Which stablecoins and networks** your customers actually hold. USDC and USDT on low-fee chains cover most of it.
- **Which local rails** the provider pays out on, and whether they're instant (Pix, SPEI, RTP) or batch.
- **Whether quotes are itemized.** Spread and payout fee as separate numbers, locked at execution.
- **Whether the provider needs you to pre-fund** anything.
- **How compliance runs.** KYB on your business, KYC on counterparties, and monitoring on both the on-chain and fiat legs.

For the full receiving flow, read [how merchants accept stablecoin payments](/resources/more/how-merchants-accept-stablecoin-payments). For the leadership case on combining stablecoins with instant local rails, see [Orchestrating Local Payments and Stablecoins](/blog/orchestrating-payment-rails-leaders).

## Get paid in minutes, not days

Card-era settlement made sense when there was no alternative. There is now. If you want to see a live, itemized quote for your corridor and a real settlement timeline, [talk to the BlindPay team](/contact).

---

Source: https://blindpay.com/resources/more/non-custodial-payments-explained

---
title: "Non-custodial payments: what they are and why they reduce risk for businesses"
seoTitle: "Non-custodial payments: what they are and why they matter"
description: "A non-custodial payment provider moves your money without holding it between payments. Who controls the funds, who carries the risk, and what to ask."
date: "2026-08-05"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a non-custodial payment?"
    a: "A payment where the provider moves and converts the money without holding a balance of it on your behalf. Funds stay in a bank account or wallet the business controls until the moment a payment executes, and if the payment cannot complete, they go back to where they started."
  - q: "What is the difference between custodial and non-custodial payments?"
    a: "Who holds the money between payments. A custodial provider keeps customer funds in its own accounts or wallets, so its solvency, controls, and record-keeping become the customer's risk. A non-custodial provider only touches funds for the transaction it is executing, so there is no standing balance exposed to the provider."
  - q: "Is BlindPay non-custodial?"
    a: "Yes, by design. With an external wallet, the customer controls the stablecoins, authorizes the exact amount of each payout, and BlindPay never takes custody beyond the single transaction it is asked to execute. If the receiving bank rejects or returns a payout, the stablecoins go back to the wallet that authorized it. BlindPay also offers managed wallets, in beta, for teams that choose to hold a balance with BlindPay between payments."
  - q: "Do non-custodial payments mean I have to manage private keys?"
    a: "Not necessarily. A business can use its existing custody setup, such as an institutional wallet provider, or run bank-to-bank flows through virtual accounts and payouts, where the stablecoins settle behind the scenes. Key management only becomes your job if you choose to hold the wallet yourself."
  - q: "What happens to my money if a non-custodial payment provider fails?"
    a: "Funds that were never sent to the provider are not affected, because they were never in its possession. The exposure is limited to payments in flight at that moment. With a custodial provider, every balance held on your behalf is exposed until the provider's accounts are reconciled and returned."
---

A non-custodial payment is one where the provider moves and converts your money without holding a balance of it on your behalf. Funds stay in a bank account or wallet you control until the moment a payment executes. If the payment can't complete, they go back where they started. A custodial provider, by contrast, keeps your money in its own accounts between payments, which quietly turns its balance sheet into your risk.

That risk isn't theoretical. When the banking-as-a-service middleware company Synapse filed for bankruptcy in April 2024, end users of the fintech apps built on it were owed about $265 million and lost access to it for months. The court-appointed trustee found the partner banks held about $180 million of that, and later put the shortfall at roughly $65 million to $95 million. Nobody had to steal anything. The records of who owned which dollars in the pooled accounts simply didn't reconcile.

For fintechs, PSPs, and payroll platforms that move customer money, where the funds sit between payments is a design decision with regulatory, audit, and balance-sheet consequences.

## What is the difference between custodial and non-custodial payments?

Three questions separate the two models.

- **Who holds the funds?** Custodial: the provider, in accounts or wallets it owns, often pooled across customers. Non-custodial: you, in an account or wallet you control, until a specific payment executes.
- **Who carries counterparty risk?** Custodial: you, on every dollar the provider holds for you. Non-custodial: only on the payment in flight at that moment.
- **What happens if the provider fails?** Custodial: balances freeze until an administrator works out who owns what. Non-custodial: funds you never sent are unaffected, because they were never in the provider's possession.

A useful way to picture it: a custodial provider works like a parking garage. Your car sits on their property between trips, and if the garage goes bust, getting it out is a legal process. A non-custodial provider works like a toll road. Your car is only on their road while it's moving, and it's yours the whole time.

## How do the two models compare?

| | Custodial | Non-custodial |
| --- | --- | --- |
| Fund control | Provider holds balances on your behalf | You hold funds until each payment executes |
| Failure handling | Funds stay in the provider's balance and are credited back there | Funds return to the originating account or wallet |
| Counterparty risk | Every balance held by the provider | Only the payment in flight |
| If the provider fails | Balances frozen pending reconciliation | Unsent funds unaffected |
| Reconciliation | Your ledger against the provider's internal ledger | Your ledger against bank statements and on-chain records |
| Typical use cases | Consumer wallets, stored-value apps, exchanges | B2B payouts, payroll, remittance, treasury |

Custody isn't wrong. It's a trade. Custodial balances make instant internal transfers and a simple "wallet" UX easy, and plenty of products need that. The point is to choose it deliberately, per use case, rather than inherit it from whichever provider you picked.

## How does BlindPay's non-custodial model work?

BlindPay is a non-custodial payment processor. In the docs' own words, it never takes custody of your stablecoins beyond the single transaction it is asked to execute ([overview](/docs/overview)). Here's what that looks like in a payout from a customer-controlled wallet:

1. **Quote.** You request a payout quote that locks the rate, fees, and the exact amount the recipient receives, for five minutes.
2. **Authorize.** The wallet authorizes that exact amount and nothing more: an ERC-20 `approve` on Ethereum, Base, Polygon, or Arbitrum, a signed XDR on Stellar, or a token delegation on Solana.
3. **Execute.** BlindPay collects the authorized stablecoins, converts them, and pays the recipient over a local rail such as Pix, SPEI, ACH, SEPA, or SWIFT (POBO/COBO).
4. **Return on failure.** If the fiat transfer can't settle or the receiving bank returns it, the payout ends `refunded` and the stablecoins go back to the same wallet that authorized it.

One precise distinction worth knowing: a payout that ends `failed`, for example because a compliance check rejected it, does not refund automatically. It needs a follow-up with support ([payouts](/docs/payouts)). The automatic return covers what the bank rejects or sends back.

On the way in, a payin works the same way in reverse. A bank deposit is converted at the quoted rate and delivered straight to the destination wallet, rather than sitting in a provider balance. The full sequence is in [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works).

BlindPay also offers **managed wallets**, in beta. Those are custodied by BlindPay, for teams that want a balance held between on-ramp and off-ramp without running their own wallet. It's an explicit choice made per customer, not the default.

## Why does it matter for regulators and auditors?

Fintechs, PSPs, and payroll platforms moving customer money get asked the same questions by partner banks, auditors, and regulators: where are customer funds at any moment, in whose name, and can you prove it?

A non-custodial setup makes those answers shorter:

- **Fewer places money can sit.** Each extra holding point is another ledger to reconcile and another entity whose failure affects your customers. Synapse is the cautionary example.
- **A public record for the stablecoin leg.** Each on-chain transfer has a transaction hash that anyone can verify, with the amount, addresses, and timestamp. That's evidence your auditor can check without asking the provider.
- **Cleaner vendor due diligence.** A partner bank reviewing your stack will ask what happens to customer funds if a vendor fails. "They were never held there" is the easiest answer to defend.

Regulation is moving the same direction. The US GENIUS Act, signed in July 2025, requires payment stablecoin issuers to hold one-for-one reserves and gives holders priority over those reserves if an issuer fails. That protects the token. It doesn't cover the provider in between, which is why the custody model of your payment provider still deserves its own review.

## What should you ask a payments provider to check if it's really non-custodial?

"Non-custodial" appears on a lot of websites. These six questions tell you whether it describes the product:

1. **Between payments, where do my funds sit, and in whose name?** The answer you want is "in your account or wallet," not "in a balance we hold for you."
2. **Who holds the private keys for the wallets my stablecoins sit in?**
3. **When a payout is rejected or returned, where do the funds go, and does that happen automatically?**
4. **Do you hold customer funds in pooled accounts beyond the payment in flight?** If yes, for how long and under what records?
5. **If you went bankrupt tomorrow, would any of my funds be part of your estate?**
6. **Can I see the on-chain record for every movement of my stablecoins?**

A provider that answers all six in writing, with the same answers its docs give, is non-custodial. One that needs a follow-up call for question 1 probably isn't.

## What to do next

Map where your customers' money actually sits today, hop by hop, from their bank account to the recipient's. Every hop where a third party holds a balance is a place to ask the questions above. Then read BlindPay's [flow of funds in the docs](/docs/overview) and trace a test payout on a free development instance, where a payout quote for $777.00 is forced to end `refunded`, so you can watch the return land back in the wallet. The [payout quickstart](/docs/quickstart-payout) covers the setup.

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

---

Source: https://blindpay.com/resources/more/virtual-account-vs-virtual-iban

---
title: "Virtual account vs virtual IBAN vs real bank account: what's the difference?"
seoTitle: "Virtual account vs virtual IBAN vs bank account"
description: "A real account holds funds for one holder. A virtual account routes deposits into a master account. A virtual IBAN is the IBAN version. When to use each."
date: "2026-08-04"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Is a virtual IBAN the same as a virtual account?"
    a: "A virtual IBAN is one kind of virtual account. Both are unique receiving details that route into a master account and identify who a deposit belongs to. A virtual IBAN uses the IBAN format and mostly receives SEPA and other IBAN-based transfers. A US virtual account uses a routing and account number and receives ACH, wire, and sometimes SWIFT."
  - q: "Are funds in a virtual account protected?"
    a: "It depends on the structure behind it, not on the word virtual. The money sits in a master account at a bank or licensed payment institution, and protection depends on how that account is titled and what records the provider keeps. Ask the provider in writing who holds the funds, in whose name, and what happens if the provider fails. Stablecoins are not bank deposits."
  - q: "Can virtual accounts receive international payments?"
    a: "Some can. It depends on the rails the account supports. A US virtual account that accepts SWIFT can receive wires from foreign banks, and a virtual IBAN can receive SEPA transfers from anywhere in the SEPA zone. Before telling a foreign payer how to pay, confirm the account supports their rail and that the beneficiary name matches what they expect."
  - q: "Do virtual accounts have their own balance?"
    a: "Not at the bank. The bank sees one master account with one balance. The provider's ledger tracks how much of it belongs to each virtual account. Some providers show that per-account balance in their API; others sweep each deposit onward, for example converting it into a stablecoin and sending it to a linked wallet, so there is no balance to show."
  - q: "What is an omnibus account?"
    a: "An omnibus account is a single bank account that holds funds belonging to many customers, titled to the provider or to the provider for the benefit of its customers (an FBO account). Pooled virtual accounts usually route into one. The provider's ledger, not the bank, records which customer owns which part of the balance."
---

A real bank account is opened by a bank for one account holder and holds its own balance. A virtual account is a unique set of receiving details that routes deposits into a master account and identifies who they belong to. A virtual IBAN is a virtual account in IBAN format, used mainly for SEPA and other IBAN-based transfers.

Same goal, different plumbing. The one that fits depends on who pays you, over which rail, and whose name needs to be on the account.

## Key takeaways

- Only a real bank account holds its own balance at the bank. Virtual accounts and virtual IBANs route into a master account.
- A virtual IBAN is a virtual account with an IBAN. The difference is format and rails, not concept.
- Named accounts carry your customer's name. Pooled accounts carry the provider's. That choice drives what the payer sees and what compliance asks for.
- Terminology varies by provider and country. Ask what the product actually does, not what it's called.

## What is the difference at a glance?

The three differ in who holds the funds, whose name is on them, and how they're issued.

| | Real bank account | Virtual account | Virtual IBAN |
| --- | --- | --- | --- |
| Holds funds | Yes, its own balance at the bank | No, routes into a master account | No, routes into a master account |
| Account holder name | The account holder | The provider (pooled) or the end customer (named) | The provider (pooled) or the end customer (named) |
| How it's issued | Bank application and onboarding, one at a time | API call from a provider | API call from a bank or licensed payment institution |
| Identifier | Account number (plus routing number, or an IBAN) | Account number plus routing number (US), or local equivalent | IBAN: country code, check digits, bank and account identifier |
| Typical rails | Everything the bank offers | ACH and wire in the US, sometimes SWIFT | SEPA, domestic IBAN rails, SWIFT |
| Reconciliation | By reference or amount | By the receiving account number | By the receiving IBAN |
| Best for | Operating cash, treasury, full banking | High-volume collections, per-customer attribution | Collecting euros and other IBAN currencies at scale |

## What is a real bank account?

A real bank account is an account a bank opens for a specific account holder, after its own KYC or KYB, with its own balance on the bank's books. The holder can usually send and receive payments, get statements, and access every service the bank offers.

The trade-off is scale. Opening one is slow and manual. Opening 10,000 of them, one per customer, isn't realistic for most businesses.

## What is a virtual account?

A virtual account is an identifier, usually an account number and routing number in the US, that routes incoming payments into a master account while telling the provider exactly who the payment is for. Payers send to it like any account. The provider's ledger records which customer each deposit belongs to.

The full breakdown of how the routing and matching work is in [what is a virtual account](/resources/more/what-is-a-virtual-account).

## What is a virtual IBAN?

A virtual IBAN (vIBAN) is an International Bank Account Number that routes into a master account instead of standing as its own account. It has the same structure as any IBAN: a two-letter country code, two check digits, and the bank and account identifier, up to 34 characters in total, following the format [Swift publishes in the IBAN registry](https://www.swift.com/standards/data-standards/iban-international-bank-account-number).

Because the country code comes from the issuing bank, a business can collect euros on, say, a Lithuanian or Irish IBAN while being based elsewhere. Inside the euro area, [EU Regulation 260/2012](https://eur-lex.europa.eu/eli/reg/2012/260/oj) prohibits payers from refusing to pay an account because of the country it's held in. In practice some companies still reject foreign IBANs, so ask your payers before assuming it's a non-issue.

## Named vs pooled virtual accounts: why does the name matter?

A named virtual account is titled to your end customer, so the payer sees your customer as the beneficiary. A pooled virtual account sits under an account in the provider's name, often an omnibus or "for benefit of" (FBO) account, so the payer sees the provider.

The name matters for two reasons:

- **The sender experience.** Payers increasingly get a name check before they send. In the euro area, payment providers must verify that the payee's name matches the IBAN for SEPA credit transfers, a requirement introduced by the [Instant Payments Regulation](https://eur-lex.europa.eu/eli/reg/2024/886/oj). The UK runs Confirmation of Payee. A pooled account in the provider's name can trigger a "name doesn't match" warning when the payer typed your customer's name, and a scared payer doesn't send.
- **Compliance.** Regulators want to know whose money it is. With a named account, the account title answers that. With a pooled account, the provider's ledger has to prove, deposit by deposit, which customer owns what. Both are legitimate. Pooled just puts more weight on the provider's records.

| | Named virtual account | Pooled virtual account |
| --- | --- | --- |
| Beneficiary the payer sees | Your customer | The provider |
| Payee name checks | Usually match | May show a mismatch |
| Who proves ownership of funds | The account title, plus the ledger | The provider's ledger |
| Typical setup time | Longer: compliance and bank review | Shorter: often instant |
| Outgoing payments from the account | Can go out under the customer's name | Go out under the provider's name |

## Does the terminology mean the same thing everywhere?

No, and it's worth being honest about. "Virtual account" in one provider's docs can mean a ledger-only sub-account with no external details. In another it means a fully named account with its own routing number. Some banks call vIBANs "dedicated IBANs" or "named IBANs." In some countries, "virtual account" is the common name for bank collection references that aren't accounts at all.

Three questions cut through it:

1. Can a payer outside the provider send money directly to it?
2. Whose name will the payer see as the beneficiary?
3. Where does the money actually sit, and in whose name?

If the answers are "yes, my customer's, a regulated bank," you have a named virtual account, whatever the page calls it.

## When should you choose each?

Choose by who pays you, how many payers there are, and whose name the payer needs to see.

- **Choose a real bank account if** you need full banking for your own company: operating cash, treasury, payroll out, a relationship with a bank. You won't need thousands of them.
- **Choose a virtual account if** you receive many payments from many payers in the US, need each one attributed without reading references, and want accounts issued by API as customers sign up.
- **Choose a virtual IBAN if** your payers are mostly in the SEPA zone or other IBAN countries and pay in euros or another IBAN currency.
- **Choose named over pooled if** payers are businesses that run payee name checks, if outgoing payments must show your customer's name, or if your compliance team wants the account title to prove ownership.
- **Choose pooled over named if** you need accounts instantly, payers are consumers who won't be confused by a provider name, and you trust the provider's ledger.

## How does BlindPay handle virtual accounts?

[BlindPay virtual accounts](/virtual-accounts) are named US accounts. Each one is issued in a single customer's name, with its own routing and account number, and receives ACH, wire, and SWIFT depending on the account type. Deposits convert automatically to USDC or USDT and settle to one blockchain wallet.

A few specifics from the [virtual accounts docs](/docs/virtual-accounts):

- **One customer per account.** Each account belongs to one onboarded customer who has passed KYC or KYB.
- **Several accounts per customer.** A customer can hold more than one to separate funds by purpose, with one active account per banking partner for most partners.
- **Named payouts.** Payouts that originate from the account go out under the end customer's name, not a pooled name.
- **Reviewed, not instant.** Production accounts go through compliance review and bank review, with SLAs of 24 hours or 3 to 5 business days depending on the account type. Development accounts are approved instantly.

BlindPay's virtual accounts use US routing and account numbers, not IBANs. For euros, BlindPay pays out over SEPA rather than collecting on virtual IBANs.

If you're new to how the stablecoin side works, [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained) walks through approval, deposits, and settlement.

## What to do next

List your top 20 payers and write down three things for each: their country, the rail they'd use, and whether their bank checks payee names. If most are US businesses on ACH or wire, you want named US virtual accounts. If most are in the SEPA zone, you want virtual IBANs. Then create a test account on a free BlindPay development instance with [create a virtual account](/docs/virtual-accounts-create) and see what your payers would see.

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

---

Source: https://blindpay.com/resources/more/when-not-to-use-blockchain-payments

---
title: "When not to use blockchain payments: 7 cases where a bank rail wins"
seoTitle: "When not to use blockchain payments: 7 honest cases"
description: "Blockchain payments beat wires on many corridors, not all of them. Seven cases where a domestic rail, a card, or a plain wire is still the better choice."
date: "2026-08-03"
updated: "2026-08-03"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "When should a business not use blockchain payments?"
    a: "Skip them for domestic payments on instant rails like Pix, RTP, or SEPA Instant, for consumer purchases that need chargeback protection, for corridors with no licensed off-ramp, and for tiny one-off payments where fixed fees outweigh any FX savings. They also fit poorly when no one on your team or your provider owns compliance."
  - q: "Are blockchain payments worth it for domestic payments?"
    a: "Rarely. If both sides bank in the same country and currency, and a fast local rail exists, the payment already settles in seconds at low cost. Adding a stablecoin leg adds a conversion and a compliance check without removing anything. The advantage shows up when money crosses a border or a currency."
  - q: "Can I get a chargeback on a blockchain payment?"
    a: "No. A final on-chain transfer can't be reversed by the sender, the provider, or the network. If a payment is wrong, the recipient has to send it back. Businesses that sell to consumers who expect card-style dispute rights should keep cards for those sales."
  - q: "What if my recipient's country has no off-ramp?"
    a: "Then the stablecoin route breaks at the last step. The recipient would have to hold stablecoins or cash them out through an exchange, which shifts cost and risk onto them. Check that your provider pays out in the recipient's currency over a local rail before you move that corridor."
  - q: "Are blockchain payments cheaper for small payments?"
    a: "Not always. Network fees are often cents, but providers usually charge a fee per payment, and some rails have minimums. On a $50 payment, a flat fee can cost more than a domestic transfer or a low-cost remittance app. Compare the full quote, not the network fee alone."
---

Don't use blockchain payments when a domestic instant rail already does the job, when the buyer expects a chargeback, when the recipient's country has no licensed off-ramp, or when the payment is so small that a per-payment fee eats the FX savings. They win on cross-border, cross-currency payments that are slow and expensive by wire. Outside that, a bank rail or a card is often the better tool.

That's an unpopular thing for a stablecoin company to write. It's also true, and it saves you from migrating a corridor that was never broken.

## Why aren't blockchain payments always the better option?

A blockchain payment for a business is three legs: fiat in, a stablecoin across, fiat out. The middle leg is fast and cheap. The two bank legs are exactly as fast as the local rails they use. The savings come from replacing correspondent banks and opaque FX markups in between.

So the stablecoin route only helps when the middle is the problem. The World Bank's [Remittance Prices Worldwide report](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) put the global average cost of sending $200 at 6.36% in the third quarter of 2025. That's the kind of gap a stablecoin closes. A domestic transfer that already costs nothing and lands in seconds has no gap to close.

The U.S. Faster Payments Council made the same point in its [July 2026 report on stablecoins for cross-border payments](https://fasterpaymentscouncil.org/userfiles/2080/files/CBPWG_DAWG_Stablecoins%20as%20a%20Cross-Border%20Payment%20Method2_07-22-2026%20Final.pdf): the report is scoped to cross-border business payments because that's where the pain point is clearest, and it notes that stablecoins are not supported in every country and carry the same compliance burden as cash-based payments.

## What are the 7 cases where you shouldn't use blockchain payments?

### 1. Should you use blockchain payments for domestic transfers?

Usually not. Brazil's Pix, the US RTP network and FedNow, Mexico's SPEI, and SEPA Instant in the euro area already settle in seconds. Under the EU's [Instant Payments Regulation](https://eur-lex.europa.eu/eli/reg/2024/886/oj), euro-area payment providers had to offer instant credit transfers by October 2025, at no more than the price of a regular transfer. A stablecoin leg in the middle of a same-currency, same-country payment adds a conversion and a compliance check and removes nothing.

### 2. What about consumer purchases that need chargebacks?

Keep cards. A final on-chain transfer can't be reversed, by design. Consumers who buy online expect to dispute a charge, and in many markets card rules give them that right. For B2B payments to known counterparties, finality is a feature. For a $40 order from a first-time customer, it's a support problem.

### 3. What if the recipient's country has no licensed off-ramp?

Then the payment ends in stablecoins, and the recipient carries the cost and risk of cashing out through an exchange. Some corridors have deep local liquidity and an instant payout rail. Others have neither, or have rules that limit who can convert. Check that your provider pays out in local currency over a local rail before you move a corridor.

### 4. Are tiny, one-off payments worth it?

Often not. Network fees are cents on Polygon, Solana, Stellar, and Base, but provider fees, FX spreads, and rail minimums don't scale down to zero. On a single $50 payment, a flat fee can cost more than a domestic transfer or a low-cost remittance app. The math improves with volume and with larger tickets. Run the numbers per corridor, using a full quote.

### 5. What if no one owns compliance?

Don't start. Every sender and recipient still needs KYC or KYB, wallets and people need sanctions screening, and transfers between providers carry travel rule data. A provider can run all of that inside its API. A team that tries to send stablecoins wallet to wallet with no provider takes all of it on itself, and the FPC report is blunt that direct transfers carry meaningful compliance exposure.

### 6. What if your finance team can't book it yet?

Wait until it can. Holding stablecoins on the balance sheet raises accounting and tax questions that depend on your jurisdiction and your auditor. If you never hold the stablecoin, because a provider converts it in and out within the same payment, most of that goes away. If you plan to keep a stablecoin balance, get your accountant's sign-off first.

### 7. What if the recipient insists on a specific payment method?

Use it. Some suppliers will only accept a wire with an MT103 they can file, some governments require payment through a named channel, and some invoices must be paid against a specific reference. A provider that pays out over SWIFT, with a confirmation the recipient recognizes, solves part of this. A raw stablecoin transfer doesn't.

## When does each option make sense?

| Situation | Blockchain payment? | Better default | Why |
| --- | --- | --- | --- |
| Same-country, same-currency transfer with an instant rail | No | Pix, RTP, FedNow, SPEI, SEPA Instant | Already seconds and low cost |
| Consumer checkout that needs dispute rights | No | Cards | Chargebacks are expected and often required |
| Corridor with no licensed off-ramp | No | Wire, or a local payout partner | The stablecoin can't become local money cleanly |
| Single payment under about $50 | Usually no | Domestic transfer or remittance app | Fixed fees outweigh FX savings |
| Recurring B2B payments to LatAm, $1,000 and up | Yes | Stablecoin route with a local payout rail | Removes correspondent fees and days of float |
| Contractor payroll across several countries | Yes | Stablecoin route | One funding currency, local payouts, 24/7 settlement |
| Treasury moves outside banking hours | Yes | Stablecoin route | Settles on weekends and holidays |
| Supplier who needs a SWIFT confirmation | Depends | A provider that pays out over SWIFT | The recipient sees a normal wire |

## How do you decide whether to move a corridor?

Five questions, in order. If any answer is no, leave the corridor on its current rail for now.

1. **Does the payment cross a border or a currency?** If not, use the local instant rail.
2. **Does a licensed provider pay out in the recipient's currency over a local rail?** If not, the stablecoin route ends in a wallet the recipient may not want.
3. **Is the full quoted cost lower than what actually arrives today by wire?** Compare amounts received, not fees charged, because FX markups hide in the rate.
4. **Do you or your provider own KYC, KYB, sanctions screening, and the travel rule?** Write down who does what.
5. **Can finance book it?** Confirm whether you'll ever hold the stablecoin, and if so, how your auditor wants it recorded.

A yes on all five is a corridor worth testing with a few real payments.

## How does BlindPay fit, and where doesn't it?

[BlindPay](/global-payments) is a stablecoin payments API for the corridors that pass those five questions: cross-border payments where a licensed off-ramp and a local rail exist. Payouts go out over Pix, SPEI, Transfers (Argentina), ACH COP (Colombia), ACH, wire, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. KYC and KYB run inside the API, and in the Abstracted flavor nobody on your team holds a stablecoin or picks a network.

It isn't the right tool for a domestic Pix payment between two Brazilian accounts, or for a consumer checkout that needs chargebacks. Use the local rail and your card processor for those. For the cross-border legs, [build vs buy for stablecoin payments](/resources/more/build-vs-buy-stablecoin-payments) covers what you'd take on yourself.

## What to do next

Pull last quarter's cross-border payments into a spreadsheet and run every corridor through the five questions above. Move the ones that pass, starting with the highest-volume corridor, and leave the rest on their current rail. For a refresher on how the stablecoin route works end to end, see [what blockchain payments are](/resources/more/what-are-blockchain-payments) and the [blockchain payments glossary](/resources/more/blockchain-payments-glossary).

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

---

Source: https://blindpay.com/resources/more/blockchain-payments-glossary

---
title: "Blockchain payments glossary: 34 terms explained in plain English"
seoTitle: "Blockchain payments glossary: 34 terms, plain English"
description: "Stablecoin, on-ramp, off-ramp, finality, gas, non-custodial, travel rule. The 34 terms of blockchain payments, each defined in one or two lines."
date: "2026-07-31"
updated: "2026-07-31"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is the difference between a blockchain payment and a stablecoin payment?"
    a: "A blockchain payment is any transfer of value recorded on a blockchain. A stablecoin payment is the most common kind for businesses: the token that moves is pegged one-to-one to a currency like the US dollar, so its value doesn't swing between sending and receiving. In business payments, the two terms usually mean the same thing."
  - q: "What does on-ramp and off-ramp mean in payments?"
    a: "An on-ramp converts local money, like dollars sent by ACH or reais sent by Pix, into a stablecoin. An off-ramp does the reverse and pays local money into a bank account. Most cross-border blockchain payments use both: an on-ramp on the sender's side and an off-ramp on the recipient's side."
  - q: "What is settlement finality in blockchain payments?"
    a: "Finality is the point after which a confirmed transfer can't be reversed or reorganized out of the ledger. On networks like Stellar and Solana it arrives in seconds. On Ethereum, full finality takes about 13 to 15 minutes. Until a payment is final, a careful provider treats it as pending."
  - q: "What is a gas fee?"
    a: "A gas fee is what the network charges to process a transaction, paid to the validators who include it in a block. On Polygon, Solana, Stellar, and Base it is usually a fraction of a cent to a few cents. On Ethereum it can reach several dollars when the network is busy."
  - q: "What does non-custodial mean in a payment?"
    a: "Non-custodial means the provider never holds your funds. The stablecoins stay in a wallet you control until a transaction you authorized moves them. In a custodial setup, the provider holds the assets on your behalf, which is simpler to operate but adds counterparty risk."
  - q: "What is the travel rule?"
    a: "The travel rule requires financial institutions and virtual asset service providers to pass identifying information about the sender and recipient along with a transfer above a set amount. FATF extended it to virtual assets in 2019, and most major jurisdictions now apply it to stablecoin transfers between providers."
---

Blockchain payments come with 34 terms that rarely show up in a bank statement. The short version: a **stablecoin** is a dollar-pegged token, an **on-ramp** turns bank money into stablecoins, an **off-ramp** turns them back, and **finality** is the moment a transfer can't be undone. Everything else in this glossary hangs off those four ideas.

Each definition below is written for someone who runs payments, finance, or product, not for a protocol engineer. For the bigger picture of how the pieces fit, start with [what blockchain payments are and how they work](/resources/more/what-are-blockchain-payments).

## What are the core terms in a blockchain payment?

**Blockchain payment.** A transfer of value recorded on a shared, public ledger instead of being passed between banks as messages. For businesses, almost always a stablecoin transfer.

**Blockchain (or network, or chain).** The shared ledger itself. Ethereum, Polygon, Base, Arbitrum, Solana, Stellar, and Tron are the ones that carry most dollar stablecoin payments.

**Stablecoin.** A token designed to hold a fixed value against a currency, usually one US dollar. USDC (issued by Circle) and USDT (issued by Tether) are the two largest.

**Token.** A unit of value that lives on a blockchain. A stablecoin is a token; so is a cryptocurrency like ETH. A token is issued on a specific chain, so USDC on Polygon and USDC on Solana are separate deployments of the same asset.

**Wallet.** Software or hardware that holds the private keys controlling an address. A wallet doesn't store coins; it stores the keys that can move them.

**Address.** The public identifier funds are sent to, like an account number. EVM chains (Ethereum, Polygon, Base, Arbitrum) use the `0x` format with 40 hex characters. Solana, Stellar, and Tron each use their own format, which is why sending to the wrong network loses funds.

**Private key.** The secret that authorizes transfers out of an address. Whoever holds it controls the funds. Lose it and nobody can recover them.

**Issuer.** The company that creates (mints) and redeems (burns) a stablecoin, and holds the reserves backing it.

**Reserves.** The cash and short-term government debt an issuer holds so every token can be redeemed at par. In the US, the GENIUS Act, signed on July 18, 2025, sets which assets count.

## What do on-ramp, off-ramp, and payout rail mean?

**On-ramp.** The service that converts fiat money into stablecoins. You send dollars by ACH or wire, or reais by Pix, and stablecoins arrive in a wallet.

**Off-ramp.** The reverse: stablecoins go in, local money lands in a bank account.

**Fiat.** Government-issued money held in banks: dollars, euros, pesos, reais.

**Payout rail.** The local payment system that delivers the fiat at the end. Pix in Brazil, SPEI in Mexico, ACH and RTP in the US, SEPA in Europe, and SWIFT for everything else.

**Payin.** A deposit coming in: fiat that a customer sends so it can be converted into stablecoins.

**Payout.** Money going out: stablecoins converted into fiat and sent to a recipient's bank account.

**Virtual account.** A dedicated bank account number in a customer's name that receives deposits and, with a stablecoin provider, converts them automatically. [What is a virtual account](/resources/more/what-is-a-virtual-account) covers how they work.

## What do settlement, confirmation, and finality mean?

**Transaction hash.** The unique ID of an on-chain transfer. Anyone can look it up on a block explorer, which makes it the closest thing to a public tracking number.

**Confirmation.** A transaction has been included in a block. More confirmations mean more blocks built on top of it.

**Finality.** The point after which a transfer can't be reversed or dropped from the ledger. Ethereum finalizes a block after two epochs of 6.4 minutes each, which [ethereum.org](https://ethereum.org/en/roadmap/single-slot-finality/) rounds to about 15 minutes. Stellar and Solana reach finality in seconds.

**Settlement.** The moment the recipient actually has the money, with no further steps or conditions. On-chain, settlement and finality happen together. In card and bank systems, settlement comes days after the payment looks done.

**Reversibility.** Whether a payment can be pulled back. Card payments carry chargebacks for months. A final on-chain transfer can't be reversed by anyone, so mistakes are fixed by a new transfer, not a recall.

## What do custodial and non-custodial mean?

**Custodial.** A provider holds your assets and keys on your behalf, the way a bank holds deposits. Easier to operate, but you depend on the custodian.

**Non-custodial.** You keep control of the keys. The provider can't move funds unless you sign or approve the transaction. Less counterparty risk, more operational work.

**Self-custody.** You hold your own keys with no provider in between. Non-custodial taken all the way.

## What do gas fees, quotes, and spreads mean?

**Gas fee (network fee).** What a blockchain charges to process a transaction. Cents or less on Polygon, Solana, Stellar, and Base; potentially dollars on Ethereum.

**Quote.** A price a provider locks for a short window: the exchange rate, the fees, and the exact amount the recipient will get. If the quote expires, you request a new one.

**FX spread.** The gap between the market exchange rate and the rate you get. It's often the largest cost in a cross-border payment, and banks rarely show it as a line item.

**Slippage.** The difference between the price you expected and the price you got, because the market moved while the order executed. A locked quote moves this risk to the provider.

## What compliance terms come up in blockchain payments?

**KYC (Know Your Customer).** Verifying an individual's identity before they can send or receive money.

**KYB (Know Your Business).** The business version: verifying the company, its registration, and the people who own and control it.

**AML (anti-money laundering).** The program of policies, monitoring, and reporting a regulated company runs to detect and report illicit funds.

**Sanctions screening.** Checking people, companies, and wallet addresses against government sanctions lists, like the list kept by the US Treasury's [Office of Foreign Assets Control](https://ofac.treasury.gov/).

**Travel rule.** A requirement for providers to send sender and recipient information along with transfers above a threshold. The [Financial Action Task Force](https://www.fatf-gafi.org/en/topics/virtual-assets.html) extended it to virtual assets in 2019.

**VASP (virtual asset service provider).** FATF's term for any business that exchanges, transfers, or holds virtual assets for others. Most on-ramp and off-ramp providers are VASPs.

## How do bank terms map to blockchain terms?

Most blockchain vocabulary has a close bank-world equivalent. This table is the fastest way to translate.

| Bank term | Blockchain term | What's actually different |
| --- | --- | --- |
| Account number | Wallet address | Anyone can create an address. No bank opens it for you |
| Online banking password | Private key | Lose a key and nobody can reset it |
| Bank | Custodian, or yourself | With self-custody, there's no institution in between |
| SWIFT MT103 / wire confirmation | Transaction hash | Anyone can verify a hash on a public explorer |
| Clearing and settlement (days) | Confirmation and finality (seconds to minutes) | No batch windows, no cut-off times |
| Wire fee and correspondent fees | Gas fee | Paid once to the network, not per intermediary bank |
| Chargeback or recall | None | Final transfers can't be reversed |
| Bank's FX rate | Quote with FX spread | Good providers show the spread before you send |
| Currency exchange (fiat to fiat) | On-ramp plus off-ramp | The stablecoin sits in the middle |

## How do the terms fit together in one payment?

Here's a US company paying a supplier in Brazil, with the glossary terms in bold.

1. The company is onboarded through **KYB**, and the supplier's bank details are verified.
2. The company requests a **quote** that locks the **FX spread**, the fees, and the exact reais the supplier will receive.
3. Dollars arrive by ACH as a **payin**, often into a **virtual account**.
4. The **on-ramp** converts the dollars into **USDC**.
5. The USDC moves **on-chain**, gets its **transaction hash**, and reaches **finality** in seconds on a fast **network**.
6. The **off-ramp** converts the USDC into reais.
7. The reais land in the supplier's account over **Pix**, the **payout rail**, usually within minutes.

Sanctions screening and travel rule checks run around steps 1 and 5. Neither the company nor the supplier ever holds a **private key**, because a provider runs that part. The API version of the same flow is in [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works).

## How does BlindPay use these terms?

[BlindPay](/global-payments) is a stablecoin payments API, and its docs come in two flavors that map to this glossary. The Abstracted flavor keeps you in bank terms: virtual accounts, payins, payouts, and bank accounts. The stablecoin settles behind the scenes, and nobody picks a network or holds a key. The Advanced flavor exposes the blockchain vocabulary directly: wallets, addresses, networks, tokens, and on-chain authorization.

Payouts go out over Pix, SPEI, Transfers (Argentina), ACH COP (Colombia), ACH, wire, RTP, SEPA, and SWIFT (POBO/COBO), with no pre-funding. KYC and KYB run inside the API. The [supported chains reference](/docs/kb/supported-chains) lists which networks and tokens each feature accepts.

## What to do next

Pick the five terms your team argues about most (usually finality, custody, and FX spread) and agree on one definition for each before you evaluate a provider. Then read [build vs buy for stablecoin payments](/resources/more/build-vs-buy-stablecoin-payments) to see which of these layers you'd own if you built it yourself.

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

---

Source: https://blindpay.com/resources/more/what-are-blockchain-payments

---
title: "Blockchain payments explained: how stablecoins move money without correspondent banks"
seoTitle: "What are blockchain payments? How they work, explained"
description: "Blockchain payments move a stablecoin on a public ledger instead of messages between banks. How they work, what they cost, and how they compare with SWIFT."
date: "2026-07-30"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What are blockchain payments?"
    a: "A blockchain payment moves value by transferring a digital token, usually a dollar stablecoin like USDC or USDT, on a public blockchain instead of passing instructions between banks. For businesses, it usually sits between two bank transfers: fiat goes in on one side, a stablecoin crosses the border in seconds to minutes, and local currency comes out on the other side."
  - q: "Is a blockchain payment the same as a crypto payment?"
    a: "Not in the way most people mean it. A crypto payment usually means paying in a volatile asset like bitcoin. Business blockchain payments almost always use stablecoins, tokens designed to hold a one-to-one value with a currency like the US dollar, and the payer and recipient often never hold the token at all. It is the settlement layer, not the thing being bought."
  - q: "Do I need a crypto wallet to use blockchain payments?"
    a: "No. With a provider that abstracts the blockchain, you send and receive ordinary bank transfers. The stablecoin settles in a wallet the provider links behind the scenes, and neither side has to install a wallet app or choose a network. Businesses that want to hold stablecoins directly can link their own wallet."
  - q: "Are blockchain payments legal for businesses?"
    a: "Yes, in most major markets, under rules that are getting clearer. The US GENIUS Act, signed in July 2025, created a federal framework for payment stablecoins. The EU regulates them under MiCA, and Brazil's Central Bank rules for virtual asset providers took effect in February 2026. Whether a business needs its own license depends on the country and what it does with the funds. In most provider setups, the provider holds the licenses and runs KYC and KYB on every customer."
  - q: "How fast are blockchain payments?"
    a: "The on-chain transfer confirms in seconds on networks like Stellar, Solana, and Polygon, and in about 13 minutes to full finality on Ethereum. End to end, the bank legs set the pace: instant rails like Pix, SPEI, and RTP pay out in seconds, while ACH and SWIFT take business days."
---

A blockchain payment moves value by transferring a digital token, usually a dollar stablecoin like USDC or USDT, on a public blockchain instead of passing instructions from bank to bank. For businesses it almost always sits between two ordinary bank transfers: dollars go in on one side, the stablecoin crosses the border in seconds to minutes, and local currency comes out on the other. Neither side has to hold crypto.

The old way is still expensive. The World Bank's Remittance Prices Worldwide put the global average cost of sending $200 at 6.36% in the third quarter of 2025, more than double the 3% target set for 2030. That's a consumer benchmark, not a B2B one, but the cost comes from the same places: correspondent hops, FX markups, and capital parked in foreign accounts.

Businesses have noticed. Artemis data, analyzed by McKinsey in early 2026, estimated real-world stablecoin payments at about $390 billion a year based on late-2025 activity. Business-to-business payments made up about $226 billion of that, roughly 60%, up 733% year over year.

## How are blockchain payments different from cards and correspondent banking?

All three move money. They differ in what actually travels.

- **Card networks** move authorization messages. The merchant gets a promise at checkout, and the money settles a day or two later through the acquirer, minus a percentage fee. Chargebacks stay open for months.
- **Correspondent banking** moves payment messages (SWIFT MT103 or ISO 20022). The money itself moves by debiting and crediting accounts that banks keep with each other, called nostro and vostro accounts. A cross-border payment can pass through one or more intermediary banks, each of which may take a fee, and each of which works banking hours.
- **Blockchain payments** move the asset and the record together, on one shared ledger. There's no chain of banks updating separate books. The transfer runs 24/7, and once it's final, nobody can reverse it.

| | Card networks | Correspondent banking (SWIFT) | Blockchain payments |
| --- | --- | --- | --- |
| What moves | Authorization, then batch settlement | Messages between banks' ledgers | The token itself, on a shared ledger |
| Settlement | 1 to 2 business days | Hours to 5 business days | Seconds to minutes on-chain |
| Operating hours | Always on for authorization, settlement on business days | Banking hours, cut-offs, holidays | 24/7 |
| Reversibility | Chargebacks for months | Recalls possible, slow | Final once confirmed |
| Fee shape | Percentage of each sale | Fixed wire fees plus FX markup, per hop | Network fee plus provider fee and FX spread |
| Traceability | Inside the network | Swift gpi tracker, bank to bank | Public transaction hash |

## How does a blockchain payment work, step by step?

Almost every business blockchain payment follows the same pattern: fiat on-ramp, stablecoin transfer, fiat off-ramp. Take a US company paying a $20,000 invoice to a supplier in Mexico.

1. **Fiat in.** The US company sends dollars by ACH, wire, or RTP to its payment provider, often to a dedicated account number in its own name.
2. **On-ramp.** The provider converts the dollars to USDC at the rate locked in a quote.
3. **Stablecoin transfer.** The USDC moves on a blockchain such as Polygon, Base, or Stellar. This leg takes seconds.
4. **Off-ramp.** The provider converts the USDC into Mexican pesos at the quoted rate.
5. **Fiat out.** The pesos land in the supplier's bank account over SPEI, Mexico's instant payment system, usually within minutes.

The supplier sees a peso deposit from a named sender. The US company sees a dollar debit and a confirmation. Neither touched the blockchain. The API-level version of this flow, with quote expiry and webhooks, is in [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works).

## How do settlement time and cost compare with SWIFT?

Speed first. Swift reported in October 2024 that 90% of cross-border payments on its network reach the recipient's bank within an hour. The catch is the last step: only 43% reach the end customer's account within an hour, because the receiving bank still has to process and credit it. Weekends and cut-offs push the rest to the next business day or later. The Financial Stability Board, which tracks the G20's 2027 targets for faster and cheaper cross-border payments, said in October 2025 that the targets are unlikely to be met on time.

A blockchain payment's middle leg settles in seconds on Stellar, Solana, or Polygon, and in about 13 minutes to full finality on Ethereum, at any hour. The end-to-end time is then set by the payout rail. Instant rails like Pix, SPEI, and RTP finish in seconds. ACH and SWIFT still take business days.

Cost works the same way. A SWIFT payment can collect a sending fee, intermediary deductions, a receiving fee, and an FX markup that's rarely shown as a line item. A blockchain payment replaces the intermediary hops with one on-chain transfer. What's left is the network fee (usually cents on Polygon, Solana, Stellar, and Base), the provider's fee, and the FX spread, which a good provider shows in the quote before you send.

## What are the trade-offs?

Blockchain payments aren't free of friction. They move it.

- **Finality cuts both ways.** A confirmed transfer can't be recalled. Mistakes have to be prevented up front, which is why good providers lock the amount and destination in a quote before anything moves.
- **The bank legs remain.** Fiat still enters and leaves over bank rails, with their own cut-offs and review times. A blockchain doesn't make ACH faster.
- **Compliance still applies.** Every sender and recipient needs KYC or KYB, and payments are screened against sanctions lists. That work moves to the provider, but it doesn't disappear.
- **Regulation varies by country.** Stablecoin rules differ between the US, the EU, Brazil, and everywhere else. Your provider needs to be licensed where it operates.

For a domestic payment on a fast local rail, like Pix inside Brazil or RTP inside the US, a blockchain adds nothing. The advantage shows up when money crosses a border or a currency.

## How does BlindPay handle blockchain payments?

[BlindPay](/global-payments) is a stablecoin payments API that hides the blockchain entirely if you want it to. Every payment settles through stablecoins, but in the API's Abstracted flavor you work only with bank concepts: [virtual accounts](/virtual-accounts) for money in, payins for deposits, and payouts to bank accounts for money out. BlindPay picks the network and moves the stablecoins behind the scenes. Nobody on your team manages a wallet or chooses a chain.

Payouts go out over Pix, SPEI, Transfers (Argentina), ACH COP (Colombia), ACH, wire, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. KYC and KYB run inside the API. Teams that do want chain-level control, their own wallets and their choice of network, use the Advanced flavor of the same API.

## What to do next

Price one real payment both ways. Take a supplier invoice you paid by wire last month, add up what actually arrived versus what you sent, and compare it with a live quote for the same amount and currency. The [payout quickstart](/docs/quickstart-payout) gets a development instance quoting in minutes, and the [supported countries list](/docs/kb/supported-countries) shows which corridors are live.

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

---

Source: https://blindpay.com/resources/more/what-is-a-liquidity-market-cross-border-payments

---
title: "What is a liquidity market in cross-border payments? And why stablecoin liquidity is changing it"
seoTitle: "What is a liquidity market in cross-border payments?"
description: "A liquidity market in cross-border payments is where the currency to settle a transfer gets sourced. How correspondent banks pre-fund it, and how stablecoin liquidity changes the model."
date: "2026-07-30"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a liquidity market?"
    a: "A liquidity market is where an asset can be bought or sold quickly without moving its price much. In cross-border payments, it is where a payment provider sources the destination currency it needs to settle a transfer: pre-funded bank balances, bank FX desks, market makers, or stablecoin liquidity. Its depth decides how large a payment can settle at a given rate, and how fast."
  - q: "What is a liquidity provider in stablecoin payments?"
    a: "A liquidity provider holds or sources the fiat and stablecoin inventory needed to convert between them on demand. When you pay out USDC as Brazilian reais, the liquidity provider sells you the reais at a quoted rate and delivers them over Pix. Judge one on three things: the spread it quotes, how large a transaction it can fill at that spread, and whether the quoted rate is the rate that settles."
  - q: "Why do stablecoins reduce liquidity risk?"
    a: "Because they shrink the window in which something can go wrong. An international wire can take up to five business days, and the sender carries FX and counterparty exposure on pre-funded foreign balances the whole time. A stablecoin payout moves on-chain in seconds and converts at a quoted rate, so exposure lasts minutes, and no balance has to sit in the destination country."
  - q: "Do I need to pre-fund accounts to use BlindPay?"
    a: "No. Each BlindPay payout is funded when you create it, from a stablecoin wallet you control, a BlindPay-managed wallet, or a US virtual account that converts ACH, wire, or SWIFT deposits into USDC or USDT. There is no balance to keep in any destination currency."
  - q: "Is stablecoin liquidity the same as crypto exchange liquidity?"
    a: "No. Exchange liquidity is about trading one crypto asset for another on an order book. Stablecoin liquidity in payments is about turning a dollar-pegged token into a specific local currency and landing it in a bank account over a local rail, which takes banking connections and compliance as well as inventory."
---

A liquidity market in cross-border payments is where the currency needed to settle a transfer gets sourced. When a company in the US pays a supplier in Mexico, someone has to hold or buy pesos, put them in a Mexican bank account, and price the trade. That someone is a liquidity provider, and the market it draws from sets the cost, speed, and risk of the payment.

For decades that market ran on cash parked in advance, in bank accounts in every country. Stablecoin liquidity changes where the pesos come from, and when.

## What does "liquidity market" mean in payments?

A liquidity market is a place where an asset can be bought or sold quickly without moving its price much. Liquid means you can trade size fast. Illiquid means a large order pushes the price against you, or has to wait.

In payments, the asset is currency in a specific place. Dollars in a New York bank are not pesos in a Monterrey bank, even at the same exchange rate. Getting from one to the other is the whole job.

Three terms come up constantly:

- **Liquidity:** money in the right currency, in the right place, at the moment a payment needs to settle.
- **Liquidity provider:** the bank, FX desk, market maker, or payments company that holds or sources that money and sells it to you at a rate.
- **Liquidity risk:** the chance the money is not there when you need it, or is only there at a worse rate.

A deep liquidity market fills a 50,000 dollar payout at almost the same rate as a 500 dollar one. A thin market fills the small one fine and charges you for the big one.

## How has liquidity traditionally worked in cross-border payments?

Through correspondent banks and pre-funded accounts. A bank that wants to pay out pesos keeps a peso balance at a Mexican bank. It calls that balance its nostro account ("ours, held with you"). The Mexican bank books the same balance as a vostro account ("yours, held with us").

A cross-border payment is then a pair of ledger entries against those balances, coordinated by SWIFT messages. When two banks have no direct relationship, the payment hops through one or more intermediary correspondents. Each hop adds a fee, a compliance check, and a cut-off time.

Here is where capital gets trapped. To pay out same-day in ten currencies, a bank or payment company has to keep a balance in ten countries, sized for its busiest day plus a buffer. It refills those balances with international wires that take days. The cash earns little, carries currency risk, and can't be used for anything else.

The numbers show the cost of this model:

- **Cost.** The World Bank's [Remittance Prices Worldwide](https://remittanceprices.worldbank.org/sites/default/files/2026-04/RPW_main_report_and_annex_Q325.pdf) report put the global average cost of sending 200 dollars at 6.36 percent in the third quarter of 2025.
- **Speed.** SWIFT gpi data says 92 percent of payments reach the beneficiary bank within 24 hours. Reaching the bank is not the same as being available to the recipient, and screening at the receiving bank often adds a business day.
- **Reach.** The BIS Committee on Payments and Market Infrastructures [found](https://www.bis.org/publications/new-correspondent-banking-data-decline-continues-slower-pace) that the number of active correspondent banks worldwide fell about 22 percent between 2011 and 2019, with Latin America showing the steepest regional decline. Fewer correspondents means fewer routes, and a thinner liquidity market in exactly the corridors that need it.

Regulators know. The Financial Stability Board's [G20 targets](https://www.fsb.org/work-of-the-fsb/financial-innovation-and-structural-change/cross-border-payments/g20-targets-for-enhancing-cross-border-payments-2/) ask that 75 percent of cross-border retail payments reach the recipient within one hour by the end of 2027, with a global average cost of no more than 1 percent.

## What changes when stablecoins are the settlement layer?

Liquidity moves from balances parked in every country to conversion on demand, at the moment of payment. That is the short version of stablecoin liquidity.

Dollars become USDC or USDT one to one. The stablecoins move on-chain in seconds, at any hour. At payout time, a liquidity provider converts them into local currency at a quoted rate and pays the recipient over the local rail, such as Pix in Brazil or SPEI in Mexico.

Three things change for the sender:

1. **No pre-funding.** Capital leaves your treasury when the payment happens, not days before.
2. **Conversion on demand.** The rate is quoted when you ask for it and locked for a few minutes, instead of being set by whatever balance you happened to have in place.
3. **No banking-hours wait on the transfer leg.** The on-chain leg never waits for a cut-off. The local leg still depends on the rail: Pix and SPEI settle in minutes around the clock, while ACH and SEPA follow business days.

One thing does not change. Someone still needs pesos in Mexico. The difference is who holds them. Instead of every sender parking its own buffer, the liquidity provider holds local inventory as working stock across all its customers. The liquidity gets pooled, and each sender stops paying for its own idle cash.

For the step-by-step path of a single payment, from bank deposit to local payout, see [how a stablecoin payment moves](/resources/more/how-a-stablecoin-payment-works).

## Correspondent banking liquidity vs stablecoin liquidity

| Dimension | Correspondent banking liquidity | Stablecoin liquidity |
| --- | --- | --- |
| Settlement speed | 1 to 5 business days for international wires, gated by cut-offs and time zones | Seconds on-chain; minutes to local currency on instant rails like Pix and SPEI |
| Capital efficiency | Balances pre-funded in each currency, sized for peak days plus top-up lead time | Funded at send time; no destination-currency balance to maintain |
| FX handling | Converted at the bank's rate, often a spread bundled into the total, sometimes by an intermediary | Quoted per payment, with the rate and fees locked for a short window |
| Counterparty risk | Exposure to every bank holding a nostro balance, for as long as the balance sits there | Exposure to the stablecoin issuer and the provider, for the length of the transfer |
| Operational overhead | A bank relationship, KYC file, and reconciliation per country and currency | One integration; the provider manages the local rail connections |
| Operating hours | Banking days only | 24/7 on-chain; the local rail sets the payout hours |
| Cost visibility | Fees can be deducted by intermediaries along the way | Itemized in the quote before the payment is sent |

Correspondent banking still has a place. It reaches almost every bank on earth, and some counterparties will only accept a wire. The table is about where the liquidity sits, and who pays to keep it there.

## What is liquidity risk in stablecoin payments?

Liquidity risk is the chance that a payment can't settle at the rate, in the currency, or at the time you expected. Stablecoin liquidity shortens the exposure window. It does not remove every risk, and a provider that claims otherwise is selling.

What can go wrong:

- **Slippage.** The rate you are shown is not the rate you get. This happens when a provider shows an indicative rate and executes later at market.
- **Thin pools.** On less common corridors, a large order can exhaust the provider's good inventory and fill the rest at a worse rate.
- **FX volatility.** Local currencies move. The longer the gap between quote and settlement, the more that movement lands on someone.
- **Local rail and compliance delays.** The on-chain leg is fast, but a rejected bank account or a compliance review can still stall the fiat leg.
- **Issuer risk.** A stablecoin is only as good as its reserves and its redemption process. Short holding periods limit this exposure; they don't eliminate it.

BlindPay's approach is built around those failure points. Every payment starts with a quote that locks the rate and fees for a short window, five minutes by default, and the response shows the market rate next to BlindPay's rate, so the spread is visible. Each payout is funded when you create it, with no pre-funded balance sitting anywhere. BlindPay operates as a non-custodial payment processor, and a payout that ends up refunded returns the stablecoins to the funding source. KYC runs before any money moves, with standard checks completing in about 60 seconds.

## How do you test a liquidity market for one corridor?

Four quick checks, before any contract:

1. **Quote three sizes.** Ask for quotes at 500, 5,000, and 50,000 dollars on the same corridor within a minute. If the effective rate barely moves, the depth is real.
2. **Check that the quote is binding.** A quote should carry an id and an expiry, and the payment should execute against it.
3. **Ask who holds the local currency.** A provider that owns or directly accesses its liquidity can commit to a rate. One that routes to a third party usually can't.
4. **Map the rail and its hours.** A payout lands in minutes on Pix at 2 a.m. on a Sunday. A SEPA payout waits for Monday.

## What to do next

Pick your largest corridor and run the four checks above against your current provider. Then compare the result with a BlindPay quote on a development instance using the [payout quickstart](/docs/quickstart-payout), or read the [API introduction](/docs/introduction) to see how quotes, authorization, and execution fit together. To talk through a specific corridor, [contact the BlindPay team](/contact).

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

---

Source: https://blindpay.com/resources/more/what-is-a-virtual-account

---
title: "What is a virtual account? A plain-English guide for fintech teams"
seoTitle: "What is a virtual account? Meaning and how it works"
description: "A virtual account is a unique set of bank details that routes incoming payments to one customer or purpose. How it works, who uses it, and where it fits."
date: "2026-07-29"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Is a virtual account a real bank account?"
    a: "It depends on how the provider structures it. A virtual account always routes into an account held at a regulated bank, and the payer's bank treats its details like any other account number. Some providers issue it under a pooled account in the provider's name; others issue a named account titled to your customer. Ask which one you are getting before you promise it to users."
  - q: "Can a virtual account hold money?"
    a: "Usually not on its own. A virtual account is an identifier that routes funds into a master or settlement account, and the provider's ledger records which balance belongs to which customer. Some providers show a per-account balance; others sweep every deposit onward, for example converting it to a stablecoin and sending it to a linked wallet, so nothing sits in the account."
  - q: "Are virtual accounts legal?"
    a: "Yes. Banks and licensed payment companies issue virtual accounts in the US, Europe, and elsewhere, and they are a standard tool for collections and reconciliation. What regulators care about is who the funds belong to and whether that party was verified. Using one customer's accounts to move money for third parties who were never onboarded is where it becomes a compliance problem."
  - q: "How fast can a virtual account be created?"
    a: "Technically in seconds, since issuance is an API call. In practice it depends on review. Some providers issue pooled accounts instantly. Named accounts titled to your customer usually need compliance and bank approval first. At BlindPay, production accounts go through both reviews, with SLAs from 24 hours to 5 business days depending on the account type."
  - q: "Can one customer have several virtual accounts?"
    a: "Often, yes. Separate accounts let a customer split funds by purpose, such as payroll collections versus client invoices, and keep each flow reconciled on its own. BlindPay supports multiple virtual accounts per customer, each settling to one wallet, with a limit of one active account per banking partner for most partners."
---

A virtual account is a unique set of bank details, an account number and routing number or an IBAN, that routes incoming payments into a master account while identifying exactly who they belong to. The payer sends a normal bank transfer. The provider sees which virtual account received it and credits the right customer, invoice, or purpose automatically.

No memo field to get wrong. The account number does the matching.

## Key takeaways

- A virtual account is an identifier that routes money, not a separate pot of money at a separate bank.
- Its main job is attribution: every deposit arrives already labeled with the customer or purpose it belongs to.
- Providers can issue virtual accounts through an API in seconds, at a scale where opening real bank accounts is out of reach.
- Whose name is on the account (yours, the provider's, or your customer's) changes what the payer sees and what compliance requires.
- Stablecoin providers use virtual accounts as an on-ramp: fiat comes in over bank rails and leaves as USDC or USDT in a wallet.

## What is a virtual account?

A virtual account is a set of bank details linked to a master account or settlement flow, used to identify and attribute incoming payments. Payers see a normal account number. Behind it, many virtual accounts can point at the same underlying bank account.

Think of it like extension numbers on a phone system. One office line, hundreds of extensions, and every call rings the right desk.

The term covers a few different products depending on the provider and the country: virtual account numbers in the US, virtual IBANs in Europe, collection accounts, or "sub-accounts" on a bank's cash management platform. The mechanics are the same. A unique identifier routes funds and tells the receiver who they are for.

## How does a virtual account work?

A virtual account works by giving each customer or purpose its own unique receiving details, then reading those details off every incoming payment to credit the right ledger entry. Three pieces make it work:

1. **A master account at a bank.** This is where the money physically lands. It can be in the provider's name (pooled) or set up so each virtual account is titled to the end customer (named).
2. **A range of account identifiers.** The bank lets the provider issue account numbers, or IBANs, that route into the master account.
3. **A ledger.** The provider's system maps each identifier to a customer and records every deposit against it.

Here's how one payment moves through that setup:

1. **Issue the account.** Your platform calls the provider's API for a customer. The provider returns account and routing details (or an IBAN) for that customer.
2. **Share the details.** Your customer gives them to whoever pays them: a client, an employer, a marketplace buyer.
3. **The payer sends a transfer.** ACH, wire, SWIFT, SEPA, whatever rail the account supports. From the payer's side it's an ordinary bank payment.
4. **The deposit is detected.** The bank credits the master account and reports the receiving account number to the provider.
5. **The deposit is matched.** The provider looks up which customer owns that number. No reference parsing, no guessing.
6. **The balance or settlement updates.** The provider credits the customer's ledger balance, or sends the funds onward (to another account, or converted to a stablecoin and sent to a wallet).
7. **A webhook fires.** Your system gets an event with the deposit, the account, and the amount, and updates your UI.

Step 5 is the whole point. Everything before it is plumbing.

## How is a virtual account different from a traditional bank account?

A traditional bank account is opened by a bank for one account holder, holds its own balance, and takes days of paperwork. A virtual account is issued by a provider on top of an existing bank relationship, routes into a master account, and is created through an API.

| | Traditional bank account | Virtual account |
| --- | --- | --- |
| Who holds the funds | The bank, in an account for one holder | The bank, in a master account; the provider's ledger tracks each customer's share |
| Name on the account | The account holder | The provider (pooled) or the end customer (named), depending on the setup |
| How it's opened | Branch or online application, one at a time | API call, often in bulk |
| Speed of issuance | Days to weeks | Seconds to a few business days, depending on review |
| Scale | A handful per business | Thousands or millions per platform |
| Reconciliation | Match each deposit by reference or amount | The receiving account number identifies the deposit |
| Payer can send to it? | Yes | Yes, it looks like any account number to the payer's bank |
| Typical use | Operating account, treasury | Collections, customer deposits, payouts attribution |

One thing a virtual account usually can't do: act like a full retail account. No debit card, no checks, no online banking login for your customer. It exists to receive money and attribute it.

## What is a virtual account number?

A virtual account number is the account number issued for a virtual account. In the US it comes with a routing number (ABA), and the payer's bank sends ACH or wire transfers to it exactly as it would to any checking account. In Europe the equivalent is a virtual IBAN.

The number is real in the sense that matters to the payer: the payment rails route money to it. It's "virtual" only because it points into a shared master account instead of standing alone. The payer's bank can't tell the difference, and doesn't need to.

## Is a sub-account the same as a virtual account?

Not quite. A sub-account is usually a ledger split inside one bank account, with no external details of its own. A virtual account has its own external account number that payers can send to. Some banks use the words interchangeably, so check whether the "sub-account" you're being offered can actually receive transfers from outside.

| | Sub-account (ledger only) | Virtual account |
| --- | --- | --- |
| Own external account number | No | Yes |
| Can receive transfers directly | No, funds arrive at the parent and are allocated internally | Yes |
| Where the split lives | Your ledger or the bank's cash platform | The account number itself |

## Who uses virtual accounts?

Virtual accounts are used by any business that receives many payments from many payers and needs to know instantly who paid. Common examples:

- **Marketplaces** give each seller receiving details so buyer payments land already attributed.
- **Payment service providers (PSPs)** issue accounts to merchants so every merchant's collections stay separate.
- **Payroll and contractor platforms** give each contractor or client company an account to fund or receive payroll.
- **Remittance apps** give each sender or recipient a dedicated account for incoming transfers.
- **SaaS and B2B billing** assigns one account per customer, so invoices get paid without "which company sent this?" emails.

**Illustrative example.** A payroll platform has 400 client companies that fund payroll by wire each month. With one shared account, finance matches 400 wires a month by reading free-text references, and the ones with a missing reference sit in a suspense queue until someone calls the client. With one virtual account per client company, each wire arrives on that client's own account number. The match happens at the bank, and the suspense queue is gone. (Numbers are illustrative.)

## How do virtual accounts connect to stablecoins?

A stablecoin virtual account receives fiat over bank rails and converts every deposit into a stablecoin, like USDC or USDT, which it sends to a linked blockchain wallet. The payer sends dollars to an account number. The customer ends up with a stablecoin balance they can hold or pay out elsewhere.

That makes the virtual account an on-ramp that needs no checkout page. At BlindPay, each [virtual account](/virtual-accounts) belongs to one customer, receives ACH, wire, and SWIFT transfers into a US account in that customer's name, and settles to one wallet. Each deposit is tracked as its own payin, so the stablecoin that lands can always be traced back to the bank transfer that funded it. A customer can hold several accounts to separate funds by purpose.

The full flow, from approval to wallet balance, is in [stablecoin virtual accounts explained](/resources/more/stablecoin-virtual-accounts-explained). For what happens after the stablecoin lands, see [how a stablecoin payment works](/resources/more/how-a-stablecoin-payment-works).

## What should you watch out for?

Four things catch teams the first time they launch virtual accounts:

- **Pooled vs named.** If the account is in the provider's name, the payer sees the provider as the beneficiary. Some payers, and some compliance teams, won't accept that. Ask which you get.
- **Review time.** Named accounts usually need compliance and bank approval. Build onboarding around the real SLA, not the API response time.
- **Whose money it is.** A virtual account should hold money that belongs to the customer it was issued to. Using one customer's accounts to collect for *their* clients, who the provider never verified, is called nesting, and providers shut it down. BlindPay's rule is in [nested payments](/docs/kb/nested-payments).
- **Rails.** Not every virtual account receives every rail. A US account might take ACH and wire but not SWIFT, or the reverse. Confirm before you tell a foreign client how to pay.

If you're weighing whether to build this on your own bank relationships, [build vs buy](/resources/more/build-vs-buy-stablecoin-payments) covers what that takes.

## Where does BlindPay fit?

[BlindPay](/virtual-accounts) issues US virtual accounts in your customer's own name through one API. Deposits over ACH, wire, and SWIFT convert automatically to USDC or USDT and settle to the customer's wallet, with the same API paying out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries with no pre-funding.

## What to do next

Spin up a free development instance and create one virtual account. It's approved instantly with a test routing number (`110000000`), so you can watch the `virtualAccount.complete` and `payin.complete` webhooks fire before any bank is involved. Start with [create a virtual account](/docs/virtual-accounts-create).

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

---

Source: https://blindpay.com/resources/more/stablecoin-virtual-accounts-explained

---
title: "Stablecoin virtual accounts explained: from bank transfer to wallet balance"
seoTitle: "Stablecoin virtual accounts explained"
description: "A stablecoin virtual account is a bank account in your customer's name whose deposits convert to USDC or USDT. How approval, deposits, and fees work."
date: "2026-07-28"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What is a stablecoin virtual account?"
    a: "A dedicated bank account issued in your customer's name, with its own routing and account number, whose incoming deposits are converted to a stablecoin like USDC or USDT and delivered to a linked wallet. The payer sends an ordinary bank transfer; the stablecoin conversion happens after the deposit lands."
  - q: "Is a virtual account the same as a crypto wallet?"
    a: "No. A virtual account receives fiat over bank rails like ACH, wire, and SWIFT. A blockchain wallet holds stablecoins. The virtual account is linked to a wallet, and every deposit into the account ends up as stablecoin in that wallet."
  - q: "How long does it take to open a stablecoin virtual account?"
    a: "It depends on the provider and account type. At BlindPay, production accounts go through compliance review and then bank review. The US account for individuals and businesses has a 24-hour SLA; the business accounts for US-only or foreign-only senders take 3 to 5 business days. Approval is not guaranteed at either stage."
  - q: "How much does a virtual account cost at BlindPay?"
    a: "$1.50 per month per account. Each deposit creates a payin with its own fee: below $100.00 the fee accrues to your monthly invoice, and at $100.00 or more it is deducted from the stablecoin delivered at the time of the transaction."
  - q: "Can I test virtual accounts before going live?"
    a: "Yes. On a BlindPay development instance, virtual accounts skip both review stages and are created directly as approved. The routing number is always 110000000 and the account number is a fake 12-digit number derived from the account id, so you can build deposit handling and webhooks before any real bank is involved."
---

A stablecoin virtual account is a real bank account issued in your customer's name, with its own routing and account number, that converts every incoming deposit into USDC or USDT and sends it to a linked wallet. The payer sends a normal ACH, wire, or SWIFT transfer. Your customer ends up with a stablecoin balance. Nobody builds a checkout.

The account number is the integration. That's the whole idea.

## What is a stablecoin virtual account, and what isn't it?

Three things get confused here, and they solve different problems.

| | Virtual account | One-time payment instruction | Blockchain wallet |
| --- | --- | --- | --- |
| What it receives | Fiat over bank rails | Fiat over bank rails | Stablecoins on-chain |
| Reusable? | Yes, same details every time | No, one instruction per payment | Yes |
| Whose name is on it | Your customer's | Usually the provider's pooled account | Nobody's (it's an address) |
| How a deposit is matched | By the account number itself | By a reference or memo code the payer must type | By the address |
| What goes wrong | Approval takes time | Payer forgets the memo, deposit sits unmatched | Wrong network, wrong token |

A virtual account is not a customer-controlled bank account either. Your customer can't write checks from it or log into a bank portal. It exists to receive money and turn it into stablecoin.

In BlindPay's API the difference is visible on the payin itself. Without a virtual account, an ACH or wire payin returns a `memo_code` and BlindPay's shared bank details. With an approved virtual account, the payer sees the customer's own dedicated account details and the memo code is ignored ([payins](/docs/payins)).

## What details does the payer use?

The same ones they'd use for any US bank account: routing number, account number, and for international senders, SWIFT details and the receiving bank's name and address. BlindPay returns ACH and wire numbers once the account is approved, plus SWIFT and receiving-bank details. Before approval, the rail numbers are empty.

So the payer doesn't need to know anything about stablecoins. They're paying a bank account. A foreign client paying a Brazilian freelancer sends a SWIFT wire to a US account number. The freelancer ends up holding USDC.

One detail matters for B2B: when a virtual account is issued to an end user, payouts from it go out under that end user's name, not a pooled account name. The recipient sees who actually paid them.

## What happens from account request to wallet balance?

Walk through one account. Steps marked **BlindPay** follow our documented API; the rest is the generic pattern most providers share.

1. **Verify the customer.** KYC for individuals, KYB for businesses. **BlindPay:** `kyc_status` must be `approved` before you can request an account.
2. **Fill in the compliance profile.** Banks review the account holder, not just the identity. **BlindPay:** businesses need `account_purpose`, `business_type`, `business_description`, a NAICS `business_industry` code, `estimated_annual_revenue`, `source_of_wealth`, `publicly_traded`, and at least one owner with `ownership_percentage` and `title`. Leave a field blank and the request fails with `missing_required_fields` naming it.
3. **Link a wallet.** Every deposit settles somewhere. **BlindPay:** the account points to one `blockchain_wallet_id` belonging to the same customer, and you pick the `token`, USDC or USDT.
4. **Request the account.** **BlindPay:** one `POST` to `/customers/{customer_id}/virtual-accounts` with a `banking_partner`, `token`, and wallet ([create a virtual account](/docs/virtual-accounts-create)).
5. **Wait for review.** **BlindPay:** the account starts in `pending_review` (compliance), moves to `verifying` (bank), and ends `approved` or `rejected`. The `virtualAccount.complete` webhook fires on approval, with the rail numbers in the payload.
6. **Share the details.** Put the account number in your UI, on invoices, wherever payers look.
7. **A deposit arrives.** **BlindPay:** each deposit creates a [payin](/docs/payins) and fires `payin.new`. When it's converted and the stablecoin lands, `payin.complete` fires.

## What should the product show at each state?

Verify the exact status names against your provider's docs before you build this. These are BlindPay's.

| State | What the user should see |
| --- | --- |
| Account `pending_review` | "Your account is being reviewed." No account number yet. |
| Account `verifying` | "Almost ready, the bank is confirming your account." Still no number. |
| Account `approved` | The routing and account number, with copy buttons. |
| Account `rejected` | A clear message and the next step, not a spinner that never ends. |
| Deposit payin `processing` | "Deposit on the way." Show amount and payment method. |
| Deposit payin `on_hold` | "Under review." Don't imply the money is lost. |
| Deposit payin `completed` | Stablecoin balance updated, with the amount actually delivered. |
| Deposit payin `failed` or `refunded` | The deposit didn't go through or went back to the sender. Explain which. |

Show the delivered amount, not the deposited amount. Fees come off in between.

## How do fees and micro-deposits work?

BlindPay charges $1.50 per month per account. Each deposit is its own payin, and where the fee lands depends on size:

| Deposit | Where the BlindPay fee lands | Field on the payin |
| --- | --- | --- |
| Below $100.00 | Accrued to your invoice at the end of the billing cycle | `billing_fee_amount` |
| $100.00 or more | Deducted from the delivered stablecoin at transaction time | `transaction_fee_amount` |

Every deposit is processed, including the $0.01 micro-deposits some platforms send to verify an account, and always delivers at least $0.01 of stablecoin. That's worth knowing when a customer connects the account to a payroll provider or marketplace that tests with pennies. Those tests will show up as payins. Reconcile them, don't flag them as fraud. Full details in [virtual accounts](/docs/virtual-accounts).

## How should you handle rejection, delays, and exceptions?

Plan for these before launch, not after the first support ticket.

- **Rejected account request.** Either review stage can reject. At BlindPay, a customer can't hold two non-deleted, non-rejected accounts on the same banking partner (the `jpmorgan` partner is the exception, since each account is a separate sub-account). After a rejection, fix the underlying issue and request again.
- **Slow approval.** Bank review varies by partner and account type. If the bank asks for more documents, the SLA clock restarts when you submit them. Source of funds and source of wealth documents are the usual ask; the list is in the [virtual account requirements](/docs/kb/virtual-accounts).
- **Delayed funds.** ACH and wire deposits can take up to 5 business days to arrive. Cut-offs push late transfers to the next business day.
- **Deposits under review.** A deposit can land `on_hold` for compliance review. It resumes when cleared.
- **Eligibility.** Some banking partners serve only US customers, others only non-US businesses. Check which partner fits your customer base before you design onboarding around one account type.

## What should you check before choosing a provider?

Five questions that separate a real virtual account from a marketing page:

1. **Whose name is on the account?** Named accounts in your customer's name beat pooled accounts with memo codes.
2. **Which rails does it receive?** ACH only, or wire and SWIFT too? Foreign senders need SWIFT.
3. **How long is approval, in writing?** Get the SLA per account type and ask what restarts the clock.
4. **What does the stablecoin leg look like?** Which tokens, which chains, and can you change the destination wallet later? At BlindPay you can update `token` and `blockchain_wallet_id` on an existing account.
5. **How are fees itemized per deposit?** You want the fee as a field on every deposit, not a surprise on the invoice.

Not every provider supports the same rails or issues accounts at the same speed. Ask for the account types table, not the headline.

If you're deciding whether to run this yourself, [build vs buy](/resources/more/build-vs-buy-stablecoin-payments) covers the bank relationships a virtual account quietly depends on. For the flow a virtual account feeds into, see [how a stablecoin payment moves](/resources/more/how-a-stablecoin-payment-works). Merchants collecting from customers can compare this with the options in [how merchants accept stablecoin payments](/resources/more/how-merchants-accept-stablecoin-payments).

## Where does BlindPay fit?

[BlindPay virtual accounts](/virtual-accounts) give each customer a US bank account in their own name that receives ACH, wire, and SWIFT and settles to USDC or USDT in a linked wallet. The same API pays out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries with no pre-funding, and runs KYC, KYB, and sanctions screening inside the flow.

## What to do next

Create a virtual account on a free development instance today. It's approved instantly, with routing number `110000000`, so you can wire up `virtualAccount.complete` and `payin.complete` handling in an afternoon. Start with [create a virtual account](/docs/virtual-accounts-create), then check the [account requirements](/docs/kb/virtual-accounts) so production review doesn't bounce your first real customer.

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

---

Source: https://blindpay.com/changelog/2026-07-27-customers-rename-sunset

---
title: '"Receivers" to "Customers" migration: final notice and complete guide'
seoTitle: '"Receivers" to "Customers" migration: final notice and complete guide'
description: 'Final call: /receivers paths will start answering 301, receiver.* webhooks will stop firing, and receiver_* fields plus receiver error codes and messages are renamed. Full field-by-field guide and an AI migration prompt inside.'
date: 2026-07-27
category: Migration
categoryType: update
contributors:
  - bernardoSimonassi
  - andreMayer
  - ericViana
isChangelog: true
---

The transition period announced in the [June 4 changelog](/changelog/2026-06-04-customers-rename) has ended, and the final release that makes "customers" the only name across the BlindPay platform is about to roll out. This post is the complete guide to everything that changes.

**Timing: the renames below are not live yet.** They ship with the final release, which will be announced on this changelog. Until then, the `receiver_*` request fields remain the accepted shape on the current API (sending `customer_*` request fields today is rejected). Use this guide, and the AI prompt at the end, to prepare your migration diff now, and deploy it when the release goes live.

<!--more-->

## Endpoints

Every legacy `/receivers` path now returns `301 Moved Permanently` pointing at its `/customers` equivalent.

| Was | Now |
| --- | --- |
| `/v1/instances/{id}/receivers[/...]` | `/v1/instances/{id}/customers[/...]` |
| `/v1/e/instances/{id}/receivers[/...]` | `/v1/e/instances/{id}/customers[/...]` |
| `/v1/instances/{id}/limits/receivers/{id}` | `/v1/instances/{id}/limits/customers/{id}` |
| `/v1/instances/{id}/external-receiver-token` | `/v1/instances/{id}/external-customer-token` |

This covers the customer collection and item routes plus every sub-resource: bank accounts, wallets, blockchain wallets, virtual accounts, offramp wallets, limits, limit increases, and RFIs. The `/e/` external invite-flow variants redirect too.

Note that `external-receiver-token` is renamed even though it has no `/receivers/` path segment.

## Webhooks

`receiver.new`, `receiver.update`, and `receiver.delete` no longer fire. Subscribe to `customer.new`, `customer.update`, and `customer.delete` instead; they carry the same payloads. The dual-emit behavior from the transition window is gone, so you now receive exactly one event per action.

## Renamed fields

| Was | Now | Where |
| --- | --- | --- |
| `receiver_id` | `customer_id` | Payins, payouts, quotes, transfers, bank accounts, wallets, blockchain wallets, virtual accounts, offramp wallets, limit increases, RFIs, TOS. Also the path segment and list filter. |
| `receiver_name` | `customer_name` | Customer list filter query parameter |
| `receiver_local_amount` | `customer_local_amount` | Quotes, payouts |
| `receiver_wallet_address` | `customer_wallet_address` | Transfers, transfer quotes |
| `receiver_network` | `customer_network` | Transfers, transfer quotes |
| `receiver_token` | `customer_token` | Transfers, transfer quotes |
| `receiver_invite_redirect_url` | `customer_invite_redirect_url` | Instance settings |
| `receiver_rfi_emails_enabled` | `customer_rfi_emails_enabled` | Instance settings |
| `receivers_amount` | `customers_amount` | `GET /v1/instances`, the count of customers on the instance |
| `receiver_type` | `customer_type` | RFI |
| `receiver_kyc_status` | `customer_kyc_status` | RFI |
| `receiver_aiprise_session_id` | `customer_aiprise_session_id` | RFI |
| `receiver_aiprise_user_profile_id` | `customer_aiprise_user_profile_id` | RFI |

### The one field that keeps its name

`receiver_amount` is **not** renamed. It stays `receiver_amount` on quotes, payins, payouts, and transfers, because there it means "the amount the receiving side gets", a leg of the transaction rather than a reference to the customer resource.

Do not confuse it with `receivers_amount` (plural), which **is** renamed to `customers_amount`. That one is the customer count on an instance.

This is the single reason a blind find-and-replace of `receiver` to `customer` will break your integration.

## Renamed error codes

The `code` field on error responses is a stable identifier meant for programmatic handling, and eleven of them changed prefix.

| Was | Now |
| --- | --- |
| `RECEIVERS_NOT_FOUND` | `CUSTOMERS_NOT_FOUND` |
| `RECEIVERS_ALREADY_APPROVED` | `CUSTOMERS_ALREADY_APPROVED` |
| `RECEIVERS_KYC_NOT_APPROVED` | `CUSTOMERS_KYC_NOT_APPROVED` |
| `RECEIVERS_ONBOARDING_INCOMPLETE` | `CUSTOMERS_ONBOARDING_INCOMPLETE` |
| `RECEIVERS_INVALID_DATA` | `CUSTOMERS_INVALID_DATA` |
| `RECEIVERS_INVALID_PHONE` | `CUSTOMERS_INVALID_PHONE` |
| `RECEIVERS_INVALID_TAX_ID` | `CUSTOMERS_INVALID_TAX_ID` |
| `RECEIVERS_ID_DOCUMENT_INVALID` | `CUSTOMERS_ID_DOCUMENT_INVALID` |
| `RECEIVERS_COUNTRY_NOT_SUPPORTED` | `CUSTOMERS_COUNTRY_NOT_SUPPORTED` |
| `RECEIVERS_ENHANCED_KYC_REQUIRED` | `CUSTOMERS_ENHANCED_KYC_REQUIRED` |
| `RECEIVERS_BUSINESS_ENHANCED_NOT_AVAILABLE` | `CUSTOMERS_BUSINESS_ENHANCED_NOT_AVAILABLE` |

## Renamed error messages

The legacy `message` slug also changed on the errors below. If you branch on `message` rather than `code`, update both.

| Was | Now |
| --- | --- |
| `receiver_not_found` | `customer_not_found` |
| `receiver_id_not_found` | `customer_id_not_found` |
| `receiver_already_approved` | `customer_already_approved` |
| `receiver_kyc_not_approved` | `customer_kyc_not_approved` |
| `receiver_not_approved` | `customer_not_approved` |
| `receiver_limit_not_found` | `customer_limit_not_found` |
| `receiver_already_has_limit_increase_in_review` | `customer_already_has_limit_increase_in_review` |
| `vm_invalid_receiver_data` | `vm_invalid_customer_data` |
| `vm_receiver_country_not_supported` | `vm_customer_country_not_supported` |
| `vm_unsupported_receiver_type` | `vm_unsupported_customer_type` |
| `zenus_business_va_requires_business_receiver` | `zenus_business_va_requires_business_customer` |
| `beneficiary_name_must_match_receiver_for_first_party` | `beneficiary_name_must_match_customer_for_first_party` |
| `blockchain_wallet_does_not_belong_to_receiver` | `blockchain_wallet_does_not_belong_to_customer` |
| `sender_and_receiver_networks_must_be_the_same` | `sender_and_customer_networks_must_be_the_same` |
| `sender_and_receiver_tokens_must_be_the_same` | `sender_and_customer_tokens_must_be_the_same` |

Two `message` slugs are deliberately unchanged, because they describe the receiving leg of a transaction rather than the customer resource: `otc_only_supported_for_sender_without_cover_fees_and_receiver_with_cover_fees`, and every slug involving `receiver_amount`. The `currency_type` request enum also keeps its `sender` and `receiver` values.

## Deprecation headers are gone

`/receivers` responses no longer carry `Deprecation: true`, `Sunset`, or `Link: rel="successor-version"`. If you set up the CI smoke test suggested in the June changelog, it now passes trivially instead of catching anything. Replace it with a check that asserts no `301` responses from BlindPay.

## IDs are unchanged

Customer IDs keep the `re_` prefix, and customer records keep both `id` and its canonical alias `customer_id`. No data migration is needed. Do not rewrite stored IDs.

## Migrate your code with an AI agent

If you use an AI coding agent (Claude Code, Codex, Cursor, Windsurf, or similar), paste the prompt below into it from the root of your integration. It contains every rename from this changelog and the June announcement, including the exceptions that make a naive find-and-replace unsafe.

```text
Migrate this codebase off the deprecated BlindPay "receivers" API surface and onto
"customers". This is a rename of the API surface only: resource IDs are unchanged.

Work through the steps in order and show me a diff before applying anything.

STEP 1 - Find every call site.
Search the whole repo (including tests, fixtures, recorded HTTP cassettes, env
files, OpenAPI/Postman collections, infrastructure config, and docs) for:
  receivers, receiver_, receiverId, RECEIVERS_, "receiver." (webhook event names)

STEP 2 - Rewrite URL paths.
  /v1/instances/{id}/receivers               -> /v1/instances/{id}/customers
  /v1/e/instances/{id}/receivers             -> /v1/e/instances/{id}/customers
  /v1/instances/{id}/limits/receivers/{rid}  -> /v1/instances/{id}/limits/customers/{rid}
  /v1/instances/{id}/external-receiver-token -> /v1/instances/{id}/external-customer-token
Apply to all sub-resources as well: bank-accounts, wallets, blockchain-wallets,
virtual-accounts, offramp-wallets, limit-increase, rfi.
The old paths still answer 301, so nothing breaks immediately, but every call
costs an extra round-trip until this is done.

STEP 3 - Rename request and response fields.
  receiver_id                      -> customer_id
  receiver_name                    -> customer_name
  receiver_local_amount            -> customer_local_amount
  receiver_wallet_address          -> customer_wallet_address
  receiver_network                 -> customer_network
  receiver_token                   -> customer_token
  receiver_invite_redirect_url     -> customer_invite_redirect_url
  receiver_rfi_emails_enabled      -> customer_rfi_emails_enabled
  receivers_amount                 -> customers_amount
  receiver_type                    -> customer_type
  receiver_kyc_status              -> customer_kyc_status
  receiver_aiprise_session_id      -> customer_aiprise_session_id
  receiver_aiprise_user_profile_id -> customer_aiprise_user_profile_id

STEP 4 - CRITICAL EXCEPTION. Do NOT rename receiver_amount.
receiver_amount (singular) is still called receiver_amount on quotes, payins,
payouts, and transfers. It means "amount the receiving side gets", not a
reference to the customer resource. Renaming it will break those calls.
Note the near-miss: receivers_amount (plural, the customer count on
GET /v1/instances) IS renamed to customers_amount. Handle each explicitly.
Never run a blanket s/receiver/customer/ over this repo.

STEP 5 - Rename webhook event names and handlers.
  receiver.new    -> customer.new
  receiver.update -> customer.update
  receiver.delete -> customer.delete
Payloads are identical. Also update the subscription list in the BlindPay
dashboard; a code-only change will leave your endpoint silent.
The old dual-emit is gone, so if a handler was de-duplicating receiver.* against
customer.* for the same action, that workaround can be removed.

STEP 6 - Rename error codes checked in code.
Any comparison against the code field on an error response:
  RECEIVERS_NOT_FOUND -> CUSTOMERS_NOT_FOUND, and the same CUSTOMERS_ prefix
  swap for ALREADY_APPROVED, KYC_NOT_APPROVED, ONBOARDING_INCOMPLETE,
  INVALID_DATA, INVALID_PHONE, INVALID_TAX_ID, ID_DOCUMENT_INVALID,
  COUNTRY_NOT_SUPPORTED, ENHANCED_KYC_REQUIRED,
  BUSINESS_ENHANCED_NOT_AVAILABLE.

STEP 6b - Rename error message slugs checked in code.
If you branch on the message field instead of code, these changed too:
  receiver_not_found            -> customer_not_found
  receiver_id_not_found         -> customer_id_not_found
  receiver_already_approved     -> customer_already_approved
  receiver_kyc_not_approved     -> customer_kyc_not_approved
  receiver_not_approved         -> customer_not_approved
  receiver_limit_not_found      -> customer_limit_not_found
  receiver_already_has_limit_increase_in_review
    -> customer_already_has_limit_increase_in_review
  vm_invalid_receiver_data      -> vm_invalid_customer_data
  vm_receiver_country_not_supported -> vm_customer_country_not_supported
  vm_unsupported_receiver_type  -> vm_unsupported_customer_type
  zenus_business_va_requires_business_receiver
    -> zenus_business_va_requires_business_customer
  beneficiary_name_must_match_receiver_for_first_party
    -> beneficiary_name_must_match_customer_for_first_party
  blockchain_wallet_does_not_belong_to_receiver
    -> blockchain_wallet_does_not_belong_to_customer
  sender_and_receiver_networks_must_be_the_same
    -> sender_and_customer_networks_must_be_the_same
  sender_and_receiver_tokens_must_be_the_same
    -> sender_and_customer_tokens_must_be_the_same
Leave unchanged: any slug mentioning receiver_amount, and
otc_only_supported_for_sender_without_cover_fees_and_receiver_with_cover_fees.

STEP 6c - Do NOT change the currency_type request value.
currency_type still accepts 'sender' and 'receiver'. Sending 'customer' is
invalid. This pairs with the receiver_amount exception in step 4.

STEP 7 - Update the SDK accessor, if you use an official SDK.
  blindpay.receivers.*  ->  blindpay.customers.*
  blindpay.receivers.bankAccounts.create(...)
    ->  blindpay.customers.bankAccounts.create(...)
Method signatures are identical; only the accessor renames. Bump to the latest
release of your current major, which added customers with no import changes.

STEP 8 - Do NOT touch stored IDs.
Customer IDs keep the re_ prefix (re_abc123456789). Leave every stored ID,
fixture, and database value exactly as it is. There is no data migration.

STEP 9 - Verify.
  - grep the repo: no receivers, receiver_id, or receiver.* webhook names left
  - confirm receiver_amount is still present and untouched wherever it was before
  - run the test suite, and update fixtures or cassettes that assert on renamed
    fields
  - check logs for 301 responses from api.blindpay.com; each one is a path you
    missed

Report anything ambiguous rather than guessing.
```

## What you need to do

1. Update API paths from `/receivers` to `/customers`, including the `/e/` invite-flow variants and `external-customer-token`.
2. Rename request and response fields per the table above, leaving `receiver_amount` alone.
3. Update error handling: `code` comparisons from `RECEIVERS_*` to `CUSTOMERS_*`, and `message` comparisons from `receiver_*` to `customer_*`.
4. Subscribe to `customer.*` webhooks in the dashboard and update your handlers.
5. Update your SDK to the latest release of its current major, then switch `receivers.*` calls to `customers.*`.
6. Leave stored IDs untouched. The `re_` prefix is permanent.

If you completed the migration before July 3, 2026, the only new work is step 3, the error `code` and `message` renames, which ship with this release.

## Verification checklist

- Logs show zero `301` responses from `api.blindpay.com`, since each one is an unmigrated path
- Logs show zero requests to `/v1/instances/*/receivers*` and `/v1/e/instances/*/receivers*`
- No code path reads `response.receiver_id` or any other renamed field
- `receiver_amount` is still read correctly on quotes, payins, payouts, and transfers
- No code path compares an error `code` against a `RECEIVERS_*` value, or an error `message` against a `receiver_*` slug
- Requests still send `currency_type: 'receiver'`, not `'customer'`
- Webhook handlers process `customer.new`, `customer.update`, and `customer.delete`, and the dashboard subscription lists them
- SDK updated, with no remaining `receivers.*` accessor calls
- Saved dashboard URLs use `/customers/`

## FAQ

### What breaks if I do nothing?

Requests keep working through the `301` redirects, at the cost of an extra round-trip per call, as long as your HTTP client follows redirects (browsers, `curl`, `requests`, `axios`, the official SDKs, and Postman all do by default). Three things break outright: `receiver.*` webhook subscriptions go silent, code that reads a renamed `receiver_*` response field gets `undefined`, and error handling that branches on a `RECEIVERS_*` `code` or a `receiver_*` `message` stops matching.

### Do I need to migrate my stored IDs?

No. All IDs keep the `re_` prefix, and both `id` and `customer_id` carry the same value. We renamed the API surface, not the underlying resource.

### Why does `receiver_amount` keep its name?

Because it does not refer to the customer resource. On a quote or a payment it means the amount landing on the receiving side, the counterpart to `sender_amount`. Renaming it to `customer_amount` would have made it read like a property of the customer record.

### Will a find-and-replace work?

Not safely. `receiver_amount` must survive untouched while `receivers_amount` must change, and stored `re_` IDs must not be rewritten. Use the agent prompt above, which encodes those exceptions, or do the renames field by field.

### How do I report issues with the migration?

Use the feedback button in the dashboard (under your profile dropdown) or email support@blindpay.com with `migration` in the subject. Including the request ID from the response (`x-blindpay-request-id` header) speeds up the lookup.

---

Source: https://blindpay.com/resources/more/build-vs-buy-stablecoin-payments

---
title: "Build vs buy: should you build stablecoin payouts in-house or use an API?"
seoTitle: "Build vs buy stablecoin payments infrastructure"
description: "Building stablecoin payouts in-house means wallets, liquidity, banking partners, licenses, and a compliance program. When building makes sense."
date: "2026-07-23"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Should I build stablecoin payment infrastructure in-house?"
    a: "For most companies, no. Building in-house means wallet infrastructure and key management across several networks, liquidity for stablecoin conversion, banking partners in every payout country, licenses or licensed partners for money transmission, and a compliance program with KYC, KYB, sanctions screening, and travel rule reporting. Teams that have built it describe 12 or more months before the first dollar moves. Building makes sense mainly for licensed payment companies whose margin is the rail itself."
  - q: "How long does it take to integrate a stablecoin API instead?"
    a: "With BlindPay, a first payout on a development instance is usually a day of work using the REST API or an official SDK. Production access requires compliance onboarding and takes up to three business days."
  - q: "What is the hardest part of building stablecoin payouts yourself?"
    a: "The last mile. Moving USDC on-chain is easy. Converting it to reais, pesos, or dollars at a good rate, at the moment you need it, and delivering it to a bank account over a local rail requires liquidity partners, banking relationships, and a license or licensed partner in each country."
  - q: "Can I build part of the stack and buy the rest?"
    a: "Yes, and many teams do. Common splits are keeping your own ledger and customer experience while buying payouts and compliance, or using an MPC custody provider for treasury and a payout API for local delivery."
  - q: "Does using a stablecoin API mean giving up control of funds?"
    a: "Not necessarily. With BlindPay you can send payouts from a blockchain wallet you control and approve each transfer amount on-chain, or use a managed wallet if you want BlindPay to handle signing. Stablecoin refunds return to the originating wallet."
---

For most companies, buy. Building stablecoin payouts in-house means running wallet infrastructure across several blockchains, securing liquidity to convert stablecoins into local currency, signing banking partners in every payout country, holding licenses or working through licensed partners, and operating a compliance program that regulators will examine. Teams that have built it describe 12 or more months and a dedicated crew before the first dollar moves. A stablecoin API compresses that into an integration measured in days.

That's the short answer. The longer one depends on what you think you're building.

## Why does building look easy at first?

Because the demo is easy. Sending USDC from one wallet to another is a few lines of code and costs a fraction of a cent on Base, Polygon, or Solana. A weekend hackathon can move a stablecoin across the world.

Then someone asks: "How does the contractor in São Paulo get reais in her bank account?" And the project changes shape.

Moving the token was never the hard part. Everything around it is.

## What do you actually have to build?

Here's the stack, piece by piece, with what it takes to own each one.

| Component | What building it means | What an API gives you |
| --- | --- | --- |
| Wallets and key management | HSM or MPC custody, key rotation, per-network signing, gas management across 5+ chains | Your own wallet or a managed one, with the chain handled |
| Liquidity and conversion | Contracts with OTC desks or exchanges per currency, spread management, failover | A quote with the rate, fee, and receive amount locked for five minutes |
| Local payout rails | A banking partner or payment institution per country for Pix, SPEI, ACH, SEPA | One `type` field on a bank account: `pix`, `spei_bitso`, `ach`, `sepa` |
| Licensing | Money transmission licenses, or agreements with licensed partners, per market | The provider's licenses and partners |
| KYC and KYB | Vendor integrations, document review, beneficial owner checks, re-verification | A customer object with `kyc_status`, standard KYC in about 60 seconds |
| Sanctions and monitoring | Screening on every sender and receiver, on-chain wallet risk, rule tuning | Screening on customers and payouts, with holds surfaced as `on_hold` |
| Travel rule | Data exchange with counterparties above thresholds | Handled in the flow |
| Reconciliation | Matching on-chain transactions, FX trades, and bank deposits | One payout id with per-step tracking and webhooks |
| Ops and support | Failed transfers, returned payments, RFIs, bank holidays | A status per payout and a team that handles returns |

Nine components. Each one is a vendor contract, a hire, or both.

## What does building cost in people and time?

Rough, but realistic for a team starting from zero on three Latin American corridors:

- **Engineering:** two to three engineers for wallets, ledger, rail integrations, and reconciliation.
- **Treasury and ops:** one person managing liquidity partners, FX, and failed payments.
- **Compliance:** a compliance officer, plus analyst time for reviews and RFIs.
- **Legal:** licensing or partner agreements per country, and they don't run in parallel as fast as you'd hope.

Call it five to eight people, and 12 or more months before production volume. Then the ongoing part: rules like MiCA in Europe and the GENIUS Act in the US keep changing the compliance surface (we track them in our [stablecoin regulation guide](/resources/more/stablecoin-regulation-tracker-2026)), and every new country restarts the banking and licensing work.

Compare that with an API: a development instance on day one, a first test payout in about a day, and production access after compliance onboarding in up to three business days.

## When does building make sense?

There are real cases. Build, or at least build more, when:

- **You are a licensed payments company** and the rail margin is your business model. Owning the stack is the product.
- **One corridor carries enormous volume** and you can justify direct banking and liquidity relationships there.
- **You need behavior no provider offers**, and you've actually checked.
- **You already hold the licenses** in the markets you pay into.

If none of those describe you, building is a distraction from the product your customers actually pay for.

## When does buying make sense?

Buy when:

- Payments are a feature of your product, not the product.
- You need more than one or two countries.
- Your team would rather ship next quarter than next year.
- You don't want to hold capital in foreign bank accounts.
- Your compliance team wants a provider that runs KYC, KYB, and sanctions screening before money moves, with a record of each decision.

That describes most fintechs, marketplaces, payroll platforms, and B2B software companies we talk to.

## What about a hybrid?

Most teams end up somewhere in between. Three splits we see often:

1. **Own the ledger and the UX, buy the rails.** Your product holds the customer relationship and the balances. A payout API handles conversion, local delivery, and compliance.
2. **Own custody, buy the last mile.** An MPC custody provider like Fireblocks secures treasury. A payout API turns stablecoins into local currency. Read [BlindPay vs Fireblocks](/compare/fireblocks) for how the two fit together.
3. **Own your wallet, buy everything else.** Send payouts from a wallet you control and approve each amount on-chain, so funds never sit with the provider longer than the transfer.

A hybrid keeps control where it matters to you and outsources the parts that need licenses and banking partners.

## Five questions to answer before deciding

1. **Is the rail margin our business, or a cost of doing business?**
2. **How many countries do we need in the next 18 months?**
3. **Do we already hold, or want to hold, money transmission licenses?**
4. **Who on our team owns compliance findings when a regulator asks?**
5. **What would the same engineers ship if they weren't building payment rails?**

If question five has an obvious answer, you already know what to do.

## How does BlindPay fit a buy decision?

[BlindPay](/global-payments) covers the rows in that table through one REST API:

- **No pre-funding.** Fund each payout from your own stablecoin wallet or a [virtual USD account](/virtual-accounts) that converts ACH, wire, or SWIFT deposits into USDC or USDT.
- **Automated compliance.** KYC, KYB, sanctions screening, and transaction monitoring run inside the API before money moves. See the [compliance program](/compliance).
- **Local rail orchestration.** Pix, PIX Safe, and TED in Brazil, SPEI in Mexico, ACH in Colombia, Transfers 3.0 in Argentina, ACH, RTP, and wire in the US, SEPA in Europe, and SWIFT (POBO/COBO) to 100+ countries, with UETR tracking and MT103 confirmations.
- **Developer tooling.** An [OpenAPI 3.1 spec and official SDKs](/resources/more/stablecoin-api-openapi-sdks) for Node, Python, Go, PHP, and Swift, a CLI, and an MCP server.
- **[Published pricing](/pricing).** You can model the cost before any call.

For the evaluation criteria in detail, read [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api).

## What to do next

Put the nine-row table in front of your team and mark each row "build" or "buy." Be honest about the licensing and banking rows; those are the ones that sink timelines. Then spend one afternoon on a development instance and run the [payout quickstart](/docs/quickstart-payout). If the API covers your rows, you just saved a year.

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

---

Source: https://blindpay.com/resources/more/how-merchants-accept-stablecoin-payments

---
title: "How merchants accept stablecoin payments: the complete 2026 guide"
seoTitle: "How merchants accept stablecoin payments (2026 guide)"
description: "To accept stablecoin payments you need a receiving method, an off-ramp to local currency, and a settlement account. The full flow, costs, and options."
date: "2026-07-21"
category: "stablecoins"
faq:
  - q: "How do I accept stablecoin payments as a merchant?"
    a: "You need three things: a way to receive the stablecoin (a wallet address or a payments API), an off-ramp that converts USDC or USDT into local currency when you need fiat, and a settlement destination such as your business bank account. Most merchants use a payments API for the second and third parts so they never manage private keys, gas fees, or conversion themselves."
  - q: "Which stablecoins can merchants accept?"
    a: "USDC and USDT cover almost all merchant stablecoin volume. Both are pegged one to one to the US dollar. USDC is issued by Circle and publishes monthly reserve attestations; USDT is issued by Tether and has the deepest liquidity in Latin America and Asia. BlindPay supports both on Polygon, Base, Arbitrum, Stellar, and Tron."
  - q: "How fast do merchants get paid with stablecoins?"
    a: "The stablecoin transfer itself settles on-chain in seconds to a few minutes. Converting to local currency and landing in a bank account depends on the local rail: minutes over Pix in Brazil or SPEI in Mexico, seconds over RTP in the US, and same day in most other corridors. Card networks typically take one to three business days."
  - q: "Are there chargebacks on stablecoin payments?"
    a: "No. A confirmed stablecoin transfer is final and cannot be pulled back by the payer or a card network. Refunds still happen, but the merchant sends them as a new transfer. That removes chargeback fraud and dispute fees, but it also means merchants need clear refund policies and good address checks before sending."
  - q: "What does it cost to accept stablecoin payments compared to cards?"
    a: "Card processing typically costs 1.5 to 3.5 percent per transaction, plus cross-border and currency conversion fees on international cards. Stablecoin acceptance costs a network fee of a few cents on low-cost chains plus an FX spread and payout fee when you convert to local currency. Ask any provider for an itemized quote on your real corridor before comparing."
---

To accept stablecoin payments, a merchant needs three things: a **receiving method** (a wallet address or a payments API that generates one), an **off-ramp** that converts USDC or USDT into local currency when you need fiat, and a **settlement destination**, usually your business bank account. The customer sends dollar-pegged tokens, the transfer settles on-chain in seconds, and the funds land in your account in minutes over a local rail. No card network in the middle, no chargebacks, and no two to three day wait.

That's the short answer. The rest of this guide covers each step, the three ways to set it up, what it costs, and what a real merchant flow looks like.

## What is a stablecoin payment, in plain terms?

A **stablecoin** is a digital token pegged to a currency, almost always the US dollar. One USDC is designed to be worth one dollar, backed by cash and short-term Treasuries held by the issuer. The two that matter for merchants are **USDC** (issued by Circle) and **USDT** (issued by Tether).

A stablecoin payment is a transfer of those tokens from the customer's wallet to yours, recorded on a public blockchain like Polygon, Base, Tron, or Stellar. A few terms you'll see:

- **Wallet:** an address that holds stablecoins. Think of it as an account number on the blockchain.
- **Gas fee:** the network fee paid to process a transfer. On the chains most payment providers use, it's a few cents or less.
- **On-ramp / off-ramp:** services that convert fiat into stablecoins (on-ramp) and stablecoins back into fiat (off-ramp).
- **Settlement:** the moment the merchant has usable funds, in the currency they want, in the account they want.

Nothing about this requires the merchant to hold crypto as an investment. Stablecoins here are a payment rail, the same way ACH or Pix is a payment rail.

## How does a stablecoin payment flow from customer to merchant?

Here is the full path, step by step:

1. **The customer chooses to pay in stablecoins.** At checkout or on an invoice, they select USDC or USDT and a network.
2. **The merchant shows a payment address.** Either a fixed wallet address, or a unique address generated per order by a payments API so each payment reconciles to one invoice automatically.
3. **The customer sends the transfer.** Their wallet or exchange account broadcasts it to the blockchain.
4. **The network confirms it.** On Polygon, Base, or Stellar this takes seconds. Once confirmed, the payment is final.
5. **The merchant's system gets notified.** A webhook or a block explorer check marks the order as paid.
6. **The balance is converted, if needed.** An off-ramp sells the USDC or USDT for local currency at a quoted rate.
7. **Funds settle to the bank account.** The local rail delivers the money: Pix in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH or RTP in the US, SEPA in Europe.

Steps 1 through 5 are about receiving. Steps 6 and 7 are about getting paid in something you can spend on payroll and rent. Most of the complexity, and most of the compliance work, lives in 6 and 7.

## What are the three ways to accept stablecoin payments?

| | Payments API or orchestration provider (like BlindPay) | Self-custody wallet | Card network with crypto rails |
| --- | --- | --- | --- |
| **How it works** | A provider handles receiving, conversion, and payout to your bank through one API | You publish your own wallet address and manage the keys | The customer pays in crypto, the network settles to you in fiat like a card sale |
| **Speed to your bank** | Minutes over local rails like Pix, SPEI, or RTP | Depends on the exchange you use to cash out, often one to three days | Card-style settlement, typically one to three business days |
| **Cost** | Network fee plus an itemized FX spread and payout fee | Gas fees plus exchange fees and withdrawal fees | Card-style processing fees, often similar to regular card pricing |
| **Compliance burden** | Provider runs KYC, KYB, and transaction screening | All on you: sanctions screening, record keeping, tax lots | Network and acquirer handle it |
| **Technical lift** | One integration, webhooks for status | Low to start, high to reconcile at volume | Low, usually a checkout plugin |
| **Best for** | Businesses that want fiat in local accounts, across many countries | Very low volume, crypto-native teams | Merchants who want no change to their card workflow |

What's interesting here is that the first column is the only one that gets you both the speed of stablecoins and money in a local bank account. The self-custody route is fast on-chain and slow off-chain. The card route keeps the card-era settlement timeline.

## Where does BlindPay fit?

BlindPay sits in the first column, on the settlement side. It's not a card acquirer and not a checkout button. It's the layer that turns stablecoin balances into local currency and gets money into the right bank account, in 100+ countries and 80+ currencies, through one API.

In practice that looks like:

- **Stablecoin to local fiat payouts.** Convert USDC or USDT and pay out over Pix, SPEI, PSE, Transfers 3.0, ACH, RTP, SEPA, or SWIFT (POBO/COBO, with UETR tracking and MT103 confirmations), at a rate quoted and locked before execution. See [global payments](/global-payments).
- **Virtual accounts for USD collection.** If your customers pay in dollars from a bank account instead of a wallet, [Named Virtual Accounts](/blog/introducing-virtual-accounts) give them a US account in your name with ACH, Wire, and RTP. Deposits auto-convert into stablecoins, then settle wherever you need.
- **No pre-funding.** You don't park capital in destination accounts before a payout clears.
- **Compliance in the flow.** KYC, KYB, sanctions screening, and on-chain monitoring run inside the same API.

We wrote more about why the blockchain part should stay invisible to merchants in [Stablecoin for the Ordinary](/blog/stablecoin-for-the-ordinary).

## Which stablecoins should a merchant accept?

Start with USDC and USDT. Between them they cover the vast majority of stablecoin payment volume.

- **USDC** is the common choice in the US and Europe, with monthly reserve attestations published by Circle.
- **USDT** has the deepest liquidity in Latin America, Africa, and Asia. If your customers are in Brazil, Argentina, or Nigeria, a lot of them already hold it.

The network matters as much as the token. Accept on low-fee chains (Polygon, Base, Arbitrum, Stellar, Tron) so customers aren't paying a few dollars in gas on a $30 order. Tell customers exactly which network to use. A USDC transfer sent on the wrong chain is the most common support ticket in stablecoin acceptance.

## How much does it cost?

A card payment typically costs the merchant 1.5 to 3.5 percent, plus another 1 to 2 percent on international cards, plus a currency conversion spread if the customer pays in another currency. Then there's the chargeback exposure.

A stablecoin payment breaks down differently:

- **Network fee:** cents or less on low-cost chains, usually paid by the sender.
- **FX spread:** the difference between the mid-market rate and your conversion rate, when you off-ramp to local currency.
- **Payout fee:** a flat or small fee to deliver funds over the local rail.

The honest comparison depends on your corridor and volume. A merchant receiving USDC and paying out BRL over Pix will see a very different number than one receiving USDT and paying out EUR over SEPA. Ask for an itemized quote on your real amount before comparing anything. BlindPay splits the spread and the payout fee into separate numbers so you can see which one moved. Plan pricing is on the [pricing page](/pricing).

## An example: a marketplace paying out to global sellers

Take a US marketplace with 2,000 sellers in Brazil and Mexico. Buyers pay by card. Sellers get paid out weekly.

**Before:** the marketplace sends international wires. Each one costs $25 to $50, takes two to five business days, and arrives short after intermediary bank deductions. Small sellers wait a week for $80 payouts that lose $30 on the way. Support spends Mondays answering "where is my money."

**After:** the marketplace holds its payout float in USDC. Every Friday it requests a quote per seller and executes. BlindPay converts USDC to BRL and MXN at locked rates and pays out over Pix and SPEI. Sellers see funds in minutes, at the amount they were quoted. The marketplace reconciles through webhooks instead of bank statements.

Same buyers, same checkout. The only change is the settlement rail, and it's the part sellers actually feel.

## What do merchants need to get started?

A short checklist:

1. **Decide what you're accepting.** USDC, USDT, or both, and on which networks.
2. **Decide where the money should end up.** Stay in stablecoins, convert to USD, or convert to local currency in each market.
3. **Pick your receiving setup.** Self-custody wallet, payments API, or card network, using the table above.
4. **Complete business verification.** Any regulated provider will run KYB on your company. Have your incorporation documents and beneficial owner details ready.
5. **Integrate and test in sandbox.** Wire up webhooks for payment status before going live.
6. **Write a refund policy.** There are no chargebacks, so refunds are a transfer you send. Make the policy explicit.

For the leadership view on how stablecoins, local rails, and virtual accounts combine, read [Orchestrating Local Payments and Stablecoins](/blog/orchestrating-payment-rails-leaders). For the API itself, start with the [BlindPay docs](/docs/introduction).

## Start accepting stablecoin payments

The receiving part is easy. Getting paid in local currency, in minutes, compliantly, in every market you sell into is the part worth solving properly. If you want to see a live quote for your corridor, [talk to the BlindPay team](/contact).

---

Source: https://blindpay.com/changelog/2026-07-20-error-codes-new-docs-ai-assistant

---
title: Public Error Codes, New Documentation, and AI in the Docs
seoTitle: Public Error Codes, New Documentation, and AI in the Docs
description: Stable error codes with safe-to-display descriptions on every API error, a rebuilt documentation site with an AI assistant built in, and opt-in request idempotency.
date: 2026-07-20
category: Product Update
categoryType: update
contributors:
  - ericViana
  - andreMayer
isChangelog: true
---

July's product updates: API errors become predictable and safe to show your users, the documentation gets a full rebuild, and you can now ask the docs anything.

<!--more-->

## TL;DR

- **Public error codes:** every API error now returns a stable `code` and a safe-to-display `description`
- **New documentation:** rebuilt navigation, REST-only quickstarts, and a self-hosted API reference
- **AI in the docs:** an assistant that knows our entire API and answers instantly
- **Idempotency keys:** opt-in `Idempotency-Key` header on all mutating v1 endpoints

## Public error codes

Every API error response now includes two additive fields: `code`, a stable identifier like `PAYOUTS_INSUFFICIENT_BALANCE`, and `description`, human-readable text safe to show your end users. Existing responses are unchanged, so nothing breaks.

Each code is documented with its retry semantics, so your integration knows whether to retry, stop, or ask the user to act. Browse the full list in the [API reference](/docs/api/reference){target="\_blank"}.

## New documentation

We rebuilt [blindpay.com/docs](/docs/introduction) from the ground up. Navigation is organized around what you are doing (Payins, Payouts, Send, Receive, Store), and every quickstart is REST-only with managed wallets, so you can integrate without touching blockchain tooling.

The API reference now lives at [blindpay.com/docs/api/reference](/docs/api/reference){target="\_blank"} with one URL per endpoint. All old URLs redirect.

## AI in the docs

The docs now answer back. An AI assistant trained on our entire documentation and API reference is built into every page: ask "how do I create a payout quote" or paste an error code, and it gives you a direct answer with working request examples, no page hunting.

It is the fastest way to integrate BlindPay. Most questions that used to become support tickets now get answered in seconds, right where you are working.

And this is just the start: the same AI is coming to the dashboard next, where you will be able to run your entire operation by simply asking in plain language.

## Idempotency keys

Mutating v1 endpoints now accept an optional `Idempotency-Key` header. Retry with the same key and you get the original response back instead of a duplicate action, making timeouts and retries safe on payment-creating calls.

---

Source: https://blindpay.com/resources/more/how-a-stablecoin-payment-works

---
title: "How does a stablecoin payment move? From bank deposit to local payout, step by step"
seoTitle: "How a stablecoin payment works, step by step"
description: "A stablecoin payment moves in legs: fiat collected, stablecoin settled, fiat paid out. What happens at each step, where delays hide, what recipients see."
date: "2026-07-14"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "How does a stablecoin payment work?"
    a: "It moves in legs. Fiat is collected from the payer (or the payer funds with stablecoins directly), the value settles on-chain as USDC or USDT, and an off-ramp converts it back to local currency and pays the recipient's bank account over a local rail like Pix, SPEI, ACH, or SEPA. A quote locks the rate and fees before the money moves."
  - q: "Does the recipient of a stablecoin payment need a crypto wallet?"
    a: "No. In a bank-to-bank flow, the recipient gets local currency in an ordinary bank account. Stablecoins are the settlement layer between the two fiat legs, and neither the payer nor the recipient has to hold them."
  - q: "Is a stablecoin payment complete when the blockchain confirms it?"
    a: "Only the on-chain leg is. The recipient has been paid when the fiat payout lands in their bank account, which depends on the payout rail: instant on Pix or SPEI, about two business days on ACH, about five business days on SWIFT. Compliance review can add time on top."
  - q: "Can a stablecoin payment be reversed?"
    a: "A confirmed on-chain transfer cannot be reversed. The fiat legs can fail or come back: a receiving bank can reject a payout or return it for a closed account. In BlindPay's API that payout either fails or is refunded. A refunded payout returns the stablecoins to the funding source; a failed payout does not refund automatically."
  - q: "When are ordinary bank rails enough?"
    a: "When payer and recipient are in the same country and currency and a fast domestic rail exists, such as Pix inside Brazil or RTP inside the US. Stablecoin settlement earns its place on cross-border and cross-currency flows, where correspondent banking adds days, fees, and pre-funded accounts."
---

A stablecoin payment moves money in three legs. Fiat is collected from the payer, the value settles on a blockchain as a dollar stablecoin like USDC or USDT, and an off-ramp converts it back into local currency and pays the recipient's bank account. A stablecoin API runs all three from one integration, so neither side has to touch crypto.

That's the short version. The longer version matters because each leg has its own timing, its own failure modes, and its own definition of "done." If your product shows "paid" at the wrong moment, support tickets follow.

## What does a stablecoin payment actually move through?

Four building blocks show up in almost every provider's API. The names vary. The jobs don't.

| Building block | What it does | Who sees it |
| --- | --- | --- |
| Payin | Collects fiat from a payer (ACH, wire, Pix, SPEI) and delivers stablecoins to a wallet | The payer sees bank instructions |
| Wallet | Holds the stablecoin balance between legs, either custodied by the provider or controlled by the customer | Usually nobody but your backend |
| Quote | Locks the exchange rate, fees, and amounts for a short window before money moves | Your UI, as a firm number |
| Payout | Pulls stablecoins from a wallet, converts them, and sends fiat to a bank account | The recipient sees a local deposit |

An on-chain transfer between two wallets is a fifth piece, but in a bank-to-bank flow it's plumbing. The payer sends dollars. The supplier receives reais. The stablecoin sits in the middle for minutes.

## What happens from onboarding to payout? A worked example

Take a US company paying a supplier in Brazil. Each step below is labeled: **generic** means the pattern holds across stablecoin APIs, **BlindPay** means it's how our API documents it.

```
[US company bank account]
        |  1. ACH or wire deposit (fiat leg in)
        v
[Collection account] --> 2. conversion to USDC
        |
        v
[Wallet] --  3. quote locks rate and fees (5 min)
        |
        |  4. stablecoins pulled from wallet (on-chain leg)
        v
[Off-ramp] --> 5. conversion to BRL
        |
        |  6. Pix payout (fiat leg out)
        v
[Supplier bank account in Brazil]
        |
        7. status confirmed by webhook
```

**Step 0: onboarding (generic, and BlindPay).** Before money moves, the sender is verified. Individuals go through KYC, companies through KYB, and both get screened against sanctions lists. In BlindPay's API every payment flows through a customer that has completed KYC. BlindPay runs the verification; you collect the data. Standard KYC takes about 60 seconds, and KYB takes 3 hours to 1 business day because a person reviews it ([onboarding SLAs](/docs/kb/cut-off-times)).

**Step 1: collect fiat (generic).** The US company sends dollars by ACH or wire. Two ways to tell the payer where to send: a one-time instruction (a shared account plus a reference code) or a dedicated account number in the customer's name. **BlindPay:** without a [virtual account](/virtual-accounts), an ACH or wire payin returns a `memo_code` plus BlindPay's bank details. With one, the payer sees the customer's own routing and account number.

**Step 2: convert to stablecoin (generic).** When the deposit clears, the provider converts dollars to USDC or USDT and delivers them to a wallet. **BlindPay:** the payin fires `payin.complete` once stablecoins land in the destination wallet, either a managed wallet BlindPay custodies or an external wallet the customer controls ([payins](/docs/payins)).

**Step 3: quote the payout (generic).** Before paying the supplier, you request a quote: the rate, the fee, and exactly how many reais arrive. **BlindPay:** a payout quote is created against the recipient's bank account and expires after 5 minutes. Amounts are integers in minor units, so `10000` is $100.00 ([payout quotes](/docs/payout-quotes)).

**Step 4: move the stablecoin (generic).** The stablecoins leave the wallet. If the provider custodies the wallet, it moves them. If the customer holds the keys, they authorize the pull on-chain first. **BlindPay:** a managed wallet needs no signing. An external EVM wallet signs an ERC-20 `approve` for the quoted amount; Stellar and Solana have their own authorization steps ([payouts](/docs/payouts)).

**Step 5 and 6: convert and pay out (generic).** The off-ramp converts USDC to BRL and sends it over Pix. **BlindPay:** one call to create the payout against the quote. Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) are live payout rails, and none of them needs you to pre-fund a local account.

**Step 7: confirm (generic).** The provider reports status changes asynchronously. **BlindPay:** `payout.new`, `payout.update`, and `payout.complete` webhooks, signed, one endpoint per instance.

## What's the difference between settlement and the recipient getting paid?

This is where most payment UIs get it wrong.

The on-chain leg settles in seconds to a few minutes, and a confirmed transfer is final. But the supplier hasn't been paid yet. They've been paid when reais land in their account, and that depends on the payout rail:

| Payout rail (BlindPay) | Estimated arrival |
| --- | --- |
| Pix (Brazil), SPEI (Mexico), Transfers (Argentina), RTP (US) | Instant |
| Wire (US), SEPA (Europe), ACH COP (Colombia) | About 1 business day |
| ACH (US) | About 2 business days |
| SWIFT | About 5 business days |

These are BlindPay's published estimates from the [bank accounts reference](/docs/bank-accounts). Rails with cut-offs (ACH, wire, SWIFT) slip to the next business day when a request arrives late, and compliance review can add time on top. So: show "sent" when the stablecoin leg confirms, show "paid" when the payout completes. Two different states. Two different events. Every rail's cut-off and settlement window is in the [cut-off times reference](/docs/kb/cut-off-times).

## Where can delays and reversals happen?

At the edges, not in the middle.

- **Fiat collection.** ACH and wire deposits can take up to 5 business days to arrive. Instant rails like Pix and SPEI arrive in minutes.
- **Compliance review.** A payin or payout can land `on_hold` for manual review. In BlindPay's API all USD ACH, wire, RTP, and SWIFT payouts pass through `on_hold` as a standard step, and SWIFT payouts to third parties wait for supporting documents. A hold can take up to 30 days to resolve.
- **The receiving bank.** Wrong details, a closed account, or a rejection stops the payout. At BlindPay it ends `failed` or `refunded`. A refund returns the stablecoins to the funding source instead of converting them. A failed payout does not refund automatically, so it needs a follow-up with support.
- **The on-chain leg.** Rarely the problem. Once confirmed, it's final. That also means a mistaken transfer to the wrong wallet cannot be pulled back, which is why quotes and destinations are locked before anything moves.

Stablecoin refunds process right away. Fiat refunds wait for the banking network to return the money, which depends on that bank's processing time.

## When is a stablecoin API useful, and when are bank rails enough?

Stablecoin settlement pays off when money crosses a border or a currency. That's where correspondent banks add days, stack fees at each hop, and make you park capital in local accounts before you can pay anyone. A stablecoin in the middle replaces that chain with one on-chain hop and two local rails. It's also the reason a provider can pay out without pre-funding: the value arrives as stablecoin and leaves as local currency at quote time.

It's overkill when both sides share a country and a fast domestic rail. A Brazilian company paying a Brazilian supplier should use Pix. A US payroll run to US bank accounts should use ACH or RTP. No stablecoin needed.

There's a middle case worth naming: platforms that hold customer balances in dollars across several countries. There, the wallet leg isn't plumbing at all. It's the product. That's a different job from a payout API, and the line between the two is covered in [stablecoin API vs crypto payment gateway](/resources/more/stablecoin-api-vs-crypto-payment-gateway) and [is Stripe a stablecoin API](/resources/more/is-stripe-a-stablecoin-api).

## Glossary: six terms you'll see in every stablecoin API

- **Payin.** Money coming in: fiat from a payer, delivered as stablecoin to a wallet. Also called an on-ramp.
- **Payout.** Money going out: stablecoin pulled from a wallet, delivered as fiat to a bank account. Also called an off-ramp.
- **Quote.** A short-lived price lock covering rate, fees, and amounts. Execute before it expires or request a new one.
- **Funding source.** The wallet a payout pulls stablecoins from. Custodial (the provider holds the keys) or external (the customer does).
- **Minor units.** Amounts as integers in the smallest currency unit. `500000` is 5,000.00, never 500,000.00.
- **Webhook.** A signed HTTP callback the provider sends when a payment changes state, so you don't have to poll.

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API for cross-border payouts and collections: USDC or USDT in, local currency out over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO) to 100+ countries, with no pre-funding. KYC, KYB, and sanctions screening run inside the API. [Virtual USD accounts](/virtual-accounts) give each customer a dedicated account number whose deposits settle to stablecoins automatically.

## What to do next

Trace one payment end to end before you design a single screen. Create a free development instance, run a payin, then a payout, and watch every webhook arrive. The [payout quickstart](/docs/quickstart-payout) walks the whole flow, and the [introduction](/docs/introduction) explains the quote, authorize, execute pattern every endpoint follows.

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

---

Source: https://blindpay.com/resources/more/is-stripe-a-stablecoin-api

---
title: "Is Stripe a stablecoin API? What a payout API, Stripe, and Bridge each do"
seoTitle: "Is Stripe a stablecoin API?"
description: "Partly. Stripe offers stablecoin checkout and balances, and owns Bridge, a stablecoin infrastructure API. What each covers for cross-border payouts."
date: "2026-07-09"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is Stripe a stablecoin API?"
    a: "Partly. Stripe lets eligible merchants accept stablecoin payments at checkout and hold stablecoin balances in financial accounts. It also owns Bridge, a full stablecoin infrastructure API for issuance, wallets, conversion, and virtual accounts. Stripe on its own is not a standalone cross-border stablecoin payout API."
  - q: "What is the difference between Stripe and Bridge?"
    a: "Stripe is a card and bank payments platform that has added stablecoin features for its merchants. Bridge, acquired by Stripe in 2025, is a separate stablecoin infrastructure API: stablecoin issuance, custodial and self-custody wallets, fiat-to-stablecoin conversion, virtual accounts, and cards, with payout rails in the US, Europe, the UK, Mexico, Brazil, and Colombia."
  - q: "Can I send cross-border payouts in stablecoins with Stripe?"
    a: "Depends on your account, region, and the product. Stripe's stablecoin features are gated by eligibility, and its core payout rails are cards and bank transfers. For stablecoin-settled payouts to bank accounts in local currency, teams usually use Bridge or a dedicated payout API such as BlindPay."
  - q: "When is a dedicated stablecoin payout API a better fit than Stripe?"
    a: "When the job is paying people abroad in local currency, in corridors like Brazil, Mexico, Colombia, and Argentina, without pre-funding, with a quoted receive amount before you commit, and with published pricing. That is the problem a payout API like BlindPay is built for."
  - q: "Can I use Stripe and BlindPay together?"
    a: "Yes. Many teams keep Stripe for card acceptance and use BlindPay for cross-border payouts and USD collection through virtual accounts. The two do not overlap on the payout side."
---

Partly. Stripe lets eligible merchants accept stablecoin payments at checkout and hold stablecoin balances in Stripe financial accounts. Stripe also owns [Bridge](https://www.bridge.xyz), which is a full stablecoin infrastructure API. But Stripe by itself is not a standalone cross-border stablecoin payout API, and if your job is "pay people abroad in their local currency," you are really choosing between a dedicated payout API like BlindPay and Bridge.

This question comes up in almost every conversation we have with fintech teams. Makes sense. Stripe is the default payments vendor for most startups, so "can Stripe just do this?" is the right first question. Here is the honest answer, product by product.

## What does Stripe offer with stablecoins?

Stripe has moved into stablecoins in two ways: its own products and the Bridge acquisition.

| Stripe product | What it does | Who it's for |
| --- | --- | --- |
| Stablecoin payments at checkout | Customers pay in USDC; the merchant settles in fiat | Existing Stripe merchants whose buyers hold stablecoins |
| Stablecoin financial accounts | Hold a USD stablecoin balance inside Stripe | Businesses that want a dollar balance without a US bank |
| Bridge (acquired in 2025) | Stablecoin issuance, wallets, conversion, virtual accounts, cards | Teams building stablecoin products, or launching their own stablecoin |

Stripe's stablecoin features are gated by account eligibility and region, so check what your account can actually use before you plan around them.

What's interesting here is the direction. Almost everything on the Stripe side is about **accepting** money or **holding** it. Stripe's core payout rails are still cards and bank transfers. Paying 500 people across Latin America in reais and pesos, with a quote per payout, is a different product.

## What does Bridge add?

Bridge is where Stripe's stablecoin infrastructure actually lives. It is a general-purpose stablecoin API:

- **Issuance.** Launch your own branded stablecoin.
- **Wallets.** Provider-managed custodial wallets or self-custody.
- **Conversion.** Fiat to stablecoin and back.
- **Virtual accounts.** Accounts in several currencies that receive fiat.
- **Cards.** Stablecoin-backed card programs.
- **Payout rails.** United States, Europe, the United Kingdom, Mexico, Brazil, and Colombia, over ACH, wire, SEPA, Faster Payments, SPEI, and Pix.

If you already run on Stripe and want stablecoin flows next to your card flows, Bridge keeps your vendor count at one. If you want to issue a stablecoin, Bridge is one of the few teams that does it as a service.

Pricing goes through a sales process. Bridge has a sandbox and REST docs, with hosted KYC links for onboarding. For a direct capability breakdown, read [BlindPay vs Bridge](/compare/bridge).

## So what is a "stablecoin API," exactly?

A stablecoin API moves money through code with stablecoins as the settlement layer: onboard a customer with KYC or KYB, get funds in (a bank transfer or a stablecoin), lock a quote, and deliver local currency to a bank account over the destination country's rail. The sender and receiver never touch crypto unless they want to.

By that definition:

- **A payout API** like BlindPay is a stablecoin API focused on the last mile: stablecoins in, local currency out.
- **Stripe** is a payments platform with stablecoin features.
- **Bridge** is a stablecoin infrastructure API with a broad surface.

For the full category definition, read [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api), and for how it differs from checkout tools, read [stablecoin API vs crypto payment gateway](/resources/more/stablecoin-api-vs-crypto-payment-gateway).

## When is a dedicated payout API a better fit?

A dedicated payout API wins when the job is narrow and the details matter:

- **Corridor depth.** Argentina over Transfers 3.0, Colombia over ACH, Brazil over Pix, PIX Safe, and TED, Mexico over SPEI, plus SWIFT (POBO/COBO) to 100+ countries with UETR tracking and MT103 confirmations on every wire.
- **No pre-funding.** Fund each payout when you send it, from your own stablecoin wallet or a [virtual USD account](/virtual-accounts), instead of topping up a balance in advance.
- **A binding quote.** Rate, fee, and exact receive amount locked for five minutes before you commit.
- **Published pricing.** Know the cost of a payout before you talk to anyone.
- **Compliance inside the API.** KYC, KYB, and sanctions screening run before money moves, and a hold shows up as an `on_hold` status instead of a silent delay.

That is the job [BlindPay](/global-payments) is built for. It is not a card acquirer and it doesn't issue stablecoins, so it doesn't replace Stripe. It sits next to it.

## When is Stripe plus Bridge the right answer?

Be fair about it. Stripe plus Bridge is a strong choice when:

- You already process cards on Stripe and want one vendor, one dashboard, one contract.
- Your product needs stablecoin checkout next to cards.
- You want to issue a branded stablecoin.
- Your payout countries are inside Bridge's rail list and you're fine with a custodial wallet model.
- You'd rather negotiate pricing with sales than read it off a page.

No reason to add a vendor if that list describes you.

## A common setup: Stripe in, BlindPay out

A lot of teams we work with end up here:

1. **Stripe** handles card acceptance from customers.
2. **BlindPay** handles payouts to sellers, contractors, or suppliers abroad, in their local currency.
3. **Virtual USD accounts** on BlindPay collect USD from foreign customers by ACH, wire, or SWIFT and convert it to USDC or USDT automatically.

Two vendors, zero overlap. Each one does the part it's built for.

## How do they compare at a glance?

|  | BlindPay | Stripe | Bridge |
| --- | --- | --- | --- |
| Primary job | Stablecoin payouts and collections | Card and bank payments | Stablecoin infrastructure |
| Stablecoin checkout | No | Yes, for eligible merchants | Via Stripe |
| Issue your own stablecoin | No | No | Yes |
| Stablecoin-settled payouts in LATAM | Brazil, Mexico, Colombia, Argentina | Not a core product | Mexico, Brazil, Colombia |
| SWIFT to 100+ countries | Yes (POBO/COBO) | Not stablecoin-settled | Not listed on public pages |
| Pre-funding | Not required | Balance held in Stripe | Funded per flow |
| Pricing | [Published](/pricing) | Public for core products | Through sales |
| SDKs | Node, Python, Go, PHP, Swift | Many languages | REST API and docs |

Products change often. Treat the table as a snapshot and confirm on each provider's site. For a five-way comparison including Circle and Fireblocks, read the [best stablecoin APIs for cross-border payments](/resources/more/best-stablecoin-apis-cross-border-payments-2026).

## What to do next

Write down your top three payout corridors and your monthly volume in each. Check whether Stripe's stablecoin features are even enabled on your account. Then run the same $10,000 test payout through each sandbox you're considering and compare one number: what the receiver actually gets. If you want to see ours, create a development instance and run the [payout quickstart](/docs/quickstart-payout), or [talk to us](/contact) with one corridor.

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

---

Source: https://blindpay.com/changelog/2026-07-03-instance-rfis

---
title: Instance RFIs
description: Compliance can now request information about your instance itself, answered from the dashboard or via two new API endpoints, with no effect on your account status.
date: 2026-07-03
category: New Feature
categoryType: feature
contributors:
  - ericViana
isChangelog: true
---

Requests for Information now come in two kinds. Alongside the existing customer RFIs, BlindPay compliance can open an RFI on your **instance** itself, for example to refresh business documents during a periodic review. Your team answers from the dashboard's instance settings page or through the API.

<!--more-->

## TL;DR

- New endpoints: `GET /v1/instances/{instance_id}/rfi` and `POST /v1/instances/{instance_id}/rfi`
- Same section and field format as customer RFIs
- Standalone by design: no status changes, no blocked payments, ever
- If the 27-day window passes, the request simply expires and compliance follows up directly
- Email cadence to all instance members at day 0, 7, and 17, plus an expiry notice

## How it works

When compliance opens an instance RFI, every active member of your instance receives an email and the request appears under **Settings → Instance** in the dashboard. Fetch it with `GET /v1/instances/{instance_id}/rfi`, collect the requested fields, and submit them in a single shot with `POST /v1/instances/{instance_id}/rfi`.

Unlike customer RFIs, an instance RFI never touches your onboarding or KYB status and never blocks payins or payouts. See the [Instance RFI documentation](/docs/kb/instance-requests) and the [Instance RFIs guide](/docs/kb/instance-requests) for details.

---

Source: https://blindpay.com/resources/more/stablecoin-api-vs-crypto-payment-gateway

---
title: "Stablecoin API vs crypto payment gateway: what's the difference?"
seoTitle: "Stablecoin API vs crypto payment gateway"
description: "A crypto payment gateway accepts crypto at checkout. A stablecoin API moves money across borders through code, and neither side needs a wallet."
date: "2026-06-26"
category: "stablecoins"
author: "BlindPay Team"
faq:
  - q: "Is a stablecoin API the same as a crypto payment gateway?"
    a: "No. A crypto payment gateway lets a merchant accept crypto or stablecoins from a customer at checkout. A stablecoin API is payment infrastructure that uses stablecoins as the settlement layer for collections, cross-border payouts to bank accounts, virtual USD accounts, and the KYC and KYB checks around them. With a stablecoin API, neither the sender nor the receiver has to hold crypto."
  - q: "Do my customers need a crypto wallet to use a stablecoin API?"
    a: "No. In a stablecoin API payout the receiver gives a bank account and gets local currency over a rail like Pix, SPEI, ACH, or SEPA. In a collection the payer sends a normal bank transfer. The stablecoin sits in the middle as the settlement layer and never touches the end user."
  - q: "Can a crypto payment gateway pay suppliers or contractors abroad?"
    a: "Usually not. Gateways are built for inbound checkout: they accept a payment, then settle the merchant in crypto or in fiat to the merchant's own bank account. Paying thousands of third parties in their local currency, with compliance on each one, is a payout problem, and that is what a stablecoin API is built for."
  - q: "Which is cheaper, a gateway or a stablecoin API?"
    a: "They price different jobs, so compare them per job. Gateways usually charge a percentage of each checkout payment. Stablecoin APIs usually charge per payout plus the FX spread on conversion. For cross-border payouts, compare providers on the amount the receiver actually gets on a quoted transfer, not on the headline fee."
  - q: "Is BlindPay a crypto payment gateway?"
    a: "No. BlindPay is a stablecoin API. It collects fiat over rails like Pix, SPEI, PSE, ACH, and wire, converts it to USDC or USDT, and pays out stablecoins as local currency to bank accounts in 100+ countries, with KYC, KYB, and sanctions screening built into the API and no pre-funding required."
---

A crypto payment gateway lets a merchant accept crypto or stablecoins from a customer at checkout. A stablecoin API is payment infrastructure that uses stablecoins like USDC as the settlement layer to move money across borders through code: collections, payouts to bank accounts, virtual USD accounts, and the compliance checks around all of them. With a gateway, the payer holds crypto. With a stablecoin API, nobody has to.

The two get mixed up constantly, including by AI assistants, because both touch stablecoins. They solve different problems, for different buyers, in different directions. Picking the wrong one means months of workarounds.

## What does a crypto payment gateway do?

A crypto payment gateway is a checkout tool. A customer who already holds crypto picks "pay with crypto", sends tokens from their wallet to an address the gateway generates, and the gateway confirms the payment and credits the merchant.

Well-known examples include Coinbase Commerce, BitPay, and NOWPayments. Stripe also lets eligible merchants accept stablecoin payments at checkout (more on that in [is Stripe a stablecoin API?](/resources/more/is-stripe-a-stablecoin-api)).

The flow is almost always one direction:

1. The payer holds crypto in a wallet.
2. The gateway shows an amount and a deposit address.
3. The payer sends the tokens.
4. The merchant gets settled, either in crypto or converted to fiat in the merchant's own bank account.

That's it. The gateway's job ends when the merchant has been paid.

## What does a stablecoin API do?

A stablecoin API is the plumbing for moving money itself, not for accepting a crypto payment. It exposes, through a REST API, the pieces a business needs to send and receive money across borders:

- **Onboarding and compliance:** KYC for individuals and KYB for businesses, plus sanctions screening, before any money moves.
- **Collections:** accept fiat over local rails (ACH, wire, Pix, SPEI, PSE) and convert it to a stablecoin.
- **Virtual accounts:** a US account number in your customer's name that turns incoming USD into USDC or USDT.
- **Conversion with a quote:** lock the FX rate and fees before you commit.
- **Payouts:** deliver local currency to a bank account over the destination country's own rail.

The stablecoin is the settlement layer in the middle. It moves value between countries in seconds, 24/7, without a correspondent bank. The sender can start with dollars in a bank. The receiver ends with reais, pesos, or dollars in a bank. Neither one opens a wallet.

For the full definition, read [what a stablecoin API is](/resources/more/what-is-a-stablecoin-api).

## How do they compare side by side?

| | Crypto payment gateway | Stablecoin API |
| --- | --- | --- |
| Core job | Accept crypto at checkout | Move money across borders through code |
| Direction | Inbound only | Inbound and outbound |
| Who holds crypto | The payer | Nobody, unless they want to |
| Who gets paid | The merchant | Any third party: suppliers, contractors, sellers, customers |
| Payer's rail | A blockchain wallet | Bank transfer, local rail, or stablecoin |
| Receiver's rail | Merchant account | Pix, SPEI, ACH, RTP, SEPA, SWIFT, or a wallet |
| Compliance scope | Mostly the merchant | Every sender and receiver (KYC, KYB, sanctions) |
| Typical buyer | E-commerce, digital goods | Fintechs, marketplaces, payroll, B2B platforms |
| Integration | Checkout plugin or hosted page | REST API, SDKs, webhooks |

Short version: a gateway is a cash register. A stablecoin API is a bank wire that settles in seconds.

## Where do they overlap?

Both convert between stablecoins and fiat, and both run on the same networks (Ethereum, Base, Polygon, Solana, Stellar, Tron). Some companies sell both, which is where the naming confusion comes from.

The overlap stops at the counterparty. A gateway assumes the payer is a crypto user. A stablecoin API assumes nobody is. That one assumption changes everything downstream: who needs to be verified, which rails you connect to, and who carries the compliance burden.

## A worked example: two companies, two problems

**Company A** runs an online store in Texas selling software licenses. About 4% of its buyers ask to pay in USDC. It needs a "pay with crypto" button that confirms payments and settles USD to its bank account. That's a gateway problem. A plugin solves it in an afternoon.

**Company B** is a staffing platform in New York paying 180 contractors every two weeks: 110 in Brazil, 50 in Mexico, 20 in Colombia. The contractors want reais and pesos in their bank accounts, not tokens. Each contractor needs KYC. The finance team doesn't want to keep balances sitting in three foreign bank accounts. That's a stablecoin API problem.

With a stablecoin API, Company B's flow looks like this:

1. Deposit USD by wire into a [virtual USD account](/virtual-accounts); it converts to USDC automatically.
2. Request a quote per contractor, which locks the rate and shows the exact receive amount.
3. Create the payout. USDC moves on-chain in seconds.
4. Reais land over Pix and pesos over SPEI within minutes; Colombian pesos arrive in about one business day.

A gateway can't do any of steps 2 to 4. It has no concept of paying a third party.

## Which one do you need?

Ask one question: **who holds the crypto?**

- **Your customers hold crypto and want to pay you with it.** You need a crypto payment gateway.
- **You need to pay people abroad, or collect from them, and nobody wants to touch crypto.** You need a stablecoin API.
- **Both.** Use a gateway at checkout and a stablecoin API for payouts. They don't compete.

A few signs you're shopping in the wrong category:

- You're asking a gateway vendor about "bulk payouts" or "local bank delivery."
- You're asking a stablecoin API vendor for a checkout button.
- Your compliance team asks how receivers get verified, and nobody has an answer.

## Where does BlindPay fit?

[BlindPay](/global-payments) is a stablecoin API, not a checkout gateway. It collects fiat over Pix, SPEI, PSE, ACH, and wire, converts to USDC or USDT, and pays out stablecoins as local currency to bank accounts in 100+ countries, over Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with UETR tracking and MT103 confirmations on every wire.

The differences that matter for a payout buyer:

- **No pre-funding.** Each transfer is funded when you send it, from a stablecoin wallet or a virtual USD account.
- **Compliance in the API.** KYC, KYB, and sanctions screening run before money moves, and standard individual KYC resolves in about 60 seconds.
- **Quotes before commitment.** Rate, fees, and receive amount are locked for five minutes.
- **Developer tooling.** A REST API with an OpenAPI 3.1 spec and official SDKs for Node, Python, Go, PHP, and Swift.
- **[Published pricing](/pricing).** No sales call to find out what a payout costs.

If you're comparing providers in this category, read the [best stablecoin APIs for cross-border payments](/resources/more/best-stablecoin-apis-cross-border-payments-2026) and [how to choose a stablecoin API](/resources/more/how-to-choose-a-stablecoin-api).

## What to do next

Write down who holds the crypto in your flow, and who needs to get paid. If the answer is "nobody" and "people abroad," skip the gateway demos. Create a free development instance, run one [test payout](/docs/quickstart-payout) to a bank account, and look at the quote before you commit. That quote tells you more than any sales deck.

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

---

Source: https://blindpay.com/blog/stablecoin-for-the-ordinary

---
title: "Stablecoin for the Ordinary"
description: "Why BlindPay abstracts away blockchain, wallets, and stablecoin jargon so companies move money across borders with one API, no wallet, and no pre-funding."
date: "2026-06-16"
categories: ["company"]
authors:
  - bernardoSimonassi
thumbnail: "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/stablecoin-for-the-ordinary.webp"
isBlog: true
faq:
  - q: "Do I need a crypto wallet to use BlindPay?"
    a: "No. BlindPay abstracts away wallets and private keys. You call a REST API and money moves across borders. There is no wallet to open and no seed phrase to safeguard."
  - q: "What is stablecoin payment infrastructure?"
    a: "Stablecoin payment infrastructure lets businesses send and receive money across borders using stablecoins as the settlement layer, exposed through a normal payments API. BlindPay handles on/off-ramps, FX, compliance, and settlement so the blockchain stays invisible."
  - q: "Which blockchain does BlindPay use?"
    a: "You do not pick a chain. BlindPay treats the blockchain as plumbing and routes settlement across networks like Polygon, Base, Arbitrum, Stellar, and Tron without exposing that choice to you or your customers."
  - q: "Does BlindPay require pre-funding?"
    a: "No. BlindPay supports cross-border payments with live FX quotes and no pre-funding, so you do not need to park capital before money moves."
  - q: "Is BlindPay compliant?"
    a: "Yes. BlindPay treats compliance as a first-class product, not an afterthought, because money that cannot move legally is a demo, not infrastructure."
---

![Stablecoin for the Ordinary](https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/stablecoin-for-the-ordinary.webp)

I'm not a degen guy. I'm a gamer.

My first contact with blockchain was playing Axie Infinity. Not because I could earn money, but because I'm competitive and I enjoyed it. After that, I never touched or invested in this world again.

It sounds strange coming from someone building in this space, but I don't like 99% of the projects. What I love is technology.

When I was learning Solidity at Buildspace ([@farza](https://x.com/farzatv)'s previous company, btw), my first project was building social media on chain. Then I tried to build an e-commerce store. But again and again, the experience was never seamless.

I never felt part of this world. I never liked the experience of opening a blockchain wallet, the responsibility of holding my own money, getting nervous every time I was about to send a transaction. If I felt that friction as someone who writes code for a living, what was an ordinary person or a traditional finance team supposed to feel?

## Why shouldn't blockchains and stablecoins be branded?

Blockchains and stablecoins shouldn't be branded because ordinary people don't choose money by its underlying technology. Every time I hear someone is launching a new blockchain or a new stablecoin, I start wondering how much the company raised. Because at that point it's not a technology, it's a marketing game.

Ordinary people don't give a f\*\*\* about which chain their money flows through. They care that the money arrives, that it's correct, and that someone is accountable when it isn't. The chain is plumbing. Nobody asks which copper alloy is in the pipe before they turn on the faucet.

This is why I believe everything in this space should be abstracted away. Here's how crypto jargon maps to plain financial language:

| What we call it | What it actually is |
| --------------- | ------------------- |
| Stablecoin      | money               |
| Blockchain      | public ledger       |
| Swap            | FX                  |
| Mint            | deposit             |
| Burn            | withdraw            |
| Smart contract  | REST API            |

The left column is how the industry talks to itself. The right column is how the rest of the world already thinks about moving money. Our job isn't to teach everyone the left column. It's to make the left column disappear.

## How does BlindPay abstract away the blockchain for payments?

BlindPay is [stablecoin payment infrastructure](/resources/more/stablecoin-payments-guide) that lets companies move money across borders through a single API, with no wallet to manage, no chain to pick, and no pre-funding. That conviction is the whole reason [BlindPay](https://blindpay.com/) exists, and it shows up in the product decisions we make every day.

When a company sends a payment through us, they don't pick a chain or manage a wallet. They call an API and money moves across borders, with payins, payouts, live quotes, and no pre-funding. We built [global payments](https://blindpay.com/global-payments) so the developer experience feels like any other modern payments integration, a [REST API with real docs](https://blindpay.com/docs/introduction), not a crash course in cryptography.

The "burn and mint" mental model becomes a [virtual account](https://blindpay.com/virtual-accounts) that behaves like a bank account, because that's what people actually need it to be. And the part nobody likes to talk about, the part that determines whether any of this is real, is [compliance](https://blindpay.com/compliance). We treat it as a first-class product, not an afterthought, because money that can't move legally isn't infrastructure, it's a demo.

## What's left to abstract away?

I'm not claiming we've finished abstracting away the friction. We haven't. There's a long road ahead at BlindPay.

But the goal is clear: be the first stablecoin payment infrastructure that speaks the language of ordinary people and traditional companies, instead of asking them to learn ours.

If you're building something that needs to move money across borders, [take a look at what we're building](https://blindpay.com/) or [come talk to us](https://blindpay.com/contact).

---

Source: https://blindpay.com/changelog/2026-06-14-analyze-document

---
title: AI Document Analysis
description: A new endpoint reads a KYC document with AI and returns an approval-rate signal, so you can pre-screen files before submitting them for verification.
date: 2026-06-14
category: New Feature
categoryType: feature
contributors:
  - bernardoSimonassi
isChangelog: true
---

You can now pre-screen KYC documents before submitting them. The new `POST /v1/upload/analyze` endpoint reads a PDF, JPG, or PNG with AI, checks it against the rules for its type, and returns an approval-rate signal with a short reason.

<!--more-->

## TL;DR

- New endpoint: `POST /v1/upload/analyze`
- Returns `approval_rate` of `low`, `medium`, or `high` plus a one-line `description`
- Supports 13 document types, from identity and passport to bank and financial statements
- Optional `metadata` cross-checks values you already collected against the document

## How it works

Send a `file` (PDF, JPG, or PNG up to 5MB) and a `type`. The analysis runs the document against the rule set for that type and returns how confident it is that the document should be approved, with a short reason you can show to the customer or your reviewers.

The result is a signal, not a decision. KYC approval still comes from the verification flow; this lets you catch an expired ID or an out-of-date proof of address early, before submitting.

## Optional metadata

Pass `metadata` as a JSON string of values you already have, such as `full_name`, `date_of_birth`, or `address`, and they are matched against the document. A clear mismatch caps the rating at `low` and the reason explains it. Requested transaction limits (`requested_per_transaction`, `requested_daily`, `requested_monthly`) are checked for sufficient capacity instead of an exact match.

## Get started

See the [Analyze Document documentation](/docs/learn/analyze-document). The full request and response schema is in the [BlindPay API Docs](https://api.blindpay.com/reference#tag/upload/POST/v1/upload/analyze){target="\_blank"}.

---

Source: https://blindpay.com/changelog/2026-06-06-sepa-multi-chain-eur-quotes-and-offramp

---
title: SEPA Multi-Chain, EUR-Amount Quotes, and Offramp Wallet Support
seoTitle: SEPA Multi-Chain, EUR-Amount Quotes, and Offramp Wallet Support
description: SEPA payouts now accept USDC from Arbitrum, Base, Solana, and Stellar in addition to Polygon and Ethereum. Quotes can be requested by the EUR amount the receiver should get. SEPA bank accounts can also be linked to offramp wallets.
date: 2026-06-06
category: Product Update
categoryType: update
contributors:
  - alves
  - bernardoSimonassi
isChangelog: true
---

Three updates to the SEPA EUR payouts rail we launched on May 29: more deposit chains, the ability to quote by the receiver's EUR amount, and offramp wallet support.

<!--more-->

## TL;DR

- USDC for SEPA is now accepted on Polygon, Ethereum, Arbitrum, Base, Solana, and Stellar
- Quotes can be requested by the EUR amount the receiver should get, minimum 10 EUR. The existing USDC-amount mode is unchanged, minimum 11 USDC
- SEPA bank accounts can be paired with offramp wallets on any of the supported deposit chains

## Multi-chain deposits

When you create a SEPA payout the USDC can come from any of these chains: Polygon, Ethereum, Arbitrum, Base, Solana, and Stellar. Settlement to the receiver's IBAN is unaffected, funds arrive within 5 to 30 minutes regardless of the source chain.

Native USDC only on each chain. Tron is not supported for SEPA.

## Quote by EUR amount

Until now, every SEPA quote took a USDC amount and returned the EUR the receiver would get. You can now do the reverse: specify the EUR amount the receiver should receive and we calculate the USDC you need to send.

The mode is selected on the quote request via `currency_type`:

- `currency_type: "sender"` for the USDC-amount path. Minimum 11 USDC.
- `currency_type: "receiver"` for the EUR-amount path. Minimum 10 EUR.

## Offramp wallets

SEPA bank accounts can now be linked to offramp wallets on Polygon, Ethereum, Arbitrum, Base, and Solana. Funds sent to the offramp wallet are converted to EUR and settled to the linked IBAN automatically, with the same 5 to 30 minute window. Tron offramp wallets cannot be paired with SEPA bank accounts.

See the [offramp wallets documentation](/docs/offramp-wallets) to get started.

## Get started

These updates are live for every account that already has SEPA enabled. Existing SEPA bank accounts work with all the new chains and the EUR-amount quote mode without any reconfiguration.

---

Source: https://blindpay.com/changelog/2026-06-04-customers-rename

---
title: '"Receivers" renamed to "Customers"'
description: We're renaming "Receivers" to "Customers" across the entire BlindPay platform. Both endpoints will work during a 1-month transition period.
date: 2026-06-04
category: Migration
categoryType: update
contributors:
  - alves
  - bernardoSimonassi
isChangelog: true
---

We're renaming "Receivers" to "Customers" across the entire BlindPay platform: API endpoints, SDKs, documentation, and dashboard.

<!--more-->

## TL;DR

- All `/receivers` endpoints now have `/customers` equivalents
- Both `/receivers` and `/customers` paths work identically through **July 3, 2026**
- After that date, `/receivers` endpoints return `301 Moved Permanently`
- IDs stay the same (`re_` prefix), no data migration needed
- SDKs add a `customers` accessor to their current majors and `receivers` is deprecated alongside, no import changes required

## What changed

Every API endpoint that previously used `/receivers` in its path now has a `/customers` equivalent:

```
GET    /v1/instances/{instance_id}/receivers                →  GET    /v1/instances/{instance_id}/customers
POST   /v1/instances/{instance_id}/receivers                →  POST   /v1/instances/{instance_id}/customers
GET    /v1/instances/{instance_id}/receivers/{receiver_id}  →  GET    /v1/instances/{instance_id}/customers/{customer_id}
PUT    /v1/instances/{instance_id}/receivers/{receiver_id}  →  PUT    /v1/instances/{instance_id}/customers/{customer_id}
DELETE /v1/instances/{instance_id}/receivers/{receiver_id}  →  DELETE /v1/instances/{instance_id}/customers/{customer_id}
```

This applies to all sub-resources too: bank accounts, wallets, virtual accounts, blockchain wallets, offramp wallets, and limit increases.

## Response changes

During the transition period, every customer record returned by either `/customers` or `/receivers` carries a `customer_id` alias of its primary key. The underlying ID still uses the `re_` prefix and remains in the `id` field:

```json
{
  "id": "re_abc123456789",
  "customer_id": "re_abc123456789",
  "first_name": "Alice"
}
```

Payouts and payins that reference a customer expose both `receiver_id` and `customer_id` foreign-key fields during the transition; either accepts the same `re_*` value. Sub-resources scoped under `/customers/{id}/…` (bank accounts, wallets, virtual accounts, blockchain wallets, offramp wallets) derive the parent from the URL, so no FK alias appears in the response body.

After the sunset, the `customer_id` alias becomes the canonical field name across the API.

## Webhook changes

Three new webhook events fire alongside the existing ones:

- `customer.new`: fires whenever `receiver.new` fires
- `customer.update`: fires whenever `receiver.update` fires
- `customer.delete`: fires whenever `receiver.delete` fires

You **must subscribe to `customer.*` before July 3, 2026**. After the sunset, `receiver.*` events stop firing entirely. If you don't migrate, your endpoint goes silent.

During the transition window (June 4 → July 3), every create and update emits both events: the legacy `receiver.*` and its `customer.*` counterpart. If your endpoint is subscribed to both, your handler receives the same action twice. We intentionally dual-emit so you can migrate your handlers in any order, but make sure your processing is idempotent on the resource id, or drop the `receiver.*` subscription once `customer.*` is wired up.

## SDK updates

| SDK     | Now (transition)                                                            | At/after sunset                                                                       |
| ------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Node.js | Minor release adds `customers`, marks `receivers` `@deprecated` in JSDoc.   | Next major (4.0.0) removes `receivers`.                                               |
| Python  | Minor release adds `customers`, marks `receivers` deprecated with warning.  | Next major (2.0.0) removes `receivers`.                                               |
| Go      | Minor release adds `customers` package, `// Deprecated:` on `receivers`.    | **No v2 planned for this rename.** `receivers` stays as a deprecated forwarder in v1. |
| PHP     | Minor release adds `customers`, marks `receivers` `@deprecated` in PHPDoc.  | Next major (2.0.0) removes `receivers`.                                               |
| Swift   | Minor release adds `customers`, `@available(*, deprecated)` on `receivers`. | Next major (2.0.0) removes `receivers`.                                               |

No import path changes during the transition. Just update to the latest version of your current major and the `customers` accessor is there. For Node, Python, PHP, and Swift, a future major release (after sunset) removes the deprecated `receivers` surface; that's when imports change in those SDKs.

**Go is treated differently.** `receivers` stays as a thin deprecated forwarder in v1 indefinitely. `gopls`, `staticcheck SA1019`, and `godoc` will flag usage; nothing breaks.

Method signatures are unchanged. Only the resource accessor renames. For most projects this is a single find/replace. Example in Node.js SDK:

```diff
- await blindpay.receivers.list()
+ await blindpay.customers.list()

- await blindpay.receivers.bankAccounts.create({ ... })
+ await blindpay.customers.bankAccounts.create({ ... })
```

## What you need to do

1. **Update your API calls** to use `/customers` instead of `/receivers`
2. **Update field references** from `receiver_id` to `customer_id` in your code
3. **Update webhook subscriptions** to use `customer.new`, `customer.update`, and `customer.delete`
4. **Update your SDK** to the latest version of its current major. The `customers` accessor is added there, no import changes required

## Timeline

- **June 4, 2026**: `/customers` endpoints live. Both `/receivers` and `/customers` accept requests. Receiver responses include `Deprecation: true` and `Sunset: Fri, 03 Jul 2026 00:00:00 GMT` headers, plus a `Link: rel="successor-version"` pointing to the customer equivalent.
- **July 3, 2026**: Sunset date. `/receivers` endpoints return `301 Moved Permanently` redirecting to `/customers`. SDK code calling `receivers.*` continues to work via the redirect.
- **Later**: `/receivers` endpoints removed entirely. New SDK majors ship for Node (v4), Python (v2), PHP (v2), and Swift (v2), dropping the deprecated `receivers` surface. The Go SDK keeps `receivers` as a deprecated forwarder in v1; no v2 planned for this rename. Previous SDK majors enter maintenance mode (security fixes only).

## Detect deprecation programmatically

Every `/receivers` response carries deprecation metadata you can monitor in tests or runtime logs:

```http
HTTP/1.1 200 OK
Deprecation: true
Sunset: Fri, 03 Jul 2026 00:00:00 GMT
Link: </v1/instances/{instance_id}/customers>; rel="successor-version"
Content-Type: application/json
```

Useful in CI: fail a smoke test if production traffic still hits `Deprecation: true` endpoints close to the sunset date.

## Verification checklist

Before considering your migration complete:

- Logs show zero requests to `/v1/instances/*/receivers*` paths from your services
- CI / monitoring asserts no `Deprecation: true` header on production responses
- Webhook handlers process `customer.new`, `customer.update`, and `customer.delete`
- No code paths reference `response.receiver_id`
- SDK updated to the latest minor release of its current major
- Saved dashboard URLs use `/customers/`

## FAQ

### What if I don't migrate before July 3, 2026?

`/receivers` paths return `301 Moved Permanently` pointing to the equivalent `/customers` URL. Most HTTP clients (browsers, `curl`, `requests`, `axios`, official SDKs, Postman) follow redirects automatically, so traffic keeps working, but you spend an extra round-trip per call and rely on redirect semantics. Migrate before that date.

### Can I migrate one resource group at a time?

Yes. The customer mirrors are independent per resource group (customers, bank accounts, wallets, virtual accounts, etc.). You can switch your customer-creation flow over this week and your bank-account-creation flow next week without coordination. Each endpoint accepts the new path independently.

### Will I get duplicate webhook events during the transition?

Yes, every create and update emits both `receiver.*` and `customer.*` if you are subscribed to both. We dual-emit so you can migrate handlers in any order. Subscribe to one set or the other to avoid handling the same event twice.

### Do I need to migrate my stored IDs?

No. All IDs keep the `re_` prefix. The same ID works with both `/receivers` and `/customers` endpoints. We are renaming the API surface, not the underlying resource.

### How do I report issues with the migration?

Use the feedback button in the dashboard (under your profile dropdown) or email support@blindpay.com with `migration` in the subject. Including the request ID from a deprecated response (`x-blindpay-request-id` header) speeds up the lookup.

---

Source: https://blindpay.com/changelog/2026-05-29-sepa-eur-payouts

---
title: SEPA EUR Payouts
description: Send USDC and have your receiver get EUR in any SEPA-zone bank account across 40 countries, with settlement in 5 to 30 minutes. Supports B2B, B2C, C2B, and C2C use cases.
date: 2026-05-29
category: New Feature
categoryType: feature
contributors:
  - alves
isChangelog: true
---

You can now send USDC and have your receiver get EUR across the SEPA zone. USDC moves on Polygon or Ethereum, and EUR lands in the receiver's IBAN within 5 to 30 minutes.

<!--more-->

## TL;DR

- Send USDC and pay receivers in EUR across 40 SEPA-zone countries
- USDC on Polygon or Ethereum
- Minimum payout: 11 USDC
- Per-payout maximum: $100,000 when the receiver is an individual, $300,000 when the receiver is a business
- Settlement in 5 to 30 minutes after we receive your USDC
- Supports B2B, B2C, C2B, and C2C use cases. 7 countries are C2C-only (see below)
- Same payout API as every other rail. Create a SEPA bank account, request a quote, execute the payout

## How it works

The flow is identical to your existing payouts:

1. Create a bank account with `type: "sepa"`, the receiver's IBAN, BIC, full name, and address. The country of the IBAN determines which use cases are available (see the C2C-only list below).
2. Request a quote for the USDC amount you want to send. We return the EUR your receiver will get.
3. Execute the payout. EUR settles to the receiver's IBAN within 5 to 30 minutes after we receive your USDC.

## Rules

- **Minimum**: 11 USDC per payout.
- **Per-payout maximum**: $100,000 when the receiver is an individual (B2C, C2C) and $300,000 when the receiver is a business (B2B, C2B).
- **No fixed EUR amounts**: quotes take a USDC amount and return the EUR your receiver gets.
- **Networks**: USDC on Polygon or Ethereum mainnet. Native USDC only.
- **Receiver country**: must be one of the 40 SEPA-zone countries listed below.

## Supported countries

All 40 countries below support B2B, B2C, C2B, and C2C use cases unless flagged:

Andorra (AD), Albania (AL), Austria (AT)\*, Belgium (BE), Bulgaria (BG), Switzerland (CH), Cyprus (CY), Czech Republic (CZ), Germany (DE), Denmark (DK), Estonia (EE)\*, Spain (ES), Finland (FI)\*, France (FR)\*, United Kingdom (GB), Greece (GR), Croatia (HR), Hungary (HU), Ireland (IE), Iceland (IS), Italy (IT), Liechtenstein (LI), Lithuania (LT)\*, Luxembourg (LU), Latvia (LV), Monaco (MC), Moldova (MD), Montenegro (ME), North Macedonia (MK), Malta (MT), Netherlands (NL), Norway (NO)\*, Poland (PL), Portugal (PT)\*, Romania (RO), Sweden (SE), Slovenia (SI), Slovakia (SK), San Marino (SM), Vatican City (VA).

\* **C2C-only countries**: Austria (AT), Estonia (EE), Finland (FI), France (FR), Lithuania (LT), Norway (NO), and Portugal (PT) only accept C2C (individual to individual) payouts. Sending to a business beneficiary in these countries (B2B, C2B) or sending from a business sender (B2C) is not supported.

The use case is derived from the sender (your customer) and the receiver:

- **B2B**: business sender to business beneficiary
- **B2C**: business sender to individual beneficiary
- **C2B**: individual sender to business beneficiary
- **C2C**: individual sender to individual beneficiary

## Get started

If your account already has KYC approved, SEPA is available immediately, no extra activation. Create a SEPA bank account from the dashboard or the API, and you're ready to send your first payout.

---

Source: https://blindpay.com/changelog/2026-05-22-rfi-apis-audit-logs-and-ted-payouts-brazil

---
title: RFI APIs, Audit Logs, and TED Payouts in Brazil
description: A programmatic Request for Information flow, a dedicated audit trail for sensitive team actions, and TED as a new payout rail in Brazil for high-volume transactions.
date: 2026-05-22
category: Product Update
categoryType: update
contributors:
  - alves
  - ericViana
isChangelog: true
---

May's product updates: compliance review goes fully programmatic, every sensitive action is traceable, and Brazilian payouts gain a high-value rail.

<!--more-->

## TL;DR

- **RFI APIs:** programmatic Request for Information flow
- **Audit Logs:** full visibility into sensitive team actions
- **TED:** high-volume payouts in Brazil

## RFI APIs

Compliance review is now fully programmatic. You no longer need to email supporting documents when a customer requires additional information. Once you create a customer, we will notify you by email and webhook whenever a Request for Information (RFI) is opened, and your team can respond directly through the API.

This eliminates manual handoffs, shortens KYC/KYB turnaround times, and keeps the entire review trail inside your own systems. [Read the RFI documentation](/docs/learn/rfi) to get started.

## Audit Logs

Every sensitive action performed by members of your organization is now recorded in a dedicated audit trail, accessible under **Settings → Audit logs**. Each entry captures the actor, the affected resource, IP address, and a UTC timestamp, providing the traceability that internal and external auditors expect.

Audit Logs are part of our ongoing security commitment and are designed to support SOC 2, ISO 27001, and customer-led audit workflows. [Read more in the Audit Logs changelog](/changelog/2026-04-24-audit-logs).

## TED Payouts in Brazil

BlindPay now supports TED (Transferência Eletrônica Disponível) as a payout rail in Brazil, complementing our existing PIX coverage. TED is the preferred rail for high-value, business-to-business transactions and enables you to settle larger volumes with the same instance configuration you already use today.

TED is available as a selectable bank account type and as a payin method. Review the [Payouts documentation](/docs/payouts?flavor=advanced) and the [Bank Accounts reference](/docs/bank-accounts?flavor=advanced) for setup details.

---

Source: https://blindpay.com/changelog/2026-05-15-stellar-wallet-rotation-and-testnet-fix

---
title: Stellar Wallet Rotation and Testnet USDB Fix
description: Rotated the Stellar mainnet operational wallet and testnet USDB issuer, and fixed a token mismatch bug where trustline and mint endpoints used a different USDB issuer than payins and payouts on Stellar testnet.
date: 2026-05-15
category: Infrastructure
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

Two Stellar wallet rotations and a bug fix that affected development-instance customers on Stellar testnet.

<!--more-->

## TL;DR

- Fixed USDB issuer mismatch on Stellar testnet trustline and mint endpoints
- Rotated the BlindPay operational wallet on Stellar mainnet
- Rotated the USDB issuer on Stellar testnet (action required for development instances)

## Bug fix: USDB issuer mismatch on Stellar testnet

The `POST /create-asset-trustline` and `POST /mint-usdb-stellar` endpoints were referencing a different USDB issuer than the one used by payins and payouts. This caused development-instance customers to see different tokens depending on the operation. Both endpoints now use the same issuer as all other operations.

No API contract changes — request and response schemas remain the same.

## Mainnet operational wallet rotated

The BlindPay treasury wallet on Stellar mainnet has been rotated to `GCOSSQDM2SWMHRP7CDBOLL2V45NHCRLUWUCEHPPBA2ABCOOLPOLZKIHE`. This wallet receives payout crypto and sends payin crypto on Stellar mainnet. No action is required from customers — the system already uses the new wallet.

## Testnet USDB issuer rotated

The USDB asset issuer on Stellar testnet has been rotated to `GCQSSIMOW5OCGULZATDXKU5MOJBOMFX6G65X6CXZDQ7AIB3SKFUZ67NX`.

**Action required for development instances on Stellar testnet:**

1. Create a new USDB trustline via `POST /create-asset-trustline`
2. Mint new USDB via `POST /mint-usdb-stellar`

Old USDB balances from the previous issuer are orphaned and no longer recognized by the system.

---

Source: https://blindpay.com/blog/bcb-resolution-561-efx-stablecoins

---
title: "BCB Resolution 561: New eFX Rules for Stablecoins in Brazil and Why BlindPay Is Unaffected"
seoTitle: "BCB Resolution 561: New eFX Rules for Stablecoins in Brazil and Why BlindPay Is Unaffected"
description: "Brazil's Central Bank just updated rules for eFX international payments. Here's a clear breakdown of Resolution 561, what it actually prohibits, and why BlindPay's stablecoin + local rails model continues to deliver faster, cheaper, and fully compliant cross-border payments for businesses."
date: "2026-05-05"
categories: ["regulatory", "stablecoins", "brazil-payments"]
authors:
  - bernardoSimonassi
thumbnail: "/images/blog/bcb-resolution.png"
isBlog: true
faq:
  - q: "Does BCB Resolution 561 affect BlindPay?"
    a: "No. BlindPay does not operate as an eFX provider, so the article 50 settlement prohibition does not apply to its business model. Settlement speed, costs, and compliance stay the same."
  - q: "What does BCB Resolution 561 actually prohibit?"
    a: "It bars licensed eFX providers from settling with their foreign counterparty using virtual assets; settlement must occur through an FX operation or a non-resident reais account held in Brazil. It does not ban buying, selling, holding, or transferring stablecoins outside the eFX framework."
  - q: "Can Brazilian businesses still use stablecoins after Resolution 561?"
    a: "Yes. The rule is a targeted operational rule for eFX providers and does not restrict stablecoin use, peer-to-peer transfers, or BlindPay's stablecoin plus local rails model."
  - q: "Does anything change for businesses already using BlindPay?"
    a: "No. Settlement speeds, costs, and the built-in compliance and audit trails all stay the same."
---

![BCB Resolution 561: New eFX Rules for Stablecoins in Brazil and Why BlindPay Is Unaffected](/images/blog/bcb-resolution.png)

On April 30, 2026, the Brazilian Central Bank (BCB) published **Resolution BCB nº 561/2026**, which amends Resolution BCB nº 277/2022, particularly the chapter on the international payment and transfer service known as **eFX**. Contrary to what has been circulating in the media and on social networks, the new rule does **not** alter BlindPay's business model, much less make it unviable. The new rule changed provisions applicable to a specific type of remittance abroad (eFX), which is **not used by BlindPay** in its business model.

This post explains exactly what changed, what the rule actually targets, and why **our operations and the [stablecoin-powered payment routes](/resources/more/usdc-to-brl-routes-2026) we offer remain unaffected**.

### What Resolution 561 Actually Changes

Among other adjustments, Resolution BCB nº 561/2026 introduces **article 50** to Resolution BCB nº 277/2022. Article 50 establishes that payments or receipts between an eFX provider and its foreign counterparty must occur **exclusively** through:

- A foreign exchange (câmbio) operation, **or**
- Movements in a non-resident reais account held in Brazil.

The use of virtual assets in this settlement relationship between the eFX provider and the foreign counterparty is **prohibited**. The same regulation also details operational definitions relevant to eFX (such as "remitting user", "receiving user", and "foreign counterparty") and reinforces governance duties, information custody, and other obligations applicable to eFX providers.

This is a **targeted operational rule for licensed eFX providers**. It does not ban individuals or companies from buying, selling, or holding stablecoins, prohibit peer-to-peer transfers of virtual assets, or restrict the use of stablecoins outside the eFX framework.

### Why This Does Not Affect BlindPay

To begin with, **BlindPay does not operate as an eFX provider**. In objective terms, our services consist of:

1. **The sale of stablecoins** to users residing in Brazil, against payment in reais via transfer to a non-resident bank account held by Blind Pay, Inc. ("BlindPay") in Brazil; and
2. When requested by the user, **the transfer of the virtual asset (stablecoin)** from a wallet owned by BlindPay to another wallet indicated by the user abroad (whether owned by the user or by a third party).

From a regulatory standpoint, this operation involves two flows:

- **First flow:** acquisition of an asset abroad (the stablecoin) by a customer residing in Brazil.
- **Second flow:** international transfer with virtual assets under Resolution 277/2022, carried out under a regime distinct from the eFX framework.

If our structure relied on an eFX service provider, the prohibition introduced by Resolution 561/2026 would apply to the **first flow**: the settlement of the asset acquisition (the stablecoin) by the eFX provider to its foreign counterparty could not be performed directly with a virtual asset. However, in BlindPay's business model, the acquisition of stablecoins by the Brazilian-resident customer is operationalized **exclusively through movements in a non-resident reais account held in Brazil**. It does not involve and is not related to the provision of eFX services, which is the focus of the prohibitions in Resolution 561/2026.

As for the **second flow**, it is an international transfer or payment with a virtual asset, an operation **expressly contemplated by article 76-A of Resolution 277/2022**.

**Our legal counsel has reviewed Resolution 561 in detail and confirms:**

> "Based on the structure of the service provided by BlindPay and the purpose of article 50 (settlement rules between an eFX provider and its foreign counterparty), the regulation does not prevent the continuity of the services in their current format."

BlindPay continues to monitor the [regulatory developments applicable to virtual assets](/resources/more/stablecoin-regulation-tracker-2026) and payment services, maintaining policies and internal controls focused on regulatory compliance and operational security, including customer identification, anti-money-laundering prevention, and operational traceability.

### What This Means for Businesses Using BlindPay

If you're already moving money with us, **nothing changes**:

- Settlement speeds stay the same (often seconds to minutes)
- Costs remain significantly lower than legacy correspondent banking
- Compliance and audit trails are still built-in and automated
- You can keep using stablecoins as part of your global treasury strategy

For CFOs and CEOs expanding in Brazil or Latin America, this regulatory clarification actually reinforces why orchestration platforms like BlindPay are the future: we adapt to evolving rules while keeping the benefits of stablecoins and instant rails intact.

### Looking Ahead

The BCB continues to modernize Brazil's payment ecosystem while maintaining strong oversight. We welcome clear rules that bring more transparency and security to cross-border finance, and we remain committed to building the infrastructure that lets businesses thrive within them.

If you have questions about how Resolution 561 (or any other regulatory update) affects your specific payment flows, our team is ready to walk you through it.

Ready to orchestrate faster, cheaper, and compliant global payments? [Book a demo with BlindPay](https://blindpay.com/contact)

---

Source: https://blindpay.com/blog/orchestrating-payment-rails-leaders

---
title: "Orchestrating Local Payments and Stablecoins: A Guide for Leaders"
seoTitle: "Orchestrating Local Payments and Stablecoins: A Guide for Leaders"
description: "How CFOs and CEOs can cut cross border costs, accelerate settlement, and keep compliance intact by orchestrating stablecoins, instant local rails, named virtual accounts, and built in compliance through a single API."
date: "2026-04-28"
categories: ["product", "guide"]
authors:
  - gustavoMarinho
thumbnail: "/images/blog/orchestrating-payment-rails-leaders.png"
isBlog: true
faq:
  - q: "How does BlindPay reduce cross-border payment costs?"
    a: "By replacing intermediary correspondent banks with stablecoin settlement and instant local rails, cutting transfer costs by up to 90% with rates quoted and locked at execution."
  - q: "What payment rails does BlindPay support?"
    a: "Stablecoin settlement plus instant local rails, including RTP in the U.S. and Pix in Brazil, as well as ACH, Wire, and SWIFT, all through a single API."
  - q: "How long does a cross-border payment through BlindPay take?"
    a: "Seconds, versus the 3 to 5 business days typical of legacy correspondent banking."
  - q: "How does BlindPay handle compliance?"
    a: "Compliance is built into every transaction with KYC/KYB verification, real-time transaction screening, on-chain monitoring, local rail monitoring, and data privacy controls."
  - q: "How many countries and currencies does BlindPay cover?"
    a: "BlindPay covers 100+ countries and 80+ currencies through a single API, with no pre-funding required."
---

![Orchestrating Local Payments and Stablecoins: A Guide for Leaders](/images/blog/orchestrating-payment-rails-leaders.png)

Moving money across borders still runs on infrastructure built decades ago. Correspondent banks, multi day settlement, unpredictable fees, and manual reconciliation. A structure that slows operations and ties up working capital. For CEOs and CFOs expanding globally, the question is no longer whether to modernize payment flows, but how to orchestrate them in a way that cuts costs, accelerates settlement, and keeps compliance intact.

BlindPay provides the infrastructure for global finance. Businesses move money across borders by combining stablecoins, instant local payment rails, virtual accounts, and integrated compliance through a single API. Finance teams get faster settlement and lower costs. Operations teams get fewer manual steps. Product teams get a single integration instead of dozens.

## The Real Cost of Legacy Cross Border Finance

Traditional cross border payments create hidden costs that show up across the entire business:

- **Trapped working capital:** Funds in transit for 2 to 5 days can't be deployed. For a business moving millions monthly, this is a permanent drag on liquidity.
- **Unpredictable fees:** Each intermediary bank takes a margin. FX spreads are rarely disclosed upfront. CFOs reconcile surprises after the fact.
- **Operational overhead:** Managing multiple bank relationships across regions requires dedicated headcount for reconciliation, exceptions, and treasury coordination.
- **Limited visibility:** Payments pass through intermediaries with no real time tracking. Customer support and finance teams waste hours chasing statuses.
- **Licensing burden in every region:** Operating payments directly in each country requires obtaining local money transmission licenses, meeting capital requirements, and maintaining ongoing regulatory reporting. For a business expanding into multiple markets, this can mean years of approvals and millions in legal and compliance costs, before processing a single transaction.

## Stablecoins as a Settlement Layer

[Stablecoins like USDC and USDT](/resources/more/usdc-vs-usdt-for-payments) have become a practical alternative for moving value across borders. They aren't speculative assets in this context. They're a settlement mechanism that runs 24/7 and bypasses the correspondent banking system.

**What stablecoins deliver for a finance team:**

- **Always on settlement:** Blockchains don't close on weekends, holidays, or after hours. Cash moves when the business needs it.
- **Lower cross border costs:** Eliminating intermediary banks reduces transfer costs by up to 90% compared to traditional methods.
- **Real time visibility:** Every transfer is traceable end to end, eliminating the black box period common in international wires.
- **Predictable rates:** Conversion rates are quoted and locked at execution, removing surprise spreads.

## Instant Local Payments: RTP and Pix

Stablecoins move value across borders in seconds. But for most businesses, the money needs to land in a local bank account. A supplier, a contractor, an employee, a customer. This is where instant local rails become decisive.

**RTP (Real Time Payments) in the U.S.** RTP settles 24/7/365 with immediate fund availability. Recipients see funds in their bank account within seconds of initiation. No waiting for the next business day.

**Pix in Brazil.** Pix is Brazil's instant payment platform, operated by the Central Bank. It has become the default payment method in the country, with near zero transaction costs and instant settlement around the clock. Any Brazilian bank account can receive Pix.

BlindPay offers both RTP and Pix as native rails inside the same API that handles stablecoin settlement. The combination of stablecoins plus instant local rails is what turns a multi day cross border process into a single real time transaction. Most providers offer one side of this equation. BlindPay orchestrates both.

## Named Virtual Accounts

For businesses outside the U.S., accessing USD payments traditionally meant incorporating a U.S. entity, opening a local bank account, and navigating onboarding processes that can take months.

[Named Virtual Accounts](/blog/introducing-virtual-accounts) remove that barrier. BlindPay issues U.S. bank accounts in the end customer's name, powered by a Tier 1 U.S. bank, with full access to ACH, Wire and SWIFT. The customer's name appears on bank statements. Every USD received is automatically converted into stablecoins and can be instantly settled to local currencies like BRL, MXN, COP, or ARS.

For a CFO, this means:

- Receiving USD payments globally without a U.S. entity.
- Instant settlement of USD deposits into stablecoins.
- Converting stablecoins to other currencies like BRL, MXN, COP, or ARS.
- A clear audit trail from USD receipt to local settlement.

## A Typical Cross Border Flow

Consider a U.S. company paying a contractor in Brazil:

1. The U.S. company sends USD via Wire to a BlindPay managed virtual account.
2. BlindPay converts USD to USDC automatically, at a quoted rate.
3. USDC moves across the blockchain to the settlement layer.
4. USDC is [converted to BRL](/resources/more/usdc-to-brl-routes-2026) at a locked rate.
5. Funds settle in the contractor's Brazilian bank account via Pix, instantly.

The entire process runs through a single API call. What used to take 3 to 5 business days now takes seconds. What used to involve multiple bank relationships now involves one provider.

## Compliance Built Into the Flow

For finance leaders, the operational gains of modern payment infrastructure only matter if [compliance is handled](/resources/more/stablecoin-regulation-tracker-2026) at the same standard as traditional banking. BlindPay integrates multiple layers of monitoring directly into every transaction.

**KYC and KYB analysis.** Every customer and counterparty is verified through automated identity and business verification before the first transaction. Ongoing reviews flag changes in risk profile.

**Transaction analysis.** Each payment is screened in real time against global sanctions lists, PEP databases, and fraud indicators. High risk transactions are flagged or held for review before settlement.

**On chain monitoring.** Stablecoin flows are continuously monitored for exposure to high risk wallets, sanctioned addresses, and illicit finance patterns. This is a layer traditional banks don't provide because they don't operate on chain.

**Local payment monitoring.** ACH, Wire, RTP, Pix, and other local rails are monitored for fraud and compliance patterns specific to each jurisdiction.

**Data privacy.** Sensitive financial data is handled with strict controls across storage, access, and transmission, in line with applicable data protection regulations.

## What This Means for the Business

The business impact of orchestrating stablecoins with instant local rails shows up in four places:

- **Cash conversion cycle:** Funds move in seconds, not days.
- **Cost structure:** Cross border fees drop dramatically.
- **Operational efficiency:** Fewer bank relationships, fewer manual reconciliations, fewer exception queues.
- **Customer and supplier experience:** Recipients get paid instantly, in their local currency, through the payment method they already use.

For a CEO or CFO evaluating global expansion, the opportunity isn't about replacing traditional banking with stablecoins. It's about connecting both worlds in a single flow. Traditional finance brings regulatory clarity, trust, and global reach. Modern financial technology brings speed, programmability, and cost efficiency. Orchestrating them together is what unlocks a payment infrastructure that works for how businesses actually operate today.

BlindPay covers 100+ countries and 80+ currencies through a single API. Instant settlement. Predictable costs. No pre funding. Compliance built in.

[**Talk to our team**](https://cal.com/blindpay/demo-call-blindpay) and see how BlindPay can orchestrate your global payment flows.

---

Source: https://blindpay.com/changelog/2026-04-24-audit-logs

---
title: Audit Logs
description: Track actions across your instance with audit logs. See who did what, when, from where, and whether a passkey was used, from the dashboard or the API.
date: 2026-04-24
category: New Feature
categoryType: feature
contributors:
  - alves
isChangelog: true
---

You can now see a history of actions that happen inside your instance, who did it, how, and from where.

<!--more-->

## TL;DR

- Audit trail for actions on your instance
- Dashboard UI under **Settings → Audit logs**
- API endpoints for programmatic access
- Tracks actor identity, passkey usage, IP address, country, user agent, and metadata
- Distinguishes between dashboard (user) and API key actions
- Filterable by feature, operation, actor type, user ID, API key ID, and entity ID

## What's logged

Create, update, and delete operations across the platform are recorded:

- **Customers** - create, update, delete
- **Bank accounts** - create, delete
- **Blockchain wallets** - create, delete
- **Blockchain operations** - asset trustlines, USDB minting, Solana delegation
- **Offramp wallets** - create
- **Virtual accounts** - create, update
- **Wallets** - create, delete
- **Payins** - create
- **Payouts** - create, update (document submission)
- **Transfers** - create
- **Customer limit increases** - create
- **API keys** - create, delete
- **Team members** - update role, remove
- **Invites** - create, accept, delete
- **Partner fees** - create, delete
- **Billing** - update details, pay invoice, collect fees, portal session
- **Onboarding** - every step from business details to completion
- **Webhook endpoints** - create, delete

## What each log captures

Every audit log entry includes:

| Field | Description |
|-------|-------------|
| **Actor** | The user or API key that performed the action |
| **Actor type** | `user` (dashboard) or `api_key` (programmatic) |
| **Passkey** | Whether the action was verified with a passkey |
| **Feature** | The area of the platform (e.g. `bank_account`, `payout`) |
| **Operation** | `create`, `update`, or `delete` |
| **Entity** | The type and ID of the affected resource |
| **IP address** | Origin IP of the request |
| **Country** | Country derived from the request |
| **User agent** | Browser or SDK making the request |
| **Metadata** | Additional context specific to the action |

## Dashboard

Navigate to **Settings → Audit logs** to browse your instance's activity. Click any entry to open the detail pane with the full breakdown: actor info, request metadata, and action-specific context.

Use the filters to narrow down by feature, operation, actor type, user ID, API key ID, or entity ID.

## API

Two new endpoints are available:

```
GET /v1/instances/{instance_id}/audit-logs
GET /v1/instances/{instance_id}/audit-logs/{id}
```

The list endpoint returns a paginated list of audit logs for your instance. It supports cursor-based pagination and the same filters available in the dashboard, plus date range filtering with `start_date` and `end_date`. The detail endpoint returns a single audit log entry by ID.

## Permissions

Only **owner** and **admin** roles can view audit logs.

---

Source: https://blindpay.com/changelog/2026-04-23-payments-expansion-ai-cli-passkey-enforcement

---
title: Payments Expansion, 1 Business Day SLA, BlindPay AI & CLI, and Passkey Enforcement
seoTitle: Payments Expansion, 1 Business Day SLA, BlindPay AI & CLI, and Passkey Enforcement
description: ACH, Wire, RTP, and SWIFT payin and payout coverage summarized in one table, onboarding SLA reduced to 1 business day, a new AI & CLI surface for faster integrations, and organization-wide passkey enforcement for critical actions.
date: 2026-04-23
category: Product Update
categoryType: update
contributors:
  - ericViana
  - bernardoSimonassi
  - andreMayer
  - alves
isChangelog: true
---

A recap of the payments expansion shipped over the last three months, a faster onboarding SLA, a new AI & CLI surface, and tighter account security with passkey enforcement.

<!--more-->

## TL;DR

- ACH, Wire, RTP, and SWIFT updates
- 1 Business Day SLA
- BlindPay AI & CLI
- Passkey Enforcement

---

## ACH, Wire, RTP, and SWIFT Updates

Over the last three months, we've been adding more providers and enhancing the payments experience at BlindPay. Here's a summary of what's available today:

| Method | Payins (Memo) | Payins (VA) | Payouts      |
| ------ | ------------- | ----------- | ------------ |
| ACH    | ✅            | ✅          | ✅           |
| Wire   | ✅            | ✅          | ✅ (Only VA) |
| RTP    | ✅            | ✅          | ✅           |
| SWIFT  | ✗             | ✅          | ✅           |

---

## 1 Business Day SLA

We've made our onboarding process more seamless. No additional information beyond what's in the [documentation](/docs/introduction) will be required, and the SLA has been reduced from **3 to 1 business day**.

If you're having trouble with the KYC/KYB process, please reach out directly to [bernardo@blindpay.com](mailto:bernardo@blindpay.com).

---

## BlindPay AI & CLI

We launched our new [CLI and AI page](/ai), where you can see all the tools we've been shipping to improve your integration experience.

You can ask AI to run commands like `blindpay customers list --json` to debug or test things faster. [Learn more here](/blog/cli).

---

## Passkey Enforcement

You can now require all team members using the BlindPay platform to enable passkeys. Once enforced, critical actions — such as initiating a payout, adding a bank account, creating wallets, or inviting new members — will require passkey verification.

Go to your instance > **Settings** > toggle the **Enforce Passkey** option.

<video controls src="https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/passkeys_compressed.mp4" class="w-full rounded-lg"></video>

---

Source: https://blindpay.com/changelog/2026-04-03-faster-kyb-no-rfis-website-required

---
title: Faster KYB, No More RFIs, and Website Field Required
seoTitle: Faster KYB, No More RFIs, and Website Field Required
description: KYB verification now takes 1 business day, document requests are limited to what's in our API docs, and the website field becomes required for Business customers on May 2.
date: 2026-04-03
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

Three changes to make compliance smoother and set expectations for an upcoming API requirement.

<!--more-->

## TL;DR

- KYB verification reduced from 3 business days to 1
- No more RFIs — only documents listed in our API docs will ever be requested
- **Breaking change (May 2, 2026):** the `website` field becomes required when creating a Business customer

---

## KYB Verification in 1 Business Day

KYB verification now completes within **1 business day**, down from 3. No changes needed on your side — faster turnaround applies automatically to all new submissions.

---

## No More RFIs

We will only ever request documents that are explicitly listed in our [API documentation](/docs/introduction). Ad-hoc Requests for Information (RFIs) are eliminated. If it's not in the docs, we won't ask for it.

The only two exceptions where an RFI may still be issued:

- **Unreadable or mismatched documents** — when a submitted document cannot be processed by our KYC software (e.g., blurry scans, corrupted files) or when the document doesn't match the data provided (e.g., a proof of address missing the customer's name or showing a different address)
- **Nested payment scenarios** — when we identify that the company being onboarded operates a nested payment structure

---

## `website` Field Required for Business Customers

**Effective May 2, 2026**, the `website` field will be **required** when creating a Business customer. Requests without it will be rejected.

**Action required:** Update your integration to include the `website` field before May 2 to avoid failed requests.

---

Source: https://blindpay.com/blog/cli

---
title: "BlindPay CLI"
description: "The official CLI for BlindPay, the most AI-native stablecoin infrastructure. Manage payouts, payins, customers, and bank accounts from your terminal. Built for developers and AI agents alike with structured JSON output, schema introspection, and predictable exit codes."
date: "2026-03-06"
categories: ["product", "engineering", "guide"]
authors:
  - alves
thumbnail: "/images/blog/cli.png"
isBlog: true
faq:
  - q: "How do I install the BlindPay CLI?"
    a: "Run `npm install -g @blindpay/cli`, or run it without installing using `npx @blindpay/cli <command>`."
  - q: "What can the BlindPay CLI do?"
    a: "It covers the full BlindPay API surface: managing customers, bank accounts, payouts, payins, quotes, virtual accounts, offramp wallets, webhooks, API keys, and partner fees from your terminal."
  - q: "Can AI agents use the BlindPay CLI?"
    a: "Yes. Every command supports a `--json` flag for structured output, `blindpay schema` returns full field definitions, and exit codes are predictable, so agents can discover the API and run commands autonomously."
  - q: "How do I configure the BlindPay CLI?"
    a: "Run `blindpay config set --api-key <your-api-key> --instance-id <your-instance-id>` using the credentials from your BlindPay dashboard."
---

![BlindPay CLI](/images/blog/cli.png)

BlindPay is the most AI-native [stablecoin infrastructure](/resources/more/what-is-a-stablecoin-api) available today. Every layer of the platform, the API, the [MCP Server](/blog/mcp), the [Agent Skills](/blog/agent-skills), and now the CLI, is built so that [AI agents and developers can operate global payment infrastructure](/agentic-payments) with equal ease. No other stablecoin platform offers this depth of integration.

The BlindPay CLI brings the full power of that infrastructure to your terminal. You or any AI agent can manage customers, execute payouts, create virtual accounts and configure webhooks without leaving your shell. It works for developers typing commands by hand, and it works just as well for AI agents like Claude, Codex, and automation scripts that need structured, predictable output.

## Installation

Install globally with npm:

```bash
npm install -g @blindpay/cli
```

Or run without installing:

```bash
npx @blindpay/cli <command>
```

## Setup

Grab your API key and instance ID from the [BlindPay dashboard](https://app.blindpay.com) and configure:

```bash
blindpay config set --api-key <your-api-key> --instance-id <your-instance-id>
```

## What You Can Do

The CLI covers the full BlindPay API surface. Every command supports `--help` for usage details and `--json` for machine-readable output.

### Customers and Bank Accounts

Create and manage customers, attach bank accounts across multiple rails (ACH, Wire, PIX, SPEI, SWIFT), and configure blockchain wallets.

```bash
blindpay customers create
blindpay bank_accounts create --customer-id re_...
blindpay blockchain_wallets create --customer-id re_...
```

### Payouts and Payins

Generate quotes with real-time FX rates, then execute payouts and payins in a single flow.

```bash
blindpay quotes create
blindpay payouts create --quote-id qu_...
blindpay payin_quotes create
blindpay payins create --quote-id qu_...
```

### Virtual Accounts and Offramp Wallets

Create virtual accounts for receiving payments and list offramp wallets for on-chain settlement.

```bash
blindpay virtual_accounts create --customer-id re_...
blindpay offramp_wallets list --customer-id re_... --bank-account-id ba_...
```

### Webhooks, API Keys, and Partner Fees

Configure webhook endpoints, manage API keys, and set up partner fees directly from the CLI.

```bash
blindpay webhook_endpoints create
blindpay api_keys list
blindpay partner_fees create
```

### Reference Data

Check supported payment rails and the bank detail fields required for each one.

```bash
blindpay available rails
blindpay available bank_details --rail pix
```

## Built for Humans and AI Agents

The CLI is designed from the ground up to be used by both humans and AI agents. If you use Claude, Codex, or any LLM-based coding assistant, they can run BlindPay CLI commands directly as part of their workflow.

What makes it agent-friendly:

- **`--json` flag** on every command returns structured JSON output that agents can parse without guessing
- **`blindpay schema`** returns full field definitions, types, defaults, and enums as JSON, so an agent can discover the API surface and build valid commands without external documentation
- **Predictable exit codes**: `0` for success, `1` for user error, `2` for API error
- **Structured errors** when `--json` is active:

```json
{ "error": true, "message": "...", "exitCode": 2, "statusCode": 401 }
```

An AI agent can install the CLI, run `blindpay schema` to understand what resources and fields are available, then construct and execute commands autonomously. Combined with the [MCP Server](/blog/mcp) for direct tool-use and [Agent Skills](/blog/agent-skills) for domain knowledge, BlindPay gives agents a complete integration surface that no other stablecoin platform provides.

## Updating

```bash
npm install -g @blindpay/cli@latest
```

## Get Started

Install the CLI and connect it to your BlindPay instance in under a minute:

```bash
npm install -g @blindpay/cli
blindpay config set --api-key <your-api-key> --instance-id <your-instance-id>
blindpay customers list --json
```

Source code and full command reference are available on [GitHub](https://github.com/blindpaylabs/blindpay-cli).

---

Source: https://blindpay.com/changelog/2026-03-06-new-billing-system

---
title: New Billing System
description: We've rebuilt BlindPay's billing infrastructure from the ground up with monthly invoicing, transparent fee breakdowns, partner fee monthly settlements, multiple payment methods, and a new billing screen.
date: 2026-03-06
category: Product Update
categoryType: update
contributors:
  - alves
  - ericViana
isChangelog: true
---

We've rebuilt BlindPay's billing infrastructure from the ground up. The new system replaces per-transaction partner fee settlements with a consolidated monthly billing model, introduces a transparent fee breakdown on every invoice, and gives you a new billing screen to manage invoices, payments, and partner fee claims, all in one place.

<!--more-->

## TL;DR

- Monthly invoicing with automated generation on the 1st of each month
- Transparent fee breakdown on every invoice
- Partner fees moved from per-transaction to monthly settlement
- Pay invoices via Stripe (card or US bank account) or stablecoins (USDT on Tron, USDC on Solana)
- New billing screen with real-time usage tracking
- Automated email notifications and overdue management
- Plan upgrade is one click and one call away, see [blindpay.com/pricing](https://blindpay.com/pricing)
- Addons support for custom recurring charges (e.g., SWIFT access)

---

## Monthly Invoicing

Invoices are now generated automatically on the 1st of each month, covering the previous calendar month. Each invoice consolidates all your charges and partner fee earnings into a single document, giving you a clear picture of what you owe or what you've earned.

**How it works:**

- Invoices are generated on the 1st of every month
- Each invoice covers a full calendar month (e.g., Feb 1 – Feb 28)

**Invoices can have the following statuses:**

- **Owing** — Invoice is unpaid, waiting for payment
- **Paid** — Payment has been received
- **Claimable** — You have partner fees to claim
- **Collected** — Partner fees have been sent to your wallet
- **Overdue** — Invoice is past the due date

---

## Transparent Fee Breakdown

Every invoice now shows an itemized breakdown of your charges, so you always know exactly what you're being billed for.

**Invoices include the following line items:**

- **Subscription plan amount** — Your monthly plan fee (Basic, Business, or Enterprise)
- **Virtual account fees** — Charged per active KYC-approved virtual account
- **Payin billing fees** — Transaction fees collected on inbound payments
- **Payout billing fees** — Transaction fees on outbound payments
- **Partner fee earnings** — Your share of transaction fees, shown as a credit that offsets your charges
- **Addons** — Recurring charges like SWIFT access, etc.

**Invoice calculation:**

Your net amount is calculated as total charges minus partner fee earnings. If a minimum monthly amount applies to your plan, the minimum is used when your net is below it. If your partner fee earnings exceed your charges, the excess is claimable — you get paid instead.

---

## Partner Fees — Monthly Settlement

Partner fees have transitioned from per-transaction settlements to a monthly settlement model. Instead of receiving a blockchain transfer after every transaction, your partner fee earnings are now accumulated throughout the month and settled on the invoice.

**What changed:**

- Partner fees are calculated per transaction and tracked in each quote (payin and payout)
- At the end of the month, all partner fees are totaled and applied as a credit on your invoice
- If your partner fee earnings exceed your charges, the remaining balance is claimable directly to your wallet

**How to claim partner fees:**

1. Open the invoice in the billing screen
2. If the invoice status is **Claimable**, click **Collect**
3. Enter your wallet address (EVM-compatible, e.g., Polygon)
4. BlindPay sends USDT to your wallet, typically arrives within a few minutes

---

## Multiple Payment Methods

You can pay invoices via Stripe (credit card or US bank account) or directly with stablecoins on the blockchain.

**Stripe payments:**

- Add a credit card or US bank account via the Stripe Customer Portal
- Invoices can be paid directly through the Stripe-hosted invoice page
- Manage your payment methods at any time from the billing screen

**Blockchain payments (USDT on Tron, USDC on Solana):**

1. Open an invoice and click **Pay**, then select **Blockchain**
2. A dedicated wallet address is displayed along with the exact amount to send
3. Send the exact amount of stablecoins to the wallet address
4. Payment is detected automatically and the invoice status updates within minutes

---

## Billing Screen

A completely new billing screen is available under **Settings > Billing** in the BlindPay app.

**What you'll find:**

- **Subscription card** — Your current plan, status, and subscription start date
- **Current usage** — Real-time view of your charges for the current billing period, including virtual account count, payin/payout fees, partner fee earnings, and addons
- **Invoice history** — All past invoices with status, amounts, and links to the Stripe-hosted invoice
- **Invoice detail view** — Click any invoice to see the full breakdown: fees, partner fee earnings, addons, discounts, and credit notes
- **Fees table** — Expandable table showing your payin and payout fee rates per payment method (ACH, Wire, Pix, SWIFT, etc.) and per blockchain network (Tron, Ethereum, Polygon, etc.)
- **Payment method** — View your saved payment method and open the Stripe Customer Portal to update it
- **Billing details** — Manage your billing contact information (name, email, tax ID, and address). All billing-related communications are sent to the billing email set here; if none is configured, the instance owner's email is used as fallback.

---

## Automated Notifications and Overdue Management

You'll receive email notifications throughout the invoice lifecycle to help you stay on top of payments.

**Notification schedule:**

- **Invoice created** — "Your Invoice is Ready" email with amount, due date, and a link to view and pay the invoice
- **7 days before due** — Upcoming invoice reminder
- **2 days before due** — Payment reminder
- **Due date** — Due today notice
- **1 business day overdue** — Past due alert
- **4+ business days overdue** — Overdue action required

**Overdue blocking:**

If an invoice remains unpaid for more than 4 business days past the due date, the instance is automatically blocked. Blocked instances cannot process new transactions. An instance is unblocked only when no invoice is overdue for more than 4 business days. After paying the overdue invoice, the instance is unblocked automatically.

---

## Migration Notes

- **Partner fee settlement model changed**: Partner fees are no longer sent per transaction. All partner fee earnings are accumulated and settled monthly via the invoice.
- **Fee structure updated**: Fees are now structured per payment method and per blockchain network.
- **Stripe and blockchain payments**: Each instance is linked to a Stripe customer. Invoices are created in Stripe with itemized line items and can be paid through Stripe or via blockchain with stablecoins.

---

Source: https://blindpay.com/changelog/2026-02-26-virtual-accounts-billing-blindpay-skills

---
title: New Banking Partner for Virtual Accounts, Billing Revamp, and BlindPay Skills
seoTitle: New Banking Partner for Virtual Accounts, Billing Revamp, and BlindPay Skills
description: Virtual accounts with full ACH, Wire, and SWIFT support via a new banking partner, a rebuilt billing and partner fees system with monthly settlements, and AI-powered BlindPay Skills for instant API integration.
date: 2026-02-26
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
  - alves
  - andreMayer
  - ericViana
isChangelog: true
---

February closes with a new banking partner for virtual accounts, a rebuilt billing system, and AI skills that let your coding assistant handle BlindPay integrations.

<!--more-->

## TL;DR

- New banking partner for virtual accounts (beta)
- Billing and partner fees revamped
- BlindPay Skills

## New Banking Partner for Virtual Accounts

Issue virtual accounts for your customers with full support for **ACH, Wire, and SWIFT**. All transactions, inbound and outbound, are named, and a **UETR** is provided for external tracking. Sender data is also collected on payins, giving you full visibility into who's sending funds to each virtual account.

This integration requires a few additional fields. [Explore documentation](/docs/virtual-accounts)

## Billing and Partner Fees Revamped

The billing system has been rebuilt from the ground up. You can now see exactly what BlindPay charges per payment method and blockchain in one place.

Partner fees have moved from **per-transaction** to a **monthly settlement model**. All fees are consolidated and collectible at the end of each month from the new billing page. [Review partner fees](/docs/learn/partner-fees)

## BlindPay Skills

Give your AI coding assistant — **Cursor, Claude Code, Codex**, and others — instant knowledge of BlindPay's API and payment infrastructure. Install once, and your AI handles the integration.

[Learn more about BlindPay Skills](https://github.com/blindpaylabs/skills)

---

Source: https://blindpay.com/changelog/2026-02-18-ach-rtp-us-launch-and-bank-account-rules

---
title: ACH and RTP Payouts in the US — New Banking Partner
seoTitle: ACH and RTP Payouts in the US — New Banking Partner
description: Launch of ACH and RTP payouts in the US with a new banking partner (no Virtual Accounts needed).
date: 2026-02-18
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
  - ericViana
  - andreMayer
  - alves
isChangelog: true
---

We're launching **ACH and RTP payouts in the US** with a new banking partner — no Virtual Accounts needed.

All ACH and RTP bank accounts have been deprecated. New fields and rules apply to bank account creation for both ACH and RTP.

<!--more-->

## TL;DR

- ACH and RTP payouts now available in the US with a new banking partner (no Virtual Accounts)
- All existing ACH and RTP bank accounts are deprecated — new accounts must be created with the new rules
- Business customers require `business_industry` (NAICS code)
- Individual customers require local `tax_id` (e.g. CPF for Brazil, SSN for US)
- ACH and RTP payouts are capped at **$50K** for now
- All USD payouts will go to **compliance_reviewing** for manual review during the first few days

## Rules you need to know

### Customer-level rules

- **Business customers:** You must add `business_industry` (NAICS code) when the customer is a business.
- **Individual customers:** You must set `tax_id` to the **local** tax ID for the beneficiary's country (e.g. CPF for Brazil, SSN for the US). The system validates and formats it per country where required.

### Payout limits and status

- All ACH and RTP payouts are **capped at $50K** for now.
- All USD payouts will be pushed to **compliance_reviewing** status so our team can manually review them for the first few days.

## Bank account creation — New fields and rules

These rules apply to **both ACH and RTP** bank account creation.

### Business accounts

- `business_industry` (NAICS code) is **required** when the customer or account class is `"business"`.

### Individual customers

- `tax_id` must be the **local tax ID** for the beneficiary’s country (e.g. CPF for Brazil, SSN for the US). The system validates and formats it per country where required.

### Phone number

- `phone_number` is **required** when the beneficiary’s country is one of: **BR, CN, CO, HK, MY, MX, PH, UG, UY**.

### Tax ID

- `tax_id` is **required** when the beneficiary’s country is one of: **AR, BY, BR, CL, CN, CO, CR, EC, GT, HN, JP, KZ, KR, MX, PK, PE, PH, RU, TH, UY**.

## What this means for you

**Action required:** Recreate any ACH or RTP bank accounts with the new required fields and rules. Do not use deprecated ACH or RTP bank accounts.

---

Source: https://blindpay.com/blog/agent-skills

---
title: "BlindPay Agent Skills"
description: "Official Agent Skills for BlindPay. Teach AI assistants domain knowledge for integrating stablecoin payment infrastructure. Install in Cursor, Claude Code, or Codex to get instant expertise on payouts, payins, customers, bank accounts and more."
date: "2026-02-12"
categories: ["product", "engineering", "guide"]
authors:
  - ericViana
thumbnail: "/images/blog/agent-skills.png"
isBlog: true
faq:
  - q: "What are BlindPay Agent Skills?"
    a: "BlindPay Agent Skills are the official Agent Skills that teach AI assistants like Cursor, Claude Code, and Codex how BlindPay's stablecoin payment infrastructure works. You can prototype integrations and debug flows in plain English instead of digging through API docs."
  - q: "How do I install BlindPay Agent Skills?"
    a: "Run `npx skills add blindpaylabs/skills`. Skills activate automatically when a relevant task is detected, with no extra configuration."
  - q: "What is the difference between Agent Skills and the BlindPay MCP Server?"
    a: "Agent Skills give an AI assistant knowledge to understand BlindPay concepts and flows; the MCP Server gives it tools to execute operations like creating customers or processing payouts. Many developers use both together."
  - q: "Which platforms support BlindPay Agent Skills?"
    a: "Cursor, Claude Code, Codex, and other AI assistants that support Agent Skills."
---

![BlindPay Agent Skills](/images/blog/agent-skills.png)

AI coding assistants are powerful, but they need domain knowledge to build payment integrations effectively. BlindPay Agent Skills fill that gap. They teach your AI assistant how [BlindPay's stablecoin payment infrastructure](/resources/more/what-is-a-stablecoin-api) works so you can ask questions, prototype integrations, and debug flows in plain English instead of digging through API docs.

## Overview

BlindPay Agent Skills are the official [Agent Skills](https://agentskills.io) for BlindPay. Once installed, they provide AI assistants (Cursor, Claude Code, Codex and others) with domain expertise for:

- Payout flows (stablecoin to fiat)
- Payin flows (fiat to stablecoin)
- Customer creation and KYC/KYB requirements
- Bank account setup across rails (ACH, Wire, PIX, SPEI, SWIFT)
- Quote generation and token approvals
- Virtual accounts and offramp wallets
- Webhooks and event handling

Skills work alongside your usual workflow. When you ask a question or start a task that touches payment logic, the assistant automatically uses this knowledge to give accurate, context-aware answers. No need to copy-paste docs or remember parameter names.

## How It Differs From MCP

You may have seen our [BlindPay MCP Server](/blog/mcp). It connects AI assistants directly to BlindPay's API so they can execute operations. Agent Skills are different:

- **MCP** = tools. It gives your assistant the ability to _do_ things (create customers, generate quotes, process payouts).
- **Skills** = knowledge. They give your assistant the ability to _understand_ BlindPay concepts, flows and best practices.

Use Skills when you want to understand _how_ something works or brainstorm integration design. Use MCP when you want the assistant to [perform operations on your behalf](/agentic-payments). Many developers use both together.

## Installation

Installation is the same across supported platforms. Just run:

```bash
npx skills add blindpaylabs/skills
```

After installation, skills activate automatically when relevant tasks are detected. No extra configuration required.

## Example Prompts

Once installed, you can ask things like:

- "Explain the complete payout flow from quote to execution"
- "Walk me through creating a customer with enhanced KYC"
- "How do I create a SWIFT bank account?"
- "What are the KYC requirements for a business customer?"
- "How do I test payouts using the USDB test token?"

The assistant uses the skills to answer with accurate, up-to-date guidance tied to BlindPay's API and flows.

## Conclusion

BlindPay Agent Skills bridge the gap between powerful AI coding assistants and specialized payment infrastructure knowledge. By teaching your AI assistant how BlindPay works, you can build integrations faster, onboard developers more efficiently, and spend less time context-switching between docs and code.

---

Source: https://blindpay.com/changelog/2026-02-04-swift-requirements

---
title: SWIFT Payout Document Verification
description: New compliance requirement for international SWIFT payouts. All SWIFT payouts now require document upload and compliance review before processing.
date: 2026-02-04
category: Compliance
categoryType: improvement
contributors:
  - ericViana
isChangelog: true
---

All international SWIFT payouts now require compliance document submission
before funds are processed. Payouts remain on hold until documents are
submitted and approved by our compliance team.

For technical details, check [our documentation](/docs/kb/swift-statuses) and [Api reference](https://api.blindpay.com/reference#tag/payouts/POST/v1/instances/%7Binstance_id%7D/payouts/%7Bid%7D/documents){target="\_blank"}.

## TL;DR

- SWIFT payouts now require document upload before processing
- Payouts remain on hold while documents are reviewed
- Documents can be resubmitted if rejected

## Why are we making these changes?

International transfers via SWIFT require additional compliance
documentation to meet regulatory requirements. This verification process
ensures all cross-border payments are properly documented and compliant with
international banking standards.

## New payout flow for SWIFT

When you create a SWIFT payout, the flow is now:

1. **Payout created** → On hold while documentation is not provided or under review
2. **Documents submitted** → Compliance review begins
3. **Compliance approved** → Payout proceeds normally
4. **Compliance rejected** → Submit updated documents and review restarts

Compliance review timing varies based on region and case complexity. Payouts remain on hold pending approval, with an 8-hour SLA for document review.

---

Source: https://blindpay.com/changelog/2026-01-26-us-bank-account-breaking-changes

---
title: US Bank Account Breaking Changes
description: New compliance updates including new mandatory fields for ACH, Wire/RTP, and SWIFT bank accounts. All US bank accounts created before January 26th, 2026 must be recreated with the new required fields.
date: 2026-01-26
category: Compliance
categoryType: improvement
contributors:
  - bernardoSimonassi
  - andreMayer
isChangelog: true
---

**All US bank accounts created until January 26th, 2026 have been deprecated and will be deleted soon. Please DO NOT use the offramp wallets related to deprecated US bank accounts. All transactions will get stuck and will need to be refunded.**

<!--more-->

## TL;DR

- New mandatory fields for ACH bank accounts
- New mandatory fields for Wire/RTP bank accounts
- New mandatory fields for SWIFT bank accounts
- All deprecated US bank accounts must be recreated

## Why are we making these changes?

We are getting compliant with the new US banking partners we're adding to the BlindPay ecosystem. These changes will ensure that all transactions are processed correctly, with BlindPay or the virtual account holder as the debitor and the recipient as the creditor.

## New mandatory fields for ACH bank accounts

When creating an ACH bank account, the following fields are now mandatory:

- `recipient_relationship`
- `address_line_1`
- `address_line_2` (optional)
- `city`
- `state_province_region`
- `country`
- `postal_code`

## New mandatory fields for Wire/RTP bank accounts

When creating a Wire or RTP bank account, the following fields are now mandatory:

- `account_class`
- `recipient_relationship`

## New fields for SWIFT bank accounts

When creating a SWIFT bank account, the following fields have been added:

- `account_class` (mandatory)
- `recipient_relationship` (mandatory)
- `swift_payment_code` (required only for: PK, PH, KE, JP, IN, ID, CN, CH, BH)

## How to get the new field requirements

All new fields and their validation rules can be requested on the [available bank details endpoint](https://api.blindpay.com/reference#tag/available/GET/v1/available/bank-details).

## What this means for you

**Action required:** You will need to recreate all US bank accounts (ACH, Wire, RTP, and SWIFT) with the new mandatory fields.

**Benefits:** All transactions will be sent correctly, with BlindPay or the virtual account holder as the debitor and the recipient as the creditor. This ensures compliance with US banking regulations and improves transaction reliability.

---

Source: https://blindpay.com/changelog/2026-01-21-mcp-launch-uetr-infrastructure-upgrade

---
title: BlindPay MCP Launch, UETR Tracking, and Infrastructure Upgrade
seoTitle: BlindPay MCP Launch, UETR Tracking, and Infrastructure Upgrade
description: Major product updates including Model Context Protocol integration, enhanced payout tracking with UETR, ACH Trace ID, and Wire IMAD, plus infrastructure migration to AWS with improved security and performance.
date: 2026-01-21
category: Product Update
categoryType: update
contributors:
  - andreMayer
  - bernardoSimonassi
isChangelog: true
---

We're excited to announce major product updates including Model Context Protocol integration for AI-powered workflows, enhanced payout tracking capabilities, and significant infrastructure improvements for better performance and security.

<!--more-->

## TL;DR

- BlindPay MCP Launch
- Infrastructure Upgrade and Security
- UETR, ACH Trace ID and Wire IMAD

## BlindPay MCP Launch

Now you can ask Cursor or Claude Code to collect data from customers, bank accounts, pay-ins, and payouts. You can also build reports or initiate payments as needed. [Integrate with our MCP now.](https://blindpay.com/blog/mcp)

## UETR, ACH Trace ID, and Wire IMAD

New fields have been added to the payout API. Every day, we will now update `jpm_track_data` to show all information for SWIFT UETR, ACH Trace ID, and Wire IMAD. [Check our documentation.](https://api.blindpay.com/reference#tag/payouts)

## Infrastructure Upgrade and Security

We migrated all our infrastructure to AWS and we're targeting SOC 2 by Q1 2026. This means the response time from all our services is faster and more secure.

---

Source: https://blindpay.com/blog/mcp

---
title: "Talk to Your Payment API"
description: "BlindPay MCP Server: Connect AI coding assistants to global payment infrastructure. Execute payments, manage customers, and process transactions using natural language instead of API calls."
date: "2026-01-13"
categories: ["product", "engineering", "guide"]
authors:
  - ericViana
thumbnail: "/images/blog/mcp.png"
isBlog: true
faq:
  - q: "What is the BlindPay MCP Server?"
    a: "The BlindPay MCP Server is a Model Context Protocol bridge that connects AI coding assistants to BlindPay's payment API, so you can run payment operations in natural language instead of manual API calls."
  - q: "What can the BlindPay MCP Server do?"
    a: "Quote generation, customer management, payout processing across multiple blockchains, virtual account creation, webhook configuration, and real-time FX rates."
  - q: "How do I set up the BlindPay MCP Server?"
    a: "Get your API key from the BlindPay dashboard, add the MCP server configuration to your AI assistant, then make requests in natural language."
  - q: "What is the difference between the MCP Server and Agent Skills?"
    a: "The MCP Server gives an assistant tools to execute operations; Agent Skills give it knowledge of BlindPay concepts and flows. Many developers use both together."
---

![BlindPay MCP](/images/blog/mcp.png)

The BlindPay MCP Server connects AI coding assistants to BlindPay's global payment infrastructure, allowing developers to interact with [payment APIs](/resources/more/what-is-a-stablecoin-api) using natural language instead of manual API calls.

## Overview

The BlindPay MCP (Model Context Protocol) acts as a bridge between your AI coding assistants and BlindPay's payment infrastructure. Instead of writing integration code or navigating dashboards, you can ask your AI assistant to [execute payment operations](/agentic-payments) directly.

This means you can handle cross-border payments, manage customers and process transactions without leaving your code editor or memorizing API documentation.

## Capabilities

The MCP server provides access to BlindPay's core functionality:

- **Quote generation** for international transfers
- **Customer management** for individuals and businesses
- **Payout processing** across multiple blockchains
- **Virtual account creation** for receiving payments
- **Webhook configuration** for payment notifications
- **Real-time FX rates** for currency conversions

All operations are executed through conversational requests to your AI assistant.

## Example Usage

**Traditional API call:**

```bash
curl -X POST https://api.blindpay.com/v1/instances/in_xxx/quotes \
  -H "Authorization: Bearer sk_xxx" \
  -d '{"bank_account_id":"ba_xxx","currency_type":"sender",...}'
```

**With the MCP server:**

> "Get me a quote for sending 1000 USDC to a bank account in Brazil"

The AI assistant interprets the request and executes the appropriate API calls.

## Setup

Configuration requires three steps:

1. Get your API key from the BlindPay dashboard
2. Add the MCP server configuration to your AI assistant
3. And you're ready to begin making requests in natural language

## Documentation

Complete setup instructions and API reference documentation are available in the [README on GitHub](https://github.com/blindpaylabs/blindpay-mcp).

---

Source: https://blindpay.com/changelog/2025-12-23-onramp-argentina-colombia-multiple-virtual-accounts-solana

---
title: Onramp in Argentina & Colombia, Multiple Virtual Accounts, and Full Solana Support
seoTitle: Onramp in Argentina & Colombia, Multiple Virtual Accounts, and Full Solana Support
description: Major product updates including onramp support for Argentina and Colombia, multiple virtual accounts per customer, full Solana deployment, and a new upload endpoint for enhanced privacy and compliance.
date: 2025-12-23
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
  - ericViana
  - andreMayer
isChangelog: true
---

We're excited to announce major product updates including expanded geographic coverage, enhanced virtual account capabilities, full Solana deployment, and improved privacy features.

<!--more-->

## TL;DR

- Onramp in Argentina and Colombia
- Multiple Virtual Accounts
- Solana is Fully Deployed
- New Upload Endpoint

## Onramp in Argentina and Colombia

Now you can collect payments in Argentina and Colombia, both in real time. BlindPay is adding two new rails: Transfers 3.0 for Argentina and PSE Colombia, enabling your customers to fund their accounts instantly using local payment methods. [Integrate it now.](https://blindpay.com/docs/payin-quotes?flavor=advanced#create-a-payin-quote)

## Multiple Virtual Accounts

You can now issue multiple virtual accounts for every customer, allowing you to separate funds by purpose and better organize your payment flows. [See the documentation.](https://blindpay.com/docs/virtual-accounts-create)

## Solana is Fully Deployed

All BlindPay features are now live on Solana, including payins, payouts, and virtual accounts. This means you can leverage Solana's fast transaction speeds and low fees across our entire product suite, giving you another powerful blockchain option alongside our existing networks. [Learn more.](https://blindpay.com/docs/payout-solana)

## New Upload Endpoint

The new endpoint allows you to handle user privacy and data protection in the best way possible: simply upload the required documents, receive a secure URL, and use it to complete the verification process. This streamlines your compliance workflow while maintaining the highest privacy standards. [Start integration.](https://blindpay.com/docs/learn/upload)

---

Source: https://blindpay.com/changelog/2025-12-09-compliance-updates-for-poa

---
title: BlindPay Compliance Updates - December
description: Important compliance updates including mandatory PoA documents for UBOs and new updates to Business PoA documents, effective January 8th, 2026.
date: 2025-12-09
category: Compliance
categoryType: improvement
contributors:
  - bernardoSimonassi
isChangelog: true
---

**All these updates will take effect on January 8th, 2026.**

Important compliance changes are coming to BlindPay's onboarding process to ensure continued regulatory compliance.

<!--more-->

## TL;DR

- PoA documents for UBOs are now mandatory
- New updates to Business PoA documents

## PoA documents for UBOs are now mandatory

Starting January 8th, 2026, it will be mandatory for all Ultimate Beneficial Owners (UBOs) to submit a valid proof of address document as part of the onboarding process. For comprehensive guidance on accepted documents and submission procedures, please refer to the [documentation here](https://api.blindpay.com/reference#tag/customers/POST/v1/instances/{instance_id}/customers.body.owners).

## New updates to Business PoA documents

If you are onboarding a contractor or freelancer company in Brazil (with a single UBO), and the company's registered address is that of the accountant, we will accept a document co-signed by both the accountant and the UBO. This document should clearly explain their relationship and the reason for using the accountant's address as the company's official registration.

---

Source: https://blindpay.com/changelog/2025-11-21-new-website-solana-offramp-and-swift-sdk

---
title: New Website, Solana Offramp, and Swift SDK
description: Major platform improvements including a completely refreshed website, Solana offramp wallet support, and a new Swift SDK for Apple developers.
date: 2025-11-21
category: Product Update
categoryType: update
contributors:
  - ericViana
  - bernardoSimonassi
isChangelog: true
---

We're excited to announce major platform improvements including a refreshed website, expanded blockchain support, and new developer tools.

<!--more-->

## TL;DR

- New Website
- Solana offramp wallets is now live
- New Swift SDK

## New Website

Our belief is simple: great developer experience and stablecoin abstraction will be the competitive advantage in the stablecoin space. We've completely refreshed our website to reflect this vision. [Check it out here.](https://blindpay.com/)

## Solana Offramp Wallet

You can now generate a Solana wallet that automatically offramps all USDC transactions. Full Solana support across the BlindPay ecosystem is coming soon. [View documentation.](https://blindpay.com/docs/offramp-wallets)

## Swift SDK

Apple developers can now integrate BlindPay with just a few lines of code. [See GitHub docs.](https://github.com/blindpaylabs/blindpay-swift)

---

Source: https://blindpay.com/changelog/2025-10-20-new-sdks-solana-and-eth-main-net-support

---
title: New SDKS, Solana and ETH Main Net Support
description: Accelerate your integration with our new Node.js, Python, and Go SDKs while expanding your blockchain capabilities with Ethereum Mainnet and Solana Devnet support. Plus, manage your customer limits more efficiently with our new self-service request system that delivers compliance reviews within 24 hours, eliminating the need for email communications.
date: 2025-10-20
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

We're excited to announce the release of new SDKS, Solana and ETH Main Net Support.

## TL;DR

- Ethereum Mainnet and Solana Devnet Support
- Self-Service Customer Limit Increases
- New SDKs: Node, Python, and Go

## Ethereum Mainnet and Solana Devnet Support

You can now send and collect USDC or USDT on Ethereum Mainnet.
Ethereum integration works the same way as other EVM chains you're
already familiar with.

Solana Devnet is now available on Development Instances using USDB.
Check out our Solana documentation for implementation details.

## Self-Service Customer Limit Increases

Request limit increases directly through the dashboard or API—no more
emails to our compliance team.

Submit your request with supporting documents via the dashboard or
API, and our compliance team will review it within 24 hours. You'll receive
webhook notifications for every status change and can track the full
history of your requests. Check our API reference.

## Node, Python and Go SDKs

We're committed to delivering the best developer experience in the
industry. Our new Node SDK , Python SDK , and Go SDK make
integration faster and easier than ever.
We're also updating our website with more detailed guides and examples
to help you get the most out of our APIs.

---

Source: https://blindpay.com/changelog/2025-10-06-urgent-compliance-updates

---
title: Urgent Compliance Updates
description: Critical compliance changes requiring immediate action including mandatory terms of service acceptance for all customers, enhanced KYC requirements with selfie verification, and updated country restrictions for high-risk jurisdictions.
date: 2025-10-06
category: Compliance
categoryType: improvement
contributors:
  - bernardoSimonassi
isChangelog: true
---

These compliance updates take effect on **October 15, 2025** and require action across your customer onboarding and terms of service flows.

<!--more-->

## TL;DR

- New terms of service available (breaking changes)
- Customer creation updates (breaking changes)

## New terms of service version available

All your customers will be required to accept the new version of our terms of service. This is necessary to allow BlindPay to issue virtual accounts, create wallets and process payments on behalf of them.

Every time you try to create a quote, an error message `please_accept_terms_of_service` will show up. When you see that, you should pop up the terms of service link and make your customer accept. Consult the [terms of service guide](/docs/learn/terms-of-service#accepting-a-new-version) for integration details.

You will also receive updated `tos.accept` webhook events—review the [webhook documentation](/docs/learn/webhooks) to handle them correctly.

## Customer creation updates

The following fields are now updated:

- The fields `phone_number` and `selfie_file` are now mandatory for individuals. This is necessary because our US banking partner will require them in the future, so we're already anticipating this.
- The field `individual_holding_doc_front_file` is deprecated for enhanced KYC because of the addition of `selfie_file`.
- The field `website` is now mandatory for businesses.
- The [prohibited and high-risk countries list](/docs/kb/supported-countries) was updated. All customers from high-risk countries must go through enhanced KYC verification.
- We're adding new fraud checks when analyzing customer data. If the KYC is rejected, you'll see details in `fraud_warnings`.

Update your onboarding forms and validation logic ahead of the deadline to avoid interruptions.

---

Source: https://blindpay.com/changelog/2025-08-24-rtp-offramp-tron

---
title: Real-Time Payments and Tron Network Integration
description: Major platform expansion with real-time payments across 4,000+ US banks via RTP, dedicated offramp wallets for automatic stablecoin conversion, Tron network integration for USDT, enhanced KYT engine with on-hold transaction review, and updated virtual account country requirements.
date: 2025-08-24
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

August expands real-time settlement options, adds new blockchain coverage, and tightens compliance for virtual accounts.

<!--more-->

## TL;DR

- RTP is now live
- Offramp wallets
- Tron network
- On hold transactions
- Virtual accounts countries update (breaking changes)

## Real-time payments in the US

Now you have access to RTP in the US and can send or collect payments from over 4,000 banks. You don't need to wait for ACH or wire settlement times anymore—just submit an RTP payout and watch it settle in real time. Learn how to configure the rail in the [payout guide](/docs/payouts?flavor=advanced#execute-a-payout).

## Offramp wallets

Generate a dedicated blockchain wallet that automatically converts supported stablecoins into fiat the moment funds arrive. This is perfect for moving assets directly from exchanges or enterprise custodians. Follow the [offramp wallet tutorial](/docs/offramp-wallets) to begin.

## Tron network

BlindPay now supports the Tron network for offramping USDT. Point your Tron wallets at BlindPay and we will handle the conversion to fiat. Right now this is only supported for offramp wallets. We would love feedback as we expand support to additional networks—[drop us a note](mailto:hello@blindpay.com).

## On hold transactions

We improved our transaction monitoring solution to prevent fraudulent activities. Now you will see a new payin status **On Hold** for payments that our KYT software has flagged and our compliance team might request information for before releasing them. The [on hold guide](/docs/kb/on-hold-transactions) explains how to respond quickly.

## Virtual accounts countries update (breaking changes)

We added a list of high-risk countries where only customers with enhanced due diligence will be able to create a virtual account. Review the latest requirements in the [supported countries guide](/docs/kb/supported-countries) before onboarding new customers.

---

Source: https://blindpay.com/blog/introducing-virtual-accounts

---
title: "Introducing Named Virtual Accounts"
description: "Named Virtual Accounts: Open US Bank Accounts in Your Customer's Name with USD Payments, Stablecoin Settlement, and Instant Local Payouts."
date: "2025-08-19"
categories: ["product"]
authors:
  - bernardoSimonassi
thumbnail: "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/virtual-accounts-business-blindpay.webp"
isBlog: true
faq:
  - q: "What is a Named Virtual Account?"
    a: "A Named Virtual Account is a U.S. bank account issued in your end customer's name with full access to ACH, Wire, RTP, and SWIFT. The customer's name appears on bank statements."
  - q: "Do I need a U.S. company to open a Named Virtual Account?"
    a: "No. Named Virtual Accounts give access to USD payments without incorporating a U.S. entity or navigating months of traditional bank onboarding."
  - q: "What happens to USD received in a Named Virtual Account?"
    a: "It is automatically converted into stablecoins (USDC/USDT) on Polygon, Base, Arbitrum, Stellar, or Tron, and can be instantly settled to local currencies like BRL, MXN, COP, and ARS."
  - q: "How do I integrate Named Virtual Accounts?"
    a: "Through the BlindPay API or dashboard."
---

![Introducing Named Virtual Accounts](https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/virtual-accounts-business-blindpay.webp)

Businesses and individuals around the world still face barriers when trying to access the U.S. financial system, whether to receive payments in USD, reduce costs, or offer global financial services. Lengthy processes, requirements such as opening a company in the U.S., and the complexity of traditional banking make this expansion harder than it should be.

Named Virtual Accounts from BlindPay change that. You can now create U.S. bank accounts in your end customer’s name with full access to ACH, Wire, RTP, and SWIFT. Every payment received in USD is automatically converted into [stablecoins (USDC/USDT)](/resources/more/usdc-vs-usdt-for-payments) across major blockchains such as Polygon, Base, Arbitrum, Stellar, and Tron, and funds can be instantly sent to other local currencies like [BRL](/resources/more/usdc-to-brl-routes-2026), MXN, COP, and ARS.

This enables people and companies across different industries to receive USD more efficiently, pay suppliers or customers anywhere, reduce costs, and access the global financial system without relying on traditional banking infrastructure.

## Benefits

- Receive USD more efficiently
- Pay suppliers or customers anywhere
- Reduce costs in cross border operations
- Access the global financial system without relying on traditional banking infrastructure

## Key features

- U.S. bank account in the end customer's name
- Customer’s name appears on ACH bank statements
- Receive via ACH, Wire, RTP, and SWIFT
- Automatic USD to stablecoin conversion (USDC/USDT) on Polygon, Base, Arbitrum, Stellar, and Tron
- Instant payouts to local currencies (USD, BRL, MXN, COP, ARS)
- Seamless integration via API or dashboard

## Get started today

Named Virtual Accounts are available now. [**Talk to our team**](https://cal.com/blindpay/demo-call-blindpay) and see how easily you can integrate global USD accounts into your operation.

<br/>

---

Source: https://blindpay.com/blog/blindpay-seed-round

---
title: "BlindPay Raises $3.3M Seed Round"
description: "BlindPay (YC W25) raised $3.3M in a seed round from Y Combinator, 468 Capital, Circle Ventures, Bitso Business, and angel investors including Jawed Karim (YouTube cofounder)."
date: "2025-08-01"
categories: ["company"]
authors:
  - joaoBorges
thumbnail: "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/blindpay-seed-round-wide.png"
isBlog: true
faq:
  - q: "How much did BlindPay raise in its seed round?"
    a: "BlindPay raised $3.3M in its seed round."
  - q: "Who invested in BlindPay's seed round?"
    a: "Y Combinator, 468 Capital, Circle Ventures, Bitso Business, Transpose Platform, and Acacia Venture Capital Partners, plus angel investors including Jawed Karim (YouTube co-founder), Raphael Dyxklay, and Caetano Lacerda."
  - q: "How much payment volume has BlindPay processed?"
    a: "BlindPay processed over $125 million in transfers in 2025, including $46 million in July 2025 alone."
  - q: "What does BlindPay do?"
    a: "BlindPay is global payment infrastructure built on stablecoins, letting businesses move money across borders, stay compliant, and open virtual US accounts in minutes through one developer API."
---

![BlindPay Seed Round](https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/blindpay-seed-round-wide.png)

BlindPay (YC W25) raised $3.3M in a seed round from [Y Combinator](https://www.ycombinator.com/companies/blindpay), [468 Capital](https://468cap.com/), [Circle Ventures](https://www.circle.com/circle-ventures), [Bitso Business](https://bitso.com/business), [Transpose Platform](https://www.transposeplatform.vc/), [Acacia Venture Capital Partners](https://acaciainvest.com/), and angel investors including Jawed Karim (YouTube cofounder), Raphael Dyxklay, and Caetano Lacerda (co-founder Barte).

Our mission is simple: build a better [global payment infrastructure with stablecoins](/resources/more/stablecoin-payments-guide), giving businesses the tools to move money across borders, stay compliant, and open virtual US accounts in minutes, all through one API built for developers.

In 2025 alone we've already processed over $125 million in transfers, with $46 million in July alone, and this is just the beginning.

Thank you to everyone who has supported us along the way. We're incredibly excited to keep building the future of global payments!

---

Source: https://blindpay.com/changelog/2025-07-21-international-swift-available

---
title: International SWIFT Generally Available
description: International SWIFT payouts now generally available for collecting and sending payments across global banking corridors, enhanced data export functionality with new status and customer filters, and automated payout receipt generation for all completed transactions.
date: 2025-07-21
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
  - ericViana
isChangelog: true
---

July marks the general availability of international SWIFT payouts alongside quality-of-life improvements for reporting and payout transparency.

<!--more-->

## TL;DR

- International SWIFT is available
- Export data and filters improved
- Payout receipts

## International SWIFT

You can now **collect and send** SWIFT payments using virtual accounts, unlocking instant access to global banking corridors.

**Important compliance reminder:** All outgoing SWIFT transactions require supporting documentation for validation. This helps ensure secure, compliant transfers that meet international banking standards. Check the [payout API reference](/docs/payouts?flavor=advanced#execute-a-payout) for details before submitting payouts.

## Export data and filters improved

You can now export all your payouts and payins directly from the platform, making it easier to reconcile transactions across your data sources and streamline your financial reporting.

We've also enhanced our filtering capabilities with new status and `customer_id` filters available in both the API and dashboard for more precise transaction management. The [payouts reference](/docs/payouts?flavor=advanced#execute-a-payout) outlines the latest query parameters.

## Payout receipts

BlindPay now automatically generates a receipt document for every completed payout, providing you with professional documentation to share with recipient banks and ensure full transaction transparency.

To access your receipts, simply open the external tracking link from any completed payout and click **Print receipt** to download a PDF copy for your records.

---

Source: https://blindpay.com/changelog/2025-06-12-role-based-access-control

---
title: Team Collaboration and Automated Onramp
description: Enterprise team collaboration features with granular role-based access control, automated onramp settlement that converts virtual account deposits directly to your preferred stablecoins, and early access to outbound SWIFT payouts powered by stablecoins for global transfers.
date: 2025-06-12
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

June’s release makes it easier to collaborate inside BlindPay, accelerate fiat-to-stablecoin conversions, and experiment with cross-border payouts via SWIFT.

<!--more-->

## TL;DR

- Role-based access control
- Automated onramp
- Sending international SWIFT (beta)

## Role-based access control

Collaborate with your team effortlessly! Invite teammates and assign granular permissions so each person has the exact access they need. Navigate to **Settings → Team** to add members, then select capabilities like customer creation, payment execution, or analytics-only visibility.

## Automated onramp

When funds arrive in your virtual account, BlindPay automatically converts them into stablecoin and deposits directly to your chosen blockchain wallet. Choose to receive either USDC or USDT—it's completely automated. Review the configuration steps in the [payin guide](/docs/payins) to get started.

## Sending international SWIFT (beta)

Send payments globally with ease. With BlindPay's international SWIFT capabilities you'll be able to access the entire world with stablecoins. Want to unlock global payments? [Contact sales](mailto:hello@blindpay.com) to enable international corridors on your instance.

---

Source: https://blindpay.com/changelog/2025-05-09-stellar-integration

---
title: Stellar Integration and SWIFT Collections
description: Expanded blockchain coverage with full Stellar network support alongside existing EVM chains, comprehensive virtual accounts documentation including settlement flows and fee structures, and universal SWIFT transfer collection capabilities for all virtual account customers.
date: 2025-05-09
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

May focused on expanding blockchain coverage and documenting the virtual account experience while we turned on SWIFT collection for every customer with banking access.

<!--more-->

## TL;DR

- Stellar integration
- Virtual accounts documentation
- Support for SWIFT payments

## Stellar integration

BlindPay now supports Stellar alongside our existing EVM networks. We are joining the Stellar team in Toronto during **Consensus 2025** to help Stellar developers build on top of the BlindPay API. Planning to attend? [Book time with our team](mailto:hello@blindpay.com) and we will sync on your roadmap.

## Virtual accounts documentation

Virtual accounts are now fully documented. Visit the [virtual accounts guide](/docs/virtual-accounts) to review settlement flows, fees, and API usage. Note the upcoming fee adjustments: ACH flat fees move to **$0.40** and wire flat fees move to **$15.00** while percentage-based fees remain unchanged.

## SWIFT payments

Every customer with a virtual account can now collect international SWIFT transfers. We are building a way to send SWIFT payments worldwide using stablecoins. Have a use case already? [Let us know](mailto:hello@blindpay.com) so we can include you in the beta.

---

Source: https://blindpay.com/changelog/2025-04-10-us-named-accounts

---
title: Named Virtual Accounts and API Pagination
description: Premium named virtual accounts powered by tier 1 banks displaying your client's business or individual name, mandatory terms of service acceptance workflow for all customers with compliance requirements, and cursor-based pagination across all core API endpoints with enhanced filtering capabilities.
date: 2025-04-10
category: Product Update
categoryType: update
contributors:
  - bernardoSimonassi
isChangelog: true
---

BlindPay delivered the most-requested account features in April, including support for named virtual accounts, a revamped terms of service workflow, and cursor-based pagination across core endpoints.

<!--more-->

## TL;DR

- US named accounts
- Terms of Service API (breaking changes)
- Pagination (breaking changes)

## Named Virtual Accounts powered by Tier 1 Bank in the US

BlindPay can issue **named** virtual accounts backed by Tier 1 Bank in the US. This unlocks customer-facing account numbers that display your client's business or individual name instead of BlindPay. We are already onboarding beta testers—[reach out to us](mailto:hello@blindpay.com) if you want early access or pricing details.

## Terms of Service API (breaking changes)

For compliance reasons every customer must accept BlindPay’s terms of service before you can create payouts or payins on their behalf. Update your onboarding flow to capture the `tos_id` returned by the [Terms of Service endpoint](/docs/learn/terms-of-service) and persist it when you create customers. All customers must complete this step by **May 30** to avoid disruptions.

## Pagination (breaking changes)

The `/payins` and `/payouts` endpoints now support cursor pagination with the `limit`, `starting_after`, and `ending_before` parameters. The legacy pagination response will be deprecated on **June 30**. Review the new parameters in the [API reference](/docs/payouts?flavor=advanced#execute-a-payout) and add the `customer_id` query filter where needed to segment results by customer.

We also added the first filter related to customers, so you can pass the `customer_id` on the query parameter as well.

---

Source: https://blindpay.com/compare/borderless

# BlindPay vs Borderless

BlindPay pays out stablecoins on named local rails, from Pix to SWIFT, with compliance built in. Borderless orchestrates payouts through partner institutions.

BlindPay is a stablecoin API that converts USDC and USDT to local fiat and pays it out over named local rails, with compliance built in. Borderless is a stablecoin orchestration and liquidity network that routes on/off-ramp payments through a network of locally licensed partner institutions.

## BlindPay and Borderless at a glance
| Capability | BlindPay | Borderless |
| --- | --- | --- |
| Focus | Stablecoin-in, local-currency-out payments API | Orchestration and liquidity network across partner institutions |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | Local rails via partner network, individual rails not named publicly on the pages reviewed |
| Pay-in / collections | Branded virtual accounts in USD and local currencies, deposits auto-convert to stablecoin | Virtual accounts via API: create, retrieve, list, delete |
| Currencies and corridors | USD, BRL, MXN, ARS, COP, EUR on local rails in the US, Brazil, Mexico, Colombia, Argentina, and SEPA, plus SWIFT payouts to 100+ countries | 63+ currencies claimed; featured corridors span Latin America, Africa, Asia, and Europe |
| Custody model | Non-custodial processor; funds return to the originating wallet if a transfer fails | Non-custodial; bring-your-own wallet or named custody-partner integrations (Utila, Dfns, Bastion, Fireblocks) |
| Compliance scope | KYC, KYB, sanctions screening, and travel rule run inside BlindPay's own program | Identity and compliance workflows orchestrated across partner institutions; SOC 2 Type II certified |
| Pricing model | Published plans (Basic, Business, Enterprise) with usage-based, per-transaction fees and transparent FX, no pre-funding | One flat fee on the homepage; no rate card on the pages reviewed |
| Settlement tracking | UETR and MT103 confirmations on SWIFT; per-rail reference IDs on every payout | Transactions API with webhooks; per-rail tracking detail not published on the pages reviewed |

**BlindPay is the better fit when:** BlindPay is the better fit for teams that need named local rails, POBO/COBO SWIFT tracking, and published pricing for stablecoin payouts into the Americas and Europe.

**Where Borderless fits:** Borderless fits teams that need one API into partner institutions in markets outside the Americas and the SEPA zone, such as Africa or Asia. Inside those markets, BlindPay runs the rails directly, and Borderless itself lists BlindPay as a network provider.

For payouts into the Americas and the SEPA zone, BlindPay is the direct choice: it runs the rail itself, names it, publishes its cut-off time and price, runs KYC in about 60 seconds inside the API, and tracks every SWIFT payout with a UETR and MT103. Borderless is an orchestration layer that routes through partner institutions in 94 or more countries without naming which rail runs in which country, and its pricing page returned a 404 on the pages reviewed. Borderless's own network page lists BlindPay as a provider for Latin America and North America.

## Which should you choose, BlindPay or Borderless?

Choose BlindPay when your corridors sit in Brazil, Mexico, Colombia, Argentina, the United States, or the SEPA zone and you want the rail, the cut-off, and the price known before you write code. Choose Borderless when your priority is reaching markets outside those, such as Africa or South and Southeast Asia, through whichever partner institution covers each corridor. Teams with both route the Americas and Europe through BlindPay directly and keep Borderless for the rest.

## What is Borderless?

[Borderless](https://borderless.xyz) is a stablecoin orchestration and liquidity network. It gives a business a single API that connects to a network of locally licensed partner institutions, called PFIs, for cross-border stablecoin-to-fiat payments, without Borderless itself taking custody of funds. The company states that "Borderless is never in the flow of funds" and says it does not provide any form of custody or initiate movement of funds on a client's behalf. Settlement happens directly between client and partner provider.

Borderless targets financial institutions, payments companies, fintechs, wallet infrastructure providers, and large corporates that want one API to reach many locally licensed on and off-ramp providers across a broad country footprint, instead of integrating each corridor's providers one at a time. Its public pages claim reach into 94 or more countries and 63 or more currencies, with published currencies spanning USD, EUR, MXN, BRL, NGN, INR, KES, ZAR, PHP, IDR, GBP, ARS, COP, CLP, and EGP. It supports USDC, USDT, PYUSD, USDG, and cUSD across eight blockchain networks, and it also publishes a public stablecoin FX rate aggregator called Borderless Benchmark, sourced from more than a dozen on and off-ramp providers. Borderless holds SOC 2 Type II certification and positions itself as a technology company rather than a broker-dealer, with licensing handled by its network of partner institutions.

## What is BlindPay?

BlindPay is a stablecoin API for global payments: it converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT, staying compliant through one API. That is the one-sentence definition: stablecoin in, local currency out, on named rails, with compliance built in rather than bolted on afterward.

The homepage describes BlindPay as "a modern infrastructure for global finance, orchestrating stablecoins, local payment rails, virtual accounts, and integrated compliance." It is backed by Y Combinator's W25 batch and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. [Payouts](/global-payments) convert stablecoins to local fiat over country-specific rails: Pix, TED, and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, and ACH, RTP, domestic wire, and SWIFT in the US. Rails also reach SEPA across 40 SEPA-zone countries. On the collection side, [virtual accounts](/virtual-accounts) let a business issue branded US and local bank accounts where incoming deposits auto-convert into stablecoin wallets. BlindPay describes itself as a non-custodial payment processor: funds stay under the customer's control throughout, and if a transaction fails, funds return automatically to the originating wallet. [Compliance](/compliance), KYC, KYB, sanctions and watchlist screening, runs inside the same API rather than through a separate manual process. Operators get a dashboard and a native iOS app alongside the API, and developers get five official SDKs, an OpenAPI spec, a CLI, and an MCP server. BlindPay is not a stablecoin issuer, not a card acquirer, not a consumer wallet, and not a self-custody MPC platform; it is a payments and compliance layer that sits on top of USDC and USDT, and Borderless's own network page lists it as a provider for Latin America and North America.

## How do BlindPay and Borderless compare?

BlindPay names every rail it runs and the settlement window for each; Borderless routes through partner institutions and does not name which rail runs in which country on its public pages. BlindPay's payout rails are specific and public: Pix, SPEI, ACH, RTP, SEPA, and SWIFT under [POBO/COBO](/pobo-cobo-swift), each with its own settlement window published on BlindPay's cut-off times page. Borderless describes coverage as "local rails included" through its network of partner institutions, but its homepage and network overview page do not name which local rail runs in which country, on the pages reviewed. Individual partner profile pages were not checked; confirm on their site. For a team that needs to know exactly which rail a payout rides before it commits code, that difference in how each company documents rails matters more than either company's country count. BlindPay's own [comparison of ten stablecoin APIs](/resources/more/best-stablecoin-apis-2026) covers where Borderless and other orchestration layers fit alongside payout-focused providers.

Custody sits close together: both are non-custodial by design. BlindPay operates as a non-custodial payment processor and returns funds to the originating wallet automatically if a transfer fails. Borderless states it is never in the flow of funds and offers bring-your-own wallet infrastructure or named custody-partner integrations such as Utila, Dfns, Bastion, and Fireblocks. Neither company holds customer funds as a matter of business model, which is a meaningful shared trust signal for a buyer evaluating either one.

Compliance is where the two architectures diverge. BlindPay runs KYC, KYB, sanctions screening, and travel rule checks inside its own program, with published tiers, KYC Standard automated in about 60 seconds, KYC Enhanced and KYB Standard reviewed manually within a business day. Borderless orchestrates identity and compliance workflows across its partner network, with SOC 2 Type II certification covering its own systems. The actual KYC and licensing execution sits with whichever PFI handles a given corridor, so compliance scope was not verified partner by partner; confirm it for your corridor on Borderless's site.

Pricing follows the same split. BlindPay publishes plans, Basic, Business, and Enterprise, on its [pricing](/pricing) page with usage-based, per-transaction fees and transparent FX, no pre-funding required. Borderless states a single flat platform fee on its homepage with no dollar figure, no percentage, and no dedicated pricing page; borderless.xyz/pricing returned a 404 on the pages reviewed. A buyer comparing the two on cost has to request a quote from Borderless and can read BlindPay's published plans directly.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI, or into the US and Europe over ACH, RTP, SEPA, or SWIFT. These teams need compliance and settlement tracking handled inside the API rather than negotiated per corridor; see [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn) for corridor detail. Because BlindPay names each rail and publishes its cut-off times, minimums, and settlement windows, a team can build against a fixed rail today. That beats discovering at integration time which partner institution actually executes a given payout. SWIFT payouts specifically carry a UETR and MT103 field 70 reference on every transfer, which matters for teams that need auditable cross-border payment tracking. Borderless's homepage, network page, and docs index did not describe equivalent tracking as of September 2026; confirm on their site.

## Where does Borderless fit?

Borderless fits a team whose priority is reaching markets outside BlindPay's direct rails, Africa, South and Southeast Asia, through whichever partner institution covers each corridor, with rail execution and compliance handled by that partner rather than under one provider's own program. Inside the Americas and the SEPA zone, BlindPay runs the rail directly, names it, publishes its cut-off and price, and tracks every SWIFT payout with a UETR and MT103. Borderless's own network page lists BlindPay as a provider for Latin America and North America, which is the clearest signal of where each one fits.

## Can you use BlindPay and Borderless together?

Yes, and this is common in practice: Borderless's own network page lists BlindPay among its Latin America and North America partner providers, so the two already sit side by side in some stacks. A common split is running BlindPay for corridors where named rails, published pricing, and SWIFT UETR and MT103 tracking matter most. Keep Borderless for markets it reaches through partners that BlindPay does not cover directly. Both are non-custodial, so combining them does not introduce a shared custody risk between the two integrations.

## How do you migrate from Borderless to BlindPay?

Migrating a single corridor from Borderless to BlindPay follows the same four-step pattern BlindPay documents for other provider migrations. First, re-KYC your business and payees: compliance does not transfer between providers, so sequence BlindPay's KYC and KYB review before cutover rather than assuming an existing Borderless identity object carries over. Second, get a quote through BlindPay's API before executing: BlindPay's payout flow is explicit quote-then-execute, so persist the quote ID and execute before it expires rather than reusing a stale rate. Third, wire up webhooks for payout status: BlindPay delivers webhooks through Svix, with a stable svix-id for deduplication and signature verification on every delivery. Build the status handler against those before going live. Fourth, dual-run both providers during a cutover window, routing a subset of volume to BlindPay while Borderless keeps handling the rest, and retire the Borderless path only after in-flight settlements on both sides clear.

For a ready-to-run version of this sequence, BlindPay's prompt library at [/prompts](/prompts) includes migration prompts written for a coding agent to inventory existing usage, map concepts, and produce a migration report before touching production code. Start against a BlindPay development instance, which uses the same event names and payload shapes as production, before pointing any corridor at live traffic. BlindPay's [docs introduction](/docs/introduction) covers the quote-then-execute model and the non-custodial flow in full.

## Methodology and sources

This comparison is built from each provider's own public docs and pricing pages as of September 2026. Borderless facts come from borderless.xyz, borderless.xyz/network, docs.borderless.xyz, and docs.borderless.xyz/llms.txt; borderless.xyz/pricing returned a 404 at time of writing. BlindPay facts come from BlindPay's own site and documentation, including its pricing, coverage, and knowledge base pages. Rails, coverage claims, and pricing change over time on both sides. If anything here is out of date, flag it through /contact and it will be corrected.

*This page is general information, not legal, tax, or financial advice. Borderless is a trademark of its owner; BlindPay is not affiliated with Borderless.*

## BlindPay vs Borderless FAQ
### Is BlindPay a replacement for Borderless?
Yes, for the corridors BlindPay serves directly: Brazil, Mexico, Colombia, Argentina, the United States, and the SEPA zone, on named rails with published pricing and tracking. Borderless reaches other markets through partner institutions; for those, keep Borderless and route the Americas and SEPA through BlindPay, which Borderless itself lists as a provider in its network.

### Can I use BlindPay and Borderless together?
Yes, and doing so does not require picking a single vendor. Point BlindPay at the corridors where named rails, published cut-off times, and SWIFT UETR and MT103 tracking matter, and leave Borderless serving markets it reaches through partner institutions that BlindPay does not yet cover directly. Because both are non-custodial, funds never sit with either provider between the two integrations, so reconciliation is a matter of matching webhook events, not chasing custody.

### Which is cheaper, BlindPay or Borderless?
BlindPay publishes plans and a per-transaction fee model on /pricing, with transparent FX and no pre-funding, so a corridor can be priced before you sign up. Borderless describes one flat platform fee on its homepage without a figure, and its pricing page returned a 404 on the pages reviewed, so its cost is only known after a conversation. Then quote the same amount on both and compare what lands in the recipient's account after fees and FX.

### How long does it take to migrate from Borderless to BlindPay?
A single-corridor cutover typically runs days to a few weeks: re-KYC your business and payees, wire up Svix-verified webhooks for payout status, dual-run both providers, then retire the Borderless path once settlements clear. See the migration steps below and the BlindPay prompt library for a ready-to-run migration prompt.

### Does BlindPay support the same country coverage as Borderless?
BlindPay names specific rails in specific countries, Pix and TED in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH and RTP and SWIFT in the US, SEPA across 40 SEPA-zone countries. Borderless claims a footprint of 94 or more countries through its partner network without naming individual rails on the pages reviewed. Breadth through partners and depth on named rails are different things: for a corridor BlindPay serves, BlindPay tells you the rail, the cut-off time, and the price before you write code. For corridors outside that list, check the global payments page.

### Does BlindPay support SWIFT payments the way a partner network would?
Yes. BlindPay runs SWIFT payouts and collections on behalf of customers under POBO/COBO, each customer gets a dedicated virtual account with its own BIC and IBAN, and every SWIFT payment carries a UETR and MT103 field 70 reference for tracking. As of September 2026, nothing on Borderless's homepage, network page, or docs index names SWIFT, UETR, or MT103; confirm on their site.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migration prompts: https://blindpay.com/prompts
- Borderless: https://borderless.xyz

---

Source: https://blindpay.com/compare/bridge

# BlindPay vs Bridge

BlindPay converts USDC and USDT into local currency over Pix, SPEI, ACH, and SWIFT with compliance built in. Bridge orchestrates stablecoins across issuance, wallets, cards.

BlindPay is a stablecoin API that converts USDC and USDT to local currency and pays out over Pix, SPEI, ACH, SEPA, and SWIFT, with compliance handled in the flow. Bridge, a Stripe company, is a stablecoin infrastructure platform for orchestration, stablecoin issuance, wallets, and card programs through a single API.

## BlindPay and Bridge at a glance
| Capability | BlindPay | Bridge |
| --- | --- | --- |
| Focus | Stablecoin payouts and collections into local currency | General-purpose stablecoin orchestration, issuance, and cards |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | ACH, FedNow, Wire, SEPA, SPEI, Pix, Faster Payments, Bre-B; no RTP on the pages reviewed |
| Pay-in / collections | Virtual accounts auto-convert deposits into USDC or USDT | Virtual accounts in USD, EUR, GBP, MXN, BRL, COP convert to stablecoins |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries | USDC, USDT, EURC, PYUSD and others to USD, EUR, GBP, MXN, BRL, COP |
| Custody model | Non-custodial: funds stay under the business's control, automatic refund on failure | Bridge-managed custodial wallet or self-custody wallet, chosen per integration |
| Compliance scope | KYC, KYB, sanctions screening, travel rule handled in the API | KYC/KYB via hosted link or Customers API, rails gated by endorsements |
| Pricing model | Published plans (Basic, Business, Enterprise), usage-based per-transaction fees, transparent FX | Developer-configurable flat or percentage fees, contact sales for a quote |
| Settlement tracking | UETR and MT103 confirmations on every SWIFT payout, per-rail reference on every transfer | Wire support described in general terms; no UETR or MT103 detail on the pages reviewed |
| Best for | Stablecoin payouts and collections in local currency, Americas and Europe | Stablecoin issuance, managed wallets, and card programs |

**BlindPay is the better fit when:** BlindPay is the better fit for teams paying out stablecoins as local currency across Pix, SPEI, ACH, SEPA, or SWIFT with compliance handled in the API.

**Where Bridge fits:** Bridge fits teams that want to launch a branded stablecoin, run managed wallets, or issue stablecoin-backed cards, jobs BlindPay does not do by design. For the payout itself, BlindPay is the direct tool.

For a team that holds USDC or USDT and needs to pay someone in reais, pesos, dollars, or euros, BlindPay is the more direct choice: eleven named payout rails with a published settlement window each, KYC in about 60 seconds inside the same API call, published plans with no pre-funding, and a non-custodial flow that refunds automatically on failure. Bridge, a Stripe company, is the choice for issuing a branded stablecoin, running managed wallets, or launching a stablecoin-backed card program, jobs BlindPay does not do. This page compares both on rails, custody, compliance, and pricing, sourced from each provider's own public docs.

## Which should you choose, BlindPay or Bridge?

Choose BlindPay when the job is paying stablecoins out as local currency: Pix in Brazil, SPEI in Mexico, ACH or RTP in the United States, SEPA in Europe, or SWIFT with UETR and MT103 tracking, with compliance handled in the call and pricing on a public page. Choose Bridge when the job is issuing your own stablecoin, custodying balances in managed wallets, or issuing cards. Teams that need both run Bridge for issuance and BlindPay for the payout, and neither integration gets in the other's way.


## What is Bridge?

Bridge, a Stripe company, is a stablecoin infrastructure platform built around an orchestration API for moving, storing, and accepting stablecoins across more than 20 blockchains, per Bridge's payment-routes docs. Its product set spans orchestration and virtual accounts that convert incoming fiat in USD, EUR, GBP, MXN, BRL, and COP into stablecoins. It also includes Open Issuance for businesses that want to launch their own branded, reserve-backed stablecoin, managed on-chain wallets with gas handling, and a card program that issues stablecoin-backed cards. Bridge serves developers, fintechs, crypto platforms, and enterprises building payments, payouts, or their own stablecoin products. Bridge operates under Bridge Building Inc for US money transmission, Bridge Building S.A. for EEA residents, and Bridge Building Limited or Bridge Ventures LLC for the rest of the world, per Bridge's legal page. It moved deeper into the Stripe ecosystem following Stripe's acquisition of the company. Its published payment-routes page lists ACH, FedNow, and Wire in the US, SEPA in Europe, SPEI in Mexico, Pix in Brazil, Faster Payments in the UK, and Bre-B and bank transfer in Colombia.

## What is BlindPay?

BlindPay is a stablecoin API for global payments: it converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT, staying compliant through one API. The homepage describes it as infrastructure that orchestrates stablecoins, local payment rails, virtual accounts, and integrated compliance in one place. BlindPay is backed by Y Combinator's W25 batch and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. A single API serves fintechs, PSPs, remittance businesses, payroll platforms, and import/export use cases across the [global payments](/global-payments) product. The [virtual accounts](/virtual-accounts) product handles the reverse direction: businesses issue branded US and local bank accounts, and deposits auto-convert into stablecoin wallets. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), with UETR tracking and MT103 confirmations on every transfer, detailed on the [POBO/COBO over SWIFT](/pobo-cobo-swift) page. Operators get a dashboard and a native iOS app alongside the API, and developers get five official SDKs, an OpenAPI spec, a CLI, and an MCP server. BlindPay does not issue its own stablecoin and does not acquire card payments, and it is non-custodial by design: the business's funds never sit in a BlindPay-held balance.

## How do BlindPay and Bridge compare?

BlindPay names more payout rails, publishes its pricing, and stays non-custodial; Bridge covers more of the stablecoin stack, issuance, wallets, and cards, with the payout leg configured per integration. Bridge is built around orchestration: one API surface for issuance, wallets, virtual accounts, and cards, spanning more than 20 blockchains per Bridge's payment-routes docs. It supports a wide stablecoin set that includes USDC, USDT, EURC, PYUSD, and several others. BlindPay is built around one job done end to end: stablecoin in, local currency out, with the compliance and rail routing handled inside a single payout or payin call. That difference shows up directly in the rail lists. Both cover the core Americas and European corridors, ACH, SEPA, SPEI, and Pix. BlindPay goes further inside them: RTP in the US, PSE in Colombia, Transfers 3.0 in Argentina, TED and Boleto in Brazil, a published settlement window for every rail, and a cross-border wire product named explicitly as SWIFT with POBO/COBO structure, UETR tracking, and MT103 confirmations. Bridge's public rails and orchestration pages describe wire support in general terms, without a named product or reference-field mapping, on the pages reviewed for this comparison.

Custody is the other structural split. BlindPay is non-custodial: funds stay under the business's control through the transfer, and a failed transaction returns funds automatically to the originating wallet. Bridge's virtual accounts let a developer route converted stablecoins to a Bridge-managed custodial wallet, a self-custody wallet, or a third-party wallet provider; its managed on-chain wallets add gas handling. A provider-held balance is one more place funds can sit between conversion and payout. BlindPay's flow has no such balance to reconcile.

Pricing and compliance follow the same pattern: published and built in on BlindPay's side, configurable per integration on Bridge's. BlindPay publishes plans, Basic, Business, and Enterprise, with usage-based, per-transaction fees and transparent FX on its [pricing](/pricing) page, and states its [compliance](/compliance) coverage, KYC, KYB, sanctions screening, and travel rule, as handled inside the API. Bridge's developer fees are configurable per integration, fixed for fixed-amount transfers and percentage-based for flexible-amount transfers and virtual accounts, and general pricing guidance points prospects to contact sales. Bridge's compliance model gates rail access through a per-customer, per-region endorsements system, per Bridge's docs; BlindPay applies KYC, KYB, sanctions screening, and travel rule checks inside the same API.

## When is BlindPay the better fit?

BlindPay is the better fit for teams that hold or receive stablecoins and need to pay people or businesses in their own local currency through a single compliant API. That means payroll, marketplace payouts, remittance flows, or import/export payments landing in Brazil over Pix, Mexico over SPEI, the US over ACH or RTP, or Europe over SEPA. It also covers a cross-border wire that needs to move as a named SWIFT payment with UETR tracking and MT103 confirmation. It is also the better fit for a business that wants to stay non-custodial rather than route funds through a provider-held wallet. Corridor depth is strongest in the Americas, documented on pages like [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn), with SEPA covering the euro area. For the Brazil corridor step by step, see [USDC to Pix, from quote to settlement](/resources/usdc-pix-quote-to-settlement).

## Where does Bridge fit?

Bridge fits a team whose job is launching a branded stablecoin through Open Issuance, running managed on-chain wallets, issuing stablecoin-backed cards, or building inside the Stripe ecosystem. Those are jobs BlindPay does not do by design: BlindPay does not issue stablecoins, does not run a card program, and does not custody balances. For the payout leg of any of those products, BlindPay is the more direct tool: a named rail per country, compliance inside the same call, tracking on every transfer, and pricing you can read before you sign up.

## Can you use BlindPay and Bridge together?

Yes. This is a common stack for a business that needs both ends of the problem covered. One pattern is Bridge for issuance, managed wallets, or a card program, paired with BlindPay for the local-currency payout leg into Pix, SPEI, ACH, or SWIFT, since neither provider tries to be the whole stack. A business could equally hold stablecoins minted or managed through one platform and route the payout side through BlindPay's non-custodial payment flow. The two APIs sit at different points in a stablecoin payments architecture rather than competing head to head for the same call.

For the full card pattern, with the shared wallet, the monthly flow, and the ledger rules, read [Bridge cards and BlindPay payouts in one stack](/resources/more/bridge-cards-and-blindpay-payouts).

## How do you migrate from Bridge to BlindPay?

Moving a Bridge payout integration to BlindPay follows the same pattern as any provider migration: re-verify compliance, quote before you execute, and cut over one corridor at a time.

1. Inventory the current Bridge integration: every endpoint, webhook, and stored counterparty ID, mapped against BlindPay's customers, bank accounts, quotes, and payout objects.
2. Check corridor coverage before writing code. List every currency pair in use today and confirm it against BlindPay's supported rails on the [global payments](/global-payments) page.
3. Re-onboard counterparties on BlindPay. Compliance does not transfer between providers, so KYC and KYB re-verification runs ahead of any cutover.
4. Rebuild money movement on the quote-then-execute model: request a quote, execute before it expires, and persist both the new BlindPay IDs and the legacy Bridge IDs during the transition.
5. Wire up Svix-verified webhooks for payin and payout status instead of polling.
6. Dual-run both providers behind a feature flag for at least one corridor before retiring the Bridge path.

Start with the [introduction](/docs/introduction) in the docs, and use the [Bridge migration prompt](/prompts/migrate-from-bridge) to run this sequence with a coding agent against your own codebase. Teams that want a hand with the first corridor can [talk to BlindPay](/contact) directly.

## Methodology and sources

This comparison was built from each provider's public docs and pricing pages as of September 2026: Bridge's site and [apidocs.bridge.xyz](https://apidocs.bridge.xyz), and BlindPay's own documentation and pricing page. Every Bridge claim comes from those pages; anything Bridge does not publish on the pages reviewed, such as an exact standard fee percentage, is left out rather than guessed. See the broader [stablecoin API comparison](/resources/more/best-stablecoin-apis-2026) for how BlindPay and Bridge stack up against eight other providers. Spot an error? [Let us know](/contact).

*This page is general information, not legal, tax, or financial advice. Bridge is a trademark of its owner; BlindPay is not affiliated with Bridge.*

## BlindPay vs Bridge FAQ
### Is BlindPay a replacement for Bridge?
Yes, for payouts. BlindPay covers the job of paying stablecoins out as local currency over Pix, SPEI, ACH, SEPA, or SWIFT end to end, with compliance in the API, published pricing, and no provider-held balance in between. Bridge's other products, branded stablecoin issuance, managed wallets, and card programs, are jobs BlindPay does not do by design, so a team that needs those keeps Bridge for them and uses BlindPay for the payout.

### Can I use BlindPay and Bridge together?
Yes, most often as a two-legged setup: Bridge issues or custodies the stablecoin, BlindPay handles the payout into local currency. Decide the split by asking which leg needs local-currency delivery and which needs issuance or custody.

### Which is cheaper, BlindPay or Bridge?
BlindPay publishes its plans and per-transaction fees on the pricing page, with transparent FX and no pre-funding, so you can price a corridor before you sign up. Bridge configures fees per integration and points prospects to sales, so its cost is only known after a conversation. Run the delivered-amount test: quote the same corridor and amount on each side and compare what reaches the recipient after fees and FX.

### How long does it take to migrate from Bridge to BlindPay?
Most teams move corridor by corridor over one to a few weeks. The main driver is re-KYC and re-KYB of counterparties, since compliance does not transfer between providers, not engineering time against BlindPay's REST API and webhooks.

### Does BlindPay support the same corridors as Bridge?
BlindPay covers Pix in Brazil, SPEI in Mexico, ACH, RTP, and SWIFT in the United States, SEPA across the euro area, and payout rails in Colombia and Argentina. Bridge's published payment-routes page lists a similar set for the US, EEA, UK, Mexico, Brazil, and Colombia, but it does not list RTP, and its wire support is described without the POBO/COBO structure, UETR tracking, or MT103 confirmations BlindPay names on every SWIFT payout.

### Does BlindPay require me to hold stablecoins myself?
No. A business funds each payout from its own wallet; BlindPay converts and delivers it without taking custody, and a failed transaction returns funds automatically instead of sitting in a provider-held balance.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migrate from Bridge with a coding agent: https://blindpay.com/prompts/migrate-from-bridge
- Bridge: https://www.bridge.xyz

---

Source: https://blindpay.com/compare/bvnk

# BlindPay vs BVNK

BlindPay turns USDC and USDT into local currency payouts across Latin America, while BVNK gives enterprises one account to send, store, and spend stablecoins.

BlindPay is a stablecoin API that converts USDC and USDT into local currency and pays out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT (POBO/COBO), with compliance handled inside the API. BVNK is an enterprise stablecoin payments infrastructure platform offering a single API to send, receive, store, convert, spend, and earn on stablecoins and fiat, USD, EUR, and GBP, across 130+ countries.

## BlindPay and BVNK at a glance
| Capability | BlindPay | BVNK |
| --- | --- | --- |
| Focus | Stablecoin-funded local payouts and virtual accounts | Enterprise stablecoin account: send, receive, store, convert, spend, earn |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | ACH, Fedwire, FedNow, RTP, SWIFT (US), SEPA (Europe), Faster Payments (UK); no Pix, SPEI, PSE, or Transfers 3.0 on the pages reviewed |
| Pay-in / collections | Virtual accounts in US and local currencies, deposits auto-convert to stablecoin | Unified fiat and stablecoin accounts with embedded wallets |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries | USDC, USDT, USD, EUR, GBP in 130+ countries; rails published by region, not per-country |
| Custody model | Non-custodial payment processor, funds return to the originating wallet on failure | Provider custody: BVNK holds the business's fiat and stablecoin balances in its own accounts |
| Compliance scope | KYC, KYB, sanctions, and travel rule handled in the API | 40+ licenses and registrations, including FCA EMI, ISO 27001, SOC 1 and 2 |
| Pricing model | Published plans (Basic, Business, Enterprise), usage-based per-transaction fees, transparent FX, no volume floor | Individually negotiated; monthly volume target and operating-history requirement apply |

**BlindPay is the better fit when:** BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI who need compliance handled for them.

**Where BVNK fits:** BVNK fits enterprises above its stated volume floor that want custody, card issuing, and rewards on USDC balances in one account, settled in USD, EUR, and GBP. For local-currency payouts into Latin America, at any volume, BlindPay is the direct tool.

For stablecoin payouts into Latin America, BlindPay is the direct choice: Pix, TED, and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina, each with a published settlement window, KYC in about 60 seconds inside the API, published plans with no volume floor, and a non-custodial flow that refunds automatically. BVNK is an enterprise account settled in USD, EUR, and GBP, with card issuing and rewards on USDC balances, behind a negotiated contract and a stated monthly volume minimum. Which one fits comes down to whether the job is a payout or an account.

## Which should you choose, BlindPay or BVNK?

Choose BlindPay when the job is paying stablecoins out as local currency in Brazil, Mexico, Colombia, Argentina, the United States, or the SEPA zone, at any volume, with a price you can read before you sign up. Choose BVNK when the job is holding balances in one enterprise account with card issuing and yield, in USD, EUR, or GBP, and your volume clears its stated minimum. A team that needs both keeps BVNK for the account and routes the Latin America payout leg through BlindPay.

## What is BVNK?

[BVNK](https://www.bvnk.com) is an enterprise stablecoin payments infrastructure platform offering a single API to send, receive, store, convert, spend, and earn on stablecoins and fiat, USD, EUR, and GBP, across more than 130 countries. Its product set spans six motions: Send for stablecoin payouts, Receive for payment acceptance and checkout, and Store for unified fiat and stablecoin accounts with embedded wallets. Convert handles real-time FX between fiat and stablecoins through what it calls a Conversion All-in Exchange Rate, Spend covers card issuing against stablecoin balances, and Earn pays rewards on USDC balances. BVNK states it holds 40 plus licenses and registrations globally, including an FCA-regulated Electronic Money Institution license in the UK and Malta, and CASP registrations across Europe and US money transmitter licenses. It also holds ISO 27001:2022 and SOC 1 and SOC 2 Type II certification. It targets enterprise businesses and financial institutions with six or more months of operating history, naming fintechs, marketplaces, global payroll providers, brokerages, digital asset platforms, and gaming platforms as core customers. BVNK states a monthly volume target for its customers; confirm current eligibility on its site. Mastercard announced its acquisition of BVNK in March 2026 and completed it on August 3, 2026.

## What is BlindPay?

BlindPay is a stablecoin API for [global payments](/global-payments): it converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT, staying compliant through one API. The homepage describes it as infrastructure orchestrating stablecoins, local payment rails, virtual accounts, and compliance in one place, backed by Y Combinator (W25), and it moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries.

A single API serves fintechs, PSPs, remittance businesses, payroll platforms, and import and export operators. Payouts convert stablecoins to local fiat over country-specific rails: Pix, TED, and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina. In the United States that means ACH, RTP, Domestic Wire, and SWIFT, and BlindPay also covers SEPA across 40 SEPA-zone countries. [Virtual accounts](/virtual-accounts) let a business issue branded US and local bank accounts where deposits auto-convert into stablecoin wallets, covering the pay-in direction. Cross-border wires on BlindPay run as [SWIFT payments and collections on behalf of, POBO and COBO](/pobo-cobo-swift), with UETR tracking and MT103 confirmations on every transfer. BlindPay describes itself as a [non-custodial payment processor](/docs/introduction): funds stay under the customer's control throughout, and if a transaction fails, funds return automatically to the originating wallet. Operators get a dashboard and a native iOS app alongside the API, and developers get five official SDKs, an OpenAPI spec, a CLI, and an MCP server. BlindPay is not a stablecoin issuer, not a card acquirer, not a consumer wallet, and not a self-custody MPC platform. It is the payout and collection layer on top of stablecoins a business already holds, with no volume floor to clear first.

## How do BlindPay and BVNK compare?

BlindPay pays stablecoins out as local currency on a named rail per country with published pricing and no volume floor; BVNK runs an enterprise account settled in USD, EUR, and GBP behind a negotiated contract and a volume minimum. BlindPay's flow is stablecoin in, local currency out: a business holds USDC or USDT and BlindPay quotes the conversion, then delivers it over Pix, SPEI, ACH, or SWIFT into a recipient's local bank account. BVNK's flow is account-centric: a business holds fiat and stablecoin balances inside BVNK's own Store product, then sends, converts, spends on a card, or earns rewards on those balances from one unified account. A team whose end goal is getting stablecoins delivered as local currency to a person or business has a direct, single-call path through BlindPay, with no provider-held balance in between. BVNK's account model asks a business to hold balances with BVNK first; card issuing and rewards on those balances are the reasons to do that, and neither is a payout.

Rail coverage is where the two diverge. BlindPay names its settlement rails per country: Pix and TED in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina. In the United States that means ACH, RTP, Domestic Wire, and SWIFT (POBO/COBO), and BlindPay also covers SEPA across 40 SEPA-zone countries, each with its own settlement window, all listed on [BlindPay's global payments page](/global-payments). BVNK names its rails grouped by region: ACH, Fedwire, FedNow, RTP, and SWIFT for the US, SEPA for Europe, and Faster Payments for the UK. It settles in USD, EUR, and GBP across its stated 130+ country reach, and it does not name a Pix, SPEI, PSE, or Transfers 3.0 rail on the pages reviewed. For a business paying a recipient in Brazil or Mexico, that is the whole job: BlindPay tells it which local rail the money rides and when it lands. BVNK tells it which regional rail reaches the US, European, or UK banking system.

Custody and cost structure also split the two apart. BlindPay is non-custodial: funds stay under the customer's control and return automatically to the originating wallet if a transfer fails. BVNK holds customer funds directly, describing itself as safeguarding customer e-money and providing custodial wallet services. Conversion is priced through a named Conversion All-in Exchange Rate, and payout fees may be tiered by volume. BlindPay publishes plans, Basic, Business, and Enterprise, with usage-based, per-transaction fees and transparent FX, no pre-funding, on its [pricing page](/pricing). BVNK's pricing is individually negotiated, and BVNK states a monthly volume target and an operating-history requirement before it will onboard a customer. BlindPay has no volume floor: plans start at published monthly pricing, and a team can quote its first corridor the day it signs up.

Compliance is handled by both, but the shape differs. BlindPay names its KYC, KYB, sanctions, and travel rule [compliance](/compliance) coverage explicitly, with automated Standard KYC completing in about 60 seconds and manual Enhanced KYC or KYB Standard taking 3 hours to 1 business day. BVNK leans on its licensing footprint, 40+ licenses and registrations including an FCA EMI license in the UK and Malta, plus ISO 27001 and SOC 1 and 2 Type II certification. Both front-load compliance before money moves; BlindPay builds it around per-transaction API checks, while BVNK builds it around a license-backed enterprise onboarding process.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI who need compliance handled for them and want published pricing rather than an enterprise sales negotiation. It also fits teams of any size, since BlindPay's tiers start at published monthly pricing with no volume floor to clear. It also fits teams that want a non-custodial model where funds stay in their control and return automatically if a transfer fails, rather than sitting in a provider-held balance. See live corridor pricing at [/usdc-to-brl](/usdc-to-brl) and [/usdc-to-mxn](/usdc-to-mxn).

## Where does BVNK fit?

BVNK fits enterprises that clear its stated volume and operating-history requirements and want custody, FX conversion, card issuing, and rewards on USDC balances in one account, settled in USD, EUR, and GBP. Card issuing and yield on balances are jobs BlindPay does not do by design. For the payout leg, and for any team paying into Latin America or sitting below BVNK's floor, BlindPay is the more direct tool: a named local rail, compliance in the call, and a price you can read today.

## Can you use BlindPay and BVNK together?

Yes. A stack could run BlindPay for stablecoin-funded local payouts into Pix or SPEI, while keeping BVNK for card issuing, rewards on USDC balances, or a unified enterprise account in USD, EUR, and GBP. Both are API-first, so a payments layer can route by job rather than forcing a single vendor. If your business only needs local-currency payout delivery, BlindPay alone likely covers the job without BVNK's enterprise account layered on top.

## How do you migrate from BVNK to BlindPay?

Start with a corridor-by-corridor cutover rather than a full switch on day one. First, re-KYC your business and every payee on BlindPay: compliance verification does not transfer between providers, so this step has to run before anything else. It looks different in shape from BVNK's license-backed onboarding review. Second, pull a quote through the BlindPay API for a real transaction and confirm the delivered amount before executing, since quotes expire. Check pricing against your actual corridor and ticket size rather than a negotiated BVNK rate. Third, wire up webhooks for payout and payin status, verified through Svix signatures, so your system tracks settlement the same way it does today. Fourth, persist BlindPay's quote, payout, and payin IDs alongside your existing BVNK references during the transition window, so nothing gets lost if a transfer is mid-flight when you switch. Fifth, dual-run both providers on one corridor behind a feature flag, watching in-flight settlements clear on the BVNK side before retiring it for that corridor. Repeat corridor by corridor rather than cutting over everything at once.

No dedicated migration prompt exists yet for BVNK. The [prompt library](/prompts) documents this same re-KYC, quote-then-execute, and dual-run sequence for other providers and can be adapted to a BVNK-specific inventory.

## Methodology and sources

This comparison draws on BlindPay's own documentation and pricing page. It also draws on BVNK's own public pages, [bvnk.com](https://www.bvnk.com), its payments page, its fintech page, docs.bvnk.com's use-case, integration, and payment-methods reference pages, and its pricing policy page, as of September 2026. Every BVNK claim above links back to one of those pages. Figures BVNK does not publish on a dedicated page, such as which of its 130+ countries map to which rail, or exact conversion fee percentages, are unpublished on the pages reviewed. Rails grouped by region, US, Europe, and UK, are published at docs.bvnk.com. See also BlindPay's broader roundup, [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026), which places BVNK alongside nine other providers. If anything here is out of date, flag it through [/contact](/contact) and we will correct it.

*This page is general information, not legal, tax, or financial advice. BVNK is a trademark of its owner; BlindPay is not affiliated with BVNK.*

## BlindPay vs BVNK FAQ
### Is BlindPay a replacement for BVNK?
Yes, for payouts. BlindPay pays stablecoins out as local currency in Brazil, Mexico, Colombia, Argentina, the United States, and the SEPA zone, on named rails, with compliance in the API, published pricing, and no volume floor. BVNK's enterprise account adds card issuing and rewards on USDC balances; those are jobs BlindPay does not do, so a team that needs them keeps BVNK for that and uses BlindPay for the payout.

### Can I use BlindPay and BVNK together?
Yes. Route by job: BlindPay handles the stablecoin-to-local-currency payout leg, and a card-issuing or custody need goes to BVNK. Both are API-first, so a routing rule and two webhook handlers cover it, and because BlindPay is non-custodial there is no second balance to reconcile.

### Which is cheaper, BlindPay or BVNK?
BlindPay publishes its pricing tiers at /pricing, with usage-based per-transaction fees, transparent FX, and no volume floor, so you can price a corridor before talking to anyone. BVNK's pricing policy describes conversion and payout fees as individually negotiated, and BVNK states a monthly volume target and operating-history requirement before it will onboard a customer. Then run the delivered-amount test: quote the same amount on both providers and see what actually lands after FX and fees.

### How long does it take to migrate from BVNK to BlindPay?
Most of the timeline is compliance, not code: re-KYC your business and payees since verification does not transfer between providers, then wire up webhooks and dual-run both providers on one corridor before cutting over fully. Plan on days for the compliance step alone since Enhanced KYC or KYB Standard can take up to a business day per payee, with the webhook and dual-run work typically finishing faster once verification clears.

### Does BlindPay support the corridors behind BVNK's 130+ country footprint?
BlindPay names a rail, a settlement window, and a minimum for every country it serves: Brazil, Mexico, Colombia, Argentina, the United States, and the SEPA zone. BVNK publishes its rails by region (US, Europe, UK) and settles in USD, EUR, and GBP, so which of its 130+ countries settles over which rail, and whether a Brazilian recipient gets Pix, is a question to ask BVNK. For any corridor outside BlindPay's list, check the global payments page.

### What compliance does BlindPay handle for me?
BlindPay runs KYC and KYB checks, sanctions and watchlist screening, and travel rule compliance inside the API. If a payment triggers a request for information, BlindPay gives you a 27-day window to respond before the transaction is affected, with the full compliance program documented on [/compliance](/compliance). That is a different shape from BVNK's stated compliance posture, which centers on 40+ licenses and registrations, including an FCA EMI license.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migration prompts: https://blindpay.com/prompts
- BVNK: https://www.bvnk.com

---

Source: https://blindpay.com/compare/circle

# BlindPay vs Circle

Stablecoin infrastructure is more than issuance. BlindPay completes the payment: USDC and USDT in, local currency out over Pix, SPEI, ACH, or SWIFT, compliance included.

BlindPay is a stablecoin API that converts USDC and USDT to local currency and pays out over Pix, SPEI, ACH, and SWIFT with compliance built in. Circle is the issuer of the USDC and EURC stablecoins and runs a developer platform for wallets, cross-chain transfers, and the Circle Payments Network.

## BlindPay and Circle at a glance
| Capability | BlindPay | Circle |
| --- | --- | --- |
| Focus | Stablecoin-in, local-currency-out payments API | Issuer of USDC and EURC, plus a developer platform |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | On-chain transfers; CPN fiat delivery via partner banks, local rails not named on the pages reviewed |
| Pay-in / collections | Branded US and local virtual accounts, deposits auto-convert to stablecoin | Circle Mint bank wires for institutional and consumer-app mint and redeem |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries | USDC, EURC, USD; local fiat via CPN partners, not itemized on the pages reviewed |
| Custody model | Non-custodial payment processor, funds stay under the business's control | Issuer custody for USDC/EURC mint and redeem; wallets offer self-custody options |
| Compliance scope | KYC, KYB, sanctions, and travel rule handled inside the API | Money transmitter and BitLicense holder; CPN vets each participant's licensing |
| Pricing model | Published plans (Basic, Business, Enterprise) with usage-based, per-transaction fees and transparent FX, no pre-funding | Not published on pages reviewed; Circle Mint and CPN access need a sales conversation |
| Settlement tracking | Per-rail UETR, IMAD, or reference; SWIFT maps to MT103 field 70 | Not detailed for CPN payout confirmations on the pages reviewed; confirm on their site |

**BlindPay is the better fit when:** BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI who need KYC, KYB, and sanctions screening handled inside the API.

**Where Circle fits:** Circle fits a bank or PSP joining the Circle Payments Network, or a team that needs issuer-level USDC or EURC access. Issuance is a job BlindPay does not do; the payout that follows is.

BlindPay and Circle sit at different layers, and for the payout layer BlindPay is the direct choice: it turns USDC or USDT into local currency over eleven named rails with a published settlement window each, runs KYC in about 60 seconds inside the same call, publishes its pricing, and never holds the business's funds. Circle issues USDC and EURC and runs a payments network that banks and PSPs join; it does not name a Pix or SPEI rail on its public pages, and its pricing page routes to sales. Most teams keep Circle as the issuer and add BlindPay to complete the payment.

## Which should you choose, BlindPay or Circle?

Choose BlindPay to pay a bank account in local currency from USDC or USDT: named rails, compliance in the call, published pricing, non-custodial. Choose Circle to mint or redeem USDC or EURC, join the Circle Payments Network as an institution, or build on Circle Wallets or Arc. These are not alternatives for the same job, so the usual answer is both: Circle issues, BlindPay pays out.

## What is Circle?

[Circle](https://www.circle.com) is the issuer of the USDC and EURC stablecoins, and it runs a developer platform for wallets, cross-chain transfers, and institutional issuance. Circle Mint lets institutions mint and redeem USDC and EURC directly. Circle states USDC is issued natively on dozens of blockchain networks, with Circle's own site citing both 35 and 37 as of mid 2026, including Ethereum, Solana, Polygon, Arbitrum, OP Mainnet, Avalanche, and Base. Circle also runs the Circle Payments Network (CPN), which connects banks, payment service providers, and licensed virtual asset service providers so they can settle cross-border payments in USDC or EURC. Local fiat is delivered by partner Originating and Beneficiary Financial Institutions. Circle's developer stack adds programmable wallets in developer-controlled, user-controlled, and modular forms, with passkey, email, social, or PIN sign-in, plus a Compliance Engine for AML and CTF transaction screening. It also includes CCTP for moving USDC across chains, and Arc, Circle's own layer-1 blockchain. Circle's target customer is a financial institution joining CPN, or a developer building a crypto-native or agentic application on USDC or EURC. That is a different buyer than a business that wants a direct API to pay a local bank account.

## What is BlindPay?

BlindPay is a stablecoin API for global payments: it converts USDC and USDT into local fiat and pays out over local rails including Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO). Compliance is built into the same API call. BlindPay describes itself as global payment infrastructure: one API for stablecoins, [local payment rails](/global-payments), virtual accounts, and compliance. A single API serves fintechs, payment service providers, remittance companies, payroll platforms, and import and export businesses. Businesses can also issue branded US and local [virtual accounts](/virtual-accounts) through BlindPay; deposits into those accounts convert automatically into stablecoins. Cross-border wires run as [SWIFT payments and collections on behalf of (POBO/COBO)](/pobo-cobo-swift), with UETR tracking and MT103 confirmations on every transfer. BlindPay is backed by Y Combinator (W25) and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. Operators get a dashboard and a native iOS app alongside the API. It is non-custodial: funds stay under the business's control throughout the flow, and a failed transfer refunds automatically. BlindPay does not mint or redeem the underlying stablecoin; it does everything that happens after.

## How do BlindPay and Circle compare?

BlindPay completes stablecoin-to-local-currency payouts over named rails; Circle issues the stablecoin and runs a payments network institutions join. BlindPay names specific payout rails and settlement mechanics for named corridors. Pix and boleto cover Brazil, SPEI covers Mexico, and ACH, RTP, and domestic wire cover the United States. PSE serves Colombia, Transfers 3.0 serves Argentina, and SEPA covers 40 SEPA-zone countries, with SWIFT payouts running as POBO/COBO and carrying a UETR for tracking. Circle's own pages describe CPN payout as fiat delivered by partner Originating and Beneficiary Financial Institutions. The pages reviewed do not name which local rails, such as Pix or SPEI, any given partner supports in a given corridor, so a team cannot verify a Pix payout on Circle's public pages before writing code. On BlindPay it can, down to the cut-off time.

Custody and role in the stack pull in different directions too. BlindPay operates as a non-custodial payment processor: it does not mint or redeem the stablecoin, and funds return automatically to the originating wallet if a transfer fails. Circle sits one layer up, holding issuer custody for USDC and EURC minting and redemption through Circle Mint. USDC reserves are held via the Circle Reserve Fund, managed by BlackRock and custodied at Bank of New York Mellon; EURC reserves are held separately at regulated financial institutions in the EEA. Circle Wallets separately offers developer-controlled, user-controlled, or modular self-custody for end users. Circle's legal terms state that it is not a Qualified Custodian or a trust company and that it operates as a licensed money transmitter.

[Compliance](/compliance) follows the same split. BlindPay folds KYC, KYB, sanctions screening, and travel rule compliance into the payout and payin API itself. Automated individual KYC runs in about 60 seconds, and manual KYB review takes 3 hours to 1 business day. Circle's compliance posture is built for institutions joining its network: money transmitter licenses across many US states plus a New York BitLicense, and CPN vets each participating institution's own licensing before it can settle. That is compliance for the network member, not for the business's payees. The payee-level checks a payout needs, KYC on the recipient, sanctions screening, travel rule data, are what BlindPay runs inside the call.

Pricing and integration reflect two different buyer motions. BlindPay publishes plans on [/pricing](/pricing): Basic, Business, and Enterprise, with usage-based, per-transaction fees, transparent FX, and no pre-funding required. It also ships SDKs in five languages, a downloadable OpenAPI spec, a CLI, and an MCP server for building directly against the API. Circle's pricing page functions as a partnership inquiry form rather than a rate card, at least on the pages reviewed. That fits Circle's institutional sales motion, where CPN and Circle Mint access get negotiated per partner rather than chosen off a self-serve plan.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI who need compliance handled inside the same API call. A remittance company converting USDC to Brazilian real for thousands of recipients fits this job directly. So does a payroll platform paying contractors in Mexico over SPEI, or a marketplace collecting through virtual accounts and paying out over ACH or SWIFT. Each case follows the same steps: fund a payout in USDC or USDT, get a quote, execute before it expires, and track settlement down to a UETR or bank reference. See the full [corridor and rail coverage](/global-payments) for specifics. BlindPay is not a stablecoin issuer, so a team that specifically needs to mint or redeem USDC or EURC at issuer level should look to Circle for that layer. Pair it with BlindPay for the payout.

## Where does Circle fit?

Circle fits a bank, payment service provider, or licensed VASP joining the Circle Payments Network directly, or a team that needs to mint or redeem USDC or EURC at issuer level, run contracts on Circle's own layer-1 chain, or embed Circle Wallets. Issuance is a job BlindPay does not do by design. Everything after issuance, turning that USDC into a tracked local-currency payout with compliance included and pricing published, is BlindPay's job, and it is the part a business's customers actually feel.

## Can you use BlindPay and Circle together?

Yes, and this is a common pairing rather than a substitution. A business can hold or receive USDC issued and reserved by Circle, then send it through BlindPay to convert to local currency and pay out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT. KYC, KYB, and sanctions screening happen inside BlindPay's API. Circle covers the issuance and reserve layer; BlindPay covers the last-mile payout and the compliance around it. Teams already minting or holding USDC through Circle Mint do not need to change that relationship to add BlindPay for payouts into corridors such as [USDC to BRL](/usdc-to-brl) or [USDC to MXN](/usdc-to-mxn).

## Methodology and sources

This comparison is built from BlindPay's own docs, changelogs, and published pricing as of September 2026, and from Circle's public pages: circle.com, circle.com/pricing, developers.circle.com, circle.com/usdc, circle.com/legal, and circle.com/cpn. Every Circle claim in this page links back to one of those pages. Where Circle does not publish a detail, such as CPN payout rails by corridor or Circle Mint fees, this page says so rather than guessing. It joins BlindPay's broader look at the category in [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026). Spot something out of date, [let us know](/contact).

*This page is general information, not legal, tax, or financial advice. Circle is a trademark of its owner; BlindPay is not affiliated with Circle.*

## BlindPay vs Circle FAQ
### Is BlindPay a replacement for Circle?
For the payout, yes. BlindPay is the layer that turns USDC or USDT into a local-currency payout over Pix, SPEI, ACH, or SWIFT, with compliance in the same call and published pricing, which Circle's issuer platform does not do directly. BlindPay does not mint or redeem USDC or EURC, so Circle stays in place as the issuer while BlindPay completes the payment.

### Can I use BlindPay and Circle together?
Yes. Circle and BlindPay sit at different layers, so most teams run them together rather than picking one. Keep issuing or holding USDC through Circle, then route it to BlindPay when it needs to land as Pix, SPEI, ACH, RTP, SEPA, or SWIFT in someone's account.

### Which is cheaper, BlindPay or Circle?
BlindPay publishes plans (Basic, Business, Enterprise) on /pricing with usage-based, per-transaction fees and transparent FX, no pre-funding, so the payout leg can be priced before you sign up. Circle's public pricing page routes to a sales conversation rather than listing rates. For your actual corridor, compare the delivered amount rather than a headline rate.

### Does BlindPay support the same blockchain networks as USDC?
BlindPay settles stablecoins on eight networks: Ethereum, Polygon, Base, Arbitrum, Tempo, Stellar, Solana, and Tron. USDC issued on any of those flows straight into a BlindPay payout; USDT covers Tron, where USDC is not deployed. Circle publishes its full USDC network list on its site.

### Does BlindPay support EURC, or only USDC and USDT?
A team paying out in EUR lands funds over SEPA across 40 countries on BlindPay by converting from USDC or USDT, with the FX quoted before execution. EURC itself is not an input today; Circle remains the place to mint or redeem it.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migration prompts: https://blindpay.com/prompts
- Circle: https://www.circle.com

---

Source: https://blindpay.com/compare/conduit

# BlindPay vs Conduit

Stablecoin payouts are just the start. BlindPay pairs USDC and USDT conversion with local rails, virtual accounts, and compliance built in.

BlindPay is a stablecoin API that converts USDC and USDT into local currency and pays out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT, with compliance handled inside the API. Conduit is a fintech platform providing a single API and web app for B2B cross-border money movement, combining traditional fiat rails, virtual accounts, and stablecoin conversion.

## BlindPay and Conduit at a glance
| Capability | BlindPay | Conduit |
| --- | --- | --- |
| Focus | Stablecoin-funded local payouts and virtual accounts | B2B treasury and cross-border money movement, API plus dashboard |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | Fedwire, FedNow, RTP, ACH, SWIFT, SEPA Instant, Pix, SPEI, TED, RTGS; no PSE or Transfers 3.0 on the pages reviewed |
| Funding asset | USDC or USDT in, local currency out | Fiat or stablecoin, per its stablecoin-to-fiat and sandwich payout products |
| Virtual accounts | Yes, US and local currencies, deposits auto-convert to stablecoin | Yes, named multicurrency pay-in and pay-out account numbers |
| Custody model | Non-custodial payment processor, funds return to the originating wallet on failure | Partner-bank custody for fiat balances, non-custodial wallets as a separate product |
| Compliance scope | KYC, KYB, sanctions screening, and travel rule handled in the API, reviewed once at onboarding | KYB, AML, and transaction monitoring, plus a per-payment review requiring a payment reason and supporting documents |
| Pricing model | Published plans (Basic, Business, Enterprise), usage-based per-transaction fees, no pre-funding | Volume-based, unpublished, minimum transaction size applies, confirm on their site |
| Settlement tracking | UETR on every SWIFT payout, plus MT103 confirmations via API and webhooks | Payment Tracker in its dashboard, docs cite MT103 and IMAD/OMAD |

**BlindPay is the better fit when:** BlindPay is the better fit for teams sending stablecoin-funded payouts into Brazil or Mexico who want published pricing and low, published per-rail minimums.

**Where Conduit fits:** Conduit fits treasury teams moving large-ticket fiat wires above its stated transaction minimum, with FedNow and UK RTGS on its rail list. For stablecoin-funded payouts of any size, BlindPay is the direct tool.

For a stablecoin-funded payout, BlindPay is the direct choice: quote, execute, and compliance in the same API call, eleven named rails with a published settlement window each, per-rail minimums instead of a platform-wide floor, published pricing with no pre-funding, and a dashboard and native iOS app for the finance team. Conduit starts from fiat wires, sets a minimum transaction size, prices on request, and reviews each payment against a payment reason and supporting documents. That makes Conduit a fit for large-ticket treasury wires and BlindPay the fit for everything funded in stablecoins.

## Which should you choose, BlindPay or Conduit?

Choose BlindPay when payouts are funded in USDC or USDT, when ticket sizes vary or fall below Conduit's minimum, or when you want compliance reviewed once at onboarding rather than on every transfer. Choose Conduit when the job is large fiat wires over Fedwire, FedNow, or UK RTGS that clear its minimum comfortably. Teams with both flows route by funding asset: stablecoin-funded payouts through BlindPay, large fiat wires through Conduit.

## What is Conduit?

Conduit is a fintech platform that provides a single API and a web app for B2B cross-border money movement. It combines traditional fiat rails such as Fedwire, FedNow, RTP, ACH, SWIFT, and SEPA Instant with local rails in Brazil, Mexico, and the UK, alongside stablecoin conversion and settlement. Conduit names accounts payable, remote payroll, and treasury and cashflow management as its core use cases, aimed at B2B2B fintechs and payment service providers, treasury and finance teams, and enterprises and emerging market businesses.

Conduit's own pages describe custody two ways: fiat virtual-account balances sit with partner banks, and the site states around 20 regulated banking partners; confirm the current count on their site. A separate wallet product is described as non-custodial, signed by passkey or API key. The two descriptions come from different pages; confirm on their site which flows use which custody model. Conduit states a minimum transaction size, with pricing published on request. Compliance is handled by the platform: KYB, AML, transaction monitoring, and a per-payment review that requires a valid payment reason and supporting documentation such as an invoice, contract, or purchase order.

## What is BlindPay?

BlindPay is a stablecoin API for global payments: it converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT, staying compliant through one API. The homepage describes it as infrastructure orchestrating stablecoins, local payment rails, virtual accounts, and compliance in one place, backed by Y Combinator (W25), and it moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries.

A single API serves fintechs, PSPs, remittance businesses, payroll platforms, and import and export operators. Payouts convert stablecoins to local fiat over country-specific rails: Pix, TED, and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH, RTP, Domestic Wire, and SWIFT in the United States. SEPA covers 40 SEPA-zone countries. Virtual accounts let a business issue branded US and local bank accounts where deposits auto-convert into stablecoin wallets, covering the pay-in direction. Cross-border wires on BlindPay run as SWIFT payments and collections on behalf of, POBO and COBO, with UETR tracking and MT103 confirmations on every transfer. BlindPay describes itself as a non-custodial payment processor: funds stay under the customer's control throughout, and if a transaction fails, funds return automatically to the originating wallet. Operators get a dashboard and a native iOS app alongside the API, and developers get five official SDKs, an OpenAPI spec, a CLI, and an MCP server.

## How do BlindPay and Conduit compare?

BlindPay is the direct path for a stablecoin-funded payout, with quote, execute, and compliance in one call, per-rail minimums, and published pricing; Conduit starts from fiat wires, applies a per-payment document review, and sets a platform-wide transaction minimum. BlindPay's flow is stablecoin in, local currency out: a business holds USDC or USDT and BlindPay quotes the conversion and delivers it over Pix, SPEI, ACH, or SWIFT. Conduit's flow starts from fiat, spanning rails like Fedwire and SEPA Instant, with a stablecoin-to-fiat payout product alongside. It also offers a "sandwich" payout that routes fiat to fiat through blockchain infrastructure without the customer touching crypto directly. A team that holds stablecoins has a direct path through BlindPay: one quote, one execute, compliance in the same call, and a dashboard and native iOS app for the finance staff who are not writing code. Conduit's per-payment compliance review, which asks for a payment reason and supporting documents such as an invoice on each transfer, adds a step to every payout; BlindPay reviews the business and its payees once at onboarding, so the thousandth payout is as fast as the first.

Rail coverage overlaps in the corridors that matter most to both companies, Pix and SPEI, but diverges elsewhere. BlindPay adds RTP and SEPA across 40 SEPA-zone countries, plus settlement on Ethereum, Polygon, Base, Arbitrum, Tempo, Stellar, Solana, and Tron. Conduit lists FedNow, RTGS in the UK, and on-chain transfers on Ethereum, Tron, and Polygon as named rails. BlindPay covers ARS and COP; Conduit's pages do not name either among listed currencies on the pages reviewed.

Cost structure differs in structure, not just numbers. BlindPay runs on published plans, Basic, Business, and Enterprise, with usage-based, per-transaction fees and transparent FX, no pre-funding required, and per-rail minimums published in the docs, so smaller payouts are not gated by a platform-wide floor. Conduit states a minimum transaction size and describes its own pricing only as competitive and volume-tiered, without a public rate card; confirm on their site. That difference matters most for smaller or long-tail payouts. A payroll run or a string of vendor payments under Conduit's minimum is worth checking against BlindPay's published per-transaction rates, since BlindPay's minimums are set per rail rather than per platform.

Compliance is handled by both platforms rather than left to the customer, but the mechanics differ. BlindPay names its KYC, KYB, sanctions, and travel rule coverage explicitly, with automated Standard KYC completing in about 60 seconds and manual Enhanced KYC, and KYB, both taking 3 hours to 1 business day. Conduit describes a per-payment compliance review, a valid payment reason, and supporting documentation like an invoice or purchase order, plus a beneficiary-approval step, per its FAQ. BlindPay's review happens once at onboarding, so a verified payee can be paid again without new paperwork. Conduit's FAQ describes review layered onto individual payments, which means a document request can sit between a finance team and each transfer.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin-funded payouts into Latin America over Pix or SPEI who need compliance handled for them and want published pricing rather than a volume quote. It also fits teams whose payout sizes fall below Conduit's stated minimum, since BlindPay publishes per-rail minimums instead of a platform-wide floor, and teams that want settlement tracking built into the API itself. BlindPay exposes a UETR on every SWIFT payout, plus MT103 confirmations and provider references through webhooks, so status lives in your own system rather than a separate dashboard.

## Where does Conduit fit?

Conduit fits treasury and finance teams pushing large-ticket fiat wires that clear its stated minimum comfortably, and corridors such as the UK over RTGS that BlindPay does not serve today. For any stablecoin-funded payout, and for payouts of any size into the Americas or the SEPA zone, BlindPay is the more direct tool: a named rail per country, per-rail minimums instead of a platform floor, compliance reviewed once, and a price you can read before you sign up.

## Can you use BlindPay and Conduit together?

Yes. A common pattern is running BlindPay for stablecoin-funded local payouts in corridors like Pix and SPEI, while keeping Conduit for large-ticket wire transfers or corridors above its transaction minimum. Both expose a quote-then-execute API model, so a payments layer can route by corridor, ticket size, or funding asset without forcing a single-vendor choice. Most B2B payment stacks already run more than one provider for exactly this reason.

## How do you migrate from Conduit to BlindPay?

Start with a corridor-by-corridor cutover rather than a full switch on day one. First, re-KYC your business and every payee on BlindPay: compliance verification does not transfer between providers, so this step has to run before anything else. Second, pull a quote through the BlindPay API for a real transaction and confirm the delivered amount before executing, since quotes expire and pricing should be checked against your actual corridor and ticket size. Third, wire up webhooks for payout and payin status, verified through Svix signatures, so your system tracks settlement the same way it does today. Fourth, persist BlindPay's quote, payout, and payin IDs alongside your existing Conduit IDs during the transition window, so nothing gets lost if a transfer is mid-flight when you switch. Fifth, dual-run both providers on one corridor behind a feature flag, watching in-flight settlements clear on the Conduit side before retiring it for that corridor. Repeat corridor by corridor rather than cutting over everything at once.

A ready-to-use migration prompt covering this sequence in detail is available at [/prompts/migrate-from-conduit](/prompts/migrate-from-conduit), built to hand directly to a coding agent alongside your codebase.

## Methodology and sources

This comparison was built from Conduit's own public pages, [conduitpay.com](https://conduitpay.com), its send page, [docs.conduit.financial](https://docs.conduit.financial/), its support FAQ, and its multicurrency virtual accounts post, alongside BlindPay's own documentation and pricing page, as of September 2026. Every Conduit claim above links back to one of those pages. Figures Conduit does not publish on a dedicated page, such as its exact fee percentages or a full country list, are described as unpublished rather than estimated. Confirm on their site if these have since been published. If anything here is out of date, flag it through [/contact](/contact) and we will correct it.

*This page is general information, not legal, tax, or financial advice. Conduit is a trademark of its owner; BlindPay is not affiliated with Conduit.*

## BlindPay vs Conduit FAQ
### Is BlindPay a replacement for Conduit?
Yes. For stablecoin-funded payouts into Brazil, Mexico, Colombia, Argentina, the United States, and the SEPA zone, BlindPay covers the same job with published pricing, per-rail minimums instead of a platform-wide floor, compliance reviewed once at onboarding rather than on every payment, and a dashboard and native iOS app alongside the API. Large-ticket fiat wires above Conduit's minimum are Conduit's home ground; for anything funded in stablecoins, BlindPay is the direct path.

### Can I use BlindPay and Conduit together?
Yes. Route by corridor: BlindPay for Pix and SPEI payouts funded in stablecoins, Conduit for the wire-heavy flows it is built for. Both expose a quote-then-execute API, so one payments layer can hold both behind a routing rule.

### Which is cheaper, BlindPay or Conduit?
BlindPay publishes its pricing tiers at /pricing, with usage-based per-transaction fees, transparent FX, and no pre-funding, so a corridor can be priced before you sign up. Conduit describes its pricing as volume-tiered and available on request, with a minimum transaction size. Then compare the delivered amount, not the headline fee: quote the same amount on both providers and see what actually lands in the recipient's account after FX and fees.

### How long does it take to migrate from Conduit to BlindPay?
Most of the timeline is compliance, not code: re-KYC your business and payees, since verification does not transfer between providers, then wire up webhooks and dual-run both providers on one corridor before cutting over fully. See /prompts/migrate-from-conduit for the full step sequence.

### Does BlindPay support Pix and SPEI, the corridors Conduit lists for Latin America?
Yes. BlindPay pays out over Pix in Brazil and SPEI in Mexico, alongside ACH, RTP, SEPA, and SWIFT (POBO/COBO), with compliance and FX quoted before you commit. See /usdc-to-brl and /usdc-to-mxn for live corridor pricing.

### Can I use BlindPay without holding stablecoins myself as the sender?
BlindPay funds payouts from USDC or USDT, and getting there does not require a separate crypto acquisition step. A payer deposits local fiat into a BlindPay-issued virtual account, it auto-converts into stablecoins, and those fund the payout, so a business that never wants to buy stablecoins on an exchange still runs the whole flow through one integration. See /virtual-accounts for the pay-in side.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migrate from Conduit with a coding agent: https://blindpay.com/prompts/migrate-from-conduit
- Conduit: https://conduitpay.com

---

Source: https://blindpay.com/compare/crossmint

# BlindPay vs Crossmint

BlindPay turns stablecoins into local currency in a bank account; Crossmint gives builders wallets, checkout, and token infrastructure to hold and move them.

BlindPay is a stablecoin API that converts USDC and USDT to local currency and pays it out over Pix, SPEI, ACH, SEPA, and SWIFT, with compliance built into the same API. Crossmint is a stablecoin and wallet infrastructure platform offering embedded and treasury wallets, stablecoin orchestration, fiat onramp and offramp, token checkout, agentic card payments, and tokenization APIs.

## BlindPay and Crossmint at a glance
| Capability | BlindPay | Crossmint |
| --- | --- | --- |
| Focus | Stablecoin-in, local-currency-out payouts and collections | Wallet infrastructure, stablecoin orchestration, token checkout |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | ACH, RTP, SEPA, SPEI, Pix, plus mobile money and cash pickup; no SWIFT, PSE, or Transfers 3.0 on the pages reviewed |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries | USDC, USDT to USD, EUR, and other fiat currencies, confirm list on their site |
| Custody model | Non-custodial: funds stay under the business's control, automatic refund on failure | Custodial and non-custodial embedded wallets through one API, chosen per user |
| Compliance scope | KYC, KYB, sanctions screening, and travel rule handled in the API | KYC/KYB, AML wallet screening, sanctions, travel rule integrated in offramp flow |
| Pricing model | Published Basic, Business, Enterprise plans; usage-based, per-transaction fees, transparent FX | Free tier, then per-transaction with volume tiering; see their pricing page |
| Developer experience | REST API, 5 official SDKs, OpenAPI spec, MCP server, CLI, agent skills, dashboard, iOS app | REST API and SDKs; see their docs for current onboarding steps |
| Settlement tracking | UETR and MT103 confirmations on every SWIFT payout, per-rail reference on every transfer | Not detailed on the offramp pages reviewed; confirm on their site |
| Best for | Paying out stablecoins as local currency across the Americas and Europe | Embedded wallets, token checkout, and agentic card payments |

**BlindPay is the better fit when:** BlindPay is the better fit for teams paying out stablecoins as local currency over Pix, SPEI, ACH, or SEPA with compliance handled for them.

**Where Crossmint fits:** Crossmint fits teams that need embedded wallets, token checkout, or tokenization APIs for consumer or agentic products, jobs BlindPay does not do. For paying a bank account in local currency, BlindPay is the direct tool.

For paying a bank account in local currency from stablecoins, BlindPay is the deeper tool: every corridor has a named rail, a published settlement window, and a reference for tracking, SWIFT payouts carry a UETR and MT103, KYC runs in about 60 seconds inside the same call, and pricing is on a public page. Crossmint is a wallet, checkout, and tokenization platform whose offramp is one feature among many, and it does not name SWIFT, PSE, or Transfers 3.0 on the pages reviewed. A product that hands users a wallet uses Crossmint for that and BlindPay for the payout.

## Which should you choose, BlindPay or Crossmint?

Choose BlindPay when the job is turning stablecoins into reais, pesos, dollars, or euros in a bank account with a paper trail, compliance in the call, and published pricing. Choose Crossmint when the job is giving end users an embedded wallet, token checkout, minting, or agentic card payments. When the value in a Crossmint wallet needs to leave the crypto rail, BlindPay is the payout.

## What is Crossmint?

Crossmint is a stablecoin and wallet infrastructure platform for enterprises and developers. It offers embedded wallets and treasury wallets, custodial or non-custodial through one API, alongside stablecoin orchestration, fiat onramp and offramp, token checkout, agentic card payments for AI systems, and tokenization APIs for minting and metadata. Its offramp product names ACH, RTP, SEPA, SPEI, and Pix as payout rails, plus mobile money and cash pickup at a large number of physical locations across many countries. Funding runs on USDC, USDT, USD, EUR, and other fiat currencies, and Crossmint states support for 50 or more blockchain networks, including Ethereum, Solana, Polygon, Base, and Avalanche. Its customers span fintechs, remittance and money-transfer companies, neobanks, payroll platforms, treasury teams, and AI or agentic-finance platforms. Crossmint states its European entity is CNMV-authorized under MiCA and registered with the Bank of Spain under PSD2, its US entity is FinCEN MSB-registered, and its Canadian entity is FINTRAC MSB-registered. It also states automated KYC and KYB, AML wallet screening, sanctions screening, and travel rule support built into the API. Read Crossmint's own [product pages](https://www.crossmint.com) for current specifics.

## What is BlindPay?

BlindPay is a stablecoin API for global payments. In one sentence: BlindPay converts USDC and USDT to local fiat and pays it out over local rails such as Pix, SPEI, ACH, SEPA, and SWIFT (POBO/COBO), with compliance built into the same API. It is backed by Y Combinator, W25 batch, and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. The core products are [payouts](/global-payments), converting stablecoins to local fiat over country-specific rails, and [payins and virtual accounts](/virtual-accounts), branded US and local bank accounts that auto-convert deposits into stablecoin wallets. A third product, payables, pays invoices, boletos, Pix copia e cola codes, utility bills, and tax slips directly from USDC or USDT. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), with UETR tracking and MT103 confirmations on every transfer. BlindPay is non-custodial for the business: funds stay under the customer's control throughout the process, and if a transaction fails, they return automatically to the originating wallet. Compliance, KYC, KYB, sanctions screening, and travel rule, runs inside the same API calls that move money, described in full on the [compliance page](/compliance).

## How do BlindPay and Crossmint compare?

BlindPay is the deeper payout tool: every corridor has a named rail, a published settlement window, and UETR or MT103 tracking, while Crossmint's offramp is one feature inside a wallet and checkout platform. BlindPay covers Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with a [global payments](/global-payments) page and corridor pages, such as [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn), showing each corridor's settlement window. Crossmint's offramp product also names ACH, RTP, SEPA, SPEI, and Pix, alongside mobile money and cash pickup across a large number of countries. The difference is scope and depth: payouts are BlindPay's whole product, so every corridor gets a dedicated settlement window and a paper trail. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), with UETR tracking and MT103 confirmations on every transfer. Crossmint's offramps sit inside a much broader platform of wallets, checkout, and tokenization, so payouts are one capability among many rather than the whole product. A business whose main job is paying stablecoins out as tracked local currency gets a dedicated, deeper tool in BlindPay; a business that also needs to hand its own users a wallet pairs Crossmint's wallets with BlindPay's payouts.

Custody works differently too. BlindPay is non-custodial for the business: stablecoins move directly from the customer's own wallet, and if a transfer fails, funds return automatically to the originating wallet without BlindPay taking custody in between. Crossmint's embedded and treasury wallets support both custodial and non-custodial modes through one API, so an end user can hold their own keys or let Crossmint's infrastructure manage them for a simpler experience. For the business doing the paying, BlindPay's model means no intermediary custody, no provider-held balance to reconcile, and an automatic refund on failure, with nothing to configure. Crossmint's per-user choice matters for the end holder of a wallet, which is a different question from how the business's own funds move.

Both providers build KYC, KYB, sanctions screening, and travel rule support into their APIs, described on BlindPay's side at [/compliance](/compliance). Crossmint publishes MiCA, PSD2, FinCEN, and FINTRAC registrations for its regional entities. BlindPay is registered with FinCEN as a money services business, with the full picture on [/compliance](/compliance). If licensing scope in a specific state or country is a deciding factor, read what each provider publishes directly rather than assuming either one covers you.

On cost and integration, BlindPay publishes three subscription tiers, Basic, Business, and Enterprise, on its [pricing](/pricing) page, with usage-based, per-transaction fees and transparent FX, and no pre-funding required. Crossmint publishes a free tier for wallets and tokenization, then per-transaction fees with volume-based tiering; see their pricing page for current numbers. Both expose a REST API with official SDKs; BlindPay adds a CLI, an MCP server, Agent Skills built for coding agents, a dashboard, and a native iOS app for operators. Crossmint publishes its own onboarding timeline on its docs site. A broader look at how ten stablecoin providers stack up, including both of these, is in [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026).

## When is BlindPay the better fit?

BlindPay is the better fit for teams that hold USDC or USDT and need to pay people or businesses in local currency, with compliance handled inside the same API call. That means Pix in Brazil, SPEI in Mexico, ACH or RTP in the US, SEPA across the euro area, or SWIFT (POBO/COBO) elsewhere. It fits payroll platforms, remittance companies, PSPs, and import or export businesses that already treat stablecoins as working capital. Those teams need a named, tracked bank payout on the other end, complete with UETR references and MT103 confirmations on wire transfers. If the requirement reads "convert stablecoins to local currency and land it in a bank account with a paper trail," that is the exact problem BlindPay is built for. [Virtual accounts](/virtual-accounts) cover the collection side, converting incoming deposits into stablecoins automatically. Coverage by country and currency is listed on [global payments](/global-payments).

## Where does Crossmint fit?

Crossmint fits consumer-facing or agentic products that need an embedded or treasury wallet, token checkout, tokenization and minting, or card-based agentic payments, where users hold or spend stablecoins directly inside an app. Those are jobs BlindPay does not do by design. Once value in any of those wallets needs to become reais, pesos, or dollars in a bank account, BlindPay is the deeper tool for that leg: a named rail per country, a settlement window per corridor, tracking on every transfer, and pricing you can read before you sign up.

## Can you use BlindPay and Crossmint together?

Yes, and for many stacks that is the practical setup. BlindPay is built to convert stablecoins into a named local bank account over Pix, SPEI, ACH, or SEPA once they are ready to leave the crypto rail. Crossmint is built to hold and move those same stablecoins beforehand, inside a wallet or checkout flow. A payroll or marketplace product might use Crossmint's embedded wallets to let a user or agent hold and spend USDC. It then calls BlindPay when that value needs to leave the crypto rail entirely and land as reais, pesos, or dollars in a real bank account. The two sit at different points in the flow, local-currency payout infrastructure and wallet infrastructure, so most teams that need both pick one of each rather than forcing one provider to do both jobs.

## How do you migrate from Crossmint to BlindPay?

Migrating a payout flow off Crossmint and onto BlindPay follows the same pattern as any provider switch: re-verify who you are paying, quote before you execute, track status by webhook, and cut over gradually.

1. Re-KYC your business and each payee. Compliance does not transfer between providers, so create BlindPay customers with KYC or KYB before moving real volume, driven by customer status webhooks.
2. Get a quote before executing. BlindPay's payout flow is explicit: request a payout quote, then execute the payout before the quote expires, rather than relying on an implicit rate.
3. Wire up webhooks for status. Subscribe to Svix-verified payout and payin webhooks rather than polling, and persist BlindPay's payout and payin IDs alongside any legacy Crossmint identifiers during the transition.
4. Dual-run both providers. Cut over corridor by corridor behind a feature flag, keep Crossmint live for in-flight transactions, and retire it only after settlements on the new path clear cleanly.

Start against a BlindPay development instance, which uses BlindPay's own test stablecoin, USDB, on testnets, before moving to production. The full step-by-step prompt for this migration, including the concept mapping and a written migration report, is at [migrate from Crossmint to BlindPay](/prompts/migrate-from-crossmint); the [introduction](/docs/introduction) covers the API itself.

## Methodology and sources

This comparison is built from BlindPay's own published documentation, pricing, and changelog, and from Crossmint's public site and docs, current as of September 2026: [crossmint.com](https://www.crossmint.com), crossmint.com/products/offramps, crossmint.com/products/wallets, crossmint.com/pricing, and docs.crossmint.com. Every Crossmint claim traces back to the page it came from; where Crossmint's own pages disagreed, that is stated directly rather than guessed. Country-coverage figures range from 100+ to 170+ depending on the product page, and chain-support figures range from 40+ on the offramps page to 50+ elsewhere on the site. Flag anything that looks out of date via [contact](/contact) and we will correct it.

*This page is general information, not legal, tax, or financial advice. Crossmint is a trademark of its owner; BlindPay is not affiliated with Crossmint.*

## BlindPay vs Crossmint FAQ
### Is BlindPay a replacement for Crossmint?
For the payout, yes, and that is the part with the paper trail. BlindPay converts stablecoins to local currency and lands them in a bank account over Pix, SPEI, ACH, SEPA, or SWIFT, with UETR and MT103 tracking, compliance in the call, and published pricing. Crossmint's embedded wallets, token checkout, and tokenization APIs are jobs BlindPay does not do, so a team that needs those keeps Crossmint for them and uses BlindPay for the payout.

### Can I use BlindPay and Crossmint together?
Yes. BlindPay takes stablecoins the rest of the way into a named local bank account over Pix, SPEI, ACH, or SEPA; Crossmint holds and moves those stablecoins inside a wallet or checkout flow before that point. Most teams that need both run one of each.

### Which is cheaper, BlindPay or Crossmint?
BlindPay publishes its subscription tiers on the pricing page, with usage-based per-transaction fees, transparent FX, and no pre-funding, so a corridor can be priced before you sign up. Crossmint publishes a free tier for wallets and per-transaction fees with volume tiering; confirm its current schedule on its pricing page. Then quote a fixed amount, say 1,000 USDC, through both and compare the amount actually delivered after fees and FX.

### How long does it take to migrate from Crossmint to BlindPay?
A payout-focused migration typically takes days to a few weeks, and compliance onboarding, not engineering, is usually the long pole. The path is re-KYC your payees on BlindPay, quote and execute payouts against the new API, verify status over Svix-signed webhooks, then dual-run both providers before fully cutting over.

### Is BlindPay custodial or non-custodial?
BlindPay is a non-custodial payment processor: funds stay under the business's control, and failed transactions return automatically. Crossmint offers custodial and non-custodial embedded wallets through one API, so a team can pick per user.

### Does BlindPay offer embedded wallets like Crossmint?
BlindPay is a payment processor, not a consumer wallet product. A business brings its own wallet or uses a BlindPay-managed wallet where offered, and BlindPay handles the payout from there. If your product needs to hand end users a wallet, Crossmint is built for that; when the value in that wallet needs to leave the crypto rail and land in a bank account, BlindPay is the tool.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migrate from Crossmint with a coding agent: https://blindpay.com/prompts/migrate-from-crossmint
- Crossmint: https://www.crossmint.com

---

Source: https://blindpay.com/compare/fern

# BlindPay vs Fern

Both move stablecoins across borders. BlindPay pays out local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT with compliance built in.

BlindPay is a stablecoin API that converts USDC and USDT to local fiat and pays out over rails like Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), with compliance built in. Fern is a developer API and business-account platform for moving money across fiat and stablecoin rails, with currency conversion, wallet provisioning, virtual accounts, and white-labeled KYC/KYB.

## BlindPay and Fern at a glance
| Capability | BlindPay | Fern |
| --- | --- | --- |
| Focus | Stablecoin payouts and collections over local rails | Any-to-any currency conversion API and business banking |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | ACH, wire, Pix, SPEI, SEPA, BACS/CHAPS, SWIFT (business accounts only), ~40 local rails; no RTP on the pages reviewed |
| Pay-in / collections | Virtual accounts auto-convert deposits into stablecoins | Virtual accounts in 14 currencies, auto-convert to stablecoins |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries, with a named rail and settlement window per country | USDC, USDT, PYUSD, EURC to 44 fiat currencies across dozens of countries |
| Custody model | Non-custodial: funds stay under the business's control, automatic refund on failure | Gnosis Safe multisig for business accounts; developer wallets Fern-managed, confirm on their site |
| Compliance scope | KYC, KYB, sanctions, travel rule handled in the API | Internal KYC/KYB review, white-labeled forms |
| Pricing model | Published plans (Basic, Business, Enterprise), usage-based per-transaction fees, transparent FX, no pre-funding | Usage-based, but the billing wallet must be pre-funded with USDC |
| Settlement tracking | UETR and MT103 tracking on SWIFT; UETR and IMAD tracking on domestic wire | Not published on the pages reviewed; confirm on their site |

**BlindPay is the better fit when:** BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI who need compliance and SWIFT POBO/COBO tracking handled for them.

**Where Fern fits:** Fern fits teams that need any-to-any conversion into corridors outside the Americas and Europe, such as India or Nigeria. Inside the corridors BlindPay serves, BlindPay names the rail, publishes the price, and tracks every SWIFT payout.

Inside the Americas and the SEPA zone, BlindPay is the deeper choice: a named rail, settlement window, and minimum for every corridor, SWIFT under POBO/COBO with UETR and MT103 tracking on every wire, KYC in about 60 seconds inside the API, and published pricing with no billing wallet to pre-fund. Fern goes wider, listing 44 fiat currencies across dozens of countries, and draws usage fees from a wallet pre-funded with USDC. A team with corridors in India or Nigeria runs Fern for those and BlindPay for the Americas and Europe.

## Which should you choose, BlindPay or Fern?

Choose BlindPay when your payouts land in Brazil, Mexico, Colombia, Argentina, the United States, or the SEPA zone, when you need UETR and MT103 tracking on SWIFT, or when you do not want capital tied up in a pre-funded billing wallet. Choose Fern when your corridors sit outside those markets or your funding asset is PYUSD or EURC. Teams with both route by corridor.

## What is Fern?

Fern is a developer API and business-account platform for moving money across fiat and stablecoin rails. Its core product is the Multiplex API, described by Fern as "battle tested and powering hundreds of millions in transaction volume," which handles any-to-any conversion across supported crypto and fiat currencies. A Wallets API provisions wallets for end users, and a Virtual Accounts API issues named fiat accounts covering 14 currencies for business customers and 3 for individuals. Fern's compliance program runs KYC and KYB review internally, using white-labeled forms an integrator can present under its own brand. On the crypto side, Fern supports USDC, USDT, PYUSD, EURC, and other ERC-20 tokens across six blockchain networks: Arbitrum One, Base, Ethereum, OP Mainnet, Polygon, and Solana. Its "For Businesses" product adds an onchain spending and savings account built on Gnosis Safe multisig wallets, with automated offramping. Fern also lists local payment rails across dozens of countries on its coverage pages, spanning Africa, Asia-Pacific, Europe, the Middle East, and the Americas. It also lists SWIFT payouts for business accounts with a documented minimum, see their docs.

## What is BlindPay?

BlindPay is a stablecoin API for global payments. It converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, ACH, RTP, SEPA, and SWIFT (POBO/COBO), staying compliant through one API. It is backed by Y Combinator (W25) and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. [Payouts](/global-payments) convert stablecoins to local fiat over country-specific rails, and [virtual accounts](/virtual-accounts) let a business issue branded US and local bank accounts where deposits auto-convert into stablecoin wallets. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), with UETR tracking and MT103 confirmations on every transfer, detailed on the [POBO/COBO and SWIFT page](/pobo-cobo-swift). BlindPay describes itself as a non-custodial payment processor: funds stay under the business's control throughout the process, and a failed transaction returns automatically to the originating wallet. Compliance, including KYC, KYB, sanctions screening, and travel rule handling, runs inside the API rather than as a separate integration, with the full program described on the [compliance](/compliance) page. Operators get a dashboard and a native iOS app alongside the API.

## How do BlindPay and Fern compare?

BlindPay goes deeper in the Americas and the SEPA zone, with a named rail, settlement window, and minimum per corridor, no pre-funded billing wallet, and UETR and MT103 tracking on SWIFT; Fern goes wider, listing 44 fiat currencies across dozens of countries. Fern's published coverage spans dozens of countries and 44 fiat currencies, per its coverage docs, with local methods such as India's NEFT/RTGS/IMPS, Nigeria's NIBSS, Singapore's FAST, and Japan's Zengin sitting alongside BRL, MXN, and ARS. BlindPay's rail set goes deeper in the corridors it serves. Pix, TED, and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH, RTP, domestic wire, and SWIFT in the US, and SEPA across 40 SEPA-zone countries, all listed on [global payments](/global-payments). For SWIFT specifically, BlindPay publishes POBO/COBO structure, per-customer named accounts, and UETR/MT103 tracking. Fern's SWIFT payouts page states business-account access with a documented minimum, see their docs, but the same tracking detail was not found on the pages reviewed; confirm on their site.

Pricing differs in shape, not just number. BlindPay publishes plans on its [pricing](/pricing) page, Basic, Business, and Enterprise, with usage-based, per-transaction fees and transparent FX, no pre-funding required. Fern's Builder tier draws usage from a billing wallet pre-funded with USDC, per its docs. Pre-funding ties up working capital before a single payout moves; BlindPay bills usage without it. Compare the delivered amount on your corridor: BlindPay's plan and fee model are published on [pricing](/pricing), and Fern's fees page has its current terms.

The compliance model diverges too. BlindPay runs KYC, KYB, sanctions screening, and travel rule compliance inside the API, with automated KYC Standard checks completing in about 60 seconds and manual KYB review in 3 hours to 1 business day. Fern's compliance team reviews KYC and KYB submitted through white-labeled forms. Fern's docs describe KYB review as document-triggered; check their docs for the current timeline. Specific licenses and sanctions-screening detail were not found on the pages reviewed; confirm on their site.

Both expose REST APIs for developers, but the integration surface and custody posture differ. BlindPay ships SDKs for Node.js, Python, Go, PHP, and Swift, plus an OpenAPI 3.1 spec, Svix-verified webhooks, an MCP server, and a CLI, and states plainly that it is a non-custodial payment processor. Funds stay under the business's control, and a failed transaction returns automatically to the originating wallet. A BlindPay payout is two calls, quote then execute, with compliance in the same flow and a sandbox that mirrors production. Fern's business banking product uses Gnosis Safe multisig wallets, and its docs describe developer-side wallets as Fern-created Safe wallets too; confirm the signing model on their site before you rely on it.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin payouts into Latin America over Pix or SPEI who need compliance and SWIFT POBO/COBO tracking handled for them. That covers fintechs, PSPs, remittance businesses, and payroll or import/export platforms that hold USDC or USDT and need it to land as local currency in corridors such as [USDC to BRL](/usdc-to-brl) or [USDC to MXN](/usdc-to-mxn). Compliance for those flows, KYC, KYB, sanctions screening, and travel rule, is built into the same API call. Teams that need UETR and MT103 confirmations on cross-border wires, or a virtual account that auto-converts incoming Pix or SPEI deposits into stablecoins, get that natively. It comes built in, rather than as a separate integration on top of a general-purpose conversion API.

## Where does Fern fit?

Fern fits teams whose corridors sit outside the Americas and the SEPA zone, such as India, Nigeria, Singapore, or Japan, or that need to convert from PYUSD or EURC rather than USDC and USDT. Inside the corridors BlindPay serves, BlindPay is the deeper tool: a named rail per country with a published settlement window, SWIFT POBO/COBO with UETR and MT103 tracking on every wire, compliance reviewed on a published timeline, and pricing with no billing wallet to pre-fund.

## Can you use BlindPay and Fern together?

Yes, and most B2B payment stacks already run more than one provider. A business could use Fern's broad currency coverage for corridors outside the Americas while routing Latin America payouts, Pix and SPEI collections, and SWIFT POBO/COBO wires through BlindPay. That routing gets the UETR and MT103 tracking those flows need. The two are not mutually exclusive. BlindPay's job is completing the payment once stablecoins need to become local currency in the corridors it covers, and a wider conversion layer can sit alongside it for everything else.

## How do you migrate from Fern to BlindPay?

Migrating a payout integration from Fern to BlindPay follows the same shape as any provider switch: re-verify compliance, quote before you execute, and cut over corridor by corridor rather than all at once.

1. Re-KYC your business and re-verify every payee. Compliance does not transfer between providers, so Fern's KYC/KYB approvals do not carry over; BlindPay customers and their bank accounts need onboarding before the first payout.
2. Get a quote through the API before executing. BlindPay separates payout quotes from execution, so check the delivered amount and confirm it before the quote expires.
3. Wire up webhooks for payout status. BlindPay delivers payout and payin events through Svix, with signature verification on every delivery, replacing whatever status polling or webhook shape Fern used.
4. Dual-run both providers during a cutover window. Route one corridor through BlindPay behind a feature flag, confirm settlement and tracking match expectations, then retire the Fern path for that corridor before moving to the next.

Start from the [introduction docs](/docs/introduction), and use the [migrate from Fern prompt](/prompts/migrate-from-fern) to have a coding agent draft the mapping and cutover plan for your own codebase.

## Methodology and sources

This comparison is built from BlindPay's own docs and pricing pages and from Fern's public site and documentation as of September 2026. Sources include [fernhq.com](https://www.fernhq.com), its developer and business product pages, and its coverage, virtual accounts, and SWIFT payouts docs. Every Fern claim on this page links back to the page it came from, and the wider set of providers is covered in [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026). Rails, pricing, and coverage change often on both sides, so confirm current details on each provider's site, and flag any correction through [contact](/contact).

*This page is general information, not legal, tax, or financial advice. Fern is a trademark of its owner; BlindPay is not affiliated with Fern.*

## BlindPay vs Fern FAQ
### Is BlindPay a replacement for Fern?
For stablecoin payouts into the Americas and the SEPA zone, yes, end to end: named rails, compliance in the API, SWIFT POBO/COBO tracking, published pricing, and no billing wallet to pre-fund. Fern's currency list reaches corridors in Africa and Asia that BlindPay does not serve today; a team with those corridors runs Fern for them and BlindPay for the rest.

### Is BlindPay custodial like Fern's business accounts?
BlindPay is a non-custodial payment processor: funds stay under the business's control and a failed transaction returns automatically to the originating wallet. Fern's business accounts run on Gnosis Safe multisig wallets, and its developer wallets are Fern-managed per its docs; confirm the signing model on their site.

### Which is cheaper, BlindPay or Fern?
BlindPay's plans and per-transaction fee model are on /pricing, with transparent FX and no pre-funding, so nothing sits idle in a billing wallet. Fern's Builder tier draws usage from a wallet pre-funded with USDC; its fees page has current terms. Then quote the same transfer, say 1,000 USDC to Brazilian reais, on both platforms and compare what lands after fees and FX.

### How long does it take to migrate from Fern to BlindPay?
Most of the timeline is compliance review, not engineering: re-KYC for the business and its payees typically takes hours to a few business days under BlindPay's published KYC/KYB SLAs. Engineering work is usually a quote-then-execute integration plus Svix-verified webhooks, which teams can dual-run corridor by corridor behind a feature flag before fully cutting over.

### Does BlindPay support the same currency coverage as Fern?
BlindPay goes deeper in the corridors it serves rather than wider. Fern lists 44 fiat currencies across dozens of countries, per its coverage docs. BlindPay names a rail, a settlement window, and a minimum for every corridor it publishes: Pix, TED, and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH, RTP, wire, and SWIFT in the US, and SEPA across 40 countries. If your corridors sit in the Americas or the SEPA zone, BlindPay covers them with a named rail; outside that set, check the global payments page.

### Does BlindPay support SWIFT payouts like Fern?
Yes. BlindPay's SWIFT payouts run as payments and collections on behalf of (POBO/COBO), with a 100 USD minimum, per-customer named accounts, and UETR plus MT103 tracking on every transfer. Fern also offers SWIFT payouts on business accounts with a documented minimum, see their docs, but the same POBO/COBO structure or UETR/MT103 tracking was not found on the pages reviewed; confirm on their site.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migrate from Fern with a coding agent: https://blindpay.com/prompts/migrate-from-fern
- Fern: https://www.fernhq.com

---

Source: https://blindpay.com/compare/fireblocks

# BlindPay vs Fireblocks

Stablecoin payouts are just the beginning. BlindPay pays local currency into a bank account; Fireblocks secures the assets that get you there.

BlindPay is a stablecoin API that converts USDC and USDT to local currency and pays it out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT (POBO/COBO), with compliance handled inside the API. Fireblocks is an enterprise digital-asset infrastructure platform built around MPC wallet custody, with stablecoin issuance tooling and a network of third-party on/off-ramp partners.

## BlindPay and Fireblocks at a glance
| Capability | BlindPay | Fireblocks |
| --- | --- | --- |
| Focus | Stablecoin-to-fiat payouts and collections over local rails | Digital-asset custody, wallet infrastructure, and treasury security |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | No named local rails on pages reviewed; fiat off-ramp via third-party network partners |
| Pay-in / collections | Virtual accounts convert incoming local bank deposits into stablecoins | Not described on Fireblocks product pages reviewed |
| Custody model | Non-custodial payment processor; funds return to the originating wallet on failure | Primarily self-custody via MPC, with a separate qualified-custody product (Fireblocks Trust Company) |
| Compliance scope | KYC, KYB, sanctions screening, and travel rule handled inside the API | KYT, address screening, and travel rule tooling for a business's own program |
| Pricing model | Published plans (Basic, Business, Enterprise) with usage-based, per-transaction fees and transparent FX, no pre-funding | Custody platform tiers (Essentials, Enterprise) published; payments-product and network-partner conversion fees not published on the pages reviewed |
| Developer experience | REST API, SDKs for Node, Python, Go, PHP, Swift, OpenAPI spec, MCP server, CLI, dashboard, iOS app | Developer docs and SDKs for wallet and custody operations across many chains |
| Settlement tracking | SWIFT and domestic wire carry a UETR; SWIFT references map to MT103 field 70 | MT940 support for reconciliation; local payout tracking not described on Fireblocks product pages reviewed |

**BlindPay is the better fit when:** BlindPay is the better fit for teams that hold stablecoins and need to pay people or businesses in local currency, with compliance handled inside the API.

**Where Fireblocks fits:** Fireblocks fits institutions that need MPC self-custody, treasury security, or stablecoin issuance tooling, jobs BlindPay does not do. BlindPay takes over where custody ends: the payout.

BlindPay completes the payment and Fireblocks secures the keys, so for the payout leg BlindPay is the direct choice: eleven named rails with a published settlement window each, KYC in about 60 seconds inside the same API call, UETR and MT103 tracking on every wire, and one published fee layer. Fireblocks is MPC custody, treasury security, and issuance tooling, with fiat conversion routed through a partner directory that does not name a rail per corridor or publish its fees. Teams that need both hold in Fireblocks and pay out through BlindPay.

## Which should you choose, BlindPay or Fireblocks?

Choose BlindPay when the job is turning stablecoins into reais, pesos, dollars, or euros in a bank account, with compliance in the call and a price on a public page. Choose Fireblocks when the job is holding and securing digital assets with MPC, a qualified custodian relationship, or issuing your own stablecoin. These are different layers, so the usual answer is both: Fireblocks as the vault, BlindPay as the payout.

## What is Fireblocks?

Fireblocks is an enterprise digital-asset infrastructure platform built around MPC wallet custody. Its core products are wallet-as-a-service and embedded wallets secured with multi-party computation, alongside treasury management, qualified custody, cold wallets, and tokenization tooling for issuing and managing a stablecoin's smart-contract lifecycle. Fireblocks also runs a Payments product and a Network for Payments, a directory that lists 11 named on/off-ramp and liquidity partners as of September 2026. That directory sits inside a broader claimed network of more than 2,400 counterparties that businesses can connect to for fiat conversion. It targets fintechs, exchanges, trading firms, banks, payments companies, and Web3 companies, generally enterprise and institutional customers, though its Essentials plan is pitched as everything a team needs to get started. Compliance on the platform runs through native Chainalysis and Elliptic integrations for transaction monitoring, Travel Rule tooling, and a policy engine, built for the business to operate under its own licensing.

## What is BlindPay?

BlindPay is a stablecoin API for [global payments](/global-payments). It converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT (POBO/COBO), staying compliant through one API. BlindPay is backed by Y Combinator (W25) and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. It serves fintechs, PSPs, remittance businesses, payroll platforms, and import/export companies that need to send stablecoin-funded payments and have them land as local currency. Products include payouts, [virtual accounts](/virtual-accounts) that convert incoming local bank deposits into stablecoins, and payables for paying invoices, boletos, Pix copia e cola codes, utility bills, and tax slips directly from USDC or USDT. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), with UETR tracking and MT103 confirmations on every transfer. BlindPay is non-custodial: funds stay under the business's control and a failed transfer refunds automatically. Operators get a dashboard and a native iOS app alongside the API. See the full country and currency list on [global payments](/global-payments).

## How do BlindPay and Fireblocks compare?

BlindPay names Pix, SPEI, ACH, RTP, SEPA, and SWIFT with a settlement window and price for each, while Fireblocks routes fiat conversion through a partner directory without naming a rail per corridor. BlindPay starts with money already in stablecoin form and gets it to a bank account in local currency. Fireblocks starts with the need to hold and move digital assets securely. Fiat conversion runs through its network of third-party partners. That shows up directly in the rails each one names: BlindPay's public pages list Pix, SPEI, ACH, RTP, SEPA, and SWIFT by name, with per-rail settlement times and tracking. On the pages reviewed, Fireblocks' payments and stablecoin-infrastructure pages describe fiat on/off-ramp in aggregate. The description covers a directory of 11 named partners inside a broader claimed network of more than 2,400 counterparties, spanning 100-plus countries and 60-plus currencies, without naming which partner or rail serves which corridor.

Custody is the other clear split. BlindPay describes itself as a non-custodial payment processor: it does not hold customer funds, and if a transfer fails, funds return automatically to the originating wallet. Fireblocks is built the opposite way around: MPC-secured wallets are its long-standing core product, with a separate qualified-custody option through Fireblocks Trust Company, its NYDFS-chartered qualified custodian. That option suits businesses that want a provider to hold assets directly.

Compliance and pricing follow the same divide. BlindPay handles KYC, KYB, sanctions screening, and travel rule checks inside the payout flow, as described on the [compliance](/compliance) page. It also publishes plans, Basic, Business, and Enterprise, with usage-based, per-transaction fees and transparent FX, no pre-funding, on the [pricing](/pricing) page. Fireblocks ships KYT and Travel Rule tooling for the business to run its own compliance program. It also publishes tiered pricing for its wallet and custody platform, including an Essentials tier and custom Enterprise plans, on its own pricing page. Payments-product and network-partner pricing are not published on the pages reviewed.

Where the two overlap is developer experience: both expose REST APIs and SDKs, and both treat compliance tooling as something built into the transaction path rather than bolted on afterward. BlindPay ships official SDKs for Node.js, Python, Go, PHP, and Swift, an OpenAPI 3.1 spec, and an MCP server for agent-driven integrations. Fireblocks ships developer tooling built around wallet and transaction operations across many chains. The difference is what that path leads to: a secured wallet balance for Fireblocks, a completed local-currency payment in a bank account for BlindPay.

Coverage claims are worth reading carefully. Fireblocks states a broad aggregate footprint, 100-plus countries and 60-plus currencies, delivered through its network of partners rather than through rails it operates directly, so actual corridor support, pricing, and tracking depend on which partner is live in a given market. BlindPay states its coverage per rail and per country: a named settlement window, minimum, and tracking field for each one, so a team can verify a specific corridor before building against it and knows who is accountable for the transfer.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin payouts into markets like Brazil or Mexico over Pix or SPEI. These teams need compliance handled for them inside the API, without building or licensing local payment rails themselves. Corridor pages such as [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn) show live rates for exactly this use case. It also fits teams that want to collect local currency and convert it into stablecoins automatically, through virtual accounts, rather than only paying out. If the job is "we hold digital dollars and need people paid in their own currency through one API," that is what BlindPay is built for.

## Where does Fireblocks fit?

Fireblocks fits institutions that need MPC self-custody across many blockchain networks, a qualified custodian relationship, or tooling to issue and manage a stablecoin's own smart-contract lifecycle. Those are jobs BlindPay does not do by design. The moment a balance in a Fireblocks vault needs to become reais, pesos, or dollars in a bank account, BlindPay is the tool for that leg: a named rail per country, compliance in the same call, UETR and MT103 tracking on every wire, and a price you can read before you sign up, instead of a partner directory to work through.

## Can you use BlindPay and Fireblocks together?

Yes, and this is a common pairing. A business can hold and secure its stablecoin treasury in Fireblocks, then send funds to BlindPay to convert to local currency and pay out over Pix, SPEI, ACH, or SWIFT. Fireblocks covers custody and treasury security; BlindPay covers the payout leg, the FX conversion, and the compliance checks that go with delivering money to a bank account. Neither product tries to be the other, so running them side by side is straightforward rather than redundant.

## How do you migrate from Fireblocks to BlindPay?

Most teams keep Fireblocks in place for custody and add BlindPay for the payout leg, so this is an addition more than a full migration. 1) Re-KYC your business and any payees on BlindPay, since compliance does not transfer between providers. BlindPay's automated individual KYC runs in about 60 seconds, with manual review for KYB and higher-risk cases taking three hours to one business day. 2) Get a quote through the BlindPay API before executing a payout, and execute before the quote expires, since quotes are time-limited by default. 3) Wire up Svix-verified webhooks for payout and payin status, using the stable svix-id header to handle redeliveries safely instead of re-processing the same event twice. 4) Dual-run both providers during a cutover window. 4a) Send a subset of payouts through BlindPay behind a feature flag while Fireblocks-funded flows continue as before. 4b) Persist both the legacy payout instruction ID and BlindPay's payout ID side by side. 4c) Expand corridor by corridor once tracking and reconciliation check out. The full prompt for this migration, including the concept mapping between Fireblocks payout instructions and BlindPay's quote-then-execute model, is at [migrate from Fireblocks](/prompts/migrate-from-fireblocks). Start with the [introduction](/docs/introduction) and [POBO/COBO over SWIFT](/pobo-cobo-swift) docs before writing code, and develop against a BlindPay development instance first so nothing touches real funds until the mapping is verified.

## Methodology and sources

This comparison is built from Fireblocks' public pages as of September 2026, including [fireblocks.com](https://www.fireblocks.com), its [pricing page](https://www.fireblocks.com/pricing), [products/payments page](https://www.fireblocks.com/products/payments), [stablecoin infrastructure page](https://www.fireblocks.com/solutions/stablecoin-infrastructure), and [network directory](https://www.fireblocks.com/platforms/fireblocks-network/directory), plus BlindPay's own docs and pricing page. For a wider view of the category, see [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026), which compares ten providers including both BlindPay and Fireblocks. Where a Fireblocks capability was not stated on the pages reviewed, this page says so rather than guessing. Flag anything you believe is out of date at [contact](/contact).

*This page is general information, not legal, tax, or financial advice. Fireblocks is a trademark of its owner; BlindPay is not affiliated with Fireblocks.*

## BlindPay vs Fireblocks FAQ
### Is BlindPay a replacement for Fireblocks?
For the payout, yes; for custody, no, and by design. BlindPay does not offer MPC wallet infrastructure, so Fireblocks stays as the vault. BlindPay is the step after custody: converting stablecoins to local currency and paying it out over Pix, SPEI, ACH, or SWIFT on a named rail, with compliance in the call, tracking on every transfer, and a published price, none of which Fireblocks' payments pages specify.

### Can I use BlindPay and Fireblocks together?
Yes. A common pattern is holding and securing stablecoins in Fireblocks, then sending them to BlindPay to convert to local currency and pay out to a bank account. In practice that means sending stablecoins from a Fireblocks vault to a BlindPay wallet address, then triggering the payout through the API.

### Which is cheaper, BlindPay or Fireblocks?
BlindPay's plans and per-transaction fees are on its pricing page, with transparent FX and no pre-funding, so the payout leg is one published fee layer. Fireblocks prices its custody platform on its own pricing page, and fiat conversion through a network partner adds that partner's fee on top, so a Fireblocks-only payout stack has two fee layers to add up, one of them unpublished. Compare the delivered amount on your actual corridor and volume, not the headline rate.

### How long does it take to migrate from Fireblocks to BlindPay?
Migration here is really an addition: BlindPay takes the payout leg while Fireblocks keeps custody, so no wallet migration is needed. The work is re-onboarding payees on BlindPay, mapping payout instructions to BlindPay quotes and executions, and wiring up webhooks, which typically takes days once compliance review clears.

### Does BlindPay support the corridors Fireblocks reaches through its network partners?
BlindPay operates its own rails directly in the corridors it covers: Pix and TED in Brazil, SPEI in Mexico, PSE in Colombia, Transfers 3.0 in Argentina, ACH, RTP, domestic wire, and SWIFT in the United States, and SEPA across 40 SEPA-zone countries in Europe. Fireblocks reaches a wider claimed footprint through its network of more than 2,400 counterparties, 11 of them named partners as of September 2026; confirm any corridor outside BlindPay's list on Fireblocks' own network directory.

### Can I use BlindPay without holding stablecoins myself?
Yes, through virtual accounts: a payer sends local fiat to a BlindPay-issued account, it auto-converts into a stablecoin wallet, and that balance funds payouts, so neither you nor your customer needs to buy stablecoins on an exchange. Payouts themselves are funded from USDC or USDT, which is what BlindPay converts to local currency.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migrate from Fireblocks with a coding agent: https://blindpay.com/prompts/migrate-from-fireblocks
- Fireblocks: https://www.fireblocks.com

---

Source: https://blindpay.com/compare/sphere

# BlindPay vs Sphere

Stablecoin payouts are the start. BlindPay adds local rails, published pricing, and compliance inside the API, so a Pix or SPEI payout is one call.

BlindPay is a stablecoin API that converts USDC and USDT to local fiat and pays out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT (POBO/COBO), with compliance built into the API. Sphere is an API, dashboard, and OTC desk for converting between fiat and stablecoins and moving funds over bank rails and blockchain networks.

## BlindPay and Sphere at a glance
| Capability | BlindPay | Sphere |
| --- | --- | --- |
| Focus | Stablecoin-in, local currency payout network | Fiat and stablecoin conversion, ramp, and OTC desk |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | ACH, wire, SEPA, Pix, SWIFT (USD off-ramp, June 2026); no SPEI, RTP, PSE, or Transfers 3.0 named on the pages reviewed |
| Pay-in / collections | Virtual accounts auto-convert deposits to stablecoins | Onramper Accounts auto-convert fiat deposits to stablecoins |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries | USDC, USDT, EURC to USD, EUR, BRL; MXN listed with no named rail |
| Custody model | Non-custodial: funds stay under the business's control, automatic refund on failure | Not itself the custodian per Terms of Service; funds held by bank partner |
| Compliance scope | KYC, KYB, sanctions, and travel rule handled in the API | KYC, KYB, and sanctions checks via Sumsub, completed before a transfer can be created |
| Pricing model | Published plans (Basic, Business, Enterprise), usage-based per-transaction fees, transparent FX, no pre-funding | Not published; spherepay.co/pricing returns a 404 |
| Developer experience | REST API, 5 official SDKs, OpenAPI spec, MCP server, CLI, dashboard, iOS app, sandbox that mirrors production | REST API and SDKs; sandbox exists for KYC and virtual accounts, confirm transfer sandbox |

**BlindPay is the better fit when:** BlindPay is the better fit for teams sending stablecoin-funded payouts into Latin America over Pix or SPEI who want published pricing and compliance handled inside the API.

**Where Sphere fits:** Sphere fits a business that wants an OTC desk or a white-label buy and sell widget, products BlindPay does not offer. For the payout leg, BlindPay names more rails and publishes its price.

For stablecoin payouts into Latin America, BlindPay is the direct choice: it names SPEI, PSE, Transfers 3.0, Boleto, and RTP, five rails Sphere's public pages do not, publishes its pricing, runs KYC in about 60 seconds inside the API, and tracks every SWIFT payout with a UETR and MT103. Sphere is an API, dashboard, and OTC desk for fiat and stablecoin conversion with no public fee schedule; its pricing page returned a 404 on the pages reviewed. For a business that wants an OTC desk or a white-label ramp widget, Sphere offers products BlindPay does not.

## Which should you choose, BlindPay or Sphere?

Choose BlindPay when the job is paying stablecoins out into Brazil, Mexico, Colombia, Argentina, the United States, or the SEPA zone on a named rail with a price you can read before you sign up. Choose Sphere when the job is an OTC desk for large negotiated trades or a consumer-facing buy and sell widget embedded in your own product. A business on Sphere's ramp can add BlindPay for payouts without giving up the widget.

## What is Sphere?

[Sphere](https://spherepay.co) is an API, dashboard, and OTC desk for converting between fiat, USD, EUR, and BRL, and stablecoins, USDC, USDT, and EURC, then moving the funds over bank rails and blockchain networks. It targets fintechs, PSPs, exchanges, and cross-border trading businesses, and ships five product surfaces. The first two are a developer toolkit with a REST API and SDKs, and a self-serve business dashboard for send, receive, and manage flows. The other three are a Private Desk for high-touch OTC transfers with negotiated FX pricing, a white-label Embedded Ramp widget for buying and selling stablecoins with fiat, and two virtual-account primitives. Onramper Accounts auto-convert fiat deposits into stablecoins, and Offloader Wallets auto-convert incoming stablecoins into fiat payouts. Sphere's own docs and product pages name ACH, wire, SEPA, Pix, and, since June 2026, SWIFT for USD off-ramp as rails. They also list a broad set of blockchain networks including Ethereum, Arbitrum, Base, Avalanche, Polygon, Tron, and Solana. Sphere states compliance runs at the protocol and API level, using Sumsub for identity verification.

## What is BlindPay?

[BlindPay](/global-payments) is a stablecoin API for global payments. It converts USDC and USDT to local fiat and pays out over Pix, SPEI, ACH, RTP, SEPA, and [SWIFT (POBO/COBO)](/pobo-cobo-swift), with compliance handled inside the API. Cross-border wires run as SWIFT payments and collections on behalf of (POBO/COBO), carrying UETR tracking and MT103 confirmations for every transfer, so a business can trace a payout from submission to the receiving bank. BlindPay is backed by Y Combinator (W25) and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries. Products span payouts, pay-ins through branded [virtual accounts](/virtual-accounts) that auto-convert deposits to stablecoins, Payables for paying invoices and boletos directly from USDC or USDT, and a native iOS app. Rails run per country: Pix, TED, and Boleto in Brazil; SPEI in Mexico; PSE in Colombia; Transfers 3.0 in Argentina; ACH, RTP, domestic wire, and SWIFT in the United States; and SEPA across 40 SEPA-zone countries. Full detail is on the [global payments](/global-payments) page. BlindPay describes itself as a non-custodial payment processor: funds stay under the business's control, and a failed transaction returns automatically to the originating wallet.

## How do BlindPay and Sphere compare?

BlindPay names five rails Sphere does not, SPEI, PSE, Transfers 3.0, Boleto, and RTP, and publishes its pricing; Sphere's public pages name ACH, wire, SEPA, Pix, and SWIFT, and no fee schedule. BlindPay's rail list is built around Latin American and US payout coverage: Pix and Boleto in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina. In the United States it adds ACH, RTP, and SWIFT (POBO/COBO), plus SEPA across 40 SEPA-zone countries. Live delivered-amount math is on corridor pages like [USDC to BRL](/usdc-to-brl) and [USDC to MXN](/usdc-to-mxn). Sphere names ACH, wire, SEPA, Pix, and, since June 2026, SWIFT for USD off-ramp, with MXN listed as a supported currency but no rail named for it on the pages reviewed. BlindPay's SWIFT payouts run as POBO/COBO: each customer gets a dedicated virtual account with its own BIC/IBAN, and every transfer carries UETR tracking with MT103 confirmations. A business whose payout map runs through Mexico, Colombia, or Argentina, or needs a named RTP rail, will find that coverage on BlindPay's side.

Pricing is a clear difference. BlindPay publishes its plans (Basic, Business, Enterprise) with usage-based, per-transaction fees and transparent FX, and needs no pre-funding, all visible before a business signs up on the [pricing](/pricing) page. Sphere has no public pricing page on the pages reviewed; spherepay.co/pricing returns a 404. Its Private Desk is positioned around negotiated FX pricing for large transfers, which suggests a quote-based model rather than a published rate card.

On [compliance](/compliance), both providers embed KYC, KYB, and sanctions checks into the API rather than leaving them to the business. BlindPay runs automated KYC in about 60 seconds for standard individual cases and completes KYB review in 3 hours to 1 business day, with sanctions and travel rule compliance handled before money moves. Sphere uses Sumsub for identity verification. A business or individual must complete KYC or KYB and hold an approved verification profile before any transfer can be created, per Sphere's API docs, with enhanced verification for EEA customers under MiCA.

On integration model, Sphere bundles an OTC desk and a white-label ramp widget with its API and dashboard, which suits a business that wants consumer-facing buy and sell flows. BlindPay's surface is built for the payout job: a REST API, five official SDKs, an OpenAPI spec, an MCP server, a CLI, a dashboard, and a native iOS app, all pointed at one flow, stablecoins converted and delivered to a bank account, with a sandbox that mirrors production so the integration is tested end to end before a real transfer moves.

## When is BlindPay the better fit?

BlindPay is the better fit for teams sending stablecoin-funded payouts into Latin America over Pix or SPEI who need compliance handled inside the API and published pricing before they commit to an integration. It also fits businesses that need POBO/COBO structure on cross-border wires, since each customer gets a dedicated virtual account with its own BIC/IBAN and SWIFT payouts carry UETR tracking with MT103 confirmations for auditability. Businesses that want a payout API without negotiating pricing on a call, or that need SPEI, RTP, or Boleto specifically, have a direct answer. BlindPay's rail list and pricing page cover both questions without a sales conversation.

## Where does Sphere fit?

Sphere fits a business that wants an OTC desk for large negotiated transfers or a white-label ramp widget to embed in its own product. Neither is a job BlindPay does. For the payout leg, BlindPay names rails Sphere does not on the pages reviewed, SPEI, PSE, Transfers 3.0, Boleto, and RTP, publishes its price, and gives operators a dashboard and a native iOS app, so a business already on Sphere's ramp can add BlindPay for payouts without giving up the widget.

## Can you use BlindPay and Sphere together?

Yes. A common stack pairs BlindPay for the business-side job of converting stablecoins to local currency and paying it out over Pix, SPEI, ACH, or SWIFT, with compliance built into the API. A ramp product like Sphere's Embedded Ramp or Onramper Accounts handles the consumer-facing buy and sell flow alongside it. The two products solve adjacent problems, getting a user into stablecoins versus getting stablecoins out to a bank account in a specific country, so running both is a normal architecture rather than a workaround. Most stablecoin-payments stacks are not single-vendor, and treating BlindPay as the payout leg behind an existing ramp or OTC relationship is a lower-risk way to test the fit than a full switch.

## How do you migrate from Sphere to BlindPay?

Migrating a payout integration from Sphere to BlindPay follows the same shape as any provider switch. BlindPay's [prompt library](/prompts) has provider migration prompts that cover the same concept mapping, corridor check, and cutover checklist, and the [docs introduction](/docs/introduction) covers the rest.

1. Re-KYC your business and every payee on BlindPay. Compliance does not transfer between providers, so KYB review and customer verification need to run before any live traffic moves, driven by BlindPay's customer webhooks.
2. Get a quote through the API before executing. BlindPay's payout flow is explicit: request a quote, then execute the payout before the quote's expires_at, rather than firing a single conversion call.
3. Wire up Svix-verified webhooks for payout and payin status, replacing whatever status-polling or callback pattern the Sphere integration used.
4. Dual-run both providers behind a feature flag for at least one corridor, retiring the Sphere path only after in-flight transfers on that corridor clear.

Point a coding agent at the [BlindPay docs](/docs/introduction) and the OpenAPI spec at api.blindpay.com/doc for the technical reference, and use the [prompt library](/prompts) to speed up each step. For a corridor-by-corridor migration plan or questions about a specific rail, [talk to us](/contact) directly.

## Methodology and sources

This comparison was built from each provider's public documentation and pricing pages as of September 2026: BlindPay's docs, pricing page, and knowledge base, and Sphere's marketing site (spherepay.co), API docs (docs.spherepay.co), and pricing page. Sphere's pricing page returned a 404 at the time of review. A wider ten-provider view, including Sphere, sits in [best stablecoin APIs in 2026](/resources/more/best-stablecoin-apis-2026). Facts marked as unverified in Sphere's profile, including SPEI support, are stated as such rather than guessed. Flag anything that looks out of date and we will correct it.

*This page is general information, not legal, tax, or financial advice. Sphere is a trademark of its owner; BlindPay is not affiliated with Sphere.*

## BlindPay vs Sphere FAQ
### Is BlindPay a replacement for Sphere?
BlindPay replaces the part of Sphere's job that is converting stablecoins into local currency and paying it out over bank rails, especially in Brazil and Mexico. It is not a replacement for Sphere's white-label Embedded Ramp widget or Private Desk OTC service, since BlindPay does not offer either of those products.

### Can I use BlindPay and Sphere together?
Yes, and it is a common pairing: BlindPay handles the payout leg into Pix, SPEI, ACH, or SWIFT, while a ramp product like Sphere's Embedded Ramp handles the consumer-facing buy and sell flow. The two sit at different points in a payment flow rather than competing for the same call.

### Which is cheaper, BlindPay or Sphere?
BlindPay publishes its plans, usage-based per-transaction fees, and transparent FX on its pricing page, with no pre-funding, so a corridor can be priced before you sign up. Sphere has not published a fee schedule on the pages reviewed, so its cost is only known after a conversation. The reliable test is to quote the same amount, for example 1,000 USDC to Brazilian reais, on both providers and compare the amount that actually lands in the recipient's account after fees and FX.

### How long does it take to migrate from Sphere to BlindPay?
Most of the timeline is compliance, not code: re-KYC your business and payees on BlindPay, since verification does not transfer between providers, then wire up quote-and-execute payout calls and Svix-verified webhooks. Teams typically dual-run one corridor behind a feature flag before cutting over fully, which takes days to a few weeks depending on KYB review time.

### Does BlindPay support the corridors Sphere is known for?
Yes, and it goes further. Sphere names ACH, wire, SEPA, Pix, and SWIFT for USD off-ramp. BlindPay supports all five under different names, plus SPEI, PSE, Transfers 3.0, Boleto, and RTP that Sphere does not name on the pages reviewed. BlindPay's SWIFT payouts also carry POBO/COBO structure with UETR tracking and MT103 confirmations, which Sphere's public docs do not mention on the pages reviewed.

### Does BlindPay handle compliance the way Sphere does?
Both providers embed compliance in the API rather than bolting it on after a transfer, so a business does not need to build KYC or sanctions screening itself. BlindPay's automated KYC completes in about 60 seconds for individuals, with travel rule compliance included in the payout flow, and the full KYB timeline is on the compliance page. Sphere verifies identity through Sumsub and requires an approved verification profile before a transfer can be created.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migration prompts: https://blindpay.com/prompts
- Sphere: https://spherepay.co

---

Source: https://blindpay.com/compare/zero-hash

# BlindPay vs Zero Hash

BlindPay moves USDC and USDT into local currency over Pix, SPEI, ACH, RTP, SEPA, and SWIFT, with compliance built into the API from day one.

BlindPay is a stablecoin API that converts USDC and USDT to local fiat and pays out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT, with compliance built into the same API call. Zero Hash is a B2B crypto, stablecoin, and tokenization infrastructure platform that lets banks, brokerages, fintechs, and marketplaces embed trading, custody, and stablecoin payments under Zero Hash's regulatory licenses.

## BlindPay and Zero Hash at a glance
| Capability | BlindPay | Zero Hash |
| --- | --- | --- |
| Focus | Stablecoin-in, local-currency-out payments API | B2B crypto and stablecoin infrastructure under Zero Hash's licenses |
| Payout rails | Pix, TED, Boleto, SPEI, PSE, Transfers 3.0, ACH, RTP, wire, SEPA, SWIFT (POBO/COBO), settlement window published per rail | Not named on pages reviewed; local partners, RTP networks, cards, wallets, cash pickup |
| Pay-in / collections | US and local virtual accounts; deposits auto-convert to stablecoin | Prefunded USD accounts, plus a named Virtual Accounts product with optional stablecoin auto-conversion |
| Currencies and corridors | USDC, USDT to BRL, MXN, USD, ARS, COP, EUR on local rails, plus SWIFT payouts to 100+ countries, named rail by rail | Cites '100+' and '80+ assets' without an enumerated list on pages reviewed |
| Custody model | Non-custodial: funds stay in the customer's wallet, refunds return automatically | Provider qualified custody with configurable wallet controls, a Policy Engine, and MPC |
| Compliance scope | KYC, KYB, sanctions screening, and travel rule handled in the API | KYC/KYB and sanctions screening in-API; MSB, 51-state MTLs, BitLicense, MiCA CASP, EMI license |
| Pricing model | Published plans (Basic, Business, Enterprise), usage-based per-transaction fees, transparent FX, no pre-funding | Not published on pages reviewed; fees and pricing pages route to a sales conversation |
| Settlement tracking | SWIFT and domestic wire carry a UETR; SWIFT references map to MT103 field 70 | Sanctions-screening timestamps in-API; no UETR or IMAD tracking found on pages reviewed |

**BlindPay is the better fit when:** BlindPay is the better fit for teams paying stablecoins out as local currency across Pix, SPEI, ACH, RTP, SEPA, or SWIFT with compliance handled inside the API.

**Where Zero Hash fits:** Zero Hash fits banks, brokerages, and fintechs embedding crypto trading, qualified custody, or tokenization under Zero Hash's licenses, jobs BlindPay does not do. For local-currency payouts on a named rail, BlindPay is the direct tool.

For local-currency payouts, BlindPay is the direct choice: eleven named rails with a published settlement window each, KYC in about 60 seconds inside the same API call, published pricing with no pre-funding, and a non-custodial flow that refunds automatically. Zero Hash embeds crypto trading, qualified custody, and tokenization inside a regulated product under its own licenses; its public pages describe payout delivery in general terms without naming Pix or SPEI, and its pricing routes to sales. This page compares them on that basis, using each provider's own public docs; see the wider [best stablecoin APIs comparison](/resources/more/best-stablecoin-apis-2026) for how ten providers stack up.

## Which should you choose, BlindPay or Zero Hash?

Choose BlindPay when the job is turning a stablecoin balance into a local-currency payout on a named rail, with compliance in the call and a price on a public page. Choose Zero Hash when the job is embedding crypto trading, staking, or qualified custody inside your own product under someone else's licenses. Teams that need both run Zero Hash for the embedded crypto product and BlindPay for the payout.

## What is Zero Hash?

Zero Hash is a B2B crypto, stablecoin, and tokenization infrastructure platform. It lets banks, brokerages, fintechs, payment service providers, marketplaces, and gaming platforms embed trading, custody, stablecoin payins and payouts, and tokenization inside their own products under [Zero Hash's](https://zerohash.com) regulatory licenses. Its product line spans three areas: Trade (crypto trading infrastructure, staking, qualified custody), Transact (on and off ramps, payins, payouts, and remittances funded by stablecoins), and Tokenize (asset tokenization engines and rails). A Single API Call Payouts API bundles participant onboarding, account linking, and payment submission into one request, and a companion AUTH product handles account authentication and KYC-to-account matching (AUTH Validate).

Zero Hash holds a broad regulatory footprint. In the US, it is a FinCEN-registered Money Service Business, a state-licensed Money Transmitter across 51 jurisdictions, and a New York BitLicense holder. It is also registered with FINTRAC in Canada and AUSTRAC as a Digital Currency Exchange in Australia. Its European entity holds a MiCA Crypto-Asset Service Provider license from the Dutch AFM plus an Electronic Money Institution license from the Dutch Central Bank. Its homepage names large enterprise and institutional customers, and its volume and end-customer figures differ between the homepage and the docs landing page; confirm current numbers on their site.

## What is BlindPay?

BlindPay is a stablecoin API for global payments: it converts USDC and USDT to local fiat and pays out over local rails such as Pix, SPEI, SEPA, ACH, and SWIFT (POBO/COBO). It stays compliant through one API. The homepage describes it as infrastructure that orchestrates stablecoins, local payment rails, virtual accounts, and integrated compliance in a single platform. BlindPay is backed by Y Combinator (W25) and moves $2.5 billion in annualized transfer volume across a payment network reaching 100+ countries.

Two products carry the flow. [Payouts](/global-payments) convert stablecoins to local fiat over country-specific rails, with per-customer virtual accounts enabling [POBO/COBO over SWIFT](/pobo-cobo-swift): inbound wires collect under the customer's own name. Outbound SWIFT payouts can carry the customer's name via a Named Account setting, tracked with a UETR and the SWIFT reference mapped to MT103 field 70. [Virtual accounts](/virtual-accounts) run the other direction: businesses issue branded US and local bank accounts, and deposits auto-convert into stablecoin wallets. BlindPay describes itself as a non-custodial payment processor: funds stay under the customer's control throughout, and a failed transaction returns funds automatically to the originating wallet. Operators get a dashboard and a native iOS app alongside the API, and developers get five official SDKs, an OpenAPI spec, a CLI, and an MCP server.

## How do BlindPay and Zero Hash compare?

BlindPay and Zero Hash differ most in what each names publicly as a payout rail: BlindPay lists specific schemes like Pix and SPEI, while Zero Hash describes delivery in general terms on the pages reviewed. BlindPay's payout list is specific and country by country, detailed on the [global payments](/global-payments) page. Latin America rails include Pix and TED in Brazil, SPEI in Mexico, PSE in Colombia, and Transfers 3.0 in Argentina. Coverage extends to SEPA across 40 SEPA-zone countries and to ACH, RTP, domestic wire, and SWIFT in the US, each with its own cut-off time and settlement window published in BlindPay's docs. Zero Hash's remittance product page describes last-mile delivery only in general terms: local payment partners and rails, RTP networks, cards, wallets, or cash pickup across 200+ countries. It does not name a specific scheme like Pix or SPEI on the pages reviewed. A team building a Pix or SPEI payout cannot verify that rail, its cut-off, or its minimum on Zero Hash's public pages before writing code; on BlindPay it can, down to the settlement window.

Custody is a second real divide. BlindPay is non-custodial by design: funds stay under the customer's control throughout, and refunds return to the originating wallet automatically. Zero Hash describes qualified custody, holding funds under configurable wallet controls through a Policy Engine and MPC-based risk guardrails. For a payout, non-custodial means there is no provider-held balance to fund, reconcile, or wait on: the business's wallet funds the transfer and gets the refund if it fails. Qualified custody is the right model for a product that holds crypto for end users, which is a different job from paying a vendor.

Pay-in accounts are a third point worth comparing, since both now publish a named product for it. BlindPay's [virtual accounts](/virtual-accounts) give a business a dedicated US or local bank account with its own routing and account number, funded over ACH, wire, RTP, or SWIFT. Deposits auto-convert to USDC or USDT across five networks: Polygon, Base, Arbitrum, Stellar, and Tron. Zero Hash's Virtual Accounts product covers similar ground: a named USD account and routing number accepting ACH, wire, RTP, or FedNow, with prefunded accounts funding payout activity and optional stablecoin auto-conversion. The advantage for a BlindPay integration is that stablecoin conversion sits inside the same rails and quote flow already used for payouts, so one integration covers both directions.

Pricing and compliance follow the same pattern of published versus quote-based. BlindPay publishes three subscription tiers on its [pricing](/pricing) page (Basic, Business, Enterprise) with usage-based, per-transaction fees and transparent FX, and no pre-funding required, so a prospect can see the model before talking to sales. Zero Hash's fee and pricing pages both route to a sales conversation rather than listing rates on the pages reviewed. On [compliance](/compliance), both embed KYC/KYB and sanctions screening in the API itself. BlindPay ties automated and manual KYC tiers to specific turnaround times: about 60 seconds for standard individual KYC, and 3 hours to 1 business day for enhanced or business KYB. Zero Hash's payouts API embeds sanctions screening with timestamps and address deny-list checks, then routes each transaction through one of two models. In the fully disclosed model, the ultimate payor is a direct, KYC'd Zero Hash customer. In the omnibus model, Zero Hash treats the platform operator as its sole client and does not directly onboard the operator's end customers.

## When is BlindPay the better fit?

BlindPay is the better fit for teams that hold USDC or USDT and need to pay it out as local currency in specific corridors, such as [Brazil over Pix](/usdc-to-brl) or Mexico over SPEI. Compliance and settlement tracking are handled inside one API call. That includes fintechs running payroll or vendor payouts into Latin America, PSPs that need POBO/COBO over SWIFT with UETR tracking and MT103 confirmations for cross-border wires. It also includes remittance or import/export businesses that want a quoted FX rate before committing to a transfer. BlindPay is not a stablecoin issuer, not a card acquirer, not a consumer wallet, not a self-custody MPC platform, and not a qualified custodian, so a use case built around those needs a different provider.

## Where does Zero Hash fit?

Zero Hash fits a bank, brokerage, fintech, PSP, marketplace, or gaming platform embedding crypto trading, staking, qualified custody, or tokenization inside its own product under Zero Hash's multi-jurisdiction licenses. Those are jobs BlindPay does not do by design. The payout that follows, turning a stablecoin balance into reais, pesos, or dollars in a bank account on a named rail with compliance in the call and a published price, is BlindPay's job, and it is the part Zero Hash's public pages leave unspecified.

## Can you use BlindPay and Zero Hash together?

Yes. Most stacks in this space are not single-vendor, and the two providers cover different jobs rather than competing directly for the same one. A platform could use BlindPay to convert a stablecoin treasury balance into local-currency payouts over Pix, SPEI, ACH, or SWIFT for vendors, payroll, or remittance flows. Separately, it could use Zero Hash to embed crypto trading, staking, or qualified custody for its end users.

## How do you migrate from Zero Hash to BlindPay?

A payouts migration follows the same shape regardless of the source provider, since compliance does not transfer between providers and has to be re-established on the new one.

1. Re-KYC your business and your payees on BlindPay. Zero Hash's KYC and onboarding records stay with Zero Hash, so BlindPay customer and bank-account records start fresh. Individual KYC (Standard) completes in about 60 seconds automated, while KYB and enhanced KYC run 3 hours to 1 business day of manual review.
2. Get a quote through the API before executing. BlindPay's payout flow is quote then execute: request a payout quote, confirm the delivered amount, then execute before the quote's `expires_at` window closes.
3. Wire up webhooks for payout status. BlindPay delivers `payout.*` and `customer.*` events through Svix, with `svix-id`, `svix-timestamp`, and `svix-signature` for verification, so status updates replace any polling built against the old integration.
4. Dual-run both providers during a cutover window: move one corridor at a time, keep both live behind a feature flag, and retire the Zero Hash path once in-flight settlements clear on that corridor.

BlindPay's docs cover the quickstarts, customers, bank accounts, quotes, and webhooks needed for this sequence. The [prompt library](/prompts) has a ready-to-run migration prompt you can point a coding agent at to inventory your existing integration and generate the mapping automatically.

## Methodology and sources

This comparison is built from each provider's own public docs and pricing pages as of September 2026: zerohash.com, its stablecoin remittance infrastructure page, and its developer docs at docs.zerohash.com. It also draws on BlindPay's own [documentation](/docs/introduction) and [pricing](/pricing) page. Every Zero Hash claim above is sourced to one of those pages. Where a detail was not published on the pages reviewed, such as named local rails or a specific currency list, this page says so rather than guessing. If something here is out of date, [tell us](/contact) and we will fix it.

*This page is general information, not legal, tax, or financial advice. Zero Hash is a trademark of its owner; BlindPay is not affiliated with Zero Hash.*

## BlindPay vs Zero Hash FAQ
### Is BlindPay a good Zero Hash alternative for local currency payouts?
Yes, for the specific job of converting stablecoins into local currency and paying it out over Pix, SPEI, ACH, RTP, SEPA, or SWIFT. Zero Hash does not name those rails on the pages reviewed, so if that is the job, BlindPay is the more direct fit. For embedding crypto trading or qualified custody inside your own product under someone else's licenses, Zero Hash is built for that instead.

### Can I use BlindPay and Zero Hash together?
Yes. They sit at different layers of the stack, so most teams run them side by side rather than choosing one: BlindPay handles the local-currency payout leg. Zero Hash handles embedded trading, staking, or qualified custody inside the product.

### Which is cheaper, BlindPay or Zero Hash?
BlindPay publishes its plans on the pricing page, with usage-based, per-transaction fees and transparent FX, and no pre-funding required. Zero Hash's fees and pricing pages both route to a sales conversation rather than listing numbers on the pages reviewed. The only fair comparison is the delivered-amount test: quote the same amount on both, in USDC to your target currency, and compare what actually lands after fees and FX.

### How long does it take to migrate from Zero Hash to BlindPay?
Most of the timeline is compliance, not code: re-KYC of your business and its payees typically runs a few hours to a business day per entity on BlindPay. A new BlindPay instance is created as part of onboarding. Engineering work is usually a quote-then-execute integration plus Svix-verified webhooks, which teams typically dual-run against the existing provider before a full cutover.

### Does BlindPay support the corridors Zero Hash is known for?
BlindPay names a specific rail in every corridor it publishes, listed above and on the global payments page. Zero Hash's public pages describe last-mile delivery in general terms, so confirm any specific corridor overlap on their site before assuming it.

### Is BlindPay custodial, like Zero Hash?
No. BlindPay is a non-custodial payment processor: funds stay under your control throughout, and a failed transaction returns automatically to the originating wallet. Zero Hash offers qualified custody with configurable wallet controls, a Policy Engine, and MPC. Choose based on whether you want to keep control of the stablecoin balance or hand custody to a regulated third party.

## Links
- All comparisons: https://blindpay.com/compare
- Pricing: https://blindpay.com/pricing
- Docs: https://blindpay.com/docs/introduction
- Migration prompts: https://blindpay.com/prompts
- Zero Hash: https://zerohash.com
