---
title: "Create KYC Application"
method: POST
path: "/api/v1/users/:userId/kyc/application"
tags: ["Banking"]
---

# Create KYC Application

`POST /api/v1/users/:userId/kyc/application`

## Request

- Base URL: `https://merchant-api.accruesavings.com`
- URL: `https://merchant-api.accruesavings.com/api/v1/users/:userId/kyc/application`
- Auth: none declared. Required headers: `Client-ID`, `Authorization`
- TypeScript: <https://skmtc.dev/byaccrue/apis/accrue-merchant-api/docs/api/v1/users/:userId/kyc/application/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new KYC (Know Your Customer) application for a user with their personal information. This initiates the identity verification process required for banking features. The application will be processed through automated checks and may require additional document verification depending on the verification outcome.

## Path parameters

- `userId` string, uuid, required: The unique identifier for the user

## Headers

- `Client-ID` string, uuid, required: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions.
- `Authorization` string, uuid, required: Secure secret to access privileged endpoints.

## Request body

- object
  - `data` object, required
    - `type` 'Kyc', required
    - `attributes` object, required
      - `ipAddress` string: The IP address of the user submitting the KYC application. Used for fraud detection and compliance purposes.
      - `firstName` string, required: The user's legal first name as it appears on their government-issued ID
      - `lastName` string, required: The user's legal last name as it appears on their government-issued ID
      - `phone` string, required: The user's phone number (10+ digits, no formatting required)
      - `dateOfBirth` string, required: The user's date of birth in YYYY-MM-DD format
      - `email` string, email, required: <anything>@lowrisk.com - approved(Webhook Event- KycApproved) <anything>@highrisk.com - you go into Manual review((Webhook Event- KycManualReview) <anything>@veryhighrisk.com - denied(Webhook Event- KycDenied) Here in KYCManualReview, we either move them in sardine to Awaiting documents((Webhook Event- KycAwaitingDocuments) or Approved/Denied based on Manual Review of KYC Application (User can upload docs when they are in either KycManualReview/KycAwaitingDocuments, when the user has uploaded docs and waiting for us to verify the KYC is in pending state and you would get KycPending webhook event)
      - `street` string, required: The street address (minimum 3 characters)
      - `street2` string: Additional address information (apartment, suite, etc.)
      - `city` string, required: The city name (minimum 2 characters)
      - `state` string, required: The two-letter state code
      - `postalCode` string, required: The ZIP code in 5-digit or 5+4 format

## Response `200`

KYC application created successfully. The response includes the initial verification status, which may be Pending, Approved, Denied, or AwaitingDocuments depending on automated checks.

- CreateKycApplicationResponse
  - `data` Kyc, required: KYC verification status for a user
    - `id` string, uuid, required: Unique identifier for the object.
    - `type` 'Kyc', required
    - `attributes` object, required
      - `status` 'Approved' | 'AwaitingDocuments' | 'Denied' | 'ManualReview' | 'NotStarted' | 'Pending' | 'Unknown', required: The current status of the user's KYC verification
      - `updatedAt` string, date-time, required
      - `createdAt` string, date-time, required

## Other responses

- `400`: Bad Request
- `500`: Internal Server Error

---

[API](https://skmtc.dev/byaccrue/apis/accrue-merchant-api.md) - [All operations](https://skmtc.dev/byaccrue/apis/accrue-merchant-api/llms.txt) - [OpenAPI document](https://skmtc.dev/byaccrue/apis/accrue-merchant-api/revisions/3e2d97ef2e6e?raw)
