Skip to main content
curl -X GET "https://checkout.noxpay.io/v2/naas/submerchants/onboarding_status?correlation_id=a1b2c3d4-e5f6-4789-abcd-000000000001" \
  -H "api-key: <key>"
import requests

response = requests.get(
    "https://checkout.noxpay.io/v2/naas/submerchants/onboarding_status",
    headers={"api-key": "<key>"},
    params={"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001"},
)
print(response.json())
const params = new URLSearchParams({
  correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
});
const response = await fetch(
  `https://checkout.noxpay.io/v2/naas/submerchants/onboarding_status?${params}`,
  { headers: { "api-key": "<key>" } }
);
const data = await response.json();
{
  "end2end":    "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "component":  "kyb_caf_submerchant",
  "created_at": "2026-05-25T14:30:00Z",
  "status":     "Pending",
  "substatus":  "Awaiting KYB Completion",
  "process":    "kyb_caf_submerchant.pending_link",
  "message":    "Onboarding link sent; waiting for submerchant to complete identity verification"
}
{
  "end2end":    "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "component":  "kyb_caf_submerchant",
  "created_at": "2026-05-25T14:30:00Z",
  "status":     "Completed",
  "substatus":  "KYB Complete",
  "process":    "kyb_caf_submerchant.done",
  "message":    "KYB verification complete; submerchant fully onboarded"
}
{
  "end2end":          "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "component":        "kyb_caf_submerchant",
  "created_at":       "2026-05-25T14:30:00Z",
  "status":           "Failed",
  "substatus":        "KYB Error",
  "process":          "kyb_caf_submerchant.error",
  "message":          "An error occurred during KYB verification",
  "error_message":    "KYB could not be completed. Please contact support.",
  "error_from_state": "PENDING_KYB",
  "error_detail":     "CAF: transaction not found"
}
{ "error": "Not Found" }
Returns the current KYB status for a sub-merchant’s onboarding process. The response has the same shape as KYB webhook payloads, so you can use the same parsing code for both.
This endpoint requires only the api-key header — no signed envelope or X-Signature.

Query parameters

ParameterTypeRequiredDescription
correlation_idstring (UUID)YesThe UUID returned by Enroll Sub-merchant.

Response 200 OK

FieldTypeDescription
end2endstringProcess identifier for the KYB flow
componentstringAlways kyb_caf_submerchant
created_atstringISO 8601 creation timestamp
statusstringHigh-level status (Pending, Processing, Completed, Failed)
substatusstringDetailed status label
processstringMachine-readable state (see KYB States below)
messagestringHuman-readable description of the current state
400 — missing correlation_id. 401 — invalid or missing api-key. 404 — no onboarding process found for this correlation under your master account.

KYB States

The process field maps to the following states:
processstatussubstatusDescription
kyb_caf_submerchant.initialPendingKYB InitiatedProcess started; creating CAF onboarding session
kyb_caf_submerchant.pending_linkPendingAwaiting KYB CompletionOnboarding link ready; waiting for sub-merchant to complete verification
kyb_caf_submerchant.pending_kybPendingUnder ReviewDocuments submitted; CAF review in progress
kyb_caf_submerchant.processingProcessingKYB ApprovedCAF approved; provisioning merchant account
kyb_caf_submerchant.doneCompletedKYB CompleteSub-merchant fully onboarded and active
kyb_caf_submerchant.errorFailedKYB ErrorVerification failed; see error_detail
When status is "Failed", the response also includes:
FieldDescription
error_from_stateThe state the process was in when the error occurred
error_detailRaw error message from the failed step
error_messageHuman-readable description suitable for displaying to end users

KYB Webhooks

When a webhook URL is provided in POST /v2/naas/submerchants/onboarding_link, Noxpay sends a signed POST to that URL on every KYB state change. The payload shape is identical to the status response above — you can use the same parsing code for both. The webhook is signed with your NaaS webhook secret (configured at NaaS → Setup → Webhook Secret). See NaaS Setup for signature verification details.
curl -X GET "https://checkout.noxpay.io/v2/naas/submerchants/onboarding_status?correlation_id=a1b2c3d4-e5f6-4789-abcd-000000000001" \
  -H "api-key: <key>"
import requests

response = requests.get(
    "https://checkout.noxpay.io/v2/naas/submerchants/onboarding_status",
    headers={"api-key": "<key>"},
    params={"correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001"},
)
print(response.json())
const params = new URLSearchParams({
  correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
});
const response = await fetch(
  `https://checkout.noxpay.io/v2/naas/submerchants/onboarding_status?${params}`,
  { headers: { "api-key": "<key>" } }
);
const data = await response.json();
{
  "end2end":    "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "component":  "kyb_caf_submerchant",
  "created_at": "2026-05-25T14:30:00Z",
  "status":     "Pending",
  "substatus":  "Awaiting KYB Completion",
  "process":    "kyb_caf_submerchant.pending_link",
  "message":    "Onboarding link sent; waiting for submerchant to complete identity verification"
}
{
  "end2end":    "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "component":  "kyb_caf_submerchant",
  "created_at": "2026-05-25T14:30:00Z",
  "status":     "Completed",
  "substatus":  "KYB Complete",
  "process":    "kyb_caf_submerchant.done",
  "message":    "KYB verification complete; submerchant fully onboarded"
}
{
  "end2end":          "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "component":        "kyb_caf_submerchant",
  "created_at":       "2026-05-25T14:30:00Z",
  "status":           "Failed",
  "substatus":        "KYB Error",
  "process":          "kyb_caf_submerchant.error",
  "message":          "An error occurred during KYB verification",
  "error_message":    "KYB could not be completed. Please contact support.",
  "error_from_state": "PENDING_KYB",
  "error_detail":     "CAF: transaction not found"
}
{ "error": "Not Found" }