Modulr Customers API

Operations on Customers

Operations 27

GET /customers/{customerId} Retrieve a specific customer using a unique customer reference #
PUT /customers/{customerId} Edit a specific customer using a unique customer reference #
PATCH /customers/{customerId} Edit a customer #
GET /customers Retrieve customers using filters #
POST /customers Create a new customer #
POST /keys/applications/{applicationId} Create a secure Customer Verification SDK Session #
POST /applications Create a New Onboarding Application #
POST /applications/{applicationId}/verify Submit an application for verification #
POST /applications/{applicationId}/submissions Submit a business application for verification #
POST /applications/{applicationId}/finalisations Mark application as closed for modification #
POST /applications/{applicationId}/associates/{associateId}/submissions Submit an associate for verification #
PUT /customers/{customerId}/compliance/tax-identifiers Create or update a customer’s tax identifiers #
PUT /customers/{customerId}/compliance/identification-info Create or update customer identification information #
PUT /customers/{customerId}/compliance/associates/{associateId}/tax-residencies Create or update the list of countries where an associate is considered tax-resident #
PUT /customers/{customerId}/compliance/associates/{associateId}/tax-identifiers Create or update tax identifiers for an associate #
PUT /customers/{customerId}/compliance/associates/{associateId}/personal-info Create or update an associate’s personal details #
PUT /customers/{customerId}/compliance/associates/{associateId}/fr/department Create or update the department code for an associate #
PUT /customers/{customerId}/compliance/associates/{associateId}/document-details Create or update identification document details for an associate #
PUT /applications/{applicationId}/compliance/know-your-customer Create or Update Know Your Customer Data for a Customer Application #
PUT /applications/{applicationId}/compliance/associates/{associateId}/tax-residencies Create or Update Tax Residency Information for an Application Associate #
PUT /applications/{applicationId}/compliance/associates/{associateId}/personal-info Create or Update Personal Details for an Application Associate #
GET /applications/{applicationId}/compliance/businesses Get business entity for an Onboarding Application #
POST /applications/{applicationId}/compliance/businesses Add a business entity to an Onboarding Application #
GET /applications/{applicationId}/compliance/businesses/addresses Get business addresses for an Onboarding Application #
POST /applications/{applicationId}/compliance/businesses/addresses Add a business address to an Onboarding Application #
POST /applications/{applicationId}/compliance/associates Add an individual/associated entity to an Onboarding Application #
GET /customers/{customerId}/associates Get all associates for a customer #

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/modulr-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

modulr-customers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Modulr Customers API
  description: Modulr API
  license:
    name: © Modulr Finance
    url: https://www.modulrfinance.com
  version: '1.0'
servers:
- url: https://api-sandbox.modulrfinance.com/api-sandbox-token
security:
- modulo_security: []
tags:
- name: Customers
  description: Operations on Customers
