POST /api/service/charge/create
{
  "mandateId": "mandate_1234567890abcdef",
  "referenceId": "order-2024-0001",
  "price": {
    "total": 49.99,
    "currency": "EUR"
  },
  "idempotencyKey": "unique-key-2024-0001"
}
{
  "id": "charge_abcdef1234567890",
  "mandateId": "mandate_1234567890abcdef",
  "orderId": "order_abcdef1234567890",
  "subaccountId": "subaccount_1234567890",
  ...
}

Charging a customer with a saved Mandate lets you collect payments on demand or on a schedule—perfect for subscriptions, invoices, or one-click repeat payments.

1

Prerequisite: Mandate Setup

Before you can charge a customer, you must have a valid Mandate (Direct Debit authorization) for their bank account. See Mandate Setup for details.

2

Create a Charge

Call the /charge/create endpoint with the Mandate ID, amount, and a unique reference. This will initiate a direct debit from the customer’s account.

3

Handle the Response

On success, you’ll receive a Charge object and an orderId. Use this according to the Status Flow to update your system as the payment progresses.

Create a Charge

POST /api/service/charge/create
{
  "mandateId": "mandate_1234567890abcdef",
  "referenceId": "order-2024-0001",
  "price": {
    "total": 49.99,
    "currency": "EUR"
  },
  "idempotencyKey": "unique-key-2024-0001"
}
mandateId
string
required

A valid mandate ID for the customer’s bank account. Retrieve this from the mandate_setup_succeeded webhook.

referenceId
string
required

Your unique reference for this charge (e.g., order ID). Must be unique per merchant per order (max 200 chars).

price
object
required

The amount to charge. Must include total (decimal) and currency (e.g., EUR, GBP).

idempotencyKey
string
required

A unique key to prevent duplicate charges if the request is retried.

subaccountId
string

Optional. The subaccount to use for this charge (for platforms/marketplaces).

metadata
object
deprecated

Optional. Additional data to store with the charge (deprecated).

{
  "id": "charge_abcdef1234567890",
  "mandateId": "mandate_1234567890abcdef",
  "orderId": "order_abcdef1234567890",
  "subaccountId": "subaccount_1234567890",
  ...
}
id
string
required

The unique identifier for the created charge.

mandateId
string
required

The mandate used for this charge.

orderId
string
required

The order associated with this charge.

subaccountId
string

The subaccount used for this charge (if any).

Use a new idempotencyKey for each unique charge. If you retry the same charge, use the same key to avoid double-charging the customer.

Always listen for webhooks (e.g., charge_succeeded, charge_failed) to update your system as the payment status changes.