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

# Update Customer

> Partially update a customer. All body fields are optional; include only fields you want to change. Use documents and proof_of_funds for KYC updates.

## Overview

Update an existing customer with a partial JSON body. Only include fields you want to change. Typical uses include correcting profile data, refreshing identity documents, and submitting proof-of-funds details.

## Request body

All fields are optional:

| Field                                                        | Description                                                                                                              |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| `date_of_birth`                                              | `YYYY-MM-DD`                                                                                                             |
| `address`                                                    | Same shape as on [create customer](/api-reference/customers/create); `address.document` is a base64 string when provided |
| `first_name`, `last_name`, `phone`, `gender`, `country_code` | Profile fields                                                                                                           |
| `documents`                                                  | Array of document objects (see below)                                                                                    |
| `proof_of_funds`                                             | Employment and source-of-funds fields                                                                                    |

### `documents` items

Each element uses the same shape as on create (see [Identity documents](/api-reference/customers/create#identity-documents)):

* `id_type` — One of: `passport`, `resident_id`, `drivers_license`, `national_id`, `voters_card`, `nin`, `bvn`, or a tax ID type (see [Tax ID document](/api-reference/customers/create#tax-id-document))
* `id_number` — Value on the document
* `front_doc` — Base64-encoded image of the front
* `back_doc` — Base64-encoded image of the back when needed

For `passport`, `resident_id`, `drivers_license`, `national_id`, `voters_card`, and `nin`, you need at most `front_doc` (base64); `back_doc` is not required for those types.

### `proof_of_funds`

Optional object with: `employment_status`, `occupation`, `primary_purpose`, `source_of_funds`, `expected_monthly_pay`.

Use the **Field** values from the reference tables in your JSON (not free-text labels). See [Proof of funds options](/customers/proof-of-funds-options).


## OpenAPI

````yaml PATCH /v1/customers/{id}
openapi: 3.1.0
info:
  title: API
  version: 1.0.0
  description: >-
    Platnova's Business API allows businesses to issue virtual accounts and
    cards to their employees, vendors, or retail customers. It allows businesses
    to streamline the process of issuing cards, manage spending, and track
    transactions. The API documentation provides information on how to integrate
    our virtual card issuing system into a business's existing systems and
    outlines the features and functionalities of the API, including card and
    account creation, management, and reporting. It also provides technical
    specifications, such as API requests, responses, and authentication
    processes.


    The API documentation is intended for developers and IT teams to use in
    order to effectively implement Platnova solutions into their business
    processes.


    # Authentication/Authorization


    To access any of the resources on the `{BaseUrl}/v1/`, the client has to
    pass pre-defined headers for authentication and authorization.


    The API is secure and only authorized clients can consume the service. There
    are API keys assigned to every business and JWT tokens assigned to every
    account for authentication/authorization.


    ## Bearer Token


    Requests may accept jwt tokens as below.


    ``` json

    Authorization: Bearer <jwt token>

     ```

    ## API Key


    Requests may acccept an api key either in the request headers or as a query
    parameter. Some requests cannot be authorized using an API key.


    ``` json

    X-API-KEY: <api key>

     ```

    OR


    ``` json

    ?api-key=<api key>

     ```

    # Base URL


    [https://sandbox.api.platnova.co](https://sandbox.api.platnova.co)


    # Errors


    Unauthorized API key


    ``` json

    {
        "status": false,
        "data": {},
        "error": [],
        "message": "unauthorized access"
    }

     ```

    Permission Denied


    ``` json

    {
        "status": false,
        "data": {},
        "error": [],
        "message": "unauthorized access: permission denied"
    }

     ```
servers:
  - url: https://api.platnova.com
    description: Production server
  - url: https://sandbox.api.platnova.co
    description: Development server
security:
  - apiKeyAuth: []
tags:
  - name: Customer
    description: Create and manage customers
  - name: Virtual Account
    description: Create and manage virtual accounts
  - name: Card
    description: Create and manage cards
  - name: Wallet
    description: List and manage wallets
  - name: Payment
    description: Send and verify payments
  - name: Transaction
    description: List transactions and generate receipts
  - name: Checkout
    description: Create and retrieve checkout sessions
  - name: Payment Link
    description: Create and manage payment links
  - name: Invoice
    description: Create and manage invoices
paths:
  /v1/customers/{id}:
    parameters:
      - name: id
        in: path
        required: true
        description: The ID of the customer to retrieve.
        example: f09b9f49-87ee-458f-8325-b49d81543ea0
        schema:
          type: string
    patch:
      tags:
        - Customer
      summary: Update customer
      description: >-
        Partially update a customer. All body fields are optional; include only
        fields you want to change. Use documents and proof_of_funds for KYC
        updates.
      operationId: updateCustomer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomerRequest'
            example:
              first_name: Jane
              phone: '+2348012345678'
              documents:
                - id_type: passport
                  id_number: A12345678
                  front_doc: <base64-encoded image>
              proof_of_funds:
                employment_status: employed
                occupation: '151252'
                primary_purpose: payments_to_friends_or_family_abroad
                source_of_funds: salary
                expected_monthly_pay: '0_4999'
      responses:
        '200':
          description: Customer updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                  data:
                    type: object
                  error:
                    type: array
                    items: {}
                  message:
                    type: string
        '400':
          description: Bad request (e.g. customer not found)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: false
                data: {}
                error: []
                message: customer was not found
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError422'
components:
  schemas:
    UpdateCustomerRequest:
      type: object
      description: Partial update payload. All properties are optional.
      properties:
        date_of_birth:
          type: string
          format: date
          description: Date of birth (YYYY-MM-DD)
        address:
          $ref: '#/components/schemas/CustomerAddress'
        first_name:
          type: string
          description: Customer first name
        last_name:
          type: string
          description: Customer last name
        phone:
          type: string
          description: Customer phone number
        gender:
          type: string
          description: Customer gender
        country_code:
          type: string
          description: ISO country code
        documents:
          type: array
          items:
            $ref: '#/components/schemas/DocumentInput'
          description: Identity documents to attach or replace (see DocumentInput)
        proof_of_funds:
          $ref: '#/components/schemas/ProofOfFunds'
    Error:
      type: object
      properties:
        status:
          type: boolean
        data:
          type: object
        error:
          type: array
          items: {}
        message:
          type: string
          description: Error message
    ValidationError422:
      type: object
      description: Validation error response (422). Keys are request body field names.
      properties:
        error:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Field name to list of error messages
    CustomerAddress:
      type: object
      properties:
        street:
          type: string
        city:
          type: string
        state:
          type: string
        postal_code:
          type: string
        country:
          type: string
        document:
          type: string
          description: >-
            Base64-encoded proof-of-address file (e.g. utility bill or bank
            statement image)
    DocumentInput:
      type: object
      description: >-
        Identity document fields. Supported id_type values: passport,
        resident_id, drivers_license, national_id, voters_card, nin, bvn. For
        passport, resident_id, drivers_license, national_id, voters_card, and
        nin, provide at most front_doc as a base64-encoded image; back_doc is
        not required. These rules apply to each item in documents, to legacy
        document and additional_documents on create, and to each item in
        documents on update.
      properties:
        id_type:
          type: string
          enum:
            - passport
            - resident_id
            - drivers_license
            - national_id
            - voters_card
            - nin
            - bvn
          description: Identity document type
        id_number:
          type: string
          description: Document number
        front_doc:
          type: string
          description: Base64-encoded image of the document front
        back_doc:
          type: string
          description: Base64-encoded image of the document back (when applicable)
    ProofOfFunds:
      type: object
      description: >-
        Proof-of-funds / source-of-wealth fields. Use allowed field values from
        Proof of funds options in the Customers guides.
      properties:
        employment_status:
          type: string
          description: Employment status code
          enum:
            - employed
            - homemaker
            - retired
            - self_employed
            - student
            - unemployed
        occupation:
          type: string
          description: Occupation field value (SOC-style); see Proof of funds options guide
          enum:
            - '151252'
            - '291141'
            - 2912XX
            - 21109X
            - '151299'
            - '434051'
            - 1320XX
            - '131082'
            - '151255'
            - '273099'
            - '119111'
            - '231011'
            - '232099'
            - '119199'
            - '131161'
            - '112021'
            - 17302X
            - '132011'
            - '151211'
            - '999999'
        primary_purpose:
          type: string
          description: Primary purpose code
          enum:
            - charitable_donations
            - ecommerce_retail_payments
            - investment_purposes
            - operating_a_company
            - payments_to_friends_or_family_abroad
            - personal_or_living_expenses
            - protect_wealth
            - purchase_goods_and_services
            - receive_payment_for_freelancing
        source_of_funds:
          type: string
          description: Source of funds code
          enum:
            - company_funds
            - gifts
            - government_benefits
            - inheritance
            - pension_retirement
            - salary
            - sale_of_assets_real_estate
            - savings
        expected_monthly_pay:
          type: string
          description: Expected monthly payments / income band code
          enum:
            - '0_4999'
            - '5000_9999'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API key for authentication.

````