paths:
  /customers/{customerId}:
    get:
      tags:
      - Customers
      summary: Retrieve a specific customer using a unique customer reference
      description: 'Retrieve a specific customer using a unique customer reference. This identifier can be found in the response obtained after creating a new customer, it starts by C, e.g: C0000000'
      operationId: getCustomer
      parameters:
      - name: customerId
        in: path
        description: ID of customer to fetch
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: statuses
        in: query
        description: Customer statuses allowed when fetching the customer
        required: false
        style: form
        explode: true
        schema:
          type: array
          default:
          - ACTIVE
          items:
            type: string
            enum:
            - ACTIVE
            - CLOSED
            - BLOCKED
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account.Customer'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/account.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
    put:
      tags:
      - Customers
      summary: Edit a specific customer using a unique customer reference
      description: "  Currently editable fields:\n  <ol>\n    <li>For all customer types: <b>externalReference</b> can be edited</li>\n    <li>For all customers not requiring manual or in-house KYC verification: <b>industryCode</b>, <b>registeredAddress</b>, <b>tcsVersions</b> and <b>regNumber</b> can additionally be edited. Of those:\n      <ul>\n        <li>For all other customer types: <b>name</b> and <b>tradingAddress</b> can additionally be edited</li>\n        <li>For all types other than PCM_BUSINESS: the <b>associate</b> can additionally be edited</li>\n      </ul>\n    </li>\n    <li> For <b>vulnerabilityReason</b> you must supply a list and to delete a list you must supply an empty list in request, not supplying a list will result in no change</li>\n  </ol>\n"
      operationId: editCustomer
      parameters:
      - name: customerId
        in: path
        description: ID of customer to be edited
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: C0000000
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/account.UpdateCustomerRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account.Customer'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/account.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
    patch:
      tags:
      - Customers
      summary: Edit a customer
      description: 'Edit details of a particular customer using its ID as a reference. Current editable fields: complianceData'
      operationId: patchCustomer
      parameters:
      - name: customerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                oneOf:
                - $ref: '#/components/schemas/account.Add'
                - $ref: '#/components/schemas/account.Copy'
                - $ref: '#/components/schemas/account.Move'
                - $ref: '#/components/schemas/account.Remove'
                - $ref: '#/components/schemas/account.Replace'
                - $ref: '#/components/schemas/account.Test'
        required: true
      responses:
        '200':
          description: Successfully updated the existing customer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account.Customer'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/account.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /customers:
    get:
      tags:
      - Customers
      summary: Retrieve customers using filters
      description: Either using unique references, such as customer ID, or filter parameters, such as verification status, get details of any customers found.
      operationId: getCustomers
      parameters:
      - name: id
        in: query
        description: ID of Customer(s) to fetch
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/account.id'
      - name: delegateId
        in: query
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/account.delegateId'
      - name: q
        in: query
        description: Query parameter. ID, name or external reference of customer to search for
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Query parameter. ID, name or external reference of customer to search for
      - name: type
        in: query
        description: 'Type to filter, can be one of:

          1. LLC -> limited company

          2. PLC -> publicly listed company

          3. SOLETRADER -> sole trader

          4. OPARTNRSHP -> ordinary partnership

          5. LPARTNRSHP -> limited partnership

          6. LLP -> limited liability partnership

          7. INDIVIDUAL -> individual consumer

          8. PCM_INDIVIDUAL -> partner clearing model individual consumer

          9. PCM_BUSINESS -> partner clearing model business consumer'
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: 'Type to filter, can be one of:

            1. LLC -> limited company

            2. PLC -> publicly listed company

            3. SOLETRADER -> sole trader

            4. OPARTNRSHP -> ordinary partnership

            5. LPARTNRSHP -> limited partnership

            6. LLP -> limited liability partnership

            7. INDIVIDUAL -> individual consumer

            8. PCM_INDIVIDUAL -> partner clearing model individual consumer

            9. PCM_BUSINESS -> partner clearing model business consumer'
          enum:
          - LLC
          - PLC
          - SOLETRADER
          - OPARTNRSHP
          - LPARTNRSHP
          - LLP
          - INDIVIDUAL
          - PCM_INDIVIDUAL
          - PCM_BUSINESS
          - TRUST
          - PREQUALIFIED
      - name: verificationStatus
        in: query
        description: 'Verification Status to filter, can be one of:

          1. UNVERIFIED -> no verification checks have been completed

          2. VERIFIED -> verification checks completed satisfactorily

          3. EXVERIFIED -> verification completed externally

          4. REFERRED -> verification is pending manual review

          5. DECLINED -> verification is complete with a negative result

          6. REVIEWED -> verification check has been reviewed'
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: 'Verification Status to filter, can be one of:

            1. UNVERIFIED -> no verification checks have been completed

            2. VERIFIED -> verification checks completed satisfactorily

            3. EXVERIFIED -> verification completed externally

            4. REFERRED -> verification is pending manual review

            5. DECLINED -> verification is complete with a negative result

            6. REVIEWED -> verification check has been reviewed'
          enum:
          - UNVERIFIED
          - VERIFIED
          - EXVERIFIED
          - REFERRED
          - DECLINED
          - REVIEWED
      - name: fromCreatedDate
        in: query
        description: Customers created after and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Customers created after and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
      - name: toCreatedDate
        in: query
        description: Customers created before and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Customers created before and on this date. Format is 'yyyy-MM-dd'T'HH:mm:ssZ' where Z is UTC offset. e.g 2017-01-28T01:01:01+0000
      - name: page
        in: query
        description: Page to fetch (0 indexed)
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int32
          description: Page to fetch (0 indexed)
          minimum: 0
      - name: size
        in: query
        description: Size of Page to fetch
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int32
          description: Size of Page to fetch
          exclusiveMinimum: 0
          maximum: 500
      - name: sortField
        in: query
        description: Sort by field. Sorted by createdDate if not present
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Sort by field. Sorted by createdDate if not present
          pattern: (name|createdDate|id)
      - name: sortOrder
        in: query
        description: 'Sorting order:

          1. asc -> ascendant

          2. desc -> descendant'
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: 'Sorting order:

            1. asc -> ascendant

            2. desc -> descendant'
          pattern: (asc|desc)
      - name: externalRef
        in: query
        description: A list of external references to filter
        required: false
        deprecated: true
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/account.externalRef'
      - name: externalReference
        in: query
        description: A list of external references to filter
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/account.externalReference'
        example: externalReference[0].type
      - name: name.type
        in: query
        description: 'WORD_MATCH - using word boundaries,

          WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,

          PREFIX - same case prefix,

          SUFFIX - same case suffix,

          CONTAINS - same case contains

          EXACT - same case exact

          '
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: 'WORD_MATCH - using word boundaries,

            WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,

            PREFIX - same case prefix,

            SUFFIX - same case suffix,

            CONTAINS - same case contains

            EXACT - same case exact

            '
          enum:
          - WORD_MATCH
          - WORD_MATCH_ALPHANUMERIC
          - PREFIX
          - SUFFIX
          - CONTAINS
          - EXACT
      - name: name.value
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
          minLength: 1
      - name: companyRegNumber
        in: query
        description: Customer registration number
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Customer registration number
      - name: legalEntity
        in: query
        description: Customer legal entity
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Customer legal entity
          enum:
          - GB
          - NL
          - IE
      - name: contractCounterparty
        in: query
        description: The Modulr business unit with which the customer has contracted
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Business unit the customer contracts with
          enum:
          - MFBV
          - MFSL
          - MUS
      - name: addressLines
        in: query
        description: 'Set of the address lines. If specified, they must be present in the address line 1 or in the address line 2.

          Search results by number may include numbers with any suffix'
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/account.addressLines'
      - name: postCode
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: postTown
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: country
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: associateSearchCriteria.firstNameInitial
        in: query
        description: Person's first name initial
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Person's first name initial
          maxLength: 1
          minLength: 1
      - name: associateSearchCriteria.lastName.type
        in: query
        description: 'WORD_MATCH - using word boundaries,

          WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,

          PREFIX - same case prefix,

          SUFFIX - same case suffix,

          CONTAINS - same case contains

          EXACT - same case exact

          '
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: 'WORD_MATCH - using word boundaries,

            WORD_MATCH_ALPHANUMERIC - using word boundaries, but replaces non-alphanumeric characters in the search with a word boundary match,

            PREFIX - same case prefix,

            SUFFIX - same case suffix,

            CONTAINS - same case contains

            EXACT - same case exact

            '
          enum:
          - WORD_MATCH
          - WORD_MATCH_ALPHANUMERIC
          - PREFIX
          - SUFFIX
          - CONTAINS
          - EXACT
      - name: associateSearchCriteria.lastName.value
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
          minLength: 1
      - name: associateSearchCriteria.lastNamePrefix
        in: query
        description: Person's prefix
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Person's prefix
      - name: associateSearchCriteria.dateOfBirth
        in: query
        description: 'Person''s date of birth '
        required: false
        style: form
        explode: true
        schema:
          type: string
          format: date
          description: 'Person''s date of birth '
      - name: associateSearchCriteria.additionalIdentifier.type
        in: query
        description: Type of additional personal identifier
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Type of additional personal identifier
          enum:
          - BSN
      - name: associateSearchCriteria.additionalIdentifier.value
        in: query
        description: Personal identifier value
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Personal identifier value
          minLength: 1
      - name: associateTypes
        in: query
        description: 'List of types to filter, can be one of:

          1. DIRECTOR -> director

          2. PARTNER -> partner

          3. CSECRETARY -> company secretary

          4. SOLETRADER -> sole trader

          5. BENE_OWNER -> beneficial owner

          6. C_INTEREST -> controlling interest

          7. INDIVIDUAL -> individual

          8. PCM_INDIVIDUAL -> pcm individual

          9. SIGNATORY -> signatory

          9. TRUST_SETTLOR -> trust settlor

          9. TRUST_BENEFICIARY -> trust beneficiary

          10. TRUST_TRUSTEE -> trust trustee'
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/account.associateTypes'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account.CustomerPageResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/account.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
    post:
      tags:
      - Customers
      summary: Create a new customer
      description: 'This endpoint allows you to create a new customer. Creating a customer is a complex process with several dependencies, e.g: Directors, type of customer, legal specifications. For further information, please visit ''Creating a customer and account'' entry on our API documentation'
      operationId: createCustomer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/onboarding.CreateCustomerRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/onboarding.Customer'
        '400':
          description: Validation errors
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /keys/applications/{applicationId}:
    post:
      tags:
      - Customers
      summary: Create a secure Customer Verification SDK Session
      description: Creates a short-lived access key that authorises a Customer Verification session for the specified application.
      operationId: createSdkKey
      parameters:
      - name: applicationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '201':
          description: Created
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/onboarding.ApplicationSdkKeyResponse'
        '400':
          description: Validation error
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/onboarding.ApplicationSdkKeyResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /applications:
    post:
      tags:
      - Customers
      summary: Create a New Onboarding Application
      description: Creates a new application with a unique identifier with a status of NEW.
      operationId: createApplication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/onboarding.CreateApplicationRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/onboarding.CreateApplicationResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/onboarding.CreateApplicationResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /applications/{applicationId}/verify:
    post:
      tags:
      - Customers
      summary: Submit an application for verification
      description: Submits an application for initial KYB/KYC review once all required data is provided.
      operationId: verifyApplication
      parameters:
      - name: applicationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
        '403':
          description: Forbidden
      security:
      - HMAC: []
      - TOKEN: []
  /applications/{applicationId}/submissions:
    post:
      tags:
      - Customers
      summary: Submit a business application for verification
      description: Initiates KYB verification for a business application and returns a submission reference.
      operationId: submitApplication
      parameters:
      - name: applicationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/onboarding.SubmitApplicationResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/onboarding.SubmitApplicationResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /applications/{applicationId}/finalisations:
    post:
      tags:
      - Customers
      summary: Mark application as closed for modification
      description: Confirms all business and associate details have been submitted. The application will be processed for verification.
      operationId: finaliseApplication
      parameters:
      - name: applicationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/onboarding.FinaliseApplicationResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/onboarding.FinaliseApplicationResponse'
        '404':
          description: Application not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/onboarding.FinaliseApplicationResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /applications/{applicationId}/associates/{associateId}/submissions:
    post:
      tags:
      - Customers
      summary: Submit an associate for verification
      description: Submits an associate for KYB verification and returns a submission reference.
      operationId: submitAssociateForVerification
      parameters:
      - name: applicationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: associateId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Submission successful
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/onboarding.SubmitAssociateResponse'
        '400':
          description: Validation error - invalid application or associate
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/onboarding.MessageResponse'
        '403':
          description: Forbidden - insufficient permissions
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/onboarding.SubmitAssociateResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /customers/{customerId}/compliance/tax-identifiers:
    put:
      tags:
      - Customers
      summary: Create or update a customer’s tax identifiers
      description: Creates or updates a customer’s tax identifiers, please provide list of countries where applicable
      operationId: updateTaxIdentifiersByCustomerId
      parameters:
      - name: customerId
        in: path
        description: ID of customer
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/customercompliance.TaxIdentifiersRequest'
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Invalid Parameters
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/customercompliance.MessageResponse'
        '403':
          description: Incorrect permissions
      security:
      - HMAC: []
      - TOKEN: []
  /customers/{customerId}/compliance/identification-info:
    put:
      tags:
      - Customers
      summary: Create or update customer identification information
      description: Creates or updates customer identification information, such as national or legal entity identifiers
      operationId: updateCustomerIdentificationInfosByCustomerId
      parameters:
      - name: customerId
        in: path
        description: ID of customer
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/customercompliance.CustomerIdentificationInformationRequest'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Invalid Parameters
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/customercompliance.MessageResponse'
        '403':
          description: Incorrect permissions
      security:
      - HMAC: []
      - TOKEN: []
  /customers/{customerId}/compliance/associates/{associateId}/tax-residencies:
    put:
      tags:
      - Customers
      summary: Create or update the list of countries where an associate is considered tax-resident
      description: Creates or updates the list of countries where an associate is considered tax-resident, supporting compliance with CRS/FATCA and local tax rules
      operationId: updateTaxResidenciesForAssociate
      parameters:
      - name: customerId
        in: path
        description: ID of customer
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: associateId
        in: path
        description: ID of associate
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/customercompliance.TaxResidenciesRequest'
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Invalid Parameters
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/customercompliance.MessageResponse'
        '403':
          description: Incorrect permissions
      security:
      - HMAC: []
      - TOKEN: []
  /customers/{customerId}/compliance/associates/{associateId}/tax-identifiers:
    put:
      tags:
      - Customers
      summary: Create or update tax identifiers for an associate
      description: Creates or updates an associate’s tax identifiers, specific types are available for Spain, France and Netherlands, use type TIN for all other country codes
      operationId: updateTaxIdentifiersForAssociate
      parameters:
      - name: customerId
        in: path
        description: ID of customer
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: associateId
        in: path
        description: ID of associate
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/customercompliance.TaxIdentifiersRequest'
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Invalid Parameters
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/customercompliance.MessageResponse'
        '403':
          description: Incorrect permissions
      security:
      - HMAC: []
      - TOKEN: []
  /customers/{customerId}/compliance/associates/{associateId}/personal-info:
    put:
      tags:
      - Customers
      summary: Create or update an associate’s personal details
      description: Creates or updates an associate’s personal details, such as birth data, nationality, and sex
      operationId: updatePersonalInformationForAssociate
      parameters:
      - name: customerId
        in: path
        description: ID of customer
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: associateId
        in: path
        description: ID of associate
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/js

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