Developer docs
Mintage Pay lets you take payments in USDC and USDT, the US dollar stablecoins. Every payment goes straight to your own wallet. Mintage Pay never holds the money. These pages cover the store plugins, payment links, the API, webhooks and the sandbox.
Pick how to connect
| Option | Best for | Code needed |
|---|---|---|
| Store plugin | WooCommerce and other store platforms | None |
| Payment links and the buy button | Any website, social posts, emails, one-off invoices | None, or one snippet |
| API and webhooks | Your own checkout, app or billing system | A few HTTP calls |
Running a store? Start with the store plugins. The rest of this page is for developers.
How a payment works
- Your server creates an invoice for the order, with the amount and your own order number.
- You send the customer to the invoice's
checkout_url. This is a payment page hosted by Mintage Pay. - The customer chooses a network and pays from their wallet, or straight from an exchange on Base and Polygon.
- Mintage Pay watches for the payment. Once it is confirmed, the invoice changes to
paidand your server receives aninvoice.paidwebhook. - Your store marks the order as paid and ships it.
How the money reaches you:
- Base and Polygon: each invoice gets its own payment address. It passes the payment on to your wallet and takes the Mintage Pay fee in the same step. Nobody, including Mintage Pay, can send it anywhere else.
- Solana: the customer's payment pays your wallet and the fee together, in one transaction.
- TRON: the customer pays your own address directly. The fee is taken from prepaid fee credit you top up in your dashboard.
Quickstart
This takes about ten minutes in the sandbox, with free test money.
- Create a free test account at sandbox.mintagepay.com.
- In Payout addresses, add an address for at least one network.
- In Developers > API keys, create a key. Test keys start with
mp_test_. You only see the key once, so copy it. - Create an invoice:
curl https://sandbox.mintagepay.com/v1/invoices \
-H "Authorization: Bearer mp_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042" \
-d '{"amount": "15.00", "order_id": "1042", "redirect_url": "https://example.com/thank-you"}'- Open the
checkout_urlfrom the response and pay it. The sandbox payment page has a button that gives you test money. - Tell Mintage Pay where to send order updates:
curl https://sandbox.mintagepay.com/v1/webhook-endpoints \
-H "Authorization: Bearer mp_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/mintagepay/webhook"}' The response includes a secret starting with whsec_. You only see it once. Use it to
check that each update really came from Mintage Pay.
7. When your server receives invoice.paid, mark the order as paid.
No public web address yet? Read the invoice with GET /v1/invoices/{id} and check its status instead.
Going live
Live accounts are by application: apply on the home page. Once you are approved:
- Sign in at app.mintagepay.com and add your payout addresses.
- Create a live key. Live keys start with
mp_live_. - Change your base URL to
https://app.mintagepay.com/v1, and register your webhook address again with the live key.
| Sandbox | Live | |
|---|---|---|
| Dashboard | https://sandbox.mintagepay.com |
https://app.mintagepay.com |
| API base URL | https://sandbox.mintagepay.com/v1 |
https://app.mintagepay.com/v1 |
| Payment pages | https://sandbox.mintagepay.com/i/... |
https://pay.mintagepay.com/i/... |
| API keys | mp_test_... |
mp_live_... |
| Money | Free test coins on test networks | Real USDC and USDT |
Test keys do not work on live, and live keys do not work in the sandbox, so you cannot mix them up by accident.
Networks
| What the customer pays with | Where they can pay from | How it reaches you |
|---|---|---|
| USDC on Base | Any wallet or exchange | Its own payment address per invoice. The fee is taken on the way |
| USDC or USDT on Polygon | Any wallet or exchange | Same as Base |
| USDC or USDT on Solana | A Solana wallet (Phantom, Solflare, Backpack) | Solana Pay. The customer needs no SOL |
| USDT on TRON | A TRON wallet (TronLink, Trust) | Straight to your own address. The fee comes from fee credit |
A network only appears at checkout once you have added a payout address for it. For USDC on Base and Polygon, customers with a browser wallet do not need any gas: they sign once and Mintage Pay pays the network fee.
Customers with no crypto: Cash App
Cash App can send USDC from a customer's cash balance, with no fee, on Polygon. So a customer with a verified Cash App account can pay even if they have never owned crypto. Cash App's minimum is $1, and it is not available in New York. See Cash App's help page, Stablecoins.
To let these customers pay, add a USDC on Polygon payout address, even if you mostly use Base. If you use an exchange account, choose USDC and the Polygon network on its Receive screen, and check the page says USDC, not POL or MATIC.
Reference
- API reference
- Webhooks
- Plugins and payment links
- Sandbox
- Cash out to your bank
- Machine-readable API description (OpenAPI): app.mintagepay.com/v1/openapi.json. No key is needed to read it.
Questions? Write to hello@mintagepay.com.
Last updated . This page as Markdown. Something missing or wrong? Write to hello@mintagepay.com.