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.

MethodRouteAuthUse
GET/api/partner/v1/companiessessionList user companiesReturn teams available to the signed-in MakeCrypto user for portal tooling.
POST/api/partner/v1/onboarding/companypartner onboarding secretCreate 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-linksMakePay API keyList payment linksReturn every MakePay payment link for the API key's company.
POST/api/partner/v1/makepay/payment-linksMakePay API keyCreate payment linkCreate a hosted MakePay checkout link and optional email request.
POST/gateway/pay/{makepayKeyId}public form keySubmit 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 keyGet payment-link detailReturn one MakePay payment link with its latest session and timeline events.
PATCH/api/partner/v1/makepay/payment-links/{uid}MakePay API keyUpdate payment-link statusSet a payment link to active, paused, or archived.
POST/api/partner/v1/makepay/payment-links/{uid}/send-request-emailMakePay API keySend payment requestSend or resend the hosted payment link to a customer email address.
GET/api/partner/v1/makepay/subscriptionsMakePay API keyList subscriptionsReturn recurring MakePay subscription schedules.
POST/api/partner/v1/makepay/subscriptionsMakePay API keyCreate subscriptionCreate a recurring MakePay subscription and first invoice.
GET/api/partner/v1/makepay/customersMakePay API keyList customersReturn MakePay customer profiles for the API key's company.
POST/api/partner/v1/makepay/customersMakePay API keyUpsert customerCreate or update a MakePay customer by email.
POST/api/partner/v1/makepay/customers/{customerId}/portalMakePay API keyCreate customer portal linkGenerate a 24-hour signed MakePay customer portal URL on demand.
GET/api/partner/v1/timezonespublicList timezonesReturn supported IANA timezone identifiers.
GET/api/partner/v1/makepay/settingsMakePay API keyRead MakePay settingsRead settlement, redirect, fee, and underpayment settings.
PUT/api/partner/v1/makepay/settingsMakePay API keyUpdate MakePay settingsUpdate settlement asset, product status, redirects, and fee policy.
GET/api/partner/v1/makepay/destination-assetsMakePay API keyList destination assetsReturn supported settlement assets and the current default asset.
GET/api/partner/v1/makepay/webhook-requestsMakePay API keyList webhook deliveriesInspect payment and subscription webhook delivery attempts and retry state.

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
json
{
  "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

json
{
  "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"
    }
  }
}

Use the list route for back-office reconciliation, dashboards, and smoke tests.

curl
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"

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
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"

Use the status route to stop a link from being paid or to hide it from active operations.

curl
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
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.

Need partner setup help?

Open the payment link details view in MakeCrypto to copy the generated snippets for a real payment UID, or return to the portal to manage merchant settings.

Open portal