> ## Documentation Index
> Fetch the complete documentation index at: https://developers.stellar.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Create or Update Customer Info

> **The Anchor Platform does not persist any customer KYC data.**

The request and response for this endpoint are identical to the
[`PUT /customer`](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0012.md#customer-put)
request and response defined in SEP-12.

Client applications make requests with the following request body, which is forwarded to the anchor. Anchors
must validate and persist the data passed, and return the customer's `id`. Requests containing only string fields will
be forwarded to the anchor as with the `application/json` content type. Requests containing
binary fields will be forwarded to the anchor as with the `multipart/form-data` content type.


SEP-6SEP-12SEP-24SEP-31


## OpenAPI

````yaml openapi/anchor-platform/bundled-callbacks.yaml PUT /customer
openapi: 3.1.0
info:
  version: 3.0.0
  description: >
    The Synchronous Callbacks API specification for the Stellar Anchor Platform
    project.


    The Synchronous Callbacks API defines requests made by the Platform while it
    is processing a request from a client application. The

    anchor's responses to these requests affect the Platform responses to the
    client application.
  title: Callbacks Server
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://callback.business-server.exampleanchor.com
security: []
tags:
  - name: Unique Address
    description: >-
      (optional) Provide a unique `stellar_address:memo` pair that will be used
      to correlate a Stellar payment 1-to-1 with a Platform resource such as a
      [SEP-31](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0031.md)
      transaction.
  - name: Rates
    description: >-
      Requests containing data that can be used to provide exchange rates
      between on & off-chain assets.
  - name: Customers
    description: >
      [SEP-12](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0012.md)
      requests made from client

      applications.
paths:
  /customer:
    put:
      tags:
        - Customers
      summary: Create or Update Customer Info
      description: >
        **The Anchor Platform does not persist any customer KYC data.**


        The request and response for this endpoint are identical to the

        [`PUT
        /customer`](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0012.md#customer-put)

        request and response defined in SEP-12.


        Client applications make requests with the following request body, which
        is forwarded to the anchor. Anchors

        must validate and persist the data passed, and return the customer's
        `id`. Requests containing only string fields will

        be forwarded to the anchor as with the `application/json` content type.
        Requests containing

        binary fields will be forwarded to the anchor as with the
        `multipart/form-data` content type.
      operationId: putCustomer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutCustomerRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PutCustomerMultipartRequest'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomerResponse'
        '400':
          description: Invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PutCustomerRequest:
      type: object
      properties:
        id:
          description: >-
            The ID of the customer as returned in the response of a previous PUT
            request.
          type: string
        account:
          description: >-
            The Stellar or Muxed Account authenticated with the Platform via
            SEP-10.
          type: string
        memo:
          description: >-
            The memo value identifying a customer with a shared account, where
            the shared account is `account`.
          type: string
        memo_type:
          description: The type of memo used to identify a customer with a shared account.
          type: string
          enum:
            - id
            - hash
            - text
        type:
          description: >
            The type of action the customer is being KYCd for.

            See the [Type
            Specification](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0012.md#type-specification)
            documented in SEP-12 for more info.

            For SEP-31 you can define your own types in the assets
            configuration.

            For SEP-24 pre-defined value `sep24-customer` is used.
          type: string
        transaction_id:
          description: >
            The transaction id with which the customer's info is associated.
            When information from the customer depends on the

            transaction (e.g., more information is required for larger amounts)
          type: string
        first_name:
          type: string
        last_name:
          type: string
        additional_name:
          type: string
        address_country_code:
          type: string
        state_or_province:
          type: string
        city:
          type: string
        postal_code:
          type: string
        address:
          type: string
        mobile_number:
          type: string
        email_address:
          type: string
        birth_date:
          type: string
          format: date
        birth_place:
          type: string
        birth_country_code:
          type: string
        bank_name:
          type: string
        bank_account_number:
          type: string
        bank_account_type:
          type: string
        bank_number:
          type: string
        bank_phone_number:
          type: string
        bank_branch_number:
          type: string
        external_transfer_memo:
          type: string
        clabe_number:
          type: string
        cbu_alias:
          type: string
        mobile_money_number:
          type: string
        mobile_money_provider:
          type: string
        crypto_address:
          type: string
        crypto_memo:
          description: Deprecated. Use `external_transfer_memo` instead.
          type: string
        tax_id:
          type: string
        tax_id_name:
          type: string
        occupation:
          type: string
        employer_name:
          type: string
        employer_address:
          type: string
        language_code:
          type: string
        id_type:
          type: string
        id_country_code:
          type: string
        id_issue_date:
          type: string
          format: date
        id_expiration_date:
          type: string
          format: date
        id_number:
          type: string
        ip_address:
          type: string
        sex:
          type: string
        referral_id:
          type: string
        mobile_number_verification:
          type: string
        email_address_verification:
          type: string
    PutCustomerMultipartRequest:
      type: object
      properties:
        id:
          description: >-
            The ID of the customer as returned in the response of a previous PUT
            request.
          type: string
        account:
          description: >-
            The Stellar or Muxed Account authenticated with the Platform via
            SEP-10.
          type: string
        memo:
          description: >-
            The memo value identifying a customer with a shared account, where
            the shared account is `account`.
          type: string
        memo_type:
          description: The type of memo used to identify a customer with a shared account.
          type: string
          enum:
            - id
            - hash
            - text
        type:
          description: >
            The type of action the customer is being KYCd for.

            See the [Type
            Specification](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0012.md#type-specification)
            documented in SEP-12 for more info.

            For SEP-31 you can define your own types in the assets
            configuration.

            For SEP-24 pre-defined value `sep24-customer` is used.
          type: string
        first_name:
          type: string
        last_name:
          type: string
        additional_name:
          type: string
        address_country_code:
          type: string
        state_or_province:
          type: string
        city:
          type: string
        postal_code:
          type: string
        address:
          type: string
        mobile_number:
          type: string
        email_address:
          type: string
        birth_date:
          type: string
          format: date
        birth_place:
          type: string
        birth_country_code:
          type: string
        bank_name:
          type: string
        bank_account_number:
          type: string
        bank_account_type:
          type: string
        bank_number:
          type: string
        bank_phone_number:
          type: string
        bank_branch_number:
          type: string
        external_transfer_memo:
          type: string
        clabe_number:
          type: string
        cbu_alias:
          type: string
        mobile_money_number:
          type: string
        mobile_money_provider:
          type: string
        crypto_address:
          type: string
        crypto_memo:
          description: Deprecated. Use `external_transfer_memo` instead.
          type: string
        tax_id:
          type: string
        tax_id_name:
          type: string
        occupation:
          type: string
        employer_name:
          type: string
        employer_address:
          type: string
        language_code:
          type: string
        id_type:
          type: string
        id_country_code:
          type: string
        id_issue_date:
          type: string
          format: date
        id_expiration_date:
          type: string
          format: date
        id_number:
          type: string
        photo_id_front:
          type: string
          format: binary
        photo_id_back:
          type: string
          format: binary
        notary_approval_of_photo_id:
          type: string
          format: binary
        ip_address:
          type: string
        photo_proof_residence:
          type: string
          format: binary
        sex:
          type: string
        photo_proof_of_income:
          type: string
          format: binary
        proof_of_liveness:
          type: string
          format: binary
        referral_id:
          type: string
        mobile_number_verification:
          type: string
        email_address_verification:
          type: string
    GetCustomerResponse:
      type: object
      required:
        - status
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - ACCEPTED
            - PROCESSING
            - NEEDS_INFO
            - REJECTED
        fields:
          type: object
          additionalProperties:
            required:
              - type
              - description
            properties:
              type:
                type: string
                enum:
                  - string
                  - binary
                  - number
                  - date
              description:
                type: string
              choices:
                type: array
                items:
                  type: string
              optional:
                type: boolean
        provided_fields:
          type: object
          additionalProperties:
            required:
              - type
              - description
            properties:
              type:
                type: string
                enum:
                  - string
                  - binary
                  - number
                  - date
              description:
                type: string
              choices:
                type: array
                items:
                  type: string
              optional:
                type: boolean
              status:
                type: string
                enum:
                  - ACCEPTED
                  - PROCESSING
                  - REJECTED
                  - VERIFICATION_REQUIRED
              error:
                type: string
        message:
          type: string
    Error:
      type: object
      properties:
        error:
          type: string
        id:
          type: string
      required:
        - error

````