How to choose a virtual account provider: a 12-point checklist for developers and finance teams

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.

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.

#CriterionWhy it mattersQuestion to ask
1Currencies and rails supportedAn account that can't receive your payers' rail is useless to themWhich rails can deposit into the account (ACH, wire, SWIFT, SEPA, local rails), per account type?
2Account namingNamed accounts show your customer as beneficiary; pooled accounts show the providerWhose name does the payer see, and do payouts go out under the customer's name?
3Issuance speed and limitsYour onboarding flow waits on itWhat's the SLA per account type, what restarts the clock, and how many accounts can one customer hold?
4Settlement optionsDecides whether you receive fiat, stablecoins, or both, and on which chainsCan deposits settle as fiat, USDC, or USDT? On which networks? Can I change the destination later?
5Custody modelDecides who holds funds after settlement and who carries the riskDo funds settle to a wallet or account my customer controls, or one you hold?
6Compliance and KYC/KYB coverageYou can't issue an account to a customer the provider can't verifyDo KYC, KYB, and sanctions screening run inside your API, and which countries can you onboard?
7Banking partner redundancyOne bank relationship is one point of failureHow many banking partners issue your accounts, and what happens to my accounts if one exits?
8Webhooks and event designYour ledger runs on these eventsWhich events fire per account and per deposit? Are they signed, retried, and replayable?
9API docs and SDKsIntegration speed, and how many surprises you hitIs there a public OpenAPI spec? Which languages have official SDKs?
10Sandbox and CLIYou need to test deposits before any real bank is involvedCan I create accounts and simulate deposits on a free sandbox? Is there a CLI?
11Pricing transparencyHidden per-deposit fees break unit economicsWhat's the monthly cost per account, the fee per deposit, and where does each show up?
12Support and SLAsStuck deposits become your support ticketsWho 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, and what the matching looks like in practice is in how virtual accounts automate 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.

CriterionWeight (1 to 5)Provider A score (1 to 5)Provider A weightedProvider 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 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.

#CriterionBlindPay
1RailsUS 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
2NamingNamed: each account is issued in one customer's name, and payouts from it go out under that name
3IssuanceCompliance review, then bank review. SLA of 24 hours or 3 to 5 business days by account type. A customer can hold several accounts
4SettlementDeposits convert to USDC or USDT and settle to one wallet per account. Token and wallet can be changed later
5CustodySettles to an external blockchain wallet the customer controls
6ComplianceKYC, KYB, and sanctions screening in the API. Accounts also need purpose, source of funds, and source of wealth (requirements)
7Banking partnersSeveral banking partners, with eligibility based on the customer's country and type
8WebhooksvirtualAccount.new, virtualAccount.complete, and payin.new, payin.update, payin.complete per deposit. Signed, retried, replayable
9Docs and SDKsPublic OpenAPI 3.1 spec. Official SDKs for Node.js, Python, Go, PHP, and Swift (SDKs)
10Sandbox and CLIFree development instance where accounts are approved instantly. A CLI (blindpay virtual_accounts create) and an MCP server for AI agents
11Pricing$1.50 per month per account. Each deposit's fee is a field on its payin; plans are on pricing
12SupportIssuance SLAs published per account type in the virtual accounts docs

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). 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, virtual account vs virtual IBAN, and virtual accounts for 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 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.

FAQ