{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/adyen/main/json-schema/adyen-recurring-details-result-schema.json",
  "title": "RecurringDetailsResult",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/adyen-listrecurringdetails-api-openapi.yml#/components/schemas/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": "#/$defs/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",
  "$defs": {
    "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"
    },
    "BankAccount": {
      "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": {
      "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"
    },
    "Name": {
      "properties": {
        "firstName": {
          "description": "The first name.",
          "type": "string"
        },
        "lastName": {
          "description": "The last name.",
          "type": "string"
        }
      },
      "required": [
        "firstName",
        "lastName"
      ],
      "type": "object"
    },
    "RecurringDetail": {
      "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": "#/$defs/BankAccount"
        },
        "billingAddress": {
          "x-addedInVersion": "4",
          "description": "The billing address.",
          "$ref": "#/$defs/Address"
        },
        "card": {
          "description": "A container for card data.",
          "$ref": "#/$defs/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": "#/$defs/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": "#/$defs/TokenDetails"
        },
        "variant": {
          "description": "The payment method, such as “mc\", \"visa\", \"ideal\", \"paypal\".",
          "type": "string"
        }
      },
      "required": [
        "recurringDetailReference",
        "variant"
      ],
      "type": "object"
    },
    "RecurringDetailWrapper": {
      "properties": {
        "RecurringDetail": {
          "$ref": "#/$defs/RecurringDetail"
        }
      }
    },
    "TokenDetails": {
      "properties": {
        "tokenData": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "tokenDataType": {
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}