kp_test_…) against KeyPair’s testnet — nothing here touches mainnet
funds.
Every mutating call below takes an
idempotencyKey. Derive it from your
own domain object — an order id, a signup id — never generate it
randomly. See Idempotency for why that matters
the first time a request times out.1
Create a customer
2
Open an account and issue a deposit address
deposit.confirmed
webhook and the balance lands in their account —
no polling required.3
Move money
Balances move out with a single signed request, to another customer
of yours (
toEntityId) or to a blockchain address (toAddress) — see
Authentication for why moving money is signed
rather than bearer-only.cURL
4
Check the balance
cURL
Next
Every event you can receive
deposit.confirmed, withdrawal.finalised, and four others — with the
exact payload for each.