Simulate v5 Onboarding Status
Use the Simulate v5 Onboarding API to transition a customer's status and sub-status during sandbox testing. This lets you reproduce compliance scenarios—such as RFI requests, KYC submission, approvals, and rejections—without waiting for Nium's compliance team to act.
This API is available in sandbox only. It has no effect in production environments.
API reference
POST /api/v5/simulations/onboard/{customerHashId}/transition
Base URL (Sandbox): https://gatewaysandbox.nium.com
See the v1 simulation API for the previous-version equivalent.
Request headers
| Header | Type | Description |
|---|---|---|
x-api-key | string | API key for authentication. |
x-client-name | string (≤32 chars) | Client name, required on every request. |
x-request-id | UUID (36 chars) | Unique request identifier; required on every call. |
Content-Type | string | Must be application/json. |
Path parameters
| Parameter | Type | Description |
|---|---|---|
customerHashId | UUID | Unique identifier for the customer, generated during onboarding. The customer must be onboarded as a v5 customer. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
nextAction | string | Yes | The action to simulate. See Supported actions for allowed values and state prerequisites. |
requestInfoFor | object | Conditional | Required when nextAction is raise_rfi. Specifies the document or field to request. See requestInfoFor object. |
isResubmissionAllowed | boolean | Optional | Only applicable when nextAction is reject. When false, the customer cannot resubmit their application. Defaults to true. |
Supported actions
nextAction | Prerequisite state | Expected outcome | Response message |
|---|---|---|---|
submit_kyc | subStatus = awaiting_kyc | Customer moves out of awaiting_kyc to rfi_requested, null, or under_review. | KYC submitted successfully. |
raise_rfi | subStatus = under_review, null, or rfi_requested | subStatus updates to rfi_requested. Fetch RFI details to see the requested field. | RFI Raised Successfully. |
clear | status = pending or error | status updates to clear. | Status updated successfully. |
reject | status = pending or error | status updates to rejected. The isResubmissionAllowed flag is set as specified. | Status updated successfully. |
requestInfoFor object
Required when nextAction is raise_rfi. The object shape differs by customer type.
Individual customer
| Field | Type | Description |
|---|---|---|
customerType | string | Must be individual. |
request | string | Document or field to request. Allowed values: passport, bankStatement, firstName, lastName, dateOfBirth, driversLicence. |
Corporate customer
| Field | Type | Description |
|---|---|---|
customerType | string | Must be corporate. |
request | string | Document or field to request. Allowed values: applicant_Address, applicant_Identity, stakeholder_Address, stakeholder_Identity, businessRegistrationDocument, corporateAddressProof. |
Sample requests
Submit KYC
Transitions a customer out of awaiting_kyc.
{
"nextAction": "submit_kyc"
}
Raise RFI — individual customer
Transitions subStatus to rfi_requested and flags that the customer's first name is required.
{
"nextAction": "raise_rfi",
"requestInfoFor": {
"customerType": "individual",
"request": "firstName"
}
}
Raise RFI — corporate customer
Transitions subStatus to rfi_requested and requests an applicant identity document.
{
"nextAction": "raise_rfi",
"requestInfoFor": {
"customerType": "corporate",
"request": "applicant_Identity"
}
}
Raise RFI — minimal (no document specified)
{
"nextAction": "raise_rfi"
}
Clear (approve)
Transitions status to clear.
{
"nextAction": "clear"
}
Reject — resubmission allowed
{
"nextAction": "reject"
}
Reject — resubmission not allowed
{
"nextAction": "reject",
"isResubmissionAllowed": false
}
Responses
200 — Success
The action was applied. The customer's status or subStatus is updated and a webhook is dispatched to the configured callback URL.
{
"message": "RFI Raised Successfully."
}
Possible messages correspond to the action performed:
nextAction | message |
|---|---|
submit_kyc | KYC submitted successfully. |
raise_rfi | RFI Raised Successfully. |
clear | Status updated successfully. |
reject | Status updated successfully. |
404 — Customer not found or not a v5 customer
// Customer not found
{
"errors": [
{
"code": "sim_invalid_customer_hash_id",
"description": "Customer Not found with customerHashId - {customerHashId}"
}
]
}
// Customer exists but was not onboarded as v5
{
"errors": [
{
"code": "sim_customer_not_v5",
"description": "Customer with customerHashId - {customerHashId} is not onboarded as a v5 customer"
}
]
}
422 — Invalid action for current state
Returned when the requested nextAction is not allowed from the customer's current status or subStatus.
{
"errors": [
{
"code": "sim_invalid_next_action",
"description": "Current status - 'pending'/subStatus - 'awaiting_kyc' doesn't allow action 'raise_rfi'. Allowed action from current state: submit_kyc."
}
]
}
Related
- Customer Onboarding v5 — full onboarding flow and status lifecycle.
- Submit KYC API — programmatic KYC submission.
- Notifications and Webhooks — customer status webhook reference.