Skip to content
Cripay

Crypto payment infrastructure for developers

An API that feels like Stripe: consistent resources, clear errors, test mode and webhooks you can trust.

curl https://api-production-e21f2.up.railway.app/v1/payments \
  -H "Authorization: Bearer cpr_test_9kQ2mX7v" \
  -H "Idempotency-Key: order-7731" \
  -d amount=25.00 \
  -d currency=USD \
  -d description="Order #7731" \
  -d success_url="https://example.com/thanks"
201payment created · checkout_url ✓
Test and live keyscpr_test_ and cpr_live_ keep data and behaviour apart. The payment simulator exercises every outcome without moving money.
IdempotencyIdempotency-Key on every create. Retry with confidence: you will never create two payments because the network blinked.
Signed webhooksHMAC-SHA256 with a timestamp, retries with backoff, delivery log and replay from the console.
TypeScript SDKTypes generated from the OpenAPI document, webhook verification included, runs on Node, Bun, Deno and the edge.
embed.js and ReactA button that opens the checkout in a modal, or the checkout inline in an iframe, with status callbacks.
Request logsEvery call with its request id, body and response, so you debug instead of guessing.

Frequently asked questions

How do I verify a webhook?

Compute HMAC-SHA256(secret, timestamp + '.' + body) and compare it with the X-CryptoPay-Signature header. The SDK ships verifyWebhook() ready to use.

Are there rate limits?

Yes, generous for normal use, and the response says so with 429 and Retry-After. Status polling can also be replaced by webhooks.

Can I self-host it?

Yes. The gateway is open source: API, indexers, checkout and console. You can also use the hosted service and run nothing.

Your first crypto payment, today.Free account, test mode included, no card needed.
Create a free account