API Reference
Payment links API
Create, list, inspect, pause, archive, and email MakePay payment links.
Routes
Use these routes to create and manage hosted MakePay payment links from MakeCrypto.
| Method | Route | Auth | Use |
|---|---|---|---|
| GET | /api/partner/v1/companies | session | List user companiesReturn teams available to the signed-in MakeCrypto user for portal tooling. |
| POST | /api/partner/v1/onboarding/company | partner onboarding secret | Create company onboarding linkCreate a partner-prefilled company onboarding draft and return a merchant claim URL. Include an oauth block to auto-connect a validated OAuth app after the merchant completes onboarding. |
| GET | /api/partner/v1/makepay/payment-links | MakePay API key | List payment linksReturn every MakePay payment link for the API key's company. |
| POST | /api/partner/v1/makepay/payment-links | MakePay API key | Create payment linkCreate a hosted MakePay checkout link and optional email request. |
| POST | /gateway/pay/{makepayKeyId} | public form key | Submit HTML payment formAccept browser form fields, create a hosted payment link, and redirect the customer to checkout. |
| GET | /api/partner/v1/makepay/payment-links/{uid} | MakePay API key | Get payment-link detailReturn one MakePay payment link with its latest session and timeline events. |
| PATCH | /api/partner/v1/makepay/payment-links/{uid} | MakePay API key | Update payment-link statusSet a payment link to active, paused, or archived. |
| POST | /api/partner/v1/makepay/payment-links/{uid}/send-request-email | MakePay API key | Send payment requestSend or resend the hosted payment link to a customer email address. |
| GET | /api/partner/v1/makepay/subscriptions | MakePay API key | List subscriptionsReturn recurring MakePay subscription schedules. |
| POST | /api/partner/v1/makepay/subscriptions | MakePay API key | Create subscriptionCreate a recurring MakePay subscription and first invoice. |
| GET | /api/partner/v1/makepay/customers | MakePay API key | List customersReturn MakePay customer profiles for the API key's company. |
| POST | /api/partner/v1/makepay/customers | MakePay API key | Upsert customerCreate or update a MakePay customer by email. |
| POST | /api/partner/v1/makepay/customers/{customerId}/portal | MakePay API key | Create customer portal linkGenerate a 24-hour signed MakePay customer portal URL on demand. |
| GET | /api/partner/v1/timezones | public | List timezonesReturn supported IANA timezone identifiers. |
| GET | /api/partner/v1/makepay/settings | MakePay API key | Read MakePay settingsRead settlement, redirect, fee, and underpayment settings. |
| PUT | /api/partner/v1/makepay/settings | MakePay API key | Update MakePay settingsUpdate settlement asset, product status, redirects, and fee policy. |
| GET | /api/partner/v1/makepay/destination-assets | MakePay API key | List destination assetsReturn supported settlement assets and the current default asset. |
| GET | /api/partner/v1/makepay/webhook-requests | MakePay API key | List webhook deliveriesInspect payment and subscription webhook delivery attempts and retry state. |
Create a payment link
The create route inserts a MakePay payment link, resolves merchant branding and settlement defaults, injects runtime billing fields, and returns the public checkout URL.
POST /api/partner/v1/makepay/payment-links
{
"status": "active",
"sendPaymentRequestEmail": false,
"payload": {
"title": "Website order #1042",
"description": "Checkout for order #1042",
"amount": "129.99",
"fiatCurrency": "USD",
"currency": "USDT",
"orderId": "order_1042",
"customerEmail": "buyer@example.com",
"returnUrl": "https://merchant.example/orders/1042",
"successUrl": "https://merchant.example/orders/1042/success",
"failureUrl": "https://merchant.example/orders/1042/failure",
"expirationTime": "12h",
"metadata": {
"cartId": "cart_7M2V",
"source": "api"
}
}
}For a no-code or low-code browser checkout button, see
Form submit payment. It accepts a plain HTML
POST, creates the same kind of hosted payment link, and redirects the shopper
to MakePay checkout.
Required setup
The company must have a MakePay default destination asset. If settlement is not configured, the route returns 409 with errorCode: "onboarding_required".
Amount and asset fields
Use payload.amount for the customer-facing amount. Pass either payload.asset for an exact destination asset or payload.currency when the company's default destination asset can resolve the chain. If a currency is enabled on multiple chains and no matching company default exists, pass payload.asset explicitly.
Expiration
payload.expirationTime accepts 15m, 1h, 12h, 24h, 72h, or never. The API stores the resolved expires_at timestamp on the payment link.
Create response
{
"ok": true,
"paymentRequestEmailSent": false,
"paymentRequestEmailError": null,
"paymentLink": {
"id": "8d15bb78-d0f8-45ef-88d7-2a1f1f79644b",
"uid": "01hzy4k6p4w9y2x7e2z7n8a2xm",
"status": "active",
"expires_at": "2026-04-19T12:00:00.000Z",
"created_at": "2026-04-19T00:00:00.000Z",
"updated_at": "2026-04-19T00:00:00.000Z",
"publicUrl": "https://makepay.io/payment/01hzy4k6p4w9y2x7e2z7n8a2xm",
"payload": {
"title": "Website order #1042",
"description": "Checkout for order #1042",
"amount": "129.99",
"fiatCurrency": "USD",
"currency": "USDT",
"orderId": "order_1042",
"customerEmail": "buyer@example.com",
"returnUrl": "https://merchant.example/orders/1042",
"successUrl": "https://merchant.example/orders/1042/success",
"failureUrl": "https://merchant.example/orders/1042/failure",
"expirationTime": "12h",
"metadata": {
"cartId": "cart_7M2V",
"source": "api"
},
"asset": "ETH.USDT-0xdac17f958d2ee523a2206206994597c13d831ec7",
"runtimeMode": "merchant_target_net_v2",
"billingVersion": "v2",
"merchantName": "Merchant Co",
"merchantPaymentLinkTheme": "system"
}
}
}List payment links
Use the list route for back-office reconciliation, dashboards, and smoke tests.
curl "https://www.makecrypto.io/api/partner/v1/makepay/payment-links" \
-H "x-makecrypto-key-id: MAKEPAY_API_KEY_ID" \
-H "x-makecrypto-key-secret: MAKEPAY_API_SECRET" \
-H "Accept: application/json"Get payment-link detail
Use the detail route when you already have a payment-link UID and need the normalized link, public checkout URL, latest payment session, and timeline events.
curl "https://www.makecrypto.io/api/partner/v1/makepay/payment-links/PAYMENT_LINK_UID" \
-H "x-makecrypto-key-id: MAKEPAY_API_KEY_ID" \
-H "x-makecrypto-key-secret: MAKEPAY_API_SECRET" \
-H "Accept: application/json"Pause or archive a payment link
Use the status route to stop a link from being paid or to hide it from active operations.
curl -X PATCH "https://www.makecrypto.io/api/partner/v1/makepay/payment-links/PAYMENT_LINK_UID" \
-H "x-makecrypto-key-id: MAKEPAY_API_KEY_ID" \
-H "x-makecrypto-key-secret: MAKEPAY_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"status":"paused"}'status must be active, paused, or archived.
Send a payment request email
MakeCrypto can send the hosted link directly to the customer email on the payment-link payload, or to an override email in the request body.
curl -X POST "https://www.makecrypto.io/api/partner/v1/makepay/payment-links/PAYMENT_LINK_UID/send-request-email" \
-H "x-makecrypto-key-id: MAKEPAY_API_KEY_ID" \
-H "x-makecrypto-key-secret: MAKEPAY_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"email":"buyer@example.com"}'Only active payment links can be emailed. Completed payment links cannot be resent.