Solutions · Platforms and developers

Stablecoin payments, inside your product.

Create a hosted checkout from your server with one request, hear the result through signed webhooks, and build against testnets before a single live payment. The money settles to an account your business owns.

Plain REST over HTTPSHMAC-signed webhooksTestnets included

One checkout session
  1. Your server to ChainPalPOST /api/v1/paymentsAmount, reference, callback URL
  2. ChainPal to your server200 paymentURLA hosted checkout, ready
  3. Your server to your customerSend them to the checkoutHosted by ChainPal
  4. Your customer to ChainPalSends 81.13 USDC on BaseTo an address made for this payment
  5. ChainPal to your serverpayment.receivedWebhook, signed
  6. ChainPal to your serverpayment.completedSettled to your account
  7. Your server to ChainPalGET …/verifyChecked with your secret key

Illustrative. A sample session; your customer is redirected to your callback URL when it ends.

How it works

Build in test. Prove it. Go live.

The same code runs in both modes. The key you send decides which one a request belongs to, so going live is a change of keys, not a rewrite.

  1. 1

    Build against testnets

    Get test keys from the dashboard and run whole payments on Base Sepolia and Celo Sepolia. Test payments settle to wallets only, so nothing real can move.

  2. 2

    Verify every webhook

    Each webhook carries an HMAC-SHA256 signature over its timestamp and raw body. Check it, then confirm the payment with your secret key before you ship anything.

  3. 3

    Go live with live keys

    Once your business is verified, swap in your live keys and set your live webhook URL. Choose where Checkout and API payments settle, and you are taking real payments.

Illustrative. Sample keys; real keys are shown once, when you create them.

What you get

Everything an integration needs, and nothing it does not.

A small, plain API. The checkout handles the coin, the network and the one-time address, so your code only deals with orders and outcomes.

Hosted checkout sessions

One POST with a publishable key returns a payment URL. Send your customer there.

A fresh address every time

Each session gets its own deposit address, valid for 60 minutes, so every payment matches one order.

Signed webhooks

payment.received, payment.completed and payment.failed, retried up to 7 times over about 31 hours.

Verify and list

With your secret key, verify a payment by its id or your reference, and list your payments.

Four keys

Test and live, publishable and secret. Each is shown once and stored only as a hash.

IP allowlist

Limit your secret keys to up to three server addresses you name.

Clear rate limits

30 requests a minute on a publishable key and 100 on a secret key.

Settlement routing

Checkout and API payments settle to the destination you choose: your bank, your treasury or your own wallet.

Test and live

Two environments, side by side.

Your staging servers can call with test keys while production calls with live ones. Switch the view to see what changes, and what stays exactly the same.

ChainPal Harbourview Markets LtdDevelopers Test mode

API keys and webhooks

Requests are routed by the key you send. Nothing to toggle.

KeysShown once, stored hashed
Publishable
cp_pk_test_7Gq2••••
Secret
cp_sk_test_••••••••
Rate limits
30 / min publishable, 100 / min secret
Webhookshttps only
URL
https://harbourview.example/hooks/chainpal-test
Events
payment.received, completed, failed
Retries
Up to 7, over about 31 hours
NetworksWhere customers pay
Accepted on
Base Sepolia and Celo Sepolia
Coins
Test USDC and USDT
SettlementCheckout and API route
Settles to
A wallet you hold, test payments only
IP allowlist
203.0.113.10, 203.0.113.11

Illustrative. Sample keys, addresses and URLs; real keys are shown once, when you create them.

Works with

Start here, then go deeper.

The checkout is the integration. The rest of ChainPal decides where the money goes once it arrives. The full reference lives in the API docs.

Checkout

The hosted pay page your customers see, from details to receipt.

Payouts

Route Checkout and API payments to a reviewed destination you own.

Payment links

No code at all: a shareable pay page for anything you sell.

Questions

Developers, answered.

Stuck on something? Write to developer support with your payment reference, never a secret key.

Is there an SDK or a plugin?

Not today. The API is plain REST over HTTPS, small enough to call with any HTTP client, and the full reference is in the API docs.

Which webhooks do we get, and what if our server is down?

Three events: payment.received, payment.completed and payment.failed. Each is signed with HMAC-SHA256 in X-ChainPal-Signature, with X-ChainPal-Timestamp alongside. If your endpoint does not answer, ChainPal retries up to 7 times over about 31 hours.

How do we stop a retry creating a second payment?

Send your own unique reference with every payment. The reference is the duplicate guard, so the same order cannot become two payments.

How long does a checkout stay open?

The deposit address is valid for 60 minutes. A payment moves through pending, processing and completed, or ends as expired or failed, and your customer returns to your callback or failure URL.

Can customers pay by card or bank transfer?

No. Customers pay in USDC and USDT, on Base, BNB Chain, Celo and Polygon depending on your market. You can settle to your bank in local currency in Nigeria, Ghana, Kenya and South Africa.

Can we test without real money?

Yes. Test keys run on Base Sepolia and Celo Sepolia, have their own webhook URL, and test payments settle to wallets only. A test payment is and stays a test payment.

Open for business

Build on rails you control.

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.