Revolut Customers API

The Customers resource in the Merchant API is a pivotal tool for tracking and managing customer-related transactions within your e-commerce or retail platform. This resource provides a structured approach to customer management, enabling you to maintain a consistent record of customer transactions. A `Customer` object can be created using the [Create a customer](https://developer.revolut.com/docs/api/merchant#create-customer) endpoint and you can then retrieve, update and delete a customer using its `id`. `Customer` objects enable you to track multiple transactions in your system associated with the same customer in the Merchant API. You can save and store payment methods of a customer in the `payment_method` object, for more information, see: [Charge a customer's saved payment method](https://developer.revolut.com/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method). A merchant can store the details of the payment securely and group transactions from the same payment method in their system. A payment method is unique for each customer. For example, if the same card is used for a transaction by two different customers, two payment method objects are created linked to each customer. Similar principle applies when saving payment methods via Revolut Pay for merchant initiated transaction (MIT - useful for recurring payments). If a customer saves their details through Revolut Pay for MIT in separate sessions, each session will create a new payment method object linked to the customer. :::note You cannot create a payment method explicitly because they are generated as part of a payment. You can only retrieve, update or delete a payment method, or you can retrieve all payment methods of a customer. :::

Operations 9

POST /api/customers Create a customer #
GET /api/customers Retrieve a customer list #
GET /api/customers/{customer_id} Retrieve a customer #
PATCH /api/customers/{customer_id} Update a customer #
DELETE /api/customers/{customer_id} Delete a customer #
GET /api/customers/{customer_id}/payment-methods Retrieve payment method list of a customer #
GET /api/customers/{customer_id}/payment-methods/{payment_method_id} Retrieve a customer's payment method #
PATCH /api/customers/{customer_id}/payment-methods/{payment_method_id} Update a customer's payment method #
DELETE /api/customers/{customer_id}/payment-methods/{payment_method_id} Delete a customer's payment method #

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/revolut-customers-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

revolut-customers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Merchant Customers API
  version: '2026-04-20'
  description: 'Welcome to the Revolut Merchant API - your solution to managing the core aspects of e-commerce and accepting online payments. Whether you''re a startup, a growing business, or an established enterprise in the e-commerce industry, our API helps you streamline your operations.


    As a Revolut Business customer with a Merchant Account, you can use the

    Merchant API to leverage the following features:


    - [Order management](https://developer.revolut.com/docs/api/merchant#tag-orders)

    - [Customer management](https://developer.revolut.com/docs/api/merchant#tag-customers)

    - [Payment management](https://developer.revolut.com/docs/api/merchant#tag-payments)

    - [Subscription management](https://developer.revolut.com/docs/api/merchant#tag-subscriptions)

    - [Payout management](https://developer.revolut.com/docs/api/merchant#tag-payouts)

    - [Dispute management](https://developer.revolut.com/docs/api/merchant#tag-disputes)

    - [Reporting analytics](https://developer.revolut.com/docs/api/merchant#tag-report-runs)

    - [Webhook management](https://developer.revolut.com/docs/api/merchant#tag-webhooks)

    - [Location management](https://developer.revolut.com/docs/api/merchant#tag-locations)


    ... and more.


    ### API versions


    :::warning

    We highly recommend using versioning in your API calls. If you don''t provide a version header on the operations where it''s required, you will receive an error response.

    :::


    The Merchant API uses request header versioning. Where it is required you need to use the `Revolut-Api-Version` header parameter to specify an API version. Each request, where it is indicated in the API specification, must contain a version header in the following format:


    ```

    ''Revolut-Api-Version: 2026-04-20''

    ```


    :::info

    For more information, see: [API versions](https://developer.revolut.com/docs/guides/merchant/reference/versioning/api-versions)

    :::


    ### Test the Merchant API


    You can test the Merchant API in Postman by forking this collection:


    [![View in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/revolut-api/workspace/revolut-developers/overview)'
  contact: {}
servers:
- description: Production server (uses live data)
  url: https://merchant.revolut.com
- description: Sandbox server (uses test data)
  url: https://sandbox-merchant.revolut.com
security:
- Api-Key: []
tags:
- name: Customers
  description: 'The Customers resource in the Merchant API is a pivotal tool for tracking and managing customer-related transactions within your e-commerce or retail platform. This resource provides a structured approach to customer management, enabling you to maintain a consistent record of customer transactions.


    A `Customer` object can be created using the [Create a customer](https://developer.revolut.com/docs/api/merchant#create-customer) endpoint and you can then retrieve, update and delete a customer using its `id`. `Customer` objects enable you to track multiple transactions in your system associated with the same customer in the Merchant API.


    You can save and store payment methods of a customer in the `payment_method` object, for more information, see: [Charge a customer''s saved payment method](https://developer.revolut.com/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method). A merchant can store the details of the payment securely and group transactions from the same payment method in their system.


    A payment method is unique for each customer. For example, if the same card is used for a transaction by two different customers, two payment method objects are created linked to each customer.


    Similar principle applies when saving payment methods via Revolut Pay for merchant initiated transaction (MIT - useful for recurring payments). If a customer saves their details through Revolut Pay for MIT in separate sessions, each session will create a new payment method object linked to the customer.


    :::note

    You cannot create a payment method explicitly because they are generated as part of a payment. You can only retrieve, update or delete a payment method, or you can retrieve all payment methods of a customer.

    :::'
paths:
  /api/customers:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    post:
      summary: Create a customer
      operationId: createCustomer
      description: "Create a `customer` object.\n\n:::note [No automatic deduplication]\nThe API does not prevent creating multiple customers with the same email address or phone number.\n\nThis can be intentional, for example, to maintain separate customer records per storefront or brand under the same account.\n\nTo avoid unintentional duplicates, search for existing customers by email or phone using the [List customers](https://developer.revolut.com/docs/api/merchant/2024-09-01#retrieve-customer-list) endpoint before creating a new one.\n:::\n\n### Save payment methods\n\nIf you wish to save a customer's payment details using any of the available payment methods on the Revolut Checkout Widget ([Revolut Pay](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction), [Card payments](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction)), you need to meet one of the following requirements:\n\n  - [ ] Have a customer object with `email` and assign it to the order by providing `customer.id`\n  - [ ] Create a new customer with, at least, `customer.email` during [order creation](https://developer.revolut.com/docs/api/merchant/2024-09-01#create-order)\n\nFor more information, see: [Charge a customer's saved payment method](https://developer.revolut.com/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method).\n\n<details>\n<summary>AFT processing requirements</summary>\n\nFor merchants in the following industries, `full_name` and `date_of_birth` are required for Account Funding Transaction (AFT) processing:\n\n| Industry | Required fields |\n| -------- | --------------- |\n| Crypto | `full_name`, `date_of_birth` |\n| Financial Institutions | `full_name`, `date_of_birth` |\n| Stored Value / Wallets | `full_name`, `date_of_birth` |\n\n</details>"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Customer-Creation-v2'
            examples:
              example_customer_creation:
                $ref: '#/components/examples/Req-Customer-Creation-v2'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-Created'
              examples:
                created_customer:
                  $ref: '#/components/examples/Res-Customer-Created'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
    get:
      summary: Retrieve a customer list
      operationId: retrieveCustomerList
      description: 'Get a paginated list of your customer profiles.


        | Filtering | Pagination |

        | --------- | ---------- |

        | Filter the customers that you want to retrieve, for example, only retrieve customers created within a specific date range. <br/><br/>Parameters used for filtering:<br/><ul><li>`from`</li><li>`to`</li></ul> | View customers without loading all of them at once, for example, return a specified number of customers per page. <br/><br/>Parameters used for pagination:<br/><ul><li>`limit`</li><li>`page_token`</li></ul> |


        To paginate through all results:


        1. Make an initial request with the desired `limit` and any filter parameters.

        1. If more results are available, the response includes a `next_page_token`.

        1. Pass `next_page_token` as `page_token` in your next request, keeping all other parameters unchanged.

        1. Repeat until `next_page_token` is no longer present in the response.'
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Page-Token'
      - $ref: '#/components/parameters/From'
      - $ref: '#/components/parameters/To'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customers'
              examples:
                list_of_customers:
                  $ref: '#/components/examples/Res-Customers-List'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
  /api/customers/{customer_id}:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    - $ref: '#/components/parameters/Customer-Id'
    get:
      summary: Retrieve a customer
      operationId: retrieveCustomer
      description: Get the information about a specific customer, including their saved payment methods.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-v3'
              examples:
                retrieved_customer:
                  $ref: '#/components/examples/Res-Customer-v3'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
    patch:
      summary: Update a customer
      operationId: updateCustomer
      description: 'Update the attributes of a specific customer.


        All request body fields are optional. Only the fields provided will be updated.


        <details>

        <summary>AFT processing requirements</summary>


        For merchants in the following industries, `full_name` and `date_of_birth` are required for Account Funding Transaction (AFT) processing:


        | Industry | Required fields |

        | -------- | --------------- |

        | Crypto | `full_name`, `date_of_birth` |

        | Financial Institutions | `full_name`, `date_of_birth` |

        | Stored Value / Wallets | `full_name`, `date_of_birth` |


        </details>'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Customer-Update-v2'
            examples:
              example_customer_update:
                $ref: '#/components/examples/Req-Customer-Update-v2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-v3'
              examples:
                updated_customer:
                  $ref: '#/components/examples/Res-Customer-v3'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
    delete:
      summary: Delete a customer
      operationId: deleteCustomer
      description: Delete the profile of a specific customer.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
  /api/customers/{customer_id}/payment-methods:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    - $ref: '#/components/parameters/Customer-Id'
    get:
      summary: Retrieve payment method list of a customer
      operationId: retrievePaymentMethodList
      description: 'Retrieve all the saved payment methods for a specific customer.

        This can be useful in the following example cases:


        - To show what payment information is stored for the customer.

        - To try a different payment method if the first payment method fails when a recurring transaction occurs.'
      parameters:
      - $ref: '#/components/parameters/Only-Merchant'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer-Payment-Methods-v2'
              examples:
                list_of_payment_methods:
                  $ref: '#/components/examples/Res-Customer-Payment-Methods-List'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
  /api/customers/{customer_id}/payment-methods/{payment_method_id}:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    - $ref: '#/components/parameters/Customer-Id'
    - $ref: '#/components/parameters/Payment-Method-Id'
    get:
      summary: Retrieve a customer's payment method
      operationId: retrievePaymentMethod
      description: 'Retrieve the information of a specific saved payment method for a customer.  '
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment-Method-v4'
              examples:
                retrieved_payment_method:
                  $ref: '#/components/examples/Res-Customer-Payment-Method'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
    patch:
      summary: Update a customer's payment method
      operationId: updatePaymentMethod
      description: 'Update the attributes of a specific saved payment method for a customer.


        :::note

        Updating `saved_for` to `customer` is a one-way operation — you can''t change it back to `merchant`.


        Once updated, this payment method can no longer be used for merchant-initiated transactions (MIT), for example, to charge recurring payments. It can only be used when the customer is on the checkout page.


        For more information, see:

        - [Pay for an order](https://developer.revolut.com/docs/api/merchant/2024-09-01#pay-order)

        - [Charge a customer''s saved payment method](https://developer.revolut.com/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method)

        :::'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Payment-Method-Update'
            examples:
              example_payment_method_update:
                $ref: '#/components/examples/Req-Payment-Method-Update'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment-Method-v4'
              examples:
                updated_payment_method:
                  $ref: '#/components/examples/Res-Customer-Payment-Method'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
    delete:
      summary: Delete a customer's payment method
      operationId: deletePaymentMethod
      description: 'Delete a specific saved payment method. The payment method is completely removed from the customer''s saved payment methods.


        To reuse a deleted payment method, direct your customer to the checkout page to save their card details again.'
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Customers
components:
  schemas:
    Customer-Update-v2:
      title: Customer update
      type: object
      description: 'The request body for updating a customer.


        All fields are optional. Only the fields provided in the request will be updated.


        :::note

        `business_name` is not supported in this version of the API.

        :::'
      properties:
        full_name:
          $ref: '#/components/schemas/Full-Name'
        email:
          $ref: '#/components/schemas/Email'
        phone:
          $ref: '#/components/schemas/Phone'
        date_of_birth:
          $ref: '#/components/schemas/Date-Of-Birth'
    Phone:
      type: string
      description: The phone number of the customer in [E.164 format](https://en.wikipedia.org/wiki/E.164).
    Customer-Id:
      type: string
      format: uuid
      description: Unique identifier for the customer.
    Card-v2:
      title: Card payment method
      type: object
      description: 'A saved card payment method.


        :::info

        The `checks` object (3DS, CVV, address verification) is not included as it is specific to the transactional payment context.

        :::'
      properties:
        id:
          $ref: '#/components/schemas/Payment-Method-Id'
        type:
          $ref: '#/components/schemas/Payment-Method-Type-v2'
        saved_for:
          $ref: '#/components/schemas/Saved-For'
        created_at:
          $ref: '#/components/schemas/Payment-Method-Created-At'
        bin:
          $ref: '#/components/schemas/Card-Bin'
        last_four:
          $ref: '#/components/schemas/Card-Last-Four'
        expiry_month:
          $ref: '#/components/schemas/Card-Expiry-Month'
        expiry_year:
          $ref: '#/components/schemas/Card-Expiry-Year'
        cardholder_name:
          $ref: '#/components/schemas/Cardholder-Name'
        brand:
          $ref: '#/components/schemas/Card-Brand-v2'
        funding:
          $ref: '#/components/schemas/Card-Funding-v2'
        issuer:
          $ref: '#/components/schemas/Card-Issuer'
        issuer_country:
          $ref: '#/components/schemas/Card-Issuer-Country'
        billing_address:
          $ref: '#/components/schemas/Billing-Address'
        terminal_hardware_id:
          $ref: '#/components/schemas/Terminal-Hardware-Id'
      required:
      - id
      - type
      - created_at
    Email:
      type: string
      format: email
      description: The email address of the customer.
    Card-Expiry-Year:
      type: integer
      description: The expiry year of the payment card.
    Payment-Method-Update:
      title: Payment method update
      type: object
      description: Fields to update on a saved payment method.
      properties:
        saved_for:
          type: string
          enum:
          - customer
          description: 'Update the value of `saved_for` from `merchant` to `customer`.


            Once updated, this payment method can no longer be used for merchant-initiated transactions (MIT). It can only be used when the customer is present on the checkout page.


            | Value | Description |

            | ----- | ----------- |

            | `customer` | Restrict this payment method to customer-initiated transactions only. |'
    Sepa-Direct-Debit-Mandate-Reference:
      type: string
      description: The unique mandate reference generated by Revolut. Include this in pre-debit notifications sent to your customers.
    Terminal-Hardware-Id:
      type: string
      description: 'The hardware identifier of the Revolut Terminal device used to process the payment.


        :::note

        Only present for card-present transactions processed via Revolut Terminal.

        :::'
    Date-Of-Birth:
      type: string
      format: date
      description: The birth date of the customer.
    Billing-Address:
      title: Billing address
      type: object
      description: The billing address associated with the payment method.
      properties:
        street_line_1:
          type: string
          description: Primary address line.
          maxLength: 100
        street_line_2:
          type: string
          description: Secondary address line, such as floor and apartment number.
          maxLength: 100
        region:
          type: string
          description: State or province of the address.
          maxLength: 100
        city:
          type: string
          description: City of the address.
          maxLength: 100
        country_code:
          type: string
          pattern: ^[A-Z]{2}$
          description: ISO 2-letter country code.
          minLength: 2
          maxLength: 2
        postcode:
          type: string
          description: Postal code of the address.
          maxLength: 100
      required:
      - country_code
      - postcode
    Card-Brand-v2:
      type: string
      description: The brand of the payment card.
      enum:
      - visa
      - mastercard
      - american_express
    Customer-Payment-Methods-v2:
      type: object
      required:
      - payment_methods
      properties:
        payment_methods:
          type: array
          description: 'Saved payment methods associated with this customer. Each entry represents a

            payment method authorised for future charges. Two types are supported: `card`

            (with full card details) and `revolut_pay` (covers both card-backed and

            account-to-account Revolut Pay variants). Use the `type` field on each item

            to identify the variant.'
          items:
            $ref: '#/components/schemas/Payment-Method-v4'
    Sepa-Direct-Debit-v2:
      title: SEPA Direct Debit payment method
      type: object
      description: 'A saved SEPA Direct Debit payment method on a customer profile.


        :::info

        For more information, see: [SEPA Direct Debit server-to-server integration](https://developer.revolut.com/docs/guides/merchant/accept-payments/payment-methods/sepa-direct-debit/server-to-server)

        :::'
      properties:
        id:
          $ref: '#/components/schemas/Payment-Method-Id'
        type:
          $ref: '#/components/schemas/Payment-Method-Type-v2'
        saved_for:
          $ref: '#/components/schemas/Saved-For'
        debtor_iban_last_four:
          $ref: '#/components/schemas/Sepa-Direct-Debit-Debtor-Iban-Last-Four'
        debtor_name:
          $ref: '#/components/schemas/Sepa-Direct-Debit-Debtor-Name'
        mandate_reference:
          $ref: '#/components/schemas/Sepa-Direct-Debit-Mandate-Reference'
        billing_address:
          $ref: '#/components/schemas/Billing-Address'
        created_at:
          $ref: '#/components/schemas/Payment-Method-Created-At'
      required:
      - id
      - type
      - created_at
    Sepa-Direct-Debit-Debtor-Iban-Last-Four:
      type: string
      description: The last four digits of the debtor's IBAN.
      minLength: 4
      maxLength: 4
    Payment-Method-Type-v2:
      type: string
      description: The type of the payment method.
      enum:
      - card
      - revolut_pay
      - sepa_direct_debit
    Payment-Method-Id:
      type: string
      format: uuid
      description: Unique identifier for the payment method.
    Customer-v3:
      title: Customer
      type: object
      description: A customer object.
      properties:
        id:
          $ref: '#/components/schemas/Customer-Id'
        full_name:
          $ref: '#/components/schemas/Full-Name'
        email:
          $ref: '#/components/schemas/Email'
        phone:
          $ref: '#/components/schemas/Phone'
        created_at:
          type: string
          format: date-time
          description: The date and time the customer was created.
        updated_at:
          type: string
          format: date-time
          description: The date and time the customer was last updated.
        payment_methods:
          type: array
          description: 'Saved payment methods associated with this customer. Each entry represents a

            payment method authorised for future charges. Two types are supported: `card`

            (with full card details) and `revolut_pay` (covers both card-backed and

            account-to-account Revolut Pay variants). Use the `type` field on each item

            to identify the variant.'
          items:
            $ref: '#/components/schemas/Payment-Method-v4'
      required:
      - id
      - created_at
      - updated_at
      - email
      - payment_methods
    Next-Page-Token:
      type:
      - string
      - 'null'
      description: 'Token for retrieving the next page of results. Use this token as the value of the `page_token` query parameter in your next request to retrieve the next page.


        If not present, there are no more results to retrieve.'
    Payment-Method-v4:
      title: Payment method
      description: 'A saved payment method on a customer profile.


        Use the `type` field to determine the specific payment method variant.


        :::note

        This schema represents a stored credential available for future charges and supports three types: `card`, `revolut_pay`, and `sepa_direct_debit`.


        It differs from the `payment_method` object on a Payment, which is a transactional snapshot of how a specific charge was executed and includes additional detail such as wallet wrappers (`apple_pay`, `google_pay`) and Revolut Pay funding source (`revolut_pay_card` vs `revolut_pay_account`).

        :::'
      discriminator:
        propertyName: type
        mapping:
          card: '#/components/schemas/Card-v2'
          revolut_pay: '#/components/schemas/Revolut-Pay-v2'
          sepa_direct_debit: '#/components/schemas/Sepa-Direct-Debit-v2'
      oneOf:
      - $ref: '#/components/schemas/Card-v2'
      - $ref: '#/components/schemas/Revolut-Pay-v2'
      - $ref: '#/components/schemas/Sepa-Direct-Debit-v2'
    Card-Funding-v2:
      type: string
      description: The funding type of the payment card.
      enum:
      - debit
      - credit
      - prepaid
    Customers:
      type: object
      required:
      - customers
      properties:
        next_page_token:
          $ref: '#/components/schemas/Next-Page-Token'
        customers:
          type: array
          description: List of customers.
          items:
            $ref: '#/components/schemas/Customer-Simplified'
    Card-Issuer-Country:
      type: string
      minLength: 2
      maxLength: 2
      description: The ISO 3166-1 alpha-2 country code of the country where the payment card was issued.
    Saved-For:
      type: string
      enum:
      - customer
      - merchant
      description: 'Indicates in which case this saved payment method can be used for payments.


        | Value | Description |

        | ----- | ----------- |

        | `customer` | This payment method can be used only when the customer is on the checkout page. |

        | `merchant` | This payment method can be used without the customer being on the checkout page, and the merchant can initiate transactions, for example, to take payments for recurring transactions. |'
    Customer-Created:
      title: Customer
      type: object
      description: A customer object.
      properties:
        id:
          $ref: '#/components/schemas/Customer-Id'
        full_name:
          $ref: '#/components/schemas/Full-Name'
        email:
          $ref: '#/components/schemas/Email'
        phone:
          $ref: '#/components/schemas/Phone'
        created_at:
          type: string
          format: date-time
          description: The date and time the customer was created.
        updated_at:
          type: string
          format: date-time
          description: The date and time the customer was last updated.
      required:
      - id
      - created_at
      - updated_at
      - email
    Card-Bin:
      type: string
      description: The BIN (Bank Identification Number) of the payment card, typically the first 6-8 digits.
    Sepa-Direct-Debit-Debtor-Name:
      type: string
      description: The full name of the debtor as provided in the mandate.
    Card-Expiry-Month:
      type: integer
      description: The expiry month of the payment card.
    Cardholder-Name:
      type: string
      description: The name of the cardholder as it appears on the card.
    Card-Issuer:
      type: string
      description: The name of the card-issuing bank or institution.
    Card-Last-Four:
      type: string
      minLength: 4
      maxLength: 4
      description: The last four digits of the payment card number.
    Payment-Method-Created-At:
      type: string
      format: date-time
      description: The date and time the payment method was added.
    Revolut-Pay-v2:
      title: Revolut Pay payment method
      type: object
      description: 'A saved Revolut Pay payment method on a customer profile.


        Both Revolut Pay card-backed and account-to-account (A2A) variants are

        represented by this single type at the saved payment method level.

        No underlying card details are exposed here; use the order-level

        `payments[].payment_method` object (types `revolut_pay_card` /

        `revolut_pay_account`) for per-transaction details.'
      properties:
        id:
          $ref: '#/components/schemas/Payment-Method-Id'
        type:
          $ref: '#/components/schemas/Payment-Method-Type-v2'
        saved_for:
          $ref: '#/components/schemas/Saved-For'
        created_at:
          $ref: '#/components/schemas/Payment-Method-Created-At'
      required:
      - id
      - type
      - created_at
    Error-v2:
      title: Error
      type: object
      properties:
        code:
          type: string
          description: 'An identifier that can be used to determine what went wrong.


            Error codes are not globally unique, but uniqueness is guaranteed within endpoints.'
        message:
          type: string
          description: Some human readable text describing what went wrong.
        timestamp:
          type: integer
          description: The [UNIX timestamp](https://www.unixtimestamp.com/) of

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