kp_test_… or
kp_live_… — and that choice reaches everything the key can see or
touch. There is no network field to pass yourself: it comes from which
key you used.
Testnet
Real chain activity, on each chain’s public testnet. Free assets,
no financial risk, safe to script and re-run.
Mainnet
Real assets with real value. Withdrawal policies, allowlists and
approval thresholds apply exactly as configured — nothing here is
relaxed for convenience.
What’s isolated per network
- Entities and accounts — a testnet customer and a mainnet customer
with the same
externalIdare two unrelated records. - Balances — a testnet balance is not a preview of a mainnet one; they never share a ledger.
- Withdrawal policies and allowlists — configure each network independently. An address allowed on testnet is not allowed on mainnet until you add it there too.
- Webhooks — deliveries are tagged for the network that produced them; a single endpoint can receive both if you register it under both keys.
Moving from testnet to mainnet
Nothing about the integration changes beyond the key: same endpoints, same request and response shapes, same error codes. When you’re ready, swapkp_test_… for kp_live_… and configure that network’s policies
and allowlists — testnet’s do not carry over.