v55

latestOpenAPI 3.1.0CC-BY-NC-SA-4.0raw.githubusercontent.com2026-08-011243791.8 MB
Mandates API

Create mandate

Create a mandate for a specific customer. Mandates allow you to charge a customer's card, PayPal account or bank account recurrently.

It is only possible to create mandates for IBANs and PayPal billing agreements with this endpoint. To create mandates for cards, your customers need to perform a 'first payment' with their card.

post/v2/customers/{customerId}/mandates

Headers

idempotency-keystring
Example:123e4567-e89b-12d3-a456-426

A unique key to ensure idempotent requests. This key should be a UUID v4 string.

Request body

resourcestring

Indicates the response contains a mandate object. Will always contain the string mandate for this endpoint.

idstring
mode'live' | 'test'

Whether this entity was created in live mode or in test mode.

method'creditcard' | 'directdebit' | 'paypal' required

Payment method of the mandate.

SEPA Direct Debit and PayPal mandates can be created directly.

consumerNamestring required

The customer's name.

consumerAccountstring nullable

The customer's IBAN. Required for SEPA Direct Debit mandates.

consumerBicstring nullable

The BIC of the customer's bank.

consumerEmailstring nullable

The customer's email address. Required for PayPal mandates.

signatureDatestring nullable

The date when the mandate was signed in YYYY-MM-DD format.

mandateReferencestring nullable

A custom mandate reference. For SEPA Direct Debit, it is vital to provide a unique reference. Some banks will decline Direct Debit payments if the mandate reference is not unique.

paypalBillingAgreementIdstring nullable

The billing agreement ID given by PayPal. For example: B-12A34567B8901234CD. Required for PayPal mandates. Must provide either this field or payPalVaultId, but not both.

payPalVaultIdstring nullable

The Vault ID given by PayPal. For example: 8kk8451t. Required for PayPal mandates. Must provide either this field or paypalBillingAgreementId, but not both.

scopesMandateScopes[] nullable

An array defining the eligible use cases for the mandate. This field will always be present and can contain one or both of the following values:

status'valid' | 'pending' | 'invalid'

The status of the mandate. A status can be pending for mandates when the first payment is not yet finalized, or when we did not received the IBAN yet from the first payment.

customerIdstring
createdAtstring

The entity's date and time of creation, in ISO 8601 format.

testmodeboolean nullable

Whether to create the entity in test mode or live mode.

Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting testmode to true.

Example request

{
  "resource": "mandate",
  "id": "mdt_5B8cwPMGnU",
  "mode": "live",
  "method": "directdebit",
  "consumerName": "John Doe",
  "consumerAccount": "NL55INGB0000000000",
  "consumerBic": "BANKBIC",
  "consumerEmail": "example@email.com",
  "details": {
    "consumerName": "John Doe",
    "consumerAccount": "NL55INGB0000000000",
    "consumerBic": "BANKBIC",
    "cardHolder": "John Doe",
    "cardExpiryDate": "2025-01-01",
    "cardLabel": "Visa",
    "cardFingerprint": "d3290e932k02f"
  },
  "signatureDate": "2025-01-01",
  "mandateReference": "ID-1023892",
  "paypalBillingAgreementId": "B-12A34567B8901234CD",
  "payPalVaultId": "8kk8451t",
  "scopes": [
    "customer-present"
  ],
  "status": "valid",
  "customerId": "cst_5B8cwPMGnU",
  "createdAt": "2024-03-20T09:13:37+00:00",
  "_links": {
    "self": {
      "href": "https://...",
      "type": "application/hal+json"
    },
    "customer": {
      "href": "https://...",
      "type": "application/hal+json"
    },
    "documentation": {
      "href": "https://...",
      "type": "application/hal+json"
    }
  }
}

Response

The newly created mandate object.