Worldpay Payment API

Take a payment

Operations 1

POST /api/payments Payment request #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/worldpay-payment-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

worldpay-payment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 3DS 3DS actions Payment API
  description: "Protect your business and meet regulatory requirements by verifying your customer's identity.\n\n__Authentication header__\n  ```\n    Authorization: {your_credentials}\n  ```\nReplace `{your_credentials}` with your base64-encoded Basic Auth username and password given to your by your Worldpay Implementation Manager.\n<br /> <br />\n\nYou **must** use the `Authorization` header for any request you send to our 3DS API.\n\n__Accept/Content-Type header__\n  ```\n  Content-Type: application/vnd.worldpay.verifications.customers-v3.hal+json\n  Accept: application/vnd.worldpay.verifications.customers-v3.hal+json\n  ```\nWe use the Accept header to identify which version of our API you are using. You must use the Accept header for any request you send to our 3DS API.\n\nWe require the Content-Type header if the request you're sending includes a request body, and if the HTTP method is a `POST` or a `PUT`.\n<br /><br />\n\n\n__DNS whitelisting__  \nWhitelist the following URLs:\n* `https://try.access.worldpay.com/`\n* `https://access.worldpay.com/`\n\nPlease ensure you use DNS whitelisting, not explicit IP whitelisting."
  version: '3'
  x-metadata:
    category:
    - 3DS
    - SCA Exemptions
    business:
    - Enterprise
    catalog-list: true
    generated: false
servers:
- url: https://try.access.worldpay.com
  description: Test (Try)
- url: https://access.worldpay.com
  description: Live
security:
- BasicAuth: []
tags:
- name: Payment
  description: Take a payment
paths:
  /api/payments:
    post:
      tags:
      - Payment
      summary: Payment request
      description: Initiate payment
      operationId: payment
      parameters:
      - name: WP-Api-Version
        in: header
        description: The API version
        required: true
        schema:
          type: string
          description: The API version
          enum:
          - '2024-06-01'
          example: '2024-06-01'
        example: '2024-06-01'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
            examples:
              Card - ecom:
                $ref: '#/components/examples/card-payment'
              Card - moto:
                $ref: '#/components/examples/card-payment_moto'
              Card - auto settlement:
                $ref: '#/components/examples/card-payment-auto-settlement'
              Card - integrated 3DS authentication:
                $ref: '#/components/examples/card-payment-integrated-3ds'
              Card - external 3DS authentication:
                $ref: '#/components/examples/card-payment-external-3ds'
              Card - SCA exemption:
                $ref: '#/components/examples/card-payment-exemption'
              Card - Fraud assessment:
                $ref: '#/components/examples/card-payment-fraud'
              Card - Payment facilitator:
                $ref: '#/components/examples/card-payment-payfac'
              Card - Account funding transaction (AFT):
                $ref: '#/components/examples/card-payment-fundsTransfer'
              Card - Preferred card brand:
                $ref: '#/components/examples/card-payment-cobranded'
              Card - Checkout SDK session:
                $ref: '#/components/examples/card-payment-checkout'
              Card - Delegate token:
                $ref: '#/components/examples/card-payment-delegate'
              Card - payment & store (Worldpay Token):
                $ref: '#/components/examples/store-card-token'
              Card - Store card (no payment):
                $ref: '#/components/examples/store-card-only-token'
              Stored - Worldpay Token (href):
                $ref: '#/components/examples/use-stored-card-token-href'
              Stored - Worldpay Token (tokenId & namespace):
                $ref: '#/components/examples/use-stored-card-token-tokenId-namespace'
              Stored - Network Token:
                $ref: '#/components/examples/use-stored-card-network-token'
              Stored - Worldpay Token & Checkout CVC session:
                $ref: '#/components/examples/use-stored-card-checkout-cvc'
              Apple Pay - encrypted:
                $ref: '#/components/examples/apple-pay-encrypted'
              Apple Pay - decrypted:
                $ref: '#/components/examples/apple-pay-decrypted'
              Google Pay - encrypted:
                $ref: '#/components/examples/google-pay-encrypted'
              Google Pay - decrypted (CRYPTOGRAM_3DS):
                $ref: '#/components/examples/google-pay-decrypted-cryptogram-3ds'
              Google Pay - decrypted (PAN_ONLY):
                $ref: '#/components/examples/google-pay-decrypted-pan-only'
              Subscription - setup:
                $ref: '#/components/examples/setup-recurring-subscription'
              Subscription - setup - (no payment):
                $ref: '#/components/examples/setup-recurring-subscription-zero'
              Subscription - subsequent:
                $ref: '#/components/examples/subsequent-recurring-subscription'
              Installment - setup (merchant):
                $ref: '#/components/examples/setup-recurring-installment-merchant'
              Installment - subsequent (merchant):
                $ref: '#/components/examples/subsequent-recurring-installment-merchant'
              Installment - setup (Latin America):
                $ref: '#/components/examples/setup-recurring-installment-latam'
              Unscheduled:
                $ref: '#/components/examples/recurring-unscheduled'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsResponse201'
              examples:
                authorized (basic):
                  $ref: '#/components/examples/authorized-201-basic'
                authorized (full):
                  $ref: '#/components/examples/authorized-201-full'
                3dsDeviceDataRequired:
                  $ref: '#/components/examples/3ds-device-data-required-201'
                fraudHighRisk:
                  $ref: '#/components/examples/fs-highrisk'
                refused:
                  $ref: '#/components/examples/refused-201'
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsResponse202'
              examples:
                sentForSettlement (basic):
                  $ref: '#/components/examples/sent-for-settlement-202-basic'
                sentForSettlement (full):
                  $ref: '#/components/examples/sent-for-settlement-202-full'
                sentForCancellation:
                  $ref: '#/components/examples/sent-for-cancellation-202'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
              examples:
                Bad request:
                  $ref: '#/components/examples/400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Unauthorized:
                  $ref: '#/components/examples/401'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Not found:
                  $ref: '#/components/examples/404'
        '406':
          description: Not acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HeaderErrorResponse'
              examples:
                Not acceptable:
                  $ref: '#/components/examples/406'
        '415':
          description: Unsupported media type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Unsupported media type:
                  $ref: '#/components/examples/415'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Internal server error:
                  $ref: '#/components/examples/500'
      x-orderingPosition: '1'
