---
title: "Create mandate"
method: POST
path: "/customers/{customerId}/mandates"
tags: ["Mandates API"]
---

# Create mandate

`POST /customers/{customerId}/mandates`

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.

> 🔑 Access with
>
> [API key](/reference/authentication)
>
> [Advanced access token with **mandates.write**](/reference/authentication)
>
> [OAuth access with **mandates.write**](/reference/authentication)

## Request body

- object
  - `resource` string — Indicates the response contains a mandate object. Will always contain the string `mandate` for this endpoint.
  - `id` string — The identifier uniquely referring to this mandate. Example: `mdt_pWUnw6pkBN`.
  - `mode` string — Whether this entity was created in live mode or in test mode. Possible values: `live` `test`
  - `method` string, required — Payment method of the mandate. SEPA Direct Debit and PayPal mandates can be created directly. Possible values: `creditcard` `directdebit` `paypal`
  - `consumerName` string, required — The customer's name.
  - `consumerAccount` string, nullable — The customer's IBAN. Required for SEPA Direct Debit mandates.
  - `consumerBic` string, nullable — The BIC of the customer's bank.
  - `consumerEmail` string, nullable — The customer's email address. Required for PayPal mandates.
  - `details` object
    - `consumerName` string, nullable — The customer's name. Available for SEPA Direct Debit and PayPal mandates.
    - `consumerAccount` string, nullable — The customer's IBAN or email address. Available for SEPA Direct Debit and PayPal mandates.
    - `consumerBic` string, nullable — The BIC of the customer's bank. Available for SEPA Direct Debit mandates.
    - `cardHolder` string, nullable — The card holder's name. Available for card mandates.
    - `cardNumber` string, nullable — The last four digits of the card number. Available for card mandates.
    - `cardExpiryDate` string, nullable — The card's expiry date in `YYYY-MM-DD` format. Available for card mandates.
    - `cardLabel` string, nullable — The card's label. Available for card mandates, if the card label could be detected. Possible values: `American Express` `Carta Si` `Carte Bleue` `Dankort` `Diners Club` `Discover` `JCB` `Laser` `Maestro` `Mastercard` `Unionpay` `Visa`
    - `cardFingerprint` string, nullable — Unique alphanumeric representation of this specific card. Available for card mandates. Can be used to identify returning customers.
  - `signatureDate` string, nullable — The date when the mandate was signed in `YYYY-MM-DD` format.
  - `mandateReference` string, 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.
  - `paypalBillingAgreementId` string, 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.
  - `payPalVaultId` string, nullable — The Vault ID given by PayPal. For example: `8kk8451t`. Required for PayPal mandates. Must provide either this field or `paypalBillingAgreementId`, but not both.
  - `scopes` string[], 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` string — 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. Possible values: `valid` `pending` `invalid`
  - `customerId` string — The identifier referring to the [customer](get-customer) this mandate was linked to.
  - `createdAt` string — The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `testmode` boolean, 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`.
  - `_links` object — An object with several relevant URLs. Every URL object will contain an `href` and a `type` field.
    - `self` object, required — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `customer` object, required — The API resource URL of the [customer](get-customer) that this mandate belongs to.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `documentation` object, required — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.

## Response `201`

The newly created mandate object.

## Other responses

- `404` — No entity with this ID exists.
- `429` — Rate Limit has been reached.

---

[API](https://skmtc.net/mollie/apis/accepting-payments.md) · [All operations](https://skmtc.net/mollie/apis/accepting-payments/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mollie/accepting-payments/revisions/4b45df3039ef/schema)
