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. :::

OpenAPI Specification

revolut-customers-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  version: '1.0'
  title: Business Accounting Customers API
  description: "As a Revolut Business customer with a Business Account, you can use the Business API to automate your own business processes.\nSave time, reduce your costs, and avoid errors by using the Business API. \n\n:::tip[Before you get started]\nTo learn more about the Business API and its features, check the [**user guides**](https://developer.revolut.com/docs/guides/manage-accounts/introduction).\n\nYou can reach them at any time from the main navigation bar **→ Guides → Business**.\n:::\n\nYou can view accounts, manage counterparties, make payments or currency exchanges without manual effort in the Web UI:\n\n- Accounting: [Account management](https://developer.revolut.com/docs/api/business#get-account), [Accounting settings](https://developer.revolut.com/docs/api/business#tag-accounting), [Expense management](https://developer.revolut.com/docs/api/business#get-expense), [Transactions](https://developer.revolut.com/docs/api/business#get-transactions) \n- Payments: \n  - [Counterparty management](https://developer.revolut.com/docs/api/business#get-counterparties)\n  - Payment management: [Payment drafts](https://developer.revolut.com/docs/api/business#delete-payment-draft), [Payout links](https://developer.revolut.com/docs/api/business#get-payout-link), [Transfers](https://developer.revolut.com/docs/api/business#tag-transfers)\n  - [Foreign exchange](https://developer.revolut.com/docs/api/business#tag-foreign-exchange)\n- Business team: [Card management](https://developer.revolut.com/docs/api/business#delete-card), [Card invitation management](https://developer.revolut.com/docs/api/business#update-card-invitation), [Team member management](https://developer.revolut.com/docs/api/business#delete-team-member)\n- Developer tools: [Sandbox simulations](https://developer.revolut.com/docs/api/business#tag-simulations), [Webhook management](https://developer.revolut.com/docs/api/business#tag-webhooks-v2)\n\nTo see the reference for the specific endpoints and operations of this API, browse the menu on the left.\n\n### Test the Business API\n\nYou can test the Business API in Postman by forking this collection:\n\n[![View in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/revolut-api/workspace/revolut-developers/overview)"
  contact: {}
servers:
- url: https://b2b.revolut.com/api/1.0
  description: Production server (uses live data)
- url: https://sandbox-b2b.revolut.com/api/1.0
  description: Sandbox server (uses test data)
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:
    Full-Name:
      type: string
      description: The full name of the customer.
    Sepa-Direct-Debit-Debtor-Name:
      type: string
      description: The full name of the debtor as provided in the mandate.
    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. |'
    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
    Cardholder-Name:
      type: string
      description: The name of the cardholder as it appears on the card.
    Payment-Method-Created-At:
      type: string
      format: date-time
      description: The date and time the payment method was added.
    Sepa-Direct-Debit-Debtor-Iban-Last-Four:
      type: string
      description: The last four digits of the debtor's IBAN.
      minLength: 4
      maxLength: 4
    Card-Last-Four:
      type: string
      minLength: 4
      maxLength: 4
      description: The last four digits of the payment card number.
    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-Expiry-Year:
      type: integer
      description: The expiry year of the payment card.
    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
    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 the date and time the error happened.
    Payment-Method-Type-v2:
      type: string
      description: The type of the payment method.
      enum:
      - card
      - revolut_pay
      - sepa_direct_debit
    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
    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. |'
    Email:
      type: string
      format: email
      description: The email address of the customer.
    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'
    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
    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
    Card-Expiry-Month:
      type: integer
      description: The expiry month of the payment card.
    Card-Funding-v2:
      type: string
      description: The funding type of the payment card.
      enum:
      - debit
      - credit
      - prepaid
    Customer-Id:
      type: string
      format: uuid
      description: Unique identifier for the customer.
    Card-Bin:
      type: string
      description: The BIN (Bank Identification Number) of the payment card, typically the first 6-8 digits.
    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'
    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'
    Next-Page-Token:
      type: string
      nullable: true
      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.'
    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
    Card-Issuer:
      type: string
      description: The name of the card-issuing bank or institution.
    Payment-Method-Id:
      type: string
      format: uuid
      description: Unique identifier for the payment method.
    Card-Brand-v2:
      type: string
      description: The brand of the payment card.
      enum:
      - visa
      - mastercard
      - american_express
    Customer-Simplified:
      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
      - ema

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