Adyen Recurring API icon

Adyen Recurring API

The Recurring APIs allow you to manage and remove your tokens or saved payment details

COMMUNITYAPI KEY0 INSTALLS
API Docs
OpenAPI Specificationv3.1
{
  "openapi": "3.1.0",
  "servers": [
    {
      "url": "https://pal-test.adyen.com/pal/servlet/Recurring/v68"
    }
  ],
  "info": {
    "contact": {
      "email": "developer-experience@adyen.com",
      "name": "Adyen Developer Experience team",
      "url": "https://www.adyen.help/hc/en-us/community/topics",
      "x-twitter": "Adyen"
    },
    "description": "The Recurring APIs allow you to manage and remove your tokens or saved payment details. Tokens should be created with validation during a payment request.\n\nFor more information, refer to our [Tokenization documentation](https://docs.adyen.com/online-payments/tokenization).\n## Authentication\nYou need an [API credential](https://docs.adyen.com/development-resources/api-credentials) to authenticate to the API.\n\nIf using an API key, add an `X-API-Key` header with the API key as the value, for example:\n\n ```\ncurl\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Key: YOUR_API_KEY\" \\\n...\n```\n\nAlternatively, you can use the username and password to connect to the API using basic authentication, for example:\n\n```\ncurl\n-U \"ws@Company.YOUR_COMPANY_ACCOUNT\":\"YOUR_BASIC_AUTHENTICATION_PASSWORD\" \\\n-H \"Content-Type: application/json\" \\\n...\n```\n\n## Versioning\nRecurring API supports [versioning](https://docs.adyen.com/development-resources/versioning) using a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://pal-test.adyen.com/pal/servlet/Recurring/v68/disable\n```\n\n## Going live\n\nTo authenticate to the live endpoints, you need an [API credential](https://docs.adyen.com/development-resources/api-credentials) from your live Customer Area.\n\nThe live endpoint URLs contain a prefix which is unique to your company account:\n```\n\nhttps://{PREFIX}-pal-live.adyenpayments.com/pal/servlet/Recurring/v68/disable\n```\n\nGet your `{PREFIX}` from your live Customer Area under **Developers** > **API URLs** > **Prefix**.",
    "termsOfService": "https://www.adyen.com/legal/terms-and-conditions",
    "title": "Adyen Recurring API",
    "version": "68",
    "x-apisguru-categories": [
      "payment"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_twitter_com_Adyen_profile_image.svg"
    },
    "x-origin": [
      {
        "format": "openapi",
        "url": "https://raw.githubusercontent.com/Adyen/adyen-openapi/main/json/RecurringService-v68.json",
        "version": "3.1"
      }
    ],
    "x-preferred": true,
    "x-providerName": "adyen.com",
    "x-publicVersion": true,
    "x-serviceName": "RecurringService",
    "x-timestamp": "2023-04-11T21:25:15Z"
  },
  "tags": [
    {
      "name": "General"
    }
  ],
  "paths": {
    "/createPermit": {
      "post": {
        "description": "Create permits for a recurring contract, including support for defining restrictions.",
        "operationId": "post-createPermit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePermitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePermitResult"
                }
              }
            },
            "description": "OK - the request has succeeded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Bad Request - a problem reading or understanding the request."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unauthorized - authentication required."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Forbidden - insufficient permissions to process the request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unprocessable Entity - a request validation error."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Internal Server Error - the server could not process the request."
          }
        },
        "security": [
          {
            "BasicAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Create new permits linked to a recurring contract.",
        "tags": [
          "General"
        ],
        "x-addedInVersion": "40",
        "x-groupName": "General",
        "x-methodName": "createPermit",
        "x-sortIndex": 0
      }
    },
    "/disable": {
      "post": {
        "description": "Disables stored payment details to stop charging a shopper with this particular recurring detail ID.\n\nFor more information, refer to [Disable stored details](https://docs.adyen.com/classic-integration/recurring-payments/disable-stored-details/).",
        "operationId": "post-disable",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "disableARecurringContract": {
                  "$ref": "#/components/examples/post-disable-disableARecurringContract"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/DisableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisableResult"
                }
              }
            },
            "description": "OK - the request has succeeded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Bad Request - a problem reading or understanding the request."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unauthorized - authentication required."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Forbidden - insufficient permissions to process the request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unprocessable Entity - a request validation error."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Internal Server Error - the server could not process the request."
          }
        },
        "security": [
          {
            "BasicAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Disable stored payment details",
        "tags": [
          "General"
        ],
        "x-groupName": "General",
        "x-methodName": "disable",
        "x-sortIndex": 2
      }
    },
    "/disablePermit": {
      "post": {
        "description": "Disable a permit that was previously linked to a recurringDetailReference.",
        "operationId": "post-disablePermit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisablePermitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisablePermitResult"
                }
              }
            },
            "description": "OK - the request has succeeded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Bad Request - a problem reading or understanding the request."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unauthorized - authentication required."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Forbidden - insufficient permissions to process the request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unprocessable Entity - a request validation error."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Internal Server Error - the server could not process the request."
          }
        },
        "security": [
          {
            "BasicAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Disable an existing permit.",
        "tags": [
          "General"
        ],
        "x-addedInVersion": "61",
        "x-groupName": "General",
        "x-methodName": "disablePermit",
        "x-sortIndex": 0
      }
    },
    "/listRecurringDetails": {
      "post": {
        "description": "Lists the stored payment details for a shopper, if there are any available. The recurring detail ID can be used with a regular authorisation request to charge the shopper. A summary of the payment detail is returned for presentation to the shopper.\n\nFor more information, refer to [Retrieve stored details](https://docs.adyen.com/classic-integration/recurring-payments/retrieve-stored-details/).",
        "operationId": "post-listRecurringDetails",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "listAllRecurringDetails": {
                  "$ref": "#/components/examples/post-listRecurringDetails-listAllRecurringDetails"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/RecurringDetailsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecurringDetailsResult"
                }
              }
            },
            "description": "OK - the request has succeeded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Bad Request - a problem reading or understanding the request."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unauthorized - authentication required."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Forbidden - insufficient permissions to process the request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unprocessable Entity - a request validation error."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Internal Server Error - the server could not process the request."
          }
        },
        "security": [
          {
            "BasicAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get stored payment details",
        "tags": [
          "General"
        ],
        "x-groupName": "General",
        "x-methodName": "listRecurringDetails",
        "x-sortIndex": 1
      }
    },
    "/notifyShopper": {
      "post": {
        "description": "Sends a request to the issuer so they can inform the shopper about the upcoming recurring payment. This endpoint is used only for local acquiring in India. For more information, refer to [Recurring card payments in India](https://docs.adyen.com/payment-methods/cards/cards-recurring-india).",
        "operationId": "post-notifyShopper",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "notifyShopperOfUpcomingRecurringPayment": {
                  "$ref": "#/components/examples/post-notifyShopper-notifyShopperOfUpcomingRecurringPayment"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/NotifyShopperRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "notifyShopperOfUpcomingRecurringPayment": {
                    "$ref": "#/components/examples/post-notifyShopper-notifyShopperOfUpcomingRecurringPayment-200"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/NotifyShopperResult"
                }
              }
            },
            "description": "OK - the request has succeeded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Bad Request - a problem reading or understanding the request."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unauthorized - authentication required."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Forbidden - insufficient permissions to process the request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unprocessable Entity - a request validation error."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Internal Server Error - the server could not process the request."
          }
        },
        "security": [
          {
            "BasicAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Ask issuer to notify the shopper",
        "tags": [
          "General"
        ],
        "x-groupName": "General",
        "x-methodName": "notifyShopper",
        "x-sortIndex": 4
      }
    },
    "/scheduleAccountUpdater": {
      "post": {
        "description": "When making the API call, you can submit either the credit card information, or the recurring detail reference and the shopper reference:\n* If the card information is provided, all the sub-fields for `card` are mandatory.\n* If the recurring detail reference is provided, the fields for `shopperReference` and `selectedRecurringDetailReference` are mandatory.",
        "operationId": "post-scheduleAccountUpdater",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "scheduleAccountUpdaterWithCardData": {
                  "$ref": "#/components/examples/post-scheduleAccountUpdater-scheduleAccountUpdaterWithCardData"
                },
                "scheduleAccountUpdaterWithTokenData": {
                  "$ref": "#/components/examples/post-scheduleAccountUpdater-scheduleAccountUpdaterWithTokenData"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/ScheduleAccountUpdaterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleAccountUpdaterResult"
                }
              }
            },
            "description": "OK - the request has succeeded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Bad Request - a problem reading or understanding the request."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unauthorized - authentication required."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Forbidden - insufficient permissions to process the request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Unprocessable Entity - a request validation error."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceError"
                }
              }
            },
            "description": "Internal Server Error - the server could not process the request."
          }
        },
        "security": [
          {
            "BasicAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Schedule running the Account Updater",
        "tags": [
          "General"
        ],
        "x-addedInVersion": "4",
        "x-groupName": "General",
        "x-methodName": "scheduleAccountUpdater",
        "x-sortIndex": 3
      }
    }
  },
  "components": {
    "examples": {
      "post-disable-disableARecurringContract": {
        "summary": "Disable a recurring contract",
        "value": {
          "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
          "recurringDetailReference": "8314442372419167",
          "shopperReference": "YOUR_UNIQUE_SHOPPER_ID"
        }
      },
      "post-listRecurringDetails-listAllRecurringDetails": {
        "summary": "List recurring details of the specified contract value",
        "value": {
          "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
          "recurring": {
            "contract": "RECURRING"
          },
          "shopperReference": "YOUR_UNIQUE_SHOPPER_ID"
        }
      },
      "post-notifyShopper-notifyShopperOfUpcomingRecurringPayment": {
        "summary": "Request issuer to notify shopper of upcoming recurring payment",
        "value": {
          "amount": {
            "currency": "INR",
            "value": 1000
          },
          "billingDate": "2021-03-16",
          "displayedReference": "exampleDisplayedReference",
          "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
          "reference": "Example reference",
          "shopperReference": "YOUR_SHOPPER_REFERENCE",
          "storedPaymentMethodId": "8415995487234100"
        }
      },
      "post-notifyShopper-notifyShopperOfUpcomingRecurringPayment-200": {
        "summary": "Example response for request 'notifyShopper'",
        "value": {
          "displayedReference": "exampleDisplayedReference",
          "message": "Request Processed Successfully",
          "pspReference": "M5N7TQ4TG5PFWR50",
          "reference": "Example reference",
          "resultCode": "Success",
          "shopperNotificationReference": "9915003646742627",
          "storedPaymentMethodId": "8415995487234100"
        }
      },
      "post-scheduleAccountUpdater-scheduleAccountUpdaterWithCardData": {
        "summary": "Schedule AccountUpdater with card data",
        "value": {
          "card": {
            "expiryMonth": "03",
            "expiryYear": "2030",
            "holderName": "Adyen Test",
            "number": "4111111111111111"
          },
          "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
          "reference": "YOUR_REFERENCE"
        }
      },
      "post-scheduleAccountUpdater-scheduleAccountUpdaterWithTokenData": {
        "summary": "Schedule AccountUpdater with token data",
        "value": {
          "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
          "reference": "YOUR_REFERENCE",
          "selectedRecurringDetailReference": "8814232895168272",
          "shopperReference": "YOUR_UNIQUE_SHOPPER_ID"
        }
      }
    },
    "schemas": {
      "Address": {
        "properties": {
          "city": {
            "description": "The name of the city. Maximum length: 3000 characters.",
            "maxLength": 3000,
            "type": "string"
          },
          "country": {
            "description": "The two-character ISO-3166-1 alpha-2 country code. For example, **US**.\n> If you don't know the country or are not collecting the country from the shopper, provide `country` as `ZZ`.",
            "type": "string"
          },
          "houseNumberOrName": {
            "description": "The number or name of the house. Maximum length: 3000 characters.",
            "maxLength": 3000,
            "type": "string"
          },
          "postalCode": {
            "description": "A maximum of five digits for an address in the US, or a maximum of ten characters for an address in all other countries.",
            "type": "string"
          },
          "stateOrProvince": {
            "description": "The two-character ISO 3166-2 state or province code. For example, **CA** in the US or **ON** in Canada.\n> Required for the US and Canada.",
            "type": "string"
          },
          "street": {
            "description": "The name of the street. Maximum length: 3000 characters.\n> The house number should not be included in this field; it should be separately provided via `houseNumberOrName`.",
            "maxLength": 3000,
            "type": "string"
          }
        },
        "required": [
          "street",
          "houseNumberOrName",
          "city",
          "postalCode",
          "country"
        ],
        "type": "object"
      },
      "Amount": {
        "properties": {
          "currency": {
            "description": "The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes).",
            "maxLength": 3,
            "minLength": 3,
            "type": "string"
          },
          "value": {
            "description": "The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes).",
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "value",
          "currency"
        ],
        "type": "object"
      },
      "BankAccount": {
        "properties": {
          "bankAccountNumber": {
            "description": "The bank account number (without separators).",
            "type": "string"
          },
          "bankCity": {
            "description": "The bank city.",
            "type": "string",
            "x-addedInVersion": "18"
          },
          "bankLocationId": {
            "description": "The location id of the bank. The field value is `nil` in most cases.",
            "type": "string"
          },
          "bankName": {
            "description": "The name of the bank.",
            "type": "string"
          },
          "bic": {
            "description": "The [Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362) (BIC) is the SWIFT address assigned to a bank. The field value is `nil` in most cases.",
            "type": "string"
          },
          "countryCode": {
            "description": "Country code where the bank is located.\n\nA valid value is an ISO two-character country code (e.g. 'NL').",
            "type": "string"
          },
          "iban": {
            "description": "The [International Bank Account Number](https://en.wikipedia.org/wiki/International_Bank_Account_Number) (IBAN).",
            "type": "string"
          },
          "ownerName": {
            "description": "The name of the bank account holder.\nIf you submit a name with non-Latin characters, we automatically replace some of them with corresponding Latin characters to meet the FATF recommendations. For example:\n* χ12 is converted to ch12.\n* üA is converted to euA.\n* Peter Møller is converted to Peter Mller, because banks don't accept 'ø'.\nAfter replacement, the ownerName must have at least three alphanumeric characters (A-Z, a-z, 0-9), and at least one of them must be a valid Latin character (A-Z, a-z). For example:\n* John17 - allowed.\n* J17 - allowed.\n* 171 - not allowed.\n* John-7 - allowed.\n> If provided details don't match the required format, the response returns the error message: 203 'Invalid bank account holder name'.",
            "type": "string"
          },
          "taxId": {
            "description": "The bank account holder's tax ID.",
            "type": "string",
            "x-addedInVersion": "18"
          }
        },
        "type": "object"
      },
      "Card": {
        "properties": {
          "cvc": {
            "description": "The [card verification code](https://docs.adyen.com/payments-fundamentals/payment-glossary#card-security-code-cvc-cvv-cid) (1-20 characters). Depending on the card brand, it is known also as:\n* CVV2/CVC2 – length: 3 digits\n* CID – length: 4 digits\n> If you are using [Client-Side Encryption](https://docs.adyen.com/classic-integration/cse-integration-ecommerce), the CVC code is present in the encrypted data. You must never post the card details to the server.\n> This field must be always present in a [one-click payment request](https://docs.adyen.com/classic-integration/recurring-payments).\n> When this value is returned in a response, it is always empty because it is not stored.",
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "expiryMonth": {
            "description": "The card expiry month.\nFormat: 2 digits, zero-padded for single digits. For example:\n* 03 = March\n* 11 = November",
            "maxLength": 2,
            "minLength": 1,
            "type": "string"
          },
          "expiryYear": {
            "description": "The card expiry year.\nFormat: 4 digits. For example: 2020",
            "maxLength": 4,
            "minLength": 4,
            "type": "string"
          },
          "holderName": {
            "description": "The name of the cardholder, as printed on the card.",
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "issueNumber": {
            "description": "The issue number of the card (for some UK debit cards only).",
            "maxLength": 2,
            "minLength": 1,
            "type": "string"
          },
          "number": {
            "description": "The card number (4-19 characters). Do not use any separators.\nWhen this value is returned in a response, only the last 4 digits of the card number are returned.",
            "maxLength": 19,
            "minLength": 4,
            "type": "string"
          },
          "startMonth": {
            "description": "The month component of the start date (for some UK debit cards only).",
            "maxLength": 2,
            "minLength": 1,
            "type": "string"
          },
          "startYear": {
            "description": "The year component of the start date (for some UK debit cards only).",
            "maxLength": 4,
            "minLength": 4,
            "type": "string"
          }
        },
        "type": "object"
      },
      "CreatePermitRequest": {
        "properties": {
          "merchantAccount": {
            "description": "The merchant account identifier, with which you want to process the transaction.",
            "type": "string"
          },
          "permits": {
            "description": "The permits to create for this recurring contract.",
            "items": {
              "$ref": "#/components/schemas/Permit"
            },
            "type": "array"
          },
          "recurringDetailReference": {
            "description": "The recurring contract the new permits will use.",
            "type": "string"
          },
          "shopperReference": {
            "description": "The shopper's reference to uniquely identify this shopper (e.g. user ID or account ID).",
            "type": "string"
          }
        },
        "required": [
          "merchantAccount",
          "shopperReference",
          "recurringDetailReference",
          "permits"
        ],
        "type": "object"
      },
      "CreatePermitResult": {
        "properties": {
          "permitResultList": {
            "description": "List of new permits.",
            "items": {
              "$ref": "#/components/schemas/PermitResult"
            },
            "type": "array"
          },
          "pspReference": {
            "description": "A unique reference associated with the request. This value is globally unique; quote it when communicating with us about this request.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "DisablePermitRequest": {
        "properties": {
          "merchantAccount": {
            "description": "The merchant account identifier, with which you want to process the transaction.",
            "type": "string"
          },
          "token": {
            "description": "The permit token to disable.",
            "type": "string"
          }
        },
        "required": [
          "merchantAccount",
          "token"
        ],
        "type": "object"
      },
      "DisablePermitResult": {
        "properties": {
          "pspReference": {
            "description": "A unique reference associated with the request. This value is globally unique; quote it when communicating with us about this request.",
            "type": "string"
          },
          "status": {
            "description": "Status of the disable request.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "DisableRequest": {
        "properties": {
          "contract": {
            "description": "Specify the contract if you only want to disable a specific use.\n\nThis field can be set to one of the following values, or to their combination (comma-separated):\n* ONECLICK\n* RECURRING\n* PAYOUT",
            "type": "string",
            "x-addedInVersion": "3"
          },
          "merchantAccount": {
            "description": "The merchant account identifier with which you want to process the transaction.",
            "type": "string"
          },
          "recurringDetailReference": {
            "description": "The ID that uniquely identifies the recurring detail reference.\n\nIf it is not provided, the whole recurring contract of the `shopperReference` will be disabled, which includes all recurring details.",
            "type": "string"
          },
          "shopperReference": {
            "description": "The ID that uniquely identifies the shopper.\n\nThis `shopperReference` must be the same as the `shopperReference` used in the initial payment.",
            "type": "string"
          }
        },
        "required": [
          "merchantAccount",
          "shopperReference"
        ],
        "type": "object"
      },
      "DisableResult": {
        "properties": {
          "response": {
            "description": "Depending on whether a specific recurring detail was in the request, result is either [detail-successfully-disabled] or [all-details-successfully-disabled].",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Name": {
        "properties": {
          "firstName": {
            "description": "The first name.",
            "type": "string"
          },
          "lastName": {
            "description": "The last name.",
            "type": "string"
          }
        },
        "required": [
          "firstName",
          "lastName"
        ],
        "type": "object"
      },
      "NotifyShopperRequest": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/Amount",
            "description": "The amount of the upcoming payment."
          },
          "billingDate": {
            "description": "Date on which the subscription amount will be debited from the shopper. In YYYY-MM-DD format",
            "type": "string"
          },
          "billingSequenceNumber": {
            "description": "Sequence of the debit. Depends on Frequency and Billing Attempts Rule.",
            "type": "string"
          },
          "displayedReference": {
            "description": "Reference of Pre-debit notification that is displayed to the shopper. Optional field. Maps to reference if missing",
            "type": "string"
          },
          "merchantAccount": {
            "description": "The merchant account identifier with which you want to process the transaction.",
            "type": "string"
          },
          "recurringDetailReference": {
            "description": "This is the `recurringDetailReference` returned in the response when you created the token.",
            "type": "string"
          },
          "reference": {
            "description": "Pre-debit notification reference sent by the merchant. This is a mandatory field",
            "type": "string"
          },
          "shopperReference": {
            "description": "The ID that uniquely identifies the shopper.\n\nThis `shopperReference` must be the same as the `shopperReference` used in the initial payment.",
            "type": "string"
          },
          "storedPaymentMethodId": {
            "description": "This is the `recurringDetailReference` returned in the response when you created the token.",
            "type": "string"
          }
        },
        "required": [
          "merchantAccount",
          "shopperReference",
          "amount",
          "reference"
        ],
        "type": "object"
      },
      "NotifyShopperResult": {
        "properties": {
          "displayedReference": {
            "description": "Reference of Pre-debit notification that is displayed to the shopper",
            "type": "string"
          },
          "message": {
            "description": "A simple description of the `resultCode`.",
            "type": "string"
          },
          "pspReference": {
            "description": "The unique reference that is associated with the request.",
            "type": "string"
          },
          "reference": {
            "description": "Reference of Pre-debit notification sent in my the merchant",
            "type": "string"
          },
          "resultCode": {
            "description": "The code indicating the status of notification.",
            "type": "string"
          },
          "shopperNotificationReference": {
            "description": "The unique reference for the request sent downstream.",
            "type": "string"
          },
          "storedPaymentMethodId": {
            "description": "This is the recurringDetailReference returned in the response when token was created",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Permit": {
        "properties": {
          "partnerId": {
            "description": "Partner ID (when using the permit-per-partner token sharing model).",
            "type": "string"
          },
          "profileReference": {
            "description": "The profile to apply to this permit (when using the shared permits model).",
            "type": "string"
          },
          "restriction": {
            "$ref": "#/components/schemas/PermitRestriction",
            "description": "Permit level restriction overrides."
          },
          "resultKey": {
            "description": "The key to link permit requests to permit results.",
            "type": "string"
          },
          "validTillDate": {
            "description": "The expiry date for this permit.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PermitRestriction": {
        "properties": {
          "maxAmount": {
            "$ref": "#/components/schemas/Amount",
            "description": "The total sum amount of one or more payments made using this permit may not exceed this amount if set."
          },
          "singleTransactionLimit": {
            "$ref": "#/components/schemas/Amount",
            "description": "The amount of any single payment using this permit may not exceed this amount if set."
          },
          "singleUse": {
            "description": "Only a single payment can be made using this permit if set to true, otherwise multiple payments are allowed.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "PermitResult": {
        "properties": {
          "resultKey": {
            "description": "The key to link permit requests to permit results.",
            "type": "string",
            "x-addedInVersion": "32"
          },
          "token": {
            "description": "The permit token which is used to make payments by the partner company.",
            "type": "string",
            "x-addedInVersion": "32"
          }
        },
        "type": "object"
      },
      "Recurring": {
        "properties": {
          "contract": {
            "description": "The type of recurring contract to be used.\nPossible values:\n* `ONECLICK` – Payment details can be used to initiate a one-click payment, where the shopper enters the [card security code (CVC/CVV)](https://docs.adyen.com/payments-fundamentals/payment-glossary#card-security-code-cvc-cvv-cid).\n* `RECURRING` – Payment details can be used without the card security code to initiate [card-not-present transactions](https://docs.adyen.com/payments-fundamentals/payment-glossary#card-not-present-cnp).\n* `ONECLICK,RECURRING` – Payment details can be used regardless of whether the shopper is on your site or not.\n* `PAYOUT` – Payment details can be used to [make a payout](https://docs.adyen.com/online-payments/online-payouts).",
            "enum": [
              "ONECLICK",
              "RECURRING",
              "PAYOUT"
            ],
            "type": "string"
          },
          "recurringDetailName": {
            "description": "A descriptive name for this detail.",
            "type": "string"
          },
          "recurringExpiry": {
            "description": "Date after which no further authorisations shall be performed. Only for 3D Secure 2.",
            "format": "date-time",
            "type": "string",
            "x-addedInVersion": "40"
          },
          "recurringFrequency": {
            "description": "Minimum number of days between authorisations. Only for 3D Secure 2.",
            "type": "string",
            "x-addedInVersion": "40"
          },
          "tokenService": {
            "description": "The name of the token service.",
            "enum": [
              "VISATOKENSERVICE",
              "MCTOKENSERVICE"
            ],
            "type": "string",
            "x-addedInVersion": "25"
          }
        },
        "type": "object"
      },
      "RecurringDetail": {
        "properties": {
          "additionalData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "This field contains additional data, which may be returned in a particular response.\n\nThe additionalData object consists of entries, each of which includes the key and value.",
            "type": "object",
            "x-addedInVersion": "5"
          },
          "alias": {
            "description": "The alias of the credit card number.\n\nApplies only to recurring contracts storing credit card details",
            "type": "string",
            "x-addedInVersion": "4"
          },
          "aliasType": {
            "description": "The alias type of the credit card number.\n\nApplies only to recurring contracts storing credit card details.",
            "type": "string",
            "x-addedInVersion": "4"
          },
          "bank": {
            "$ref": "#/components/schemas/BankAccount",
            "description": "A container for bank account data."
          },
          "billingAddress": {
            "$ref": "#/components/schemas/Address",
            "description": "The billing address.",
            "x-addedInVersion": "4"
          },
          "card": {
            "$ref": "#/components/schemas/Card",
            "description": "A container for card data."
          },
          "contractTypes": {
            "description": "Types of recurring contracts.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-addedInVersion": "12"
          },
          "creationDate": {
            "description": "The date when the recurring details were created.",
            "format": "date-time",
            "type": "string"
          },
          "firstPspReference": {
            "description": "The `pspReference` of the first recurring payment that created the recurring detail.",
            "type": "string",
            "x-addedInVersion": "4"
          },
          "name": {
            "description": "An optional descriptive name for this recurring detail.",
            "type": "string"
          },
          "networkTxReference": {
            "description": "Returned in the response if you are not tokenizing with Adyen and are using the Merchant-initiated transactions (MIT) framework from Mastercard or Visa.\n\nThis contains either the Mastercard Trace ID or the Visa Transaction ID.",
            "type": "string",
            "x-addedInVersion": "68"
          },
          "paymentMethodVariant": {
            "description": "The  type or sub-brand of a payment method used, e.g. Visa Debit, Visa Corporate, etc. For more information, refer to [PaymentMethodVariant](https://docs.adyen.com/development-resources/paymentmethodvariant).",
            "type": "string",
            "x-addedInVersion": "2"
          },
          "recurringDetailReference": {
            "description": "The reference that uniquely identifies the recurring detail.",
            "type": "string"
          },
          "shopperName": {
            "$ref": "#/components/schemas/Name",
            "description": "The name of the shopper.",
            "x-addedInVersion": "4"
          },
          "socialSecurityNumber": {
            "description": "A shopper's social security number (only in countries where it is legal to collect).",
            "type": "string",
            "x-addedInVersion": "4"
          },
          "tokenDetails": {
            "$ref": "#/components/schemas/TokenDetails",
            "x-addedInVersion": "2"
          },
          "variant": {
            "description": "The payment method, such as “mc\", \"visa\", \"ideal\", \"paypal\".",
            "type": "string"
          }
        },
        "required": [
          "recurringDetailReference",
          "variant"
        ],
        "type": "object"
      },
      "RecurringDetailWrapper": {
        "properties": {
          "RecurringDetail": {
            "$ref": "#/components/schemas/RecurringDetail"
          }
        }
      },
      "RecurringDetailsRequest": {
        "properties": {
          "merchantAccount": {
            "description": "The merchant account identifier you want to process the (transaction) request with.",
            "type": "string"
          },
          "recurring": {
            "$ref": "#/components/schemas/Recurring",
            "description": "A container for the type of a recurring contract to be retrieved.\n\nThe contract value needs to match the contract value submitted in the payment transaction used to create a recurring contract.\nHowever, if `ONECLICK,RECURRING` is the original contract definition in the initial payment, then `contract` should take either `ONECLICK` or `RECURRING`, depending on whether or not you want the shopper to enter their card's security code when they finalize their purchase."
          },
          "shopperReference": {
            "description": "The reference you use to uniquely identify the shopper (e.g. user ID or account ID).",
            "type": "string"
          }
        },
        "required": [
          "merchantAccount",
          "shopperReference"
        ],
        "type": "object"
      },
      "RecurringDetailsResult": {
        "properties": {
          "creationDate": {
            "description": "The date when the recurring details were created.",
            "format": "date-time",
            "type": "string"
          },
          "details": {
            "description": "Payment details stored for recurring payments.",
            "items": {
              "$ref": "#/components/schemas/RecurringDetailWrapper"
            },
            "type": "array"
          },
          "lastKnownShopperEmail": {
            "description": "The most recent email for this shopper (if available).",
            "type": "string"
          },
          "shopperReference": {
            "description": "The reference you use to uniquely identify the shopper (e.g. user ID or account ID).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ScheduleAccountUpdaterRequest": {
        "properties": {
          "additionalData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "This field contains additional data, which may be required for a particular request.",
            "type": "object"
          },
          "card": {
            "$ref": "#/components/schemas/Card",
            "description": "Credit card data.\n\nOptional if `shopperReference` and `selectedRecurringDetailReference` are provided."
          },
          "merchantAccount": {
            "description": "Account of the merchant.",
            "type": "string"
          },
          "reference": {
            "description": "A reference that merchants can apply for the call.",
            "type": "string"
          },
          "selectedRecurringDetailReference": {
            "description": "The selected detail recurring reference.\n\nOptional if `card` is provided.",
            "type": "string"
          },
          "shopperReference": {
            "description": "The reference of the shopper that owns the recurring contract.\n\nOptional if `card` is provided.",
            "type": "string"
          }
        },
        "required": [
          "merchantAccount",
          "reference"
        ],
        "type": "object"
      },
      "ScheduleAccountUpdaterResult": {
        "properties": {
          "pspReference": {
            "description": "Adyen's 16-character unique reference associated with the transaction. This value is globally unique; quote it when communicating with us about this request.",
            "type": "string"
          },
          "result": {
            "description": "The result of scheduling an Account Updater. If scheduling was successful, this field returns **Success**; otherwise it contains the error message.",
            "type": "string"
          }
        },
        "required": [
          "pspReference",
          "result"
        ],
        "type": "object"
      },
      "ServiceError": {
        "properties": {
          "additionalData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Contains additional information about the payment. Some data fields are included only if you select them first. Go to **Customer Area** > **Developers** > **Additional data**.",
            "type": "object",
            "x-addedInVersion": "46"
          },
          "errorCode": {
            "description": "The error code mapped to the error message.",
            "type": "string"
          },
          "errorType": {
            "description": "The category of the error.",
            "type": "string"
          },
          "message": {
            "description": "A short explanation of the issue.",
            "type": "string"
          },
          "pspReference": {
            "description": "The PSP reference of the payment.",
            "type": "string"
          },
          "status": {
            "description": "The HTTP response status.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "TokenDetails": {
        "properties": {
          "tokenData": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "tokenDataType": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "in": "header",
        "name": "X-API-Key",
        "type": "apiKey"
      },
      "BasicAuth": {
        "scheme": "basic",
        "type": "http"
      }
    }
  },
  "x-groups": [
    "General"
  ]
}