---
title: "Submit for verification"
method: POST
path: "/v1/customers/{customerId}/verifications"
tags: ["Onboarding"]
---

# Submit for verification

`POST /v1/customers/{customerId}/verifications`

## Request

- Base URL: `https://api.sandbox.alfredpay.io`
- URL: `https://api.sandbox.alfredpay.io/v1/customers/{customerId}/verifications`
- Auth: one of:
  - HTTP bearer
  - API key in header `api-key` and API key in header `api-secret`

The commit, for KYC and KYB alike. There's no body: the customer has exactly one draft, and this freezes it, creates a verification and starts the review. The customer's `type` decides which path runs.

After this, material changes go through `/reevaluate`. Never submit a second verification.

**Wait on** `customer.verification.updated`. See [Webhooks and events](/docs/webhooks-and-events).

## Headers

- `Idempotency-Key` string, uuid, required

## Response `201`

Submitted

- Verification
  - `id` string
  - `submissionId` string
  - `type` 'INDIVIDUAL' | 'BUSINESS'
  - `status` 'SUBMITTED' | 'IN_REVIEW' | 'APPROVED' | 'REJECTED' | 'RFI'
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `409`: `submission_frozen`: the current draft is already under verification; or nothing to submit because no draft exists.
- `422`: `preflight_failed`: the draft would not pass preflight. `error.details` lists the outstanding items in the PreflightResult shape.

## Changes

- **2026-11-03** `20fef4fd2ab3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/changes/v1/customers/:customerId/verifications/post.md)

---

[API](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation.md) - [All operations](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/revisions/20fef4fd2ab3?raw)
