Keys shown once, stored hashed
Four keys per business: test and live, publishable and secret. Each is shown once when it is made, and only a hash is kept.
cp_pk_live_ · cp_sk_live_
Security · Company
ChainPal never holds your money or the keys to your treasury. Payments land on addresses made for them and move straight on to destinations you own, and your team, not ChainPal, decides who can move funds and where they go.
No pooled balancesTreasuries owned by your passkeysVerified businesses only
Your business
Verified before it takes a payment
Single-use address
0x7f3a…c21e
Your destination
Bank, treasury or your own wallet
Illustrative. The address shown is a sample.
Non-custodial architecture
None of them depend on trusting ChainPal with your money, because ChainPal never has it. They decide where money is allowed to go, and who on your team can send it.
Each checkout, invoice and payment link payment arrives on an address of its own, so funds never pool and every payment matches one record.
Every bank account, treasury and wallet is reviewed by ChainPal before any money can reach it.
A bank account’s name is checked against your business before it can receive payouts.
An external wallet needs a signed proof that your business controls it.
Your treasury is a Safe owned by your business’s passkeys. There is no seed phrase, and ChainPal never holds a key.
A withdrawal is approved by a colleague before a passkey signs it. The person who asked can never approve it.
A business with a single controller waits 24 hours before a new destination can be used.
Every business completes verification (KYB) before it can take payments on ChainPal.
Treasury
Your treasury is a Safe owned by your business’s passkeys. Moving money out takes three steps: someone asks, a colleague approves, and a passkey signs. ChainPal’s relayer then submits the transaction and pays the gas, which is not the same as holding the funds.
Illustrative. A sample withdrawal for Harbourview Markets Ltd.
Test and live
Test mode has its own keys, its own webhook address and its own networks. A request is test or live because of the key it carries, so there is no switch to forget to flip, and test payments can only settle to wallets.
The developer overviewKeys and transport
The API, the webhooks and your team’s sign-in each have their own protection, on top of the architecture above.
Four keys per business: test and live, publishable and secret. Each is shown once when it is made, and only a hash is kept.
cp_pk_live_ · cp_sk_live_
Name up to three server addresses, and a secret key used from anywhere else is refused.
203.0.113.10 · 203.0.113.11
Every webhook is signed with HMAC-SHA256 over its timestamp and raw body, so your server can prove it came from ChainPal.
X-ChainPal-Signature: v1=…
Webhook addresses must use https, with separate addresses for test and live.
https://…/hooks/chainpal
30 requests a minute on a publishable key and 100 on a secret key.
30 / min · 100 / min
Protect every login to your dashboard with an authenticator app.
Authenticator app
Illustrative. Sample key prefixes and documentation-range addresses.
People and powers
Give each teammate a role, withhold any single power from anyone, and decide which decisions need a second person. Switching a control on takes one click; switching it off takes a colleague.
Controls for finance teamsResponsible disclosure
If you believe you have found a security issue in ChainPal, email help@chainpal.org with “Security report” in the subject. A person on the team will read it and reply.
Open for business
Open an account, choose where each product settles and take your first payment in digital dollars. No setup fee, and no balance held on your behalf.