Money infrastructure for crypto partners
Bank Core watches the addresses your users pay into, pays out from a wallet held for you on TRON, BSC, Ethereum, Base, Bitcoin and Stellar, converts between currencies and verifies your users. One API, a key per job, and a ledger behind every number.
What it does
-
Deposit detection
Register addresses you control, or give us an account-level xpub and we derive them. Every arrival is reported with its transaction, confirmations and status, from a cursor and as signed webhooks. When a user says they have paid, watch-now moves that address to the front of the queue.
-
Custody and payouts
Pay any address from your own payout wallet, held in a key management service and never shared with another partner. Every payout request is signed with your key, checked against your limits, and followed until the chain proves it.
-
Withdrawals
Take your balance out to an address we verified with you. The destination is not a request field, so a stolen withdrawal key can only move your money to your own address.
-
Conversions
Live pairs, quotes that fix the price for a short window, and conversions against your balance. The amount you receive is what actually arrived, never an estimate. Opened per partner.
-
Identity verification
Register your end users and open an identity check for each. The answer is a list of capabilities a person has, not a single yes or no.
-
Ledger and reconciliation
Your balance per currency, a statement with a running balance, and a register of every operation with its fee and transaction hash. Every balance is summed from double-entry ledger lines.
Networks
Each network is opened per partner: a payout wallet is created for you and switched on, and deposit detection is enabled per asset.
| Network | API name | Payouts in |
|---|---|---|
| TRON | tron | USDT_TRC20 |
| BNB Smart Chain | bsc | USDT_BEP20 |
| Ethereum | ethereum | USDT_ERC20, USDC_ERC20 |
| Base | base | USDC_BASE |
| Bitcoin | bitcoin | BTC |
| Stellar | stellar | XLM |
How it behaves
Unknown is not zero
A value we could not read comes back as
nullwith a reason. An outcome we cannot yet account for isunresolved, and is never reported as failed.Nothing happens twice
Every request that moves money takes an
Idempotency-Key. The same key and body return the first answer.The cursor is the contract
Webhooks are the fast path. Every event is also on
GET /v1/eventsunder the same id, so an outage costs you a replay, not a reconciliation.A key per job
Deposits, payouts, withdrawals and conversions are separate scopes. Keys are revoked separately, and the one that moves money is used by one code path.
How to connect
- Get access. Access is set up by the Bank Core team: your tenant, the networks and the products you use.
- Send the setup details. Your egress IP addresses, your HTTPS webhook URL, your P-256 public key for signed requests, and the addresses or xpub to watch.
- Receive your keys. Each key is shown once, with exactly the scopes it needs. We keep only its hash.
- Make the first calls. There is no sandbox: the first integration runs in production with a small real balance. Quickstart