---
title: "Submit Tier 1 Verification"
method: POST
path: "/v1/customers/{id}/tier1-verification"
tags: ["public.customers"]
---

# Submit Tier 1 Verification

`POST /v1/customers/{id}/tier1-verification`

Submits BVN and a selfie image reference for Tier 1 verification. phone_number is optional unless bank_account is included; when bank details are submitted, phone_number is required and accepts Nigerian national or +234 format so Daya can send it to Paystack. Get the supported bank code from GET /v1/banks and verify the account with POST /v1/banks/resolve before submitting it. Tier 1 remains complete after a successful BVN check even if the additional Paystack funding-account option cannot be enabled. The selfie may be sent as an HTTPS URL or a base64 data URL.

## Path parameters

- `id` string, required

## Request body

- SubmitTier1VerificationRequest
  - `bank_account` BankAccountRequest
    - `account_number` string
    - `bank_code` string
  - `bvn` string, required
  - `image_url` string, required — ImageURL supports either an HTTPS URL or a base64 data URL up to 1 MiB decoded, such as data:image/jpeg;base64,...
  - `phone_number` string

## Response `200`

OK

- CustomerResponse
  - `capabilities` CustomerCapability[]
    - `name` string — Name is the customer capability identifier. Currently returned values are "base" and "usd_banking".
    - `status` string — Status is the capability state. Returned values are "approved", "pending", "information_requested", "rejected", or "missing".
  - `created_at` string
  - `email` string
  - `first_name` string
  - `id` string
  - `is_verified` boolean
  - `last_name` string
  - `paystack_funding_account_readiness` PaystackFundingAccountReadiness
    - `account_number_last4` string
    - `bank_code` string
    - `missing_fields` string[]
    - `status` 'READY' | 'REQUIRES_INFORMATION'
    - `updated_at` string
  - `rejection_reasons` string[] — RejectionReasons contains the current blocking verification/capability issues. It is empty after approval.
  - `tier_1_kyc_complete` boolean
  - `tier_2_kyc_complete` boolean
  - `updated_at` string

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — Customer not found
- `409` — Verification already in progress or requires operations review
- `422` — Bank account could not be resolved
- `429` — Identical verification was recently attempted
- `500` — Internal server error
- `502` — Verification provider failed

---

[API](https://skmtc.dev/daya/apis/daya-external-api-public-api.md) · [All operations](https://skmtc.dev/daya/apis/daya-external-api-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/daya/daya-external-api-public-api/revisions/5fc72bf91a48/schema)
