{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/adyen/main/json-schema/adyen-cost-estimate-request-schema.json",
  "title": "CostEstimateRequest",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/adyen-cost-api-openapi.yml#/components/schemas/CostEstimateRequest",
  "properties": {
    "amount": {
      "description": "The transaction amount used as a base for the cost estimation.",
      "$ref": "#/$defs/Amount"
    },
    "assumptions": {
      "description": "Assumptions made for the expected characteristics of the transaction, for which the charges are being estimated.",
      "$ref": "#/$defs/CostEstimateAssumptions"
    },
    "cardNumber": {
      "description": "The card number (4-19 characters) for PCI compliant use cases. Do not use any separators.\n\n> Either the `cardNumber` or `encryptedCardNumber` field must be provided in a payment request.",
      "maxLength": 19,
      "minLength": 4,
      "type": "string"
    },
    "encryptedCardNumber": {
      "description": "Encrypted data that stores card information for non PCI-compliant use cases. The encrypted data must be created with the Checkout Card Component or Secured Fields Component, and must contain the `encryptedCardNumber` field.\n\n> Either the `cardNumber` or `encryptedCardNumber` field must be provided in a payment request.",
      "type": "string"
    },
    "merchantAccount": {
      "description": "The merchant account identifier you want to process the (transaction) request with.",
      "type": "string"
    },
    "merchantDetails": {
      "description": "Additional data for merchants who don't use Adyen as the payment authorisation gateway.",
      "$ref": "#/$defs/MerchantDetails"
    },
    "recurring": {
      "description": "The recurring settings for the payment. Use this property when you want to enable [recurring payments](https://docs.adyen.com/online-payments/tokenization).",
      "$ref": "#/$defs/Recurring"
    },
    "selectedRecurringDetailReference": {
      "description": "The `recurringDetailReference` you want to use for this cost estimate. The value `LATEST` can be used to select the most recently stored recurring detail.",
      "type": "string"
    },
    "shopperInteraction": {
      "description": "Specifies the sales channel, through which the shopper gives their card details, and whether the shopper is a returning customer.\nFor the web service API, Adyen assumes Ecommerce shopper interaction by default.\n\nThis field has the following possible values:\n* `Ecommerce` - Online transactions where the cardholder is present (online). For better authorisation rates, we recommend sending the card security code (CSC) along with the request.\n* `ContAuth` - Card on file and/or subscription transactions, where the card holder is known to the merchant (returning customer). If the shopper is present (online), you can supply also the CSC to improve authorisation (one-click payment).\n* `Moto` - Mail-order and telephone-order transactions where the shopper is in contact with the merchant via email or telephone.\n* `POS` - Point-of-sale transactions where the shopper is physically present to make a payment using a secure payment terminal.",
      "enum": [
        "Ecommerce",
        "ContAuth",
        "Moto",
        "POS"
      ],
      "type": "string"
    },
    "shopperReference": {
      "description": "Required for recurring payments. \nYour reference to uniquely identify this shopper, for example user ID or account ID. Minimum length: 3 characters.\n> Your reference must not include personally identifiable information (PII), for example name or email address.",
      "type": "string"
    }
  },
  "required": [
    "amount",
    "merchantAccount"
  ],
  "type": "object",
  "$defs": {
    "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"
    },
    "CostEstimateAssumptions": {
      "properties": {
        "assume3DSecureAuthenticated": {
          "description": "If true, the cardholder is expected to successfully authorise via 3D Secure.",
          "type": "boolean"
        },
        "assumeLevel3Data": {
          "description": "If true, the transaction is expected to have valid Level 3 data.",
          "type": "boolean"
        },
        "installments": {
          "description": "If not zero, the number of installments.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "MerchantDetails": {
      "properties": {
        "countryCode": {
          "description": "2-letter ISO 3166 country code of the card acceptor location.\n> This parameter is required for the merchants who don't use Adyen as the payment authorisation gateway.",
          "maxLength": 2,
          "minLength": 2,
          "type": "string"
        },
        "enrolledIn3DSecure": {
          "description": "If true, indicates that the merchant is enrolled in 3D Secure for the card network.",
          "type": "boolean"
        },
        "mcc": {
          "description": "The merchant category code (MCC) is a four-digit number which relates to a particular market segment. This code reflects the predominant activity that is conducted by the merchant.\n\nThe list of MCCs can be found [here](https://en.wikipedia.org/wiki/Merchant_category_code).",
          "type": "string"
        }
      },
      "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": {
          "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"
    }
  }
}