Exact amounts, never rounded
An amount with more precision than the asset supports is rejected outright, so the figure displayed is always the figure demanded.
Payment Links
Enter an amount, get a link. Send it however you already talk to customers — email, chat, or a paper invoice with a QR on it. They pay from their own wallet, and you watch it settle.
Lifecycle
Choose ETH or USDG, enter the amount, add an invoice or order id. The receiving address is the wallet you signed in with — it cannot be set to anything else.
Copy the URL or the QR. The page shows the amount, asset, network and destination address before your customer commits to anything.
They pay; we read the receipt from the chain and check it. Status moves Waiting, then Confirming, then Paid, with the transaction hash on screen.
Details that matter
An amount with more precision than the asset supports is rejected outright, so the figure displayed is always the figure demanded.
Attach your own reference. It shows on the checkout page and is searchable in your dashboard.
Links expire after 24 hours by default, and can be set up to 30 days. An expired link stops accepting payment and says so plainly.
A transaction below the requested amount is refused and reported with both figures. A link never flips to paid on a partial payment.
A transaction hash already used on one link is refused everywhere else, enforced right down to a unique index in the database.
Link ids carry 96 bits of randomness and the read endpoint is rate limited, so enumerating them is not practical.
API
{
"chainId": 4663,
"assetId": "4663:usdg",
"amount": "250.00",
"invoiceId": "1042",
"description": "Design retainer"
}{
"id": "cr9q6NmpVnYiyetO",
"merchantAddress": "0xE0a4...048A",
"amount": "250.00",
"amountBaseUnits": "250000000",
"status": "waiting",
"expiresAt": "2026-09-10T19:27:11.009Z"
}Create your first payment link in under a minute. No signup form, no API key.