Checkout

Crypto checkout for a single payment at the moment of purchase

One payment, taken once, when the customer buys. Create a Payment Intent, send the buyer to PayKrypt hosted checkout, and let a signed webhook tell your system when the money has actually arrived on-chain.

Who this page is for

This page is for merchants taking a one-off payment: an online store checkout, a digital download, a one-time service fee. If you bill on a repeating cycle, Subscriptions is the better fit; if you bill first and collect later, use Invoicing.

The unit of work here is the Payment Intent. It represents one amount you expect to be paid, and it carries its own status from creation through to confirmation on-chain.

  • A store can create an intent at the moment the customer clicks pay, then mark the order paid from the webhook.
  • A digital goods seller can hold delivery until the confirmed event lands, so access is never released against an unconfirmed payment.

Two integration paths

On WooCommerce, install the PayKrypt plugin, paste a merchant API key, register the webhook endpoint it generates, and the order lifecycle is handled for you.

Everywhere else, call the Payment Intents API directly. The plugin is a wrapper around the same API, so nothing is available to it that is not available to you.

POST /v1/payment-intents
Authorization: Bearer <YOUR_SECRET_KEY>
Idempotency-Key: <unique-key-per-order>
Content-Type: application/json

{
  "amount": "49.90",
  "currency": "USD",
  "description": "Order #1043",
  "customerEmail": "[email protected]",
  "allowedChains": ["tron", "base"],
  "allowedAssets": ["USDT", "USDC"],
  "expiresInMinutes": 60
}

What the customer sees

The customer is sent to PayKrypt hosted checkout at gate.paykrypt.io, picks a chain and asset from the ones you allowed, and pays from any wallet. No PayKrypt account is required to pay.

Restrict the options with allowedChains and allowedAssets when you want to steer buyers toward a specific settlement asset, or leave them empty to offer your merchant defaults.

Your system finds out through a signed webhook

PayKrypt posts payment.detected.v1 as soon as a transaction appears in the mempool or a block, and payment.confirmed.v1 once it has met the confirmation policy for that chain. Release goods on confirmed, not on detected.

Every delivery is signed with HMAC-SHA256 over the timestamp and the raw body, sent as X-PayKrypt-Signature and X-PayKrypt-Timestamp. Verify the signature before acting on an event, and reject anything whose timestamp is stale.

Failed deliveries are retried with an escalating backoff over several hours, and each retry is signed afresh. Treat your endpoint as the source of truth for order state rather than polling.

Underpayment, overpayment, and expiry

Crypto buyers routinely send an amount that is a few cents off after network fees. amountTolerancePercent lets you decide how much drift still counts as paid; leave it at 0 for exact matching.

A payment that lands short raises a partial event rather than silently failing, so you can decide whether to ship, refund, or ask for the difference.

Intents expire. Use expiresInMinutes to control how long a checkout stays payable, which bounds how long you hold stock against an unpaid order.

Retries will not double-charge you

Send an Idempotency-Key with each intent creation, scoped to your order. A retried request returns the original intent instead of creating a second one, so a dropped connection during checkout cannot produce two payment requests for one order.

Settlement, fees, and pricing

Settlement happens on-chain as confirmations land. This page does not promise a specific time window.

The public marketing fee model is 1% per confirmed payment, with no setup costs and no monthly charges.

FAQ

When should I release the goods?

On payment.confirmed.v1. The detected event means a transaction has been seen, not that it has met the confirmation policy for that chain. Releasing on detected exposes you to reorgs and to transactions that never confirm.

Does the customer get redirected back to my store after paying?

Order state is driven by the webhook rather than by a browser redirect. Update the order when the confirmed event arrives, so a customer who closes the tab mid-payment still ends up with a correctly marked order.

What happens if the customer underpays?

A partial payment raises its own event instead of failing silently. You can accept it using amountTolerancePercent if the shortfall is within your tolerance, or handle it manually.

Do I need the WooCommerce plugin?

No. The plugin is a convenience wrapper around the Payment Intents API for WooCommerce stores. Shopify, BigCommerce, and custom storefronts use the same API directly.

How do I stop a network error from creating two payments?

Send an Idempotency-Key unique to the order when creating the intent. Retrying with the same key returns the original intent rather than creating another.

Which chains and assets can my customer pay with?

Checkout covers the major chains and stablecoins, and you can narrow the choice per intent with allowedChains and allowedAssets. See the developer documentation for the current exact list.

Next steps

Start with the public Quickstart, then contact PayKrypt if you need help evaluating your integration path.