---
updatedAt: 2026-10-26T07:49:39.000Z
agentTools:
  projectIndex: https://developer.pay.nl/llms.txt
---

# Recurring payments

Tokenization brings you the option to use cardholder's details without saving the card details. Most common use cases are monthly subscription fee's for memberships.

<Image align="center" border={false} width="600px" src="https://files.readme.io/6964de6cadfd552dabe4adf0b2246e7715aaed546cbab3f8a3593af957c5a6bc-Screenshot_2025-10-10_at_14.00.14.png" />

# How it works

Pay encrypts cardholder's details during an initial payment for secure storage, and provides you with a non-sensitive identifier for the details known as a "token". A cardholder can save multiple tokens. Pay is responsible for PCI DSS compliant storage of the cardholder's details.

<Callout icon="📘" theme="info">
  Please contact your contactperson within Pay if you want to use recurring payments.
</Callout>

## Initial payment

Make sure to enable tokenization in the configuration of your sales location. Navigate to *Settings > Sales location*  and scroll down to the *Card not present* card and click on *Optimize your configuration*. Make sure to enable Tokenization (see screenshot below) and set the 3D secure policy settings.

<Image align="center" border={false} src="https://files.readme.io/9e542e1d5e036d1a038541562098066176019c51ef7e68a7e4733b8e75413c47-a08b16b0-e16a-4528-b5f7-fdb55e9f9858.png" />

Save the settings and start an initial creditcard payment with the [Order:Create](https://developer.pay.nl/reference/api_create_order-1) API. If the transaction is not directly captured, make sure to also capture the transaction.

After a captured card transaction, we call your exchange endpoint with a `token`exchange. See [here for the full payload of this exchange call](https://developer.pay.nl/docs/exchange-tokenization#/). Make sure to store at least the `recurring_id`, since this is the token that you need to use when initiating a recurring payment.

Example:

```json
{
   "order_id": "50009100087X3465",
   "payment_session_id": "3116527583",
   "transactionId": "EX-2345-2238-9812",
   "recurring_id": "VY-9212-9171-2390",
   "recurring_token": "###############YOUR-RECURRING-TOKEN###############",
   "customer_name": "John Doe",
   "customer_id": "427592******6155",
   "customer_key": "3b7d968cfc4cfcdc389f3f932....",
   "customer_reference": null,
   "label": null,
   "action": "token"
}
```

## Recurring payments using the token

### Create the recurring payment using the token

To actually create the recurring payment, use our [Card Payment authorize API](https://developer.pay.nl/reference/d8a03bda20cafdf5fb63243c496b614a-2).

The following recipe gives you a step-by-step walkthrough of the payload or have a look at the JSON example below.

<Recipe slug="create-a-card-based-transaction-by-token" title="Create a card based transaction by TOKEN" />

```json
{
     "transaction": {
          "type": "cit",
          "serviceId": "SL-1234-1234",
          "description": "Order 2021.0002513",
          "reference": "REF.210709461",
          "amount": 1542,
          "currency": "EUR",
          "ipAddress": "139.130.4.5",
          "language": "EN",
          "exchangeUrl": "https://pay.nl/exchange",
          "expireDate": 1637997211
     },
     "options": {
          "tokenization": 1
     },
     "payment": {
          "method": "token",
           "token": {
               "id": "VY-1002-3004-5006"
          }
     },
     "stats": {
          "extra1": "Customer 6985615",
          "extra2": "Invoice 21.3695",
          "extra3": "Shop Amsterdam",
          "info": "Campagne 99",
          "tool": "Google",
          "object": "My Integration v1.0"
     },
     "customer": {
          "company": {
               "name": "Classic Carparts BV",
               "cocNumber": "123456789",
               "vatNumber": "NL012345678B99"
          },
          "address": {
               "streetName": "Kopersteden",
               "streetNumber": "10",
               "streetNumberExtension": "",
               "zipCode": "7547TK",
               "city": "Enschede",
               "regionCode": "OV",
               "countryCode": "NL"
          },
          "invoice": {
               "company": {
                    "name": "Classic Carparts BV",
                    "cocNumber": "123456789",
                    "vatNumber": "NL012345678B99"
               },
               "address": {
                    "streetName": "Kopersteden",
                    "streetNumber": "10",
                    "streetNumberExtension": "",
                    "zipCode": "7547TK",
                    "city": "Enschede",
                    "regionCode": "OV",
                    "countryCode": "NL"
               },
               "firstName": "Robert",
               "lastName": "Van der Werf",
               "gender": "M"
          },
          "reference": "REF.210709461",
          "trust": 7,
          "firstName": "Robert",
          "lastName": "Van der Werf",
          "gender": "M",
          "dob": "2006-02-01",
          "phoneNumber": "0888866622",
          "emailAddress": "r.vanderwerf@pay.nl"
     },
     "order": {
          "products": [
               {
                    "type": "ARTICLE",
                    "id": "TEST_01",
                    "description": "Caramels sweet roll",
                    "amount": 199,
                    "quantity": 2,
                    "vatPercentage": 21
               },
               {
                    "type": "ARTICLE",
                    "id": "TEST_02",
                    "description": "Cookie tart sugar",
                    "amount": 649,
                    "quantity": 1,
                    "vatPercentage": 21
               },
               {
                    "type": "ARTICLE",
                    "id": "TEST_03",
                    "description": "Lollipop chocolate bar",
                    "amount": 99,
                    "quantity": 5,
                    "vatPercentage": 21
               }
          ],
          "deliveryDate": "2006-02-01",
          "invoiceDate": "2006-02-01"
     }
}
```

<br />

### Type of transaction for recurring payments

*Merchant Initiated Transaction*

If the Merchant is initiating the transaction, we call it a Merchant Initiated Transaction (MIT). The cardholder is not involved in the process, so no 3D secure verification can be done. For example to pay the monthly subscription membership fee. But also a MOTO (mail order/telephone order) transaction is Merchant initiated and can be performed with tokenization.

*Customer initiated Transaction*

If the Cardholder initiates the transaction, we call it a Customer Initiated Transaction (CIT). For instance in an ecommerce purchase. In that case the tokenization payment is used for a seamless checkout, but if the issuer is declining the transaction because of signs of fraud there can be a step-up to 3D secure.

*MOTO*

If the transaction is a MOTO (mail order/telephone order) transaction, the cardholder is supplying his data on the phone. Therefore the cardholder is also not involved in the actual payment process, so no 3D secure verification can be done

*POS*

If the transaction is a POS (card present) transaction, the cardholder is present. If the issuer is declining the transaction due to signs of fraud there can be a step-up to 3d secure.

*ECOM*

In an ecommerce purchase the cardholder is present. In that case the tokenization payment is used for a seamless checkout, but if the issuer is declining the transaction because of signs of fraud there can be a step-up to 3D secure.

<br />