Developer Apps

OAuth applications

Create partner apps, request delegated company access, and call MakeCrypto APIs with scoped OAuth tokens.

Developer portal

Create and manage partner applications at https://apps.makecrypto.io. Applications belong to a MakeCrypto company and define the redirect URIs, allowed OAuth scopes, webhooks, icon, support contact, privacy policy, and terms shown during consent.

Each confidential application has a client secret. The secret is shown once when it is created or rotated, then stored only as a hash. Public applications must use PKCE and do not receive a secret.

Authorization Code with PKCE

MakeCrypto supports delegated company OAuth for partner applications. Start the flow by sending the user to the authorization endpoint with an exact registered redirect URI and a PKCE S256 challenge.

GET https://makecrypto.io/oauth/authorize
  ?response_type=code
  &client_id=mco_app_...
  &redirect_uri=https%3A%2F%2Fpartner.example%2Fcallback
  &scope=company%3Aread%20makepay%3Apayment-links%3Aread
  &resource=https%3A%2F%2Fmakecrypto.io%2Fapi%2Fpartner%2Fv1
  &code_challenge=BASE64URL_SHA256_VERIFIER
  &code_challenge_method=S256

The user chooses the company, reviews the requested permissions, and approves or rejects access. If approval succeeds, MakeCrypto redirects back with a short lived authorization code.

Exchange the code at the token endpoint. Confidential clients authenticate with client_secret_basic or client_secret_post; public clients authenticate with their client_id and PKCE verifier.

POST https://makecrypto.io/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)

grant_type=authorization_code
&code=mco_code_...
&redirect_uri=https%3A%2F%2Fpartner.example%2Fcallback
&code_verifier=ORIGINAL_PKCE_VERIFIER

Access tokens are short-lived JWT bearer tokens. Refresh tokens rotate on every use, and refresh-token reuse revokes the token family.

Official native integrations, such as the MakePay WordPress plugin, do not use the developer portal or a shared client secret. They register a per-store public installation at POST /oauth/native/installations, use exact callback URI matching, and receive DPoP-bound tokens that must be sent with Authorization: DPoP and a matching DPoP proof header.

Official SDKs

Use the official SDKs when you want a server-side integration without building the HTTP client, payment-link payloads, and webhook signature verification from scratch.

SDKUse it forGuide
MakePay PHP SDKPHP, Laravel, Symfony, custom checkout, and backend payment-link creation.PHP SDK
MakePay NPM SDKNode.js, Next.js, TypeScript backends, and server-side webhook handlers.NPM SDK

Endpoints

PurposeEndpoint
AuthorizationGET /oauth/authorize
Token exchangePOST /oauth/token
RevocationPOST /oauth/revoke
IntrospectionPOST /oauth/introspect
Pushed authorization requestPOST /oauth/par
Native installation registrationPOST /oauth/native/installations
JWKSGET /oauth/jwks.json
Authorization server metadataGET /.well-known/oauth-authorization-server
Protected resource metadataGET /.well-known/oauth-protected-resource

Scopes

ScopeAccess
company:readRead selected company identity and basic settings.
wallet:balances:readRead wallet balances for the selected company.
wallet:activity:readRead wallet and settlement activity.
makepay:payment-links:readRead MakePay payment links and payment status.
makepay:payment-links:writeCreate and update MakePay payment links.
makepay:customers:readRead MakePay customer records.
makepay:customers:writeCreate and update MakePay customer records.
makepay:subscriptions:readRead MakePay subscription records.
makepay:subscriptions:writeCreate and update MakePay subscriptions.
makepay:settings:readRead MakePay merchant settings and enabled assets.
makepay:settings:writeUpdate MakePay merchant settings and callback configuration.
makepay:webhooks:readRead MakePay webhook endpoints and delivery logs.
makepay:webhooks:writeCreate, update, test, and retry MakePay webhook deliveries.

API route permissions

RouteMethodRequired scope
/api/partner/v1/makepay/payment-linksGETmakepay:payment-links:read
/api/partner/v1/makepay/payment-linksPOSTmakepay:payment-links:write
/api/partner/v1/makepay/customersGETmakepay:customers:read
/api/partner/v1/makepay/customersPOSTmakepay:customers:write
/api/partner/v1/makepay/subscriptionsGETmakepay:subscriptions:read
/api/partner/v1/makepay/subscriptionsPOSTmakepay:subscriptions:write
/api/partner/v1/makepay/settingsGETmakepay:settings:read
/api/partner/v1/makepay/settingsPUTmakepay:settings:write
/api/partner/v1/makepay/webhook-requestsGETmakepay:webhooks:read
/api/partner/v1/companies/{id}/wallet/balancesGETwallet:balances:read
/api/partner/v1/companies/{id}/wallet/activityGETwallet:activity:read

Webhook signing

Application webhooks include a makecrypto-signature header with timestamp and v1 signature values. Verify timestamp freshness, rebuild the signed payload as timestamp.rawBody, and compare the signature with the webhook secret shown once when the endpoint is created or rotated.

Connected app management

Approved OAuth grants are visible in the company dashboard under Integrations -> Connected apps. Company admins can review app status, last access, and granted scopes, then revoke access when a partner connection should stop working.

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