Skip to main content
POST
/
v1
/
customers
/
{id}
/
tier2-verification
Submit tier 2 verification
curl --request POST \
  --url https://api.daya.co/v1/customers/{id}/tier2-verification \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <x-api-key>' \
  --data '
{
  "residential_address": {
    "residential_address.street_line_1": "<string>",
    "residential_address.city": "<string>",
    "residential_address.subdivision": "<string>",
    "residential_address.postal_code": "<string>",
    "residential_address.country": "<string>"
  },
  "nationality": "<string>",
  "birth_date": "<string>",
  "identifying_information": [
    {
      "identifying_information[].type": "<string>",
      "identifying_information[].issuing_country": "<string>",
      "identifying_information[].number": "<string>",
      "identifying_information[].expiration": "<string>",
      "identifying_information[].image_front": "<string>",
      "identifying_information[].image_back": "<string>"
    }
  ],
  "source_of_funds": "<string>",
  "account_purpose": "<string>",
  "expected_monthly_payments_usd": "<string>",
  "documents": [
    {
      "documents[].file": "<string>",
      "documents[].purposes": [
        {}
      ]
    }
  ]
}
'
{
  "id": "650e8400-e29b-41d4-a716-446655440000",
  "email": "customer@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "is_verified": false,
  "verification": {
    "tier_1": { "status": "VERIFIED" },
    "tier_2": { "status": "PENDING" }
  },
  "created_at": "2026-01-05T15:04:05Z",
  "updated_at": "2026-01-05T16:00:00Z"
}

Overview

Submits KYC tier 2 information (address, identity document, etc.) for an existing customer. Tier 2 verification is required before the customer can use Bridge-backed banking features.
Tier 2 verification is required for:
  • Creating USD virtual accounts
  • Creating US_BANK_ACCOUNT or SWIFT_BANK_ACCOUNT recipients
  • Sending USD transfers to ACH, wire, or SWIFT recipients
Idempotency behavior:
  • If tier 2 status is already PENDING, resubmission is blocked.
  • If tier 2 status is already VERIFIED, resubmission is blocked.

Authentication

X-Api-Key
string
required
Your merchant API key

Path Parameters

id
string
required
Customer ID (UUID format)Example: 650e8400-e29b-41d4-a716-446655440000

Request Body

residential_address
object
required
Customer’s residential address.
nationality
string
required
ISO 3166-1 alpha-3 country code for the customer’s nationality.Example: NGA
birth_date
string
required
Date of birth in YYYY-MM-DD format.Example: 1990-05-15
identifying_information
array
required
Array of identity documents (at least one required).
source_of_funds
string
required
Source of the customer’s funds.Allowed values: company_funds | ecommerce_reseller | gambling_proceeds | gifts | government_benefits | inheritance | investments_loans | pension_retirement | salary | sale_of_assets_real_estate | savings | someone_elses_funds
account_purpose
string
required
Purpose of the account.Allowed values: charitable_donations | ecommerce_retail_payments | investment_purposes | operating_a_company | other | payments_to_friends_or_family_abroad | personal_or_living_expenses | protect_wealth | purchase_goods_and_services | receive_payment_for_freelancing | receive_salary
expected_monthly_payments_usd
string
required
Expected monthly payment volume bracket.Allowed values: 0_4999 | 5000_9999 | 10000_49999 | 50000_plus
documents
array
Supporting documents. Optional at the schema level, but conditionally required when expected_monthly_payments_usd is above the 0_4999 bucket. For 5000_9999, 10000_49999, and 50000_plus buckets, supporting documents should be provided.

Request Example

curl --request POST \
  --url https://api.daya.co/v1/customers/650e8400-e29b-41d4-a716-446655440000/tier2-verification \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "residential_address": {
      "street_line_1": "123 Main St",
      "city": "Lagos",
      "subdivision": "LA",
      "postal_code": "100001",
      "country": "NGA"
    },
    "nationality": "NGA",
    "birth_date": "1990-05-15",
    "identifying_information": [
      {
        "type": "passport",
        "issuing_country": "NGA",
        "number": "A12345678",
        "expiration": "2030-01-01",
        "image_front": "data:image/png;base64,iVBORw0KGgo..."
      }
    ],
    "source_of_funds": "salary",
    "account_purpose": "personal_or_living_expenses",
    "expected_monthly_payments_usd": "0_4999"
  }'

Response

Returns the updated customer object with verification status.
id
string
required
Customer ID (UUID)
email
string
required
Customer email address
first_name
string
Customer first name
last_name
string
Customer last name
is_verified
boolean
required
Whether the customer has passed verification
verification
object
Verification status details.
created_at
string
required
When the customer was created (ISO 8601)
updated_at
string
required
When the customer was last updated (ISO 8601)
{
  "id": "650e8400-e29b-41d4-a716-446655440000",
  "email": "customer@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "is_verified": false,
  "verification": {
    "tier_1": { "status": "VERIFIED" },
    "tier_2": { "status": "PENDING" }
  },
  "created_at": "2026-01-05T15:04:05Z",
  "updated_at": "2026-01-05T16:00:00Z"
}