Payment Applications API

Endpoints for creating and managing payment applications. All endpoints require OAuth2 authentication.

List Applications

Get all payment applications for your account.

GET /api/payment-applications
Authorization: Bearer YOUR_OAUTH_TOKEN

Response

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "My E-commerce Store",
      "clientId": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
      "userId": "...",
      "currencyWhitelist": ["BTC", "ETH", "USDT"],
      "site": {
        "id": "...",
        "url": "https://mystore.com",
        "callbackUrl": "https://mystore.com/webhooks/payments"
      },
      "paymentAppImage": null,
      "createdAt": "2026-01-01T00:00:00Z",
      "deletedAt": null
    }
  ]
}

Get Application

Retrieve a specific payment application.

GET /api/payment-applications/{id}
Authorization: Bearer YOUR_OAUTH_TOKEN

Create Application

Create a new payment application.

POST /api/payment-applications
Authorization: Bearer YOUR_OAUTH_TOKEN
Content-Type: application/json

Request Body

{
  "name": "My New Store",
  "secret": "your_webhook_secret",
  "url": "https://mynewstore.com",
  "callbackUrl": "https://mynewstore.com/webhooks/payments",
  "currencyWhitelist": ["BTC", "ETH", "USDT"],
  "allowUnderpay": false,
  "allowOverpay": true
}

Parameters

ParameterTypeRequiredDescription
namestringYesApplication name (3-255 characters)
secretstringYesWebhook signing secret for HMAC verification
urlstringNoYour website URL
callbackUrlstringNoWebhook endpoint URL for payment notifications
currencyWhitelistarrayNoList of accepted cryptocurrency codes
allowUnderpaybooleanNoAccept underpaid payments
allowOverpaybooleanNoAccept overpaid payments

DuoPay is configured per payment, not per application — see Create Payment.

Response

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My New Store",
    "clientId": "x9y8z7w6v5u4t3s2r1q0p9o8n7m6l5k4",
    "userId": "...",
    "currencyWhitelist": ["BTC", "ETH", "USDT"],
    "site": {
      "id": "...",
      "url": "https://mynewstore.com",
      "callbackUrl": "https://mynewstore.com/webhooks/payments"
    },
    "createdAt": "2026-01-20T12:00:00Z"
  }
}

The clientId is a unique 32-character identifier for your application. Use it in payment creation requests.

Update Application

Update payment application settings.

PUT /api/payment-applications/{id}
Authorization: Bearer YOUR_OAUTH_TOKEN
Content-Type: application/json

Request Body

{
  "name": "Updated Store Name",
  "callbackUrl": "https://mynewstore.com/webhooks/v2/payments",
  "currencyWhitelist": ["BTC", "ETH", "USDT", "USDC"],
  "allowUnderpay": true,
  "allowOverpay": true,
}

All fields are optional. Only include the fields you want to update.

Delete Application

Soft-delete a payment application.

DELETE /api/payment-applications/{id}
Authorization: Bearer YOUR_OAUTH_TOKEN

Restore Application

Restore a soft-deleted payment application.

POST /api/payment-applications/{id}/restore
Authorization: Bearer YOUR_OAUTH_TOKEN