components:
  schemas:
    Value:
      type: object
      description: The value and currency.
      properties:
        currency:
          type: string
          description: ' The three character currency code. See list of <a href="/products/reference/supported-countries-currencies#iso-currency-codes">supported currencies</a> '
          example: USD
          minLength: 1
        amount:
          type: integer
          format: int32
          description: 'The payment amount. Implied decimal. For example, 250 GBP = £2.50

            When set to `0` will perform a card verification instead of a payment as part of a new `customerAgreement`.'
          example: 250
        acceptPartialAmount:
          type: boolean
          description: Set to `true` to accept a partial authorization amount. You can charge the remainder of the amount using a different payment credential with a new authorization request.
      required:
      - amount
      - currency
    SessionPaymentInstrument:
      allOf:
      - $ref: '#/components/schemas/PaymentsPaymentInstrument'
      - type: object
        properties:
          type:
            type: string
            enum:
            - checkout
          sessionHref:
            type: string
            description: '

              An http address that contains your Checkout session providing the card details.'
          cardHolderName:
            type: string
            description: '


              The name on your customer''s card. Required if  instruction.tokenCreation is present. However we recommend that you supply this to improve authentication rates.'
            example: Sherlock Holmes
            maxLength: 255
            minLength: 1
          billingAddress:
            $ref: '#/components/schemas/PaymentsBillingAddress'
          routing:
            $ref: '#/components/schemas/Routing'
      required:
      - sessionHref
      - type
    Customer:
      type: object
      properties:
        customerId:
          type: string
          description: 'Unique identifier used by the ecommerce system for the customer.


            __Used for:__ Risk assessment'
          maxLength: 128
          minLength: 1
        firstName:
          type: string
          description: 'Customer''s first name.


            __Used for:__ 3DS authentication | Risk assessment'
          maxLength: 22
          minLength: 1
        lastName:
          type: string
          description: 'Customer''s last name.


            __Used for:__ 3DS authentication | Risk assessment'
          maxLength: 22
          minLength: 1
        phone:
          type: string
          description: 'Customer''s phone number.


            __Used for:__ 3DS authentication | Risk assessment | Card authorization'
          maxLength: 20
          minLength: 4
          pattern: ^[0-9]*$
        dateOfBirth:
          type: string
          format: date
          description: 'Customer''s date of birth.


            __Used for:__ Risk assessment'
        email:
          type: string
          description: 'Customers''s email address used for the ecommerce account.


            __Used for:__ 3DS authentication | Risk assessment | Card authorization'
          maxLength: 128
          minLength: 1
          pattern: ^.+@.+$
        ipAddress:
          type: string
          description: ' A unique identifier for your customer''s physical location that can be used by the issuer in risk analysis. Must be in IPv4 or IPv6 format. E.g. 192.0.0.0.


            __Used for:__ 3DS authentication | Risk assessment | Card authorization'
        documentReference:
          type: string
          description: Required for domestic processing in some Latin American countries.
          maxLength: 50
          minLength: 1
          pattern: ^[-A-Za-z0-9_\-/\\*~+.,&()]*$
    PaymentsNetworkTokenPaymentInstrument:
      allOf:
      - $ref: '#/components/schemas/PaymentsPaymentInstrument'
      - type: object
        properties:
          type:
            type: string
            enum:
            - networkToken
          tokenNumber:
            type: string
            description: The network token number.
            maxLength: 19
            minLength: 12
            pattern: '[0-9]*$'
          cardHolderName:
            type: string
            description: The name as shown on the card.
            maxLength: 255
            minLength: 1
          cryptogram:
            type: string
            description: The single-use cryptogram provisioned for this payment. Required for all Customer Initiated Transactions (CITs). <br><br> __Note:__ If the `cryptogram` and `eci` are not provided, the Payments API will __automatically__ attempt to provision them. This will only be successful for Network Tokens created via Worldpay. For Network Tokens created via other gateways you must provide these.
            maxLength: 40
            minLength: 1
          eci:
            type: string
            description: Electronic Commerce Indicator.
            pattern: ^\d{2}$
          expiryDate:
            $ref: '#/components/schemas/ExpiryDate'
          billingAddress:
            $ref: '#/components/schemas/PaymentsBillingAddress'
      required:
      - expiryDate
      - tokenNumber
      - type
    PaymentsFundsTransfer:
      type: object
      description: 'Contains details of the funds transfer request, which is a money movement for a reason other than the purchase of goods or services (also known as Account Funding Transaction (AFT)).


        Read more on how to set it up under our [__Account Funding Transactions__](/products/payments/enable-features/account-funding-transactions) guide.'
      properties:
        type:
          type: string
          description: Specifies the type of the funds transfer. {% admonition type="warning" name="Note" %} You may only submit the `fundsTransfer.type` values that relate to the use cases that you have been approved for by the schemes.{% /admonition %}
          enum:
          - accountToAccount
          - cash
          - disbursement
          - personToPerson
          - purchase
          - topUp
          - walletLoad
          x-enumDescriptions:
            disbursement: A card is used as the source of funds for a disbursement
            personToPerson: Move funds to an account owned by another person (eg gifts)
            accountToAccount: Move funds to another financial institution account owned by the same person
            topUp: Top up a pre-paid or debit card
            purchase: For the initial purchase of a reloadable account (such as prepaid or gift card), or direct crypto & liquid asset purchases without an intermediary wallet load
            cash: A card is used to fund a transfer where funds are given to the recipient in cash
            walletLoad: Move funds to a digital wallet owned by the same person
        purpose:
          type: string
          description: Specifies the purpose of the funds transfer. Required for some regions and use cases (eg crypto).
          enum:
          - businessToBusiness
          - creditCardRepayment
          - crypto
          - crowdLending
          - debitCard
          - education
          - emergency
          - familySupport
          - gift
          - giftCard
          - gaming
          - highRiskSecurities
          - liquidAssets
          - medical
          - payroll
          - prepaidCard
          - salary
          - savings
          - travel
          - other
        recipient:
          $ref: '#/components/schemas/PaymentsFundsRecipient'
        sender:
          $ref: '#/components/schemas/PaymentsFundsSender'
      required:
      - type
    PaymentRequest:
      properties:
        transactionReference:
          type: string
          description: ' A unique reference generated by you that is used to identify a payment throughout its lifecycle. '
          maxLength: 64
          minLength: 1
          pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$
        orderReference:
          type: string
          description: 'A reference that you can apply to one or more payments according to your business needs. You may reuse the same reference across multiple payments, for example where:

            - the total amount for a single order is split across multiple payments

            - you use a single reference for each payment in a recurring agreement or split shipment scenario'
          maxLength: 64
          minLength: 1
          pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~/+]*$
        merchant:
          $ref: '#/components/schemas/Merchant'
        instruction:
          $ref: '#/components/schemas/PaymentsInstruction'
        channel:
          type: string
          description: 'Interaction between the cardholder and you. Supply a value of `ecom` to process an eCommerce authorization. Supply a value of `moto` to process an authorization as a [__Mail Order or Telephone Order__](/products/payments/enable-features/moto) transaction.


            __Note: 3DS authentication cannot be supplied for MOTO payments__.'
          enum:
          - ecom
          - moto
      required:
      - instruction
      - merchant
      - transactionReference
    PaymentsFundsRecipient:
      description: An object containing details about the recipient of funds, including name and address information, as well as recipient account details. In many use cases, the recipient is the same person as the sender (for example if your customer uses their card to load funds into their own crypto exchange or investment account). __Although an optional object in the API schema, `recipient` is required for some regions and use cases.__
      properties:
        account:
          $ref: '#/components/schemas/PaymentsRecipientAccount'
        firstName:
          type: string
          description: Recipient's first name.
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s*$).*$
        middleName:
          type: string
          description: Recipient's middle name.
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s*$).*$
        lastName:
          type: string
          description: Recipient's last name.
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s*$).*$
        address:
          $ref: '#/components/schemas/PaymentsTransferAddress'
        dateOfBirth:
          type: string
          format: date
          description: Recipient's date of birth
        phoneNumber:
          type: string
          description: Recipient's phone number
          maxLength: 20
          minLength: 4
          pattern: ^(?!\s*$)[0-9\s()+\-/.x]*$
        documentReference:
          type: string
          description: Required for domestic processing in some Latin American countries.
          maxLength: 25
          minLength: 1
          pattern: ^[-A-Za-z0-9_\-/\\*~+.,&()]*$
    PaymentsFundsSender:
      type: object
      description: An object containing details about the sender of funds, including name and address information. The sender account is always the card account declared within `instruction.paymentInstrument`. __Although an optional object in the API schema, `sender` is required for some regions and use cases.__
      properties:
        firstName:
          type: string
          description: Sender's first name. Must be supplied if `lastName` or `middleName` are provided.
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s*$).*$
        middleName:
          type: string
          description: Sender's middle name.
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s*$).*$
        lastName:
          type: string
          description: Sender's last name. Must be supplied if `firstName` or `middleName` are provided.
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s*$).*$
        address:
          $ref: '#/components/schemas/PaymentsTransferAddress'
          description: Sender's address.
        dateOfBirth:
          type: string
          format: date
          description: Sender's date of birth
        documentReference:
          type: string
          description: Sender's document reference (e.g. Tax ID). Required for domestic processing in some Latin American countries.
          maxLength: 25
          minLength: 1
          pattern: ^[-A-Za-z0-9_\-/\\*~+.,&()]*$
    PaymentsTransferAddress:
      type: object
      properties:
        address1:
          type: string
          description: Must be supplied if `city` is provided.
          maxLength: 80
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        address2:
          type: string
          maxLength: 80
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        city:
          type: string
          description: Must be supplied if `address1` is provided.
          maxLength: 50
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        postalCode:
          type: string
          maxLength: 10
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        state:
          type: string
          description: 1-3 alphanumeric characters and spaces.
          maxLength: 3
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        countryCode:
          type: string
          format: ISO 3166-1 alpha-2
          description: Country code in [ISO 3166-1 Alpha-2 format](/products/reference/supported-countries-currencies#iso-country-codes).
          minLength: 1
      required:
      - countryCode
    Cancellation:
      type: object
      properties:
        cvcNotMatched:
          type: string
          description: By default a payment will be `sentForCancellation` if the CVC is `notMatched`, set `disabled` to continue with `sentForSettlement`.
          enum:
          - enabled
          - disabled
        avsNotMatched:
          type: string
          description: By default a payment will be `sentForCancellation` if the `address` or `postcode` AVS is `notMatched`, set `disabled` to continue with `sentForSettlement`.
          enum:
          - enabled
          - disabled
    PaymentsBillingAddress:
      type: object
      description: Contains the billing address information.
      properties:
        address1:
          type: string
          description: Address line 1
          maxLength: 80
          minLength: 1
        address2:
          type: string
          description: Address line 2
          maxLength: 80
          minLength: 1
        address3:
          type: string
          description: Address line 3
          maxLength: 80
          minLength: 1
        postalCode:
          type: string
          description: 'Required for all countries except the following: IE'
          maxLength: 15
          minLength: 1
        city:
          type: string
          description: Address city
          maxLength: 50
          minLength: 1
        state:
          type: string
          description: Address state
          maxLength: 30
          minLength: 1
        countryCode:
          type: string
          format: ISO 3166-1 alpha-2
          description: Must be provided in [ISO 3166-1 alpha-2 format](/products/reference/supported-countries-currencies#iso-country-codes).
          minLength: 1
      required:
      - address1
      - city
      - countryCode
    SessionsDelegatePaymentInstrument:
      allOf:
      - $ref: '#/components/schemas/PaymentsPaymentInstrument'
      - type: object
        properties:
          type:
            type: string
            enum:
            - delegate
          sessionHref:
            type: string
            description: '

              An http address that contains your Delegate token providing the card details.'
      required:
      - sessionHref
      - type
    PaymentsRecipientAccount:
      type: object
      discriminator:
        propertyName: type
        mapping:
          bankAccount: '#/components/schemas/PaymentsBankAccount'
          card: '#/components/schemas/PaymentsCardAccount'
          wallet: '#/components/schemas/PaymentsWalletAccount'
          storedValueWallet: '#/components/schemas/PaymentsWalletAccount'
          stagedDigitalWallet: '#/components/schemas/PaymentsWalletAccount'
          merchantWallet: '#/components/schemas/PaymentsWalletAccount'
          email: '#/components/schemas/PaymentsEmailAccount'
          phone: '#/components/schemas/PaymentsPhoneAccount'
          socialNetwork: '#/components/schemas/PaymentsSocialNetworkAccount'
      properties:
        type:
          type: string
          description: The type of account.
      required:
      - type
    PaymentsSubMerchantAddress:
      type: object
      properties:
        postalCode:
          type: string
          description: Post code/Zip code of your subMerchant's company.
          example: SW1 1AA
          maxLength: 10
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        street:
          type: string
          description: Street name of your subMerchant's company.
          example: 221B Baker Street
          maxLength: 50
          minLength: 1
          pattern: ^(?!\s*$)[A-Za-z0-9\s]*$
        city:
          type: string
          description: City of your subMerchant's company.
          example: London
          maxLength: 13
          minLength: 1
          pattern: ^(?!\s*$)[A-Za-z\s-]*$
        state:
          type: string
          description: State of your subMerchant's company.
          example: GB
          maxLength: 3
          minLength: 1
          pattern: ^(?!\s*$)[a-zA-Z0-9\s]*$
        countryCode:
          type: string
          description: Country code of your subMerchant's company in [ISO 3166-1 Alpha-2 format](/products/reference/supported-countries-currencies#iso-country-codes).
          example: GB
          maxLength: 2
          minLength: 2
      required:
      - city
      - countryCode
      - postalCode
      - street
    TransactionHistory:
      type: object
      properties:
        attemptsLastDay:
          type: integer
          format: int32
          description: ' Number of transactions (successful or abandoned) for this cardholder account within the last 24 hours. '
        attemptsLastYear:
          type: integer
          format: int32
          description: ' Number of transactions (successful or abandoned) for this cardholder account within the last year. '
        completedLastSixMonths:
          type: integer
          format: int32
          description: ' Number of purchases with this customer account during the previous six months. '
        addCardsLastDay:
          type: integer
          format: int32
          description: Number of attempts to add a card in the last 24hrs.
        shippingAddressFirstUsedAt:
          type: string
          description: ' When the shipping address used for the transaction was first used. '
    PaymentsEncryptedPaymentInstrument:
      allOf:
      - $ref: '#/components/schemas/PaymentsPaymentInstrument'
      - type: object
        properties:
          type:
            type: string
            description: The type of instrument.
            enum:
            - encrypted
          walletToken:
            type: string
            minLength: 1
          billingAddress:
            $ref: '#/components/schemas/PaymentsBillingAddress'
      required:
      - type
      - walletToken
    ExpiryDate:
      type: object
      description: Contains your customer's card or token expiry date.
      properties:
        year:
          type: integer
          format: int32
          example: 2028
        month:
          type: integer
          format: int32
          example: 6
      required:
      - month
      - year
    PaymentsShippingAddress:
      type: object
      properties:
        address1:
          type: string
          description: Address line 1
          maxLength: 80
          minLength: 1
        address2:
          type: string
          description: Address line 2
          maxLength: 80
          minLength: 1
        address3:
          type: string
          description: Address line 3
          maxLength: 80
          minLength: 1
        postalCode:
          type: string
          description: Address postal code
          maxLength: 15
          minLength: 1
        city:
          type: string
          description: Address city
          maxLength: 50
          minLength: 1
        state:
          type: string
          description: Address state
          maxLength: 30
          minLength: 1
        countryCode:
          type: string
          format: ISO 3166-1 alpha-2
          description: The supported ISO 3166-1 alpha-2 country code
          minLength: 1
      required:
      - address1
      - city
      - countryCode
      - postalCode
    TokenCreation:
      type: object
      description: 'Use this object if you want to create a token after the payment. Can only be used with paymentInstrument.type: card/plain & checkout.'
      properties:
        type:
          type: string
          enum:
          - worldpay
        namespace:
          type: string
          description: ' A namespace is used to group up to 16 cards, e.g. for one customer. A card can exist in more than one namespace. '
          maxLength: 64
          minLength: 1
          pattern: ^[^_][^ &<]*$
        description:
          type: string
          description: ' A description of your token. If not supplied, a default description is created for you. '
          maxLength: 255
          minLength: 1
          pattern: ^[^&<]*$
      required:
      - type
    PaymentsDecryptedPaymentInstrument:
      allOf:
      - $ref: '#/components/schemas/PaymentsPaymentInstrument'
      - type: object
        properties:
          type:
            type: string
            enum:
            - decrypted
          number:
            type: string
            maxLength: 19
            minLength: 12
            pattern: ^\d+$
          cryptogram:
            type: string
            example: BLIYQ4EA/wLF4/hK9ABFMAABAAA=
            maxLength: 40
            minLength: 1
          eci:
            type: string
            description: Electronic Commerce Indicator.
            pattern: ^\d{2}$
          expiryDate:
            $ref: '#/components/schemas/ExpiryDate'
          billingAddress:
            $ref: '#/components/schemas/PaymentsBillingAddress'
      required:
      - expiryDate
      - number
      - type
    PaymentsFraud:
      type: object
      description: 'Fraud assessment to detect potential fraud and prevent the transaction from proceeding.


        Read more on how to set it up under our [__Fraud Assessment__](/products/payments/enable-features/fraud-assessment) guide.'
      properties:
        type:
          type: string
          default: fraudSight
          description: Enable a FraudSight risk assessment
          enum:
          - fraudSight
        silentMode:
          type: boolean
          default: false
          description: "Perform the Fraud assessment but do not act on the outcome.\n            Normally used for the initial launch while the data model is maturing."
        tmxSessionId:
          type: string
          description: Device fingerprint provided by Threatmetrix.
          maxLength: 128
          minLength: 30
          pattern: ^[A-Za-z0-9_-]*$
        custom:
          $ref: '#/components/schemas/Custom'
          description: Additional values specific to your order that can be used to create manual fraud rules.
      required:
      - type
    PaymentsSubMerchant:
      type: object
      properties:
        name:
          type: string
          description: The name of your subMerchant's company.<br><br>Also used for __3DS authentication__ to display the merchant name durin

# --- truncated at 32 KB (121 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/worldpay/refs/heads/main/openapi/worldpay-payment-api-openapi.yml