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

# Update customer

> Update an existing customer's details

## Overview

Update the details of an existing customer. Only provided fields are updated; omitted fields remain unchanged.

## Authentication

<ParamField header="X-Api-Key" type="string" required>
  Your merchant API key
</ParamField>

## Path Parameters

<ParamField path="id" type="string" required>
  Customer ID (UUID)

  **Example:** `650e8400-e29b-41d4-a716-446655440000`
</ParamField>

## Request Body

<ParamField body="email" type="string">
  Customer email address. Must be a valid email if provided.

  **Example:** `customer@example.com`
</ParamField>

<ParamField body="first_name" type="string">
  Customer first name (1-100 characters)

  **Example:** `Jane`
</ParamField>

<ParamField body="last_name" type="string">
  Customer last name (1-100 characters)

  **Example:** `Doe`
</ParamField>

## Request Examples

<CodeGroup>
  ```json JSON theme={null}
  {
    "email": "customer@example.com",
    "first_name": "Jane",
    "last_name": "Doe"
  }
  ```

  ```bash cURL theme={null}
  curl --request PATCH \
    --url https://api.daya.co/v1/customers/650e8400-e29b-41d4-a716-446655440000 \
    --header 'X-Api-Key: YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
      "email": "customer@example.com",
      "first_name": "Jane",
      "last_name": "Doe"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.daya.co/v1/customers/650e8400-e29b-41d4-a716-446655440000',
    {
      method: 'PATCH',
      headers: {
        'X-Api-Key': 'YOUR_API_KEY',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        email: 'customer@example.com',
        first_name: 'Jane',
        last_name: 'Doe'
      })
    }
  );
  const customer = await response.json();
  console.log(customer);
  ```
</CodeGroup>

## Response

Returns the updated customer object. See [Get customer](/api-reference/customers/get-customer#response) for the full field list.

### Success Response

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "id": "650e8400-e29b-41d4-a716-446655440000",
    "email": "customer@example.com",
    "first_name": "Jane",
    "last_name": "Doe",
    "is_verified": false,
    "tier_1_kyc_complete": false,
    "tier_2_kyc_complete": false,
    "capabilities": [],
    "rejection_reasons": [],
    "created_at": "2026-01-05T15:04:05Z",
    "updated_at": "2026-01-06T10:30:00Z"
  }
  ```
</ResponseExample>

## Error Responses

<ResponseExample>
  ```json 400 Bad Request - Invalid UUID theme={null}
  {
    "error": {
      "code": "BAD_REQUEST",
      "message": "Invalid UUID format",
      "request_id": "550e8400-e29b-41d4-a716-446655440000"
    }
  }
  ```

  ```json 400 Bad Request - Validation failed theme={null}
  {
    "error": {
      "code": "VALIDATION_FAILED",
      "message": "Validation failed",
      "request_id": "550e8400-e29b-41d4-a716-446655440000",
      "validation": "first_name must be between 1 and 100 characters"
    }
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "error": {
      "code": "NOT_FOUND",
      "message": "Customer not found",
      "request_id": "550e8400-e29b-41d4-a716-446655440000"
    }
  }
  ```

  ```json 409 Conflict - Email already exists theme={null}
  {
    "error": {
      "code": "CONFLICT",
      "message": "Customer with this email already exists for this merchant",
      "request_id": "550e8400-e29b-41d4-a716-446655440000"
    }
  }
  ```
</ResponseExample>

## Next Steps

<CardGroup cols={2}>
  <Card title="Get Customer" icon="user" href="/api-reference/customers/get-customer">
    Retrieve the full customer record
  </Card>

  <Card title="Submit Tier 1 Verification" icon="shield-check" href="/api-reference/customers/submit-tier1-verification">
    Verify a customer's identity for permanent NGN funding accounts
  </Card>
</CardGroup>
