Skip to main content
curl -X POST https://checkout.noxpay.io/v2/naas/submerchants/onboarding_link \
  -H "api-key: <key>" \
  -H "X-Signature: <signed-body-signature>" \
  -H "Content-Type: application/json" \
  -d '{
    "timestamp": "2026-05-25T14:30:00Z",
    "payload": {
      "correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
      "webhook": "https://yourserver.com/kyb-webhook"
    }
  }'
import requests

# correlation_id goes in payload, not in the envelope
body, sig = sign_envelope({
    "correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
    "webhook": "https://yourserver.com/kyb-webhook",
})
response = requests.post(
    "https://checkout.noxpay.io/v2/naas/submerchants/onboarding_link",
    headers={"api-key": "<key>", "X-Signature": sig, "Content-Type": "application/json"},
    data=body,
)
print(response.json())
// correlation_id goes in payload, not in the envelope
const { body, signature } = signEnvelope({
  correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
  webhook: "https://yourserver.com/kyb-webhook",
});
const response = await fetch("https://checkout.noxpay.io/v2/naas/submerchants/onboarding_link", {
  method: "POST",
  headers: { "api-key": "<key>", "X-Signature": signature, "Content-Type": "application/json" },
  body,
});
const data = await response.json();
{
  "end2end": "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "url":     "https://cadastro.io/a1b2c3d4-e5f6-4789-abcd-000000000001"
}
{ "error": "correlation_id not found" }
Initiates a KYB (Know Your Business) verification flow via CAF for an enrolled sub-merchant. Returns an end2end process identifier and the CAF onboarding URL.
This endpoint operates at the master merchant level. Do not include correlation_id in the envelope — pass it inside payload instead (see below).

Payload fields

FieldTypeRequiredDescription
correlation_idstring (UUID)YesThe UUID returned by Enroll Sub-merchant.
webhookstringNoURL that receives a status update on every KYB state change.

Response 201 Created

FieldTypeDescription
end2endstringProcess identifier for the KYB flow
urlstringCAF onboarding URL — populated at creation time
The url follows the format https://cadastro.io/{id}. If it is empty, use GET /v2/naas/submerchants/onboarding_status to poll until it appears. 400 — missing or empty correlation_id. 404correlation_id not found or does not belong to this master merchant.
curl -X POST https://checkout.noxpay.io/v2/naas/submerchants/onboarding_link \
  -H "api-key: <key>" \
  -H "X-Signature: <signed-body-signature>" \
  -H "Content-Type: application/json" \
  -d '{
    "timestamp": "2026-05-25T14:30:00Z",
    "payload": {
      "correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
      "webhook": "https://yourserver.com/kyb-webhook"
    }
  }'
import requests

# correlation_id goes in payload, not in the envelope
body, sig = sign_envelope({
    "correlation_id": "a1b2c3d4-e5f6-4789-abcd-000000000001",
    "webhook": "https://yourserver.com/kyb-webhook",
})
response = requests.post(
    "https://checkout.noxpay.io/v2/naas/submerchants/onboarding_link",
    headers={"api-key": "<key>", "X-Signature": sig, "Content-Type": "application/json"},
    data=body,
)
print(response.json())
// correlation_id goes in payload, not in the envelope
const { body, signature } = signEnvelope({
  correlation_id: "a1b2c3d4-e5f6-4789-abcd-000000000001",
  webhook: "https://yourserver.com/kyb-webhook",
});
const response = await fetch("https://checkout.noxpay.io/v2/naas/submerchants/onboarding_link", {
  method: "POST",
  headers: { "api-key": "<key>", "X-Signature": signature, "Content-Type": "application/json" },
  body,
});
const data = await response.json();
{
  "end2end": "NOX353CA9A97D8A4DA9A2999483077AB7C2",
  "url":     "https://cadastro.io/a1b2c3d4-e5f6-4789-abcd-000000000001"
}
{ "error": "correlation_id not found" }