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

# Update Customer KYC

> Partially updates a customer's KYC information.

Update a customer's KYC (Know Your Customer) information. Use this endpoint to add or update verification documents for a customer.


## OpenAPI

````yaml PATCH /api/v1/customer/{customerId}/kyc
openapi: 3.1.0
info:
  title: Afriex Business API
  version: 1.0.8
  description: >-
    Welcome to the Afriex Business API. This API allows you to manage customers,
    process payments, handle payouts, and receive real-time notifications via
    webhooks.


    For detailed guidance on authentication, pagination, error handling, and
    webhooks, please refer to the [dedicated guides](https://docs.afriex.com) in
    the top bar. The guide provides a step-by-step instructions to help you
    integrate seamlessly.
  termsOfService: https://www.afriex.com/terms-and-condition
  contact:
    name: Afriex API Support
    email: eng@afriex.co
    url: https://docs.afriex.com
  license:
    name: Proprietary
    url: https://www.afriex.com/terms-and-condition
servers:
  - url: https://sandbox.api.afriex.com
    description: Staging Base URL
  - url: https://api.afriex.com
    description: Production Base URL
security:
  - ApiKey: []
tags:
  - name: Customers
    description: Create and manage your customers.
  - name: Payment Methods
    description: Register and resolve customer payout and collection methods.
  - name: Transactions
    description: Create and track deposits, withdrawals, and swaps.
  - name: Balance
    description: View and top up your business wallet balances.
  - name: Rates
    description: Fetch real-time exchange rates.
  - name: Checkout Sessions
    description: Create hosted checkout sessions.
  - name: Webhooks
    description: Webhook event payloads and sandbox webhook testing.
  - name: Media
    description: Generate presigned URLs for secure file uploads.
paths:
  /api/v1/customer/{customerId}/kyc:
    parameters:
      - $ref: '#/components/parameters/x-api-version'
    patch:
      tags:
        - Customers
      summary: Update customer KYC information
      description: Partially updates a customer's KYC information.
      operationId: updateCustomerKyc
      parameters:
        - name: customerId
          in: path
          description: The unique identifier of the customer
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                A flat map of KYC document types to their values. Send the
                document map directly as the request body (do not wrap it in a
                `kyc` field). Each key must be one of the allowed KYC document
                types and each value is a string.
              additionalProperties:
                type: string
              propertyNames:
                enum:
                  - REPRESENTATIVE_TYPE
                  - DATE_OF_BIRTH
                  - ADDRESS
                  - BANK_STATEMENT
                  - BUSINESS_CERTIFICATE
                  - COUNTRY
                  - ID_FRONT
                  - ID_BACK
                  - PHONE
                  - SELFIE
                  - PROOF_OF_ADDRESS
                  - PROOF_OF_INCOME
                  - BVN
                  - DRIVER_LICENSE
                  - PASSPORT
                  - NATIONAL_ID
                  - PAYMENT_METHOD
                  - RESIDENCE_PERMIT
                  - VEHICLE_REGISTRATION
                  - VOTER_ID
                  - OTHERS
              examples:
                - PASSPORT: passport.png
                  DATE_OF_BIRTH: '2000-01-01'
                  COUNTRY: KE
            examples:
              bvnAndDob:
                summary: BVN and date of birth (Nigeria)
                value:
                  BVN: '22222222222'
                  DATE_OF_BIRTH: '1990-05-15'
                  COUNTRY: NG
              passport:
                summary: Passport number
                value:
                  PASSPORT: A12345678
                  DATE_OF_BIRTH: '1990-05-15'
                  COUNTRY: GH
              nationalId:
                summary: National ID
                value:
                  NATIONAL_ID: GHA-123456789-0
                  DATE_OF_BIRTH: '1990-05-15'
                  COUNTRY: GH
              driverLicense:
                summary: Driver's license
                value:
                  DRIVER_LICENSE: DL-987654
                  DATE_OF_BIRTH: '1990-05-15'
                  COUNTRY: KE
      responses:
        '200':
          description: Customer updated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Customer'
              examples:
                success:
                  summary: KYC updated
                  value:
                    data:
                      name: Test User KYC
                      email: test.kyc.user@example.com
                      phone: '+2348192837001'
                      customerId: 69d5fff7ab82306f11b0330e
                      countryCode: NG
                      meta:
                        kyc:
                          data:
                            BVN: '22222222222'
                            DATE_OF_BIRTH: '2000-01-15'
                            COUNTRY: NG
                      createdAt: '2026-04-08T07:12:55.888Z'
                      updatedAt: '2026-04-08T07:17:18.638Z'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidKycType:
                  summary: Invalid KYC document type key
                  value:
                    code: INVALID_KYC_DOCUMENT_TYPE
                    error: Invalid kyc document type
                    details:
                      errorMessage: Invalid kyc document type
                      friendlyMessage: Invalid KYC document type provided
                invalidBvn:
                  summary: Invalid BVN value
                  value:
                    code: INVALID_KYC_DOCUMENT_TYPE
                    error: Invalid kyc document type
                    details:
                      errorMessage: Invalid kyc document type
                      friendlyMessage: Invalid BVN provided
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missingApiKey:
                  summary: Missing API key
                  value:
                    code: AUTHENTICATION_ERROR
                    error: Authorization header is missing
                    details: {}
                invalidApiKey:
                  summary: Invalid API key
                  value:
                    code: AUTHENTICATION_ERROR
                    error: Invalid authorization header
                    details: {}
        '404':
          description: Customer not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                notFound:
                  summary: Customer not found
                  value:
                    code: BUSINESS_CUSTOMER_NOT_FOUND
                    error: Business customer not found
                    details:
                      errorMessage: Business customer not found
                      friendlyMessage: ''
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                serverError:
                  summary: Unexpected server error
                  value:
                    code: INTERNAL_SERVER_ERROR
                    error: It's not you, it's us, please reach out to support
                    details: {}
      x-codeSamples:
        - lang: TypeScript
          label: Afriex SDK
          source: |
            const customer = await afriex.customers.updateKyc("customer-id", {
              kyc: {
                documentType: "passport",
                documentNumber: "AB123456",
              },
            });
components:
  parameters:
    x-api-version:
      name: x-api-version
      in: header
      required: false
      description: >-
        API version in ISO 8601 format (e.g. 2025-12-28). Defaults to latest
        stable.
      schema:
        type: string
  schemas:
    Customer:
      type: object
      properties:
        customerId:
          type: string
          description: The unique identifier for the customer.
        name:
          type: string
          description: The full name of the customer.
        email:
          type: string
          format: email
          description: The email of the customer.
        phone:
          type: string
          description: The phone number of the customer in E.164 format.
        countryCode:
          type: string
          description: The country code of the customer in ISO 3166-1 alpha-2 format.
        meta:
          type: object
          description: optional meta data you can attach to the customer.
        createdAt:
          type: string
          description: The date and time the customer was created.
        updatedAt:
          type: string
          description: The date and time the customer was last updated.
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code.
        error:
          type: string
          description: Human-readable error message.
        details:
          $ref: '#/components/schemas/ErrorDetails'
    ErrorDetails:
      type: object
      properties:
        errorMessage:
          type: string
          description: Detailed/technical error message.
        friendlyMessage:
          type: string
          description: User-facing error message safe to display.
        data:
          type: object
          description: >-
            Optional caller-safe context for the error. On a customer-create
            uniqueness conflict (EMAIL_ALREADY_EXISTS /
            PHONE_NUMBER_ALREADY_EXISTS) this carries the existing customer's
            id, so you can adopt it without a follow-up lookup.
          properties:
            customerId:
              type: string
              description: Id of the existing customer (on a create conflict).
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Static business API key issued from the dashboard. A business can
        provision **multiple API keys**, each scoped to a configurable set of
        **permissions** (e.g. read transactions, create deposits, etc).
        Permissions are chosen per key at creation time in the dashboard and may
        be revoked by deleting the key. Requests made with a key that does not
        include the permission required by the target endpoint will be rejected
        with a `403 Forbidden` response; an unrecognised, malformed or revoked
        key returns `401 Unauthorized`. Manage your keys and their permissions
        under **Developer → API keys** in the dashboard.

````