One API for U.S. banking. Ship in weeks.
Build against a development environment, then go to production without the 18-month bank build — the diligence is already done.
x-api-key: $CFX_API_KEY
x-api-secret: $CFX_API_SECRET
Content-Type: application/json
Idempotency-Key: dep_a1f9c3
{
"identityId": "id_VfsdSMtd8UdgxCgTnz0tm",
"amount": { "amount": 1000, "currency": "USD" },
"speed": "same-day",
"sourcePaymentInstrumentId": "pi_jk23h4j564rthk32",
"reference": "DR-123456789",
"wallet": { "address": "7Np…SoLa", "blockchain": "SOLANA" }
}Result
- Amount
- $1,000.00 USD
- Speed
- Same-day ACH
- Reference
- DR-123456789
- Request
- dprq_FiZcY1MG…
Funds post to the customer's balance once the ACH debit clears.
Built for builders.
Every capability shares one set of credentials, one idempotency model, and one webhook envelope, so what you build for one rail carries to the next.
- Payments on ACH, wire, RTP, and cash
- Accounts with real account and routing numbers
- KYB, KYC, sanctions and PEP screening
- On-chain settlement on Solana, Ethereum, and Base
What your team sees in CFX.
A signed webhook for every status change, retried with backoff until your endpoint accepts it.
How it works.
Get keys
Sign up and generate an API key and secret in the dashboard.
Build
Integrate against api.dev.cfx.to with development credentials.
Go live
Point the same requests at api.cfx.to with production credentials.
See it in code.
Real requests against the CFX API, with the response and the result they produce.
Open a U.S. virtual account with its own ACH, wire, and RTP details.
x-api-key: $CFX_API_KEY
x-api-secret: $CFX_API_SECRET
Content-Type: application/json
{
"ledgerAccountId": "la_8Qd2k1nZ",
"name": "Acme Operating",
"referenceId": "acct-acme-001"
}{
"id": "va_3Rk9TpL2",
"name": "Acme Operating",
"referenceId": "acct-acme-001",
"status": "ACTIVE",
"type": "US_DEPOSIT",
"accountNumber": "8779000123456",
"routingNumber": "021000021",
"ledgerAccountId": "la_8Qd2k1nZ",
"achDepositInstructions": {
"accountNumber": "8779000123456",
"routingNumber": "021000021",
"beneficiaryName": "Acme, Inc.",
"currency": "USD"
},
"createdAt": "2026-06-18T09:12:00Z"
}Result
- Account
- •••• 3456
- Routing
- 021000021
- Rails
- ACH · Wire · RTP
- Type
- US deposit
Share the account and routing number to receive funds directly.
What your engineers need to know.
- Authentication
- x-api-key, x-api-secretBoth headers on every request. Development and production keys are separate.
- Idempotency
- Idempotency-KeyRetry a create safely: a repeated key returns the first result instead of running it twice.
- Webhooks
- webhook-signatureHMAC-SHA256 under the Standard Webhooks spec. Delivered at least once, retried with backoff up to 10 times.
- Errors
- 429 TOO MANY REQUESTSBranch on each error's code field, not its message. A 429 means you hit a rate limit.
Ready to build on regulated U.S. banking rails?
Sign up, spin up a sandbox, and make your first call the same day.