Skip to content

Payment Links

An invoice your customer can pay in one tap

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

From created to settled

  1. 01

    Create

    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.

  2. 02

    Share

    Copy the URL or the QR. The page shows the amount, asset, network and destination address before your customer commits to anything.

  3. 03

    Settle

    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

Built for real invoicing

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.

Invoice and order ids

Attach your own reference. It shows on the checkout page and is searchable in your dashboard.

Expiring links

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.

Underpayment protection

A transaction below the requested amount is refused and reported with both figures. A link never flips to paid on a partial payment.

No double settlement

A transaction hash already used on one link is refused everywhere else, enforced right down to a unique index in the database.

Unguessable URLs

Link ids carry 96 bits of randomness and the read endpoint is rate limited, so enumerating them is not practical.

API

Create a link programmatically

POST /api/links
{
  "chainId": 4663,
  "assetId": "4663:usdg",
  "amount": "250.00",
  "invoiceId": "1042",
  "description": "Design retainer"
}
201 Created
{
  "id": "cr9q6NmpVnYiyetO",
  "merchantAddress": "0xE0a4...048A",
  "amount": "250.00",
  "amountBaseUnits": "250000000",
  "status": "waiting",
  "expiresAt": "2026-09-10T19:27:11.009Z"
}

Full API reference

Ready to accept crypto?

Create your first payment link in under a minute. No signup form, no API key.