API Reference

Reference

Routes, object models, enums, settings, and error shapes.

Route reference

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.

Partner onboarding OAuth

POST /api/partner/v1/onboarding/company can include an optional oauth object. MakeCrypto validates the OAuth app, redirect URI, scopes, and PKCE challenge before creating the onboarding link. When the merchant completes onboarding, MakeCrypto creates the company, grants the OAuth app access to that company, and redirects to the registered redirectUri with an authorization code.

{
  "idempotencyKey": "merchant_123",
  "company": {
    "name": "Acme Markets",
    "website": "https://acme.example"
  },
  "oauth": {
    "clientId": "mco_app_example",
    "redirectUri": "https://apps.makecrypto.io/oauth/callback",
    "scope": "company:read makepay:payment-links:write makepay:settings:read",
    "state": "merchant_123",
    "codeChallenge": "PKCE_S256_CODE_CHALLENGE",
    "codeChallengeMethod": "S256"
  }
}

The partner app should keep the matching PKCE code_verifier and exchange the returned code through POST /oauth/token.

FieldTypeNotes
idstringInternal UUID.
uidstringPublic payment-link identifier used in hosted and embedded checkout routes.
status"active" | "paused" | "archived"Merchant-managed link state.
payloadPaymentLinkPayloadMerchant order, amount, customer, redirect, metadata, branding, and runtime fields.
created_atstringISO timestamp.
updated_atstringISO timestamp.
expires_atstring | nullResolved expiration timestamp, or null for no expiration.
publicUrlstringHosted MakePay checkout URL, included on create, list, detail, and status update responses.

PaymentLinkPayload

FieldTypeNotes
titlestringDisplay label for the payment.
descriptionstringCustomer-facing description.
amountstringDecimal amount to collect.
fiatCurrencystringOptional display currency such as USD or EUR.
currencystringSettlement symbol such as USDT, USDC, or BTC.
assetstringExact destination asset identifier. Use this when a symbol exists on multiple chains.
orderIdstringMerchant order or invoice reference.
customerEmailstringUsed for email requests and webhook payloads.
clientIdstringOptional merchant-side customer identifier.
returnUrlstringMerchant URL for generic return navigation.
successUrlstringMerchant URL for completed payments.
failureUrlstringMerchant URL for failed or cancelled payments.
expirationTime"15m" | "1h" | "12h" | "24h" | "72h" | "never"Requested payment-link lifetime.
metadataRecord<string, unknown>Merchant-defined metadata returned in dashboards and webhooks.
runtimeMode"merchant_target_net_v2"Injected by the API for new payment links.
billingVersion"v2"Injected by the API for new payment links.
merchantNamestringInjected from company branding when available.
merchantPictureUrlstringInjected from company profile when available.
merchantLogoUrlstringInjected from merchant branding when available.
merchantPaymentLinkTheme"light" | "dark" | "system"Injected from merchant checkout theme settings.

Customer object

FieldTypeNotes
idstringInternal UUID.
uidstringPublic MakePay customer identifier used in portal links.
emailstringCustomer email.
namestring | nullCustomer display name. Editable from the customer portal.
clientIdstring | nullMerchant-side customer identifier. Read-only in the portal.
metadataRecord<string, unknown>Merchant-defined metadata.
createdAtstringISO timestamp.
updatedAtstringISO timestamp.
urls{ customerPortal: string }Present on portal generation responses. Do not persist this URL.

Customer portal response

POST /api/partner/v1/makepay/customers/{customerId}/portal returns a signed portal URL for the stored customer.

json
{
  "ok": true,
  "companyId": "acct_123",
  "customer": {
    "id": "b834dd77-69b8-41a9-a4b6-95bc9dd14c2d",
    "uid": "cus_01hzy4k6p4w9y2x7e2z7n8a2xm",
    "email": "buyer@example.com",
    "name": "Ada Lovelace",
    "clientId": "client_1042",
    "metadata": {
      "source": "api"
    },
    "createdAt": "2026-04-20T10:00:00.000Z",
    "updatedAt": "2026-04-20T10:00:00.000Z",
    "urls": {
      "customerPortal": "https://makepay.io/billing?company=acct_123&customer=cus_01hzy4k6p4w9y2x7e2z7n8a2xm&expires=1776765600&signature=8d1f..."
    }
  },
  "expiresAt": "2026-04-21T10:00:00.000Z"
}

The URL is valid for 24 hours and uses the company's verified payment_link_domain when available. Otherwise it falls back to the MakePay public origin.

Query parameterNotes
companyMakeCrypto company account ID that owns the customer.
customerMakePay customer UID.
expiresUnix timestamp in seconds.
signatureHMAC signature over v1:{companyId}:{customerUid}:{expires}.

Generate portal links on demand when the customer opens billing. Expired, tampered, or cross-customer URLs are rejected before portal data is loaded.

Subscription object

FieldTypeNotes
idstringInternal UUID.
uidstringMerchant-facing subscription identifier.
status"active" | "paused" | "overdue" | "cancelled"Current subscription state.
customerEmailstringCustomer email used for reminders and portal matching.
labelstringCustomer-facing subscription label.
descriptionstring | nullOptional subscription description.
amountUsdstringRecurring USD amount.
settlementAssetstringDestination settlement asset identifier.
cadence"weekly" | "biweekly" | "monthly" | "custom_months" | "yearly"Display cadence.
billingIntervalUnit"week" | "month" | "year"Billing interval unit.
billingIntervalCountnumberNumber of units between billing cycles.
startAtstringISO timestamp for the first billing cycle.
timezonestringIANA timezone used for reminder timing.
metadataRecord<string, unknown>Merchant-defined metadata and advanced redirect/tolerance settings.
cyclesSubscriptionCycle[]Generated billing cycles returned by list routes and dashboard calls.

Subscriptions move to overdue when an unpaid cycle is at least 24 hours past its dueAt timestamp. MakePay sends a signed makepay.subscription.status_changed webhook whenever the subscription status changes.

MakePaySettings

FieldTypeNotes
status"active" | "paused"Product availability for the team.
defaultDestinationAssetstring | nullDefault asset identifier used when payment links provide only currency.
feePaidBy"client" | "merchant"Determines whether customer or merchant absorbs MakePay fees.
returnRedirectUrlstring | nullFallback redirect after checkout.
successRedirectUrlstring | nullRedirect after completed payment.
failureRedirectUrlstring | nullRedirect after cancelled or failed payment.
underpaymentPercentEnabledbooleanEnables percentage tolerance.
underpaymentPercentThresholdnumberAllowed underpayment percentage.
underpaymentFixedEnabledbooleanEnables fixed tolerance.
underpaymentFixedThresholdnumberAllowed fixed underpayment amount.

DestinationAsset

FieldTypeNotes
assetIdentifierstringCanonical chain, symbol, and contract identifier.
chainCodestringSettlement chain code.
chainNamestringHuman-readable chain name.
symbolstringAsset symbol.
namestringAsset name.
decimalsnumberToken decimals.
isDefaultbooleanWhether this asset is the current company default.

Status values

  • active: the link can be opened and paid.
  • paused: the link remains visible to the merchant but should not accept new payment starts.
  • archived: the link is hidden from active views and should be treated as closed.

Subscription status values:

  • active: the subscription is collecting scheduled invoices normally.
  • paused: reminders and merchant/customer changes have paused the subscription.
  • overdue: at least one unpaid cycle is 24 hours or more past its due date.
  • cancelled: the subscription is ended and unpaid generated cycles are cancelled.

Error shape

Errors return JSON with error and, when available, errorCode.

{
  "errorCode": "invalid_destination_asset",
  "error": "payload.asset ETH.USDT-... is not available for supported settlement routes."
}

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