{ "openapi" : "3.1.0", "servers" : [ { "url" : "https://pal-test.adyen.com/pal/servlet/Recurring/v68" } ], "info" : { "version" : "68", "x-publicVersion" : true, "title" : "Adyen Recurring API", "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", "contact" : { "name" : "Adyen Developer Experience team", "url" : "https://github.com/Adyen/adyen-openapi" } }, "tags" : [ { "name" : "General" } ], "paths" : { "/createPermit" : { "post" : { "tags" : [ "General" ], "summary" : "Create new permits linked to a recurring contract.", "description" : "Create permits for a recurring contract, including support for defining restrictions.", "x-addedInVersion" : "40", "operationId" : "post-createPermit", "x-sortIndex" : 0, "x-methodName" : "createPermit", "security" : [ { "BasicAuth" : [ ] }, { "ApiKeyAuth" : [ ] } ], "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." } } } }, "/disable" : { "post" : { "tags" : [ "General" ], "summary" : "Disable stored payment details", "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", "x-sortIndex" : 2, "x-methodName" : "disable", "security" : [ { "BasicAuth" : [ ] }, { "ApiKeyAuth" : [ ] } ], "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." } } } }, "/disablePermit" : { "post" : { "tags" : [ "General" ], "summary" : "Disable an existing permit.", "description" : "Disable a permit that was previously linked to a recurringDetailReference.", "x-addedInVersion" : "61", "operationId" : "post-disablePermit", "x-sortIndex" : 0, "x-methodName" : "disablePermit", "security" : [ { "BasicAuth" : [ ] }, { "ApiKeyAuth" : [ ] } ], "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." } } } }, "/listRecurringDetails" : { "post" : { "tags" : [ "General" ], "summary" : "Get stored payment details", "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", "x-sortIndex" : 1, "x-methodName" : "listRecurringDetails", "security" : [ { "BasicAuth" : [ ] }, { "ApiKeyAuth" : [ ] } ], "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." } } } }, "/notifyShopper" : { "post" : { "tags" : [ "General" ], "summary" : "Ask issuer to notify the shopper", "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", "x-sortIndex" : 4, "x-methodName" : "notifyShopper", "security" : [ { "BasicAuth" : [ ] }, { "ApiKeyAuth" : [ ] } ], "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." } } } }, "/scheduleAccountUpdater" : { "post" : { "tags" : [ "General" ], "summary" : "Schedule running the Account Updater", "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.", "x-addedInVersion" : "4", "operationId" : "post-scheduleAccountUpdater", "x-sortIndex" : 3, "x-methodName" : "scheduleAccountUpdater", "security" : [ { "BasicAuth" : [ ] }, { "ApiKeyAuth" : [ ] } ], "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." } } } } }, "components" : { "schemas" : { "Address" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "properties" : { "bankAccountNumber" : { "description" : "The bank account number (without separators).", "type" : "string" }, "bankCity" : { "x-addedInVersion" : "18", "description" : "The bank city.", "type" : "string" }, "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" : { "x-addedInVersion" : "18", "description" : "The bank account holder's tax ID.", "type" : "string" } }, "type" : "object" }, "Card" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "properties" : { "contract" : { "x-addedInVersion" : "3", "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" }, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "properties" : { "firstName" : { "description" : "The first name.", "maxLength" : 80, "type" : "string" }, "lastName" : { "description" : "The last name.", "maxLength" : 80, "type" : "string" } }, "required" : [ "firstName", "lastName" ], "type" : "object" }, "NotifyShopperRequest" : { "additionalProperties" : false, "properties" : { "amount" : { "description" : "The amount of the upcoming payment.", "$ref" : "#/components/schemas/Amount" }, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "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" : { "description" : "Permit level restriction overrides.", "$ref" : "#/components/schemas/PermitRestriction" }, "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" : { "additionalProperties" : false, "properties" : { "maxAmount" : { "description" : "The total sum amount of one or more payments made using this permit may not exceed this amount if set.", "$ref" : "#/components/schemas/Amount" }, "singleTransactionLimit" : { "description" : "The amount of any single payment using this permit may not exceed this amount if set.", "$ref" : "#/components/schemas/Amount" }, "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" : { "additionalProperties" : false, "properties" : { "resultKey" : { "x-addedInVersion" : "32", "description" : "The key to link permit requests to permit results.", "type" : "string" }, "token" : { "x-addedInVersion" : "32", "description" : "The permit token which is used to make payments by the partner company.", "type" : "string" } }, "type" : "object" }, "Recurring" : { "additionalProperties" : false, "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" : { "x-addedInVersion" : "40", "description" : "Date after which no further authorisations shall be performed. Only for 3D Secure 2.", "format" : "date-time", "type" : "string" }, "recurringFrequency" : { "x-addedInVersion" : "40", "description" : "Minimum number of days between authorisations. Only for 3D Secure 2.", "type" : "string" }, "tokenService" : { "x-addedInVersion" : "25", "description" : "The name of the token service.", "enum" : [ "VISATOKENSERVICE", "MCTOKENSERVICE", "AMEXTOKENSERVICE", "TOKEN_SHARING" ], "type" : "string" } }, "type" : "object" }, "RecurringDetail" : { "additionalProperties" : false, "properties" : { "additionalData" : { "x-addedInVersion" : "5", "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" }, "alias" : { "x-addedInVersion" : "4", "description" : "The alias of the credit card number.\n\nApplies only to recurring contracts storing credit card details", "type" : "string" }, "aliasType" : { "x-addedInVersion" : "4", "description" : "The alias type of the credit card number.\n\nApplies only to recurring contracts storing credit card details.", "type" : "string" }, "bank" : { "description" : "A container for bank account data.", "$ref" : "#/components/schemas/BankAccount" }, "billingAddress" : { "x-addedInVersion" : "4", "description" : "The billing address.", "$ref" : "#/components/schemas/Address" }, "card" : { "description" : "A container for card data.", "$ref" : "#/components/schemas/Card" }, "contractTypes" : { "x-addedInVersion" : "12", "description" : "Types of recurring contracts.", "items" : { "type" : "string" }, "type" : "array" }, "creationDate" : { "description" : "The date when the recurring details were created.", "format" : "date-time", "type" : "string" }, "firstPspReference" : { "x-addedInVersion" : "4", "description" : "The `pspReference` of the first recurring payment that created the recurring detail.", "type" : "string" }, "name" : { "description" : "An optional descriptive name for this recurring detail.", "type" : "string" }, "networkTxReference" : { "x-addedInVersion" : "68", "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" }, "paymentMethodVariant" : { "x-addedInVersion" : "2", "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" }, "recurringDetailReference" : { "description" : "The reference that uniquely identifies the recurring detail.", "type" : "string" }, "shopperName" : { "x-addedInVersion" : "4", "description" : "The name of the shopper.", "$ref" : "#/components/schemas/Name" }, "socialSecurityNumber" : { "x-addedInVersion" : "4", "description" : "A shopper's social security number (only in countries where it is legal to collect).", "type" : "string" }, "tokenDetails" : { "x-addedInVersion" : "2", "$ref" : "#/components/schemas/TokenDetails" }, "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" : { "additionalProperties" : false, "properties" : { "merchantAccount" : { "description" : "The merchant account identifier you want to process the (transaction) request with.", "type" : "string" }, "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.", "$ref" : "#/components/schemas/Recurring" }, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "properties" : { "additionalData" : { "additionalProperties" : { "type" : "string" }, "description" : "This field contains additional data, which may be required for a particular request.", "type" : "object" }, "card" : { "description" : "Credit card data.\n\nOptional if `shopperReference` and `selectedRecurringDetailReference` are provided.", "$ref" : "#/components/schemas/Card" }, "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" : { "additionalProperties" : false, "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" : { "additionalProperties" : false, "properties" : { "additionalData" : { "x-addedInVersion" : "46", "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" }, "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" : { "additionalProperties" : false, "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" } }, "examples" : { "post-disable-disableARecurringContract" : { "summary" : "Disable a recurring contract", "value" : { "shopperReference" : "YOUR_SHOPPER_REFERENCE", "recurringDetailReference" : "8314442372419167", "merchantAccount" : "YOUR_MERCHANT_ACCOUNT" } }, "post-listRecurringDetails-listAllRecurringDetails" : { "summary" : "List recurring details of the specified contract value", "value" : { "recurring" : { "contract" : "RECURRING" }, "shopperReference" : "YOUR_SHOPPER_REFERENCE", "merchantAccount" : "YOUR_MERCHANT_ACCOUNT" } }, "post-notifyShopper-notifyShopperOfUpcomingRecurringPayment" : { "summary" : "Request issuer to notify shopper of upcoming recurring payment", "value" : { "merchantAccount" : "YOUR_MERCHANT_ACCOUNT", "storedPaymentMethodId" : "8415995487234100", "shopperReference" : "YOUR_SHOPPER_REFERENCE", "amount" : { "currency" : "INR", "value" : 1000 }, "billingDate" : "2021-03-16", "reference" : "Example reference", "displayedReference" : "exampleDisplayedReference" } }, "post-notifyShopper-notifyShopperOfUpcomingRecurringPayment-200" : { "summary" : "Example response for request 'notifyShopper'", "value" : { "message" : "Request Processed Successfully", "resultCode" : "Success", "shopperNotificationReference" : "9915003646742627", "storedPaymentMethodId" : "8415995487234100", "pspReference" : "M5N7TQ4TG5PFWR50", "reference" : "Example reference", "displayedReference" : "exampleDisplayedReference" } }, "post-scheduleAccountUpdater-scheduleAccountUpdaterWithCardData" : { "summary" : "Schedule AccountUpdater with card data", "value" : { "merchantAccount" : "YOUR_MERCHANT_ACCOUNT", "reference" : "YOUR_REFERENCE", "card" : { "expiryMonth" : "03", "expiryYear" : "2030", "holderName" : "Adyen Test", "number" : "4111111111111111" } } }, "post-scheduleAccountUpdater-scheduleAccountUpdaterWithTokenData" : { "summary" : "Schedule AccountUpdater with token data", "value" : { "merchantAccount" : "YOUR_MERCHANT_ACCOUNT", "reference" : "YOUR_REFERENCE", "shopperReference" : "YOUR_SHOPPER_REFERENCE", "selectedRecurringDetailReference" : "8814232895168272" } } } } }