BlindPay Integration
Overview
BlindPay is a global payment infrastructure that enables worldwide money transfers using both traditional fiat currencies and stablecoins.
Key Capabilities:
| Feature |
Description |
| Payouts |
Convert stablecoins (USDC, USDT) to fiat and send to bank accounts |
| Payins |
Convert fiat to stablecoins and send to blockchain wallets |
| Multi-Chain |
Supports Ethereum, Base, Polygon, Arbitrum, Stellar, Solana, Tron |
| Multi-Currency |
USD, BRL, MXN, ARS, COP and more via ACH, Wire, PIX, SPEI, SWIFT |
| Virtual Accounts |
Generate dedicated US bank accounts for receivers |
| Offramp Wallets |
Auto-convert incoming stablecoins to fiat |
Important: BlindPay is non-custodial. Funds remain under user control throughout the process. Failed transactions are automatically returned to the originating wallet.
Quick Start
Authentication
All API calls require:
- API Key: Passed as
Authorization: Bearer YOUR_API_KEY
- Instance ID: Included in the URL path
curl --request GET \
--url https://api.blindpay.com/v1/instances/in_000000000000/receivers \
--header 'Authorization: Bearer YOUR_API_KEY'
Payout Flow (Stablecoin → Fiat)
- Accept Terms of Service → Get
tos_id
- Create Receiver → KYC verification, get
receiver_id
- Add Bank Account → Get
bank_account_id
- Create Payout Quote → Get
quote_id (valid for 5 minutes)
- Approve Tokens → ERC20 approval for BlindPay contract
- Execute Payout → Stablecoins collected, fiat sent to bank
See references/getting-started/stable-to-fiat.md for complete guide.
Payin Flow (Fiat → Stablecoin)
- Accept Terms of Service → Get
tos_id
- Create Receiver → KYC verification, get
receiver_id
- Add Blockchain Wallet → Get
blockchain_wallet_id
- Create Payin Quote → Get
payin_quote_id (valid for 5 minutes)
- Execute Payin → Get payment instructions (PIX code, CLABE, etc.)
- Send Fiat → Once received, stablecoins sent to wallet
See references/getting-started/fiat-to-stable.md for complete guide.
Payment Rails
| Type |
Country |
Speed |
| ACH |
US |
~2 business days |
| Wire |
US |
~1 business day |
| RTP |
US |
Instant |
| PIX |
Brazil |
Instant |
| SPEI |
Mexico |
Instant |
| ACH COP |
Colombia |
~1 business day |
| Transfers 3.0 |
Argentina |
Instant |
| International SWIFT |
Global |
~5 business days |
Supported Networks
| Network |
Instance Type |
Tokens |
| Ethereum |
Production |
USDC, USDT |
| Base |
Production |
USDC, USDT |
| Polygon |
Production |
USDC, USDT |
| Arbitrum |
Production |
USDC, USDT |
| Stellar |
Production |
USDC |
| Solana |
Production |
USDC, USDT |
| Tron (beta) |
Production |
USDT |
| Sepolia, Base Sepolia, etc. |
Development |
USDB (test token) |
Development vs Production
| Feature |
Development |
Production |
| KYC |
Auto-approved |
Manual/automatic review |
| Payouts |
Simulated (no real fiat) |
Real bank transfers |
| Payins |
Auto-completed after 30s |
Real fiat deposits required |
| Token |
USDB (fake stablecoin) |
USDC, USDT |
Testing Scenarios
| Amount |
Result |
| Any amount |
Success (default) |
| $666.00 |
Failed |
| $777.00 |
Refunded |
Use first name "Fail" when creating receivers to simulate KYC rejection.
Error Handling
Always check API responses for errors:
{
"error": {
"message": "please_accept_terms_of_service",
"code": "TERMS_NOT_ACCEPTED"
}
}
Common errors:
please_accept_terms_of_service - Receiver needs to accept updated TOS
quote_expired - Quote older than 5 minutes, create a new one
insufficient_balance - Wallet doesn't have enough tokens
kyc_not_approved - Receiver KYC still pending or rejected
Reference Documentation
Getting Started
- Overview - What is BlindPay
- Stable to Fiat - Payout quick start
- Fiat to Stable - Payin quick start
Essentials
- Instances - Dev vs production environments
- Terms of Service - TOS acceptance flow
- Receivers - KYC/KYB for individuals and businesses
- Bank Accounts - ACH, Wire, PIX, SPEI, SWIFT
- Virtual Accounts - US bank account generation
- Blockchain Wallets - External wallet management
- Offramp Wallets - Auto-convert stablecoins
- Payout Quotes - Quote creation for payouts
- Payouts - Executing stablecoin → fiat transfers
- Payin Quotes - Quote creation for payins
- Payins - Executing fiat → stablecoin transfers
- API Keys - Authentication setup
- Webhooks - Real-time event notifications
- Partner Fees - Revenue sharing configuration
- Upload - Secure file uploads for KYC
Guides
- Smart Contracts - Contract addresses
- Cut-off Times - Processing windows
- Supported Countries - Country and payment rail coverage
- Prohibited Activities - Compliance requirements
- Payout Descriptor - Bank statement display names
- KYC Best Practices - Document submission tips
- On Hold Transactions - Handling flagged transactions
- SWIFT Deliverability - International transfer requirements
1---2name: blindpay3description: Use when integrating with BlindPay for stablecoin-to-fiat payouts, fiat-to-stablecoin payins, receiver KYC management, bank accounts, blockchain wallets, virtual accounts, or offramp wallets.4license: MIT5---67# BlindPay Integration89## Overview1011BlindPay is a global payment infrastructure that enables worldwide money transfers using both traditional fiat currencies and stablecoins.1213**Key Capabilities:**1415| Feature | Description |16|---------|-------------|17| **Payouts** | Convert stablecoins (USDC, USDT) to fiat and send to bank accounts |18| **Payins** | Convert fiat to stablecoins and send to blockchain wallets |19| **Multi-Chain** | Supports Ethereum, Base, Polygon, Arbitrum, Stellar, Solana, Tron |20| **Multi-Currency** | USD, BRL, MXN, ARS, COP and more via ACH, Wire, PIX, SPEI, SWIFT |21| **Virtual Accounts** | Generate dedicated US bank accounts for receivers |22| **Offramp Wallets** | Auto-convert incoming stablecoins to fiat |2324**Important:** BlindPay is non-custodial. Funds remain under user control throughout the process. Failed transactions are automatically returned to the originating wallet.2526## Quick Start2728### Authentication2930All API calls require:31- **API Key**: Passed as `Authorization: Bearer YOUR_API_KEY`32- **Instance ID**: Included in the URL path3334```bash35curl --request GET \36 --url https://api.blindpay.com/v1/instances/in_000000000000/receivers \37 --header 'Authorization: Bearer YOUR_API_KEY'38```3940### Payout Flow (Stablecoin → Fiat)41421. **Accept Terms of Service** → Get `tos_id`432. **Create Receiver** → KYC verification, get `receiver_id`443. **Add Bank Account** → Get `bank_account_id`454. **Create Payout Quote** → Get `quote_id` (valid for 5 minutes)465. **Approve Tokens** → ERC20 approval for BlindPay contract476. **Execute Payout** → Stablecoins collected, fiat sent to bank4849See [references/getting-started/stable-to-fiat.md](references/getting-started/stable-to-fiat.md) for complete guide.5051### Payin Flow (Fiat → Stablecoin)52531. **Accept Terms of Service** → Get `tos_id`542. **Create Receiver** → KYC verification, get `receiver_id`553. **Add Blockchain Wallet** → Get `blockchain_wallet_id`564. **Create Payin Quote** → Get `payin_quote_id` (valid for 5 minutes)575. **Execute Payin** → Get payment instructions (PIX code, CLABE, etc.)586. **Send Fiat** → Once received, stablecoins sent to wallet5960See [references/getting-started/fiat-to-stable.md](references/getting-started/fiat-to-stable.md) for complete guide.6162## Payment Rails6364| Type | Country | Speed |65|------|---------|-------|66| ACH | US | ~2 business days |67| Wire | US | ~1 business day |68| RTP | US | Instant |69| PIX | Brazil | Instant |70| SPEI | Mexico | Instant |71| ACH COP | Colombia | ~1 business day |72| Transfers 3.0 | Argentina | Instant |73| International SWIFT | Global | ~5 business days |7475## Supported Networks7677| Network | Instance Type | Tokens |78|---------|---------------|--------|79| Ethereum | Production | USDC, USDT |80| Base | Production | USDC, USDT |81| Polygon | Production | USDC, USDT |82| Arbitrum | Production | USDC, USDT |83| Stellar | Production | USDC |84| Solana | Production | USDC, USDT |85| Tron (beta) | Production | USDT |86| Sepolia, Base Sepolia, etc. | Development | USDB (test token) |8788## Development vs Production8990| Feature | Development | Production |91|---------|-------------|------------|92| KYC | Auto-approved | Manual/automatic review |93| Payouts | Simulated (no real fiat) | Real bank transfers |94| Payins | Auto-completed after 30s | Real fiat deposits required |95| Token | USDB (fake stablecoin) | USDC, USDT |9697## Testing Scenarios9899| Amount | Result |100|--------|--------|101| Any amount | Success (default) |102| $666.00 | Failed |103| $777.00 | Refunded |104105Use first name "Fail" when creating receivers to simulate KYC rejection.106107## Error Handling108109Always check API responses for errors:110111```json112{113 "error": {114 "message": "please_accept_terms_of_service",115 "code": "TERMS_NOT_ACCEPTED"116 }117}118```119120Common errors:121- `please_accept_terms_of_service` - Receiver needs to accept updated TOS122- `quote_expired` - Quote older than 5 minutes, create a new one123- `insufficient_balance` - Wallet doesn't have enough tokens124- `kyc_not_approved` - Receiver KYC still pending or rejected125126## Reference Documentation127128### Getting Started129- [Overview](references/getting-started/overview.md) - What is BlindPay130- [Stable to Fiat](references/getting-started/stable-to-fiat.md) - Payout quick start131- [Fiat to Stable](references/getting-started/fiat-to-stable.md) - Payin quick start132133### Essentials134- [Instances](references/essentials/instances.md) - Dev vs production environments135- [Terms of Service](references/essentials/terms-of-service.md) - TOS acceptance flow136- [Receivers](references/essentials/receivers.md) - KYC/KYB for individuals and businesses137- [Bank Accounts](references/essentials/bank-accounts.md) - ACH, Wire, PIX, SPEI, SWIFT138- [Virtual Accounts](references/essentials/virtual-accounts.md) - US bank account generation139- [Blockchain Wallets](references/essentials/blockchain-wallets.md) - External wallet management140- [Offramp Wallets](references/essentials/offramp-wallets.md) - Auto-convert stablecoins141- [Payout Quotes](references/essentials/payout-quotes.md) - Quote creation for payouts142- [Payouts](references/essentials/payouts.md) - Executing stablecoin → fiat transfers143- [Payin Quotes](references/essentials/payin-quotes.md) - Quote creation for payins144- [Payins](references/essentials/payins.md) - Executing fiat → stablecoin transfers145- [API Keys](references/essentials/api-keys.md) - Authentication setup146- [Webhooks](references/essentials/webhooks.md) - Real-time event notifications147- [Partner Fees](references/essentials/partner-fees.md) - Revenue sharing configuration148- [Upload](references/essentials/upload.md) - Secure file uploads for KYC149150### Guides151- [Smart Contracts](references/guides/smart-contracts.md) - Contract addresses152- [Cut-off Times](references/guides/cut-off-times.md) - Processing windows153- [Supported Countries](references/guides/supported-countries.md) - Country and payment rail coverage154- [Prohibited Activities](references/guides/prohibited-activities.md) - Compliance requirements155- [Payout Descriptor](references/guides/payout-descriptor.md) - Bank statement display names156- [KYC Best Practices](references/guides/kyc-best-practices.md) - Document submission tips157- [On Hold Transactions](references/guides/on-hold-transactions.md) - Handling flagged transactions158- [SWIFT Deliverability](references/guides/swift-deliverability.md) - International transfer requirements