Skip to main content
Create a payment request, send your customer to the hosted page, and we tell you when the money arrives. The customer picks the coin and network on the page, so you never handle wallets or addresses.
Stablecoin payments work in live mode only. Use a live API key.

How it works

1

Create a payment request

Tell us how much to collect, in USD or GMD. We return a link.
2

Send your customer to the link

They choose USDT or USDC and a network (for example USDC on Arc), then pay from their wallet.
3

Get notified

We send a charge.succeeded update each time money arrives, with the running total.

Create a payment request

POST /v1/minting/intents
number
required
How much to collect. Minimum 5 USD (or the GMD equivalent).
string
default:"USD"
USD or GMD. A GMD amount is converted to USD at the current rate, so the request is always held in USD.
object
Your own data, such as an order number. Returned to you unchanged in every update.
string
Where we send updates for this payment.
string
Optional deadline for the payment, in ISO 8601 format.

Response

Send your customer to link.

What the customer sees

The hosted page lists the coins and networks we support, including USDT on Tron and USDC on Arc (see supported coins and networks). After they choose, the page shows the exact amount, the address and a QR code, and updates as soon as the payment arrives.

Knowing when you’ve been paid

A customer can pay in one transfer or several, and can pay less than the full amount. Two fields in each update tell you where things stand: The payment is complete when status is completed.

Updates (webhooks)

We send charge.succeeded every time money arrives.
Here $10 of $20 has arrived, so status is partially_paid. When the other $10 arrives you get another charge.succeeded with amount: 20 and status: "completed". payment_method is the network the customer paid on (TRC20 or ARC). payment_history lists each transfer separately.
You can receive several updates for the same payment. Match on the payment id (or your own metadata reference), treat amount as a running total, and make sure processing the same update twice doesn’t double-count.
To check an update really came from Modem Pay, see the Webhooks guide.

List and look up payment requests

List
Look up one

Checklist

  • Save the request id and your own reference in metadata.
  • Fulfil the order when an update arrives with status: "completed".
  • Handle repeated updates for the same id safely.
  • Use payment_history if you need the individual transfers.