View Categories

Get Identification Process Status

πŸ‘₯ Enrollment β€” Get Identification Process Status APIΒ  #

Gateway Path: /Enrollment/{id}/{userType}/{isIdentificationCompleted}/get-identification-process-status
Service: Customer Relationship Management (CRM)
Method: GET
Auth: Bearer token in Authorization header


1) πŸ“– Overview & Purpose #

Retrieves the current status of a user’s external identification with Borica.
This endpoint is used in two distinct polling phases:

  • Phase A β€” Pre-sign (after first success redirect):
    Start polling right after Borica redirects your app to its Success URL (post–web identification).
    Keep polling until you receive SIGN_SESSION_ID_SUCCESSFULLY_CREATED.
    Then open the returned videoIdentificationUrl to proceed with 10nPayments document signing in Borica’s UI.

  • Phase B β€” Post-sign (after signing success redirect):
    After the user signs the 10nPayments documents in Borica and you receive another Success redirect, start polling again.
    Keep polling until you receive DOCUMENT_SIGN_SUCCESS (terminal success for the signing phase).

βœ… In both phases, call the endpoint with isIdentificationCompleted=true because the redirect guarantees success of the preceding step.


2) πŸ”— Endpoint Definition #

HTTP: GET /Enrollment/{id}/{userType}/{isIdentificationCompleted}/get-identification-process-status

Headers #

  • Authorization: Bearer <token>

Path Parameters #

Name Type Required Description
id integer (int32) βœ” User ID (1..2147483647).
userType integer (enum) βœ” 0 = Individual, 1 = Merchant.
isIdentificationCompleted boolean βœ” true when your frontend already received a success redirect from Borica for the immediately prior step.

Request Body #

  • None


3) πŸ“‘ Responses #

βœ… 3.1 Success β€” 200 OK #

Response fields

  • videoIdentificationUrl (string | null) β€” Present when a next actionable step is available (e.g., pre-sign completion leads to a URL for 10nPayments signing).

  • videoIdentificationStatus (string | null) β€” Current status value.

  • message (string) β€” Optional info message.

Typical statuses by phase

Phase Usual Flow
Phase A (pre-sign) PROCESSING β†’ SIGN_SESSION_ID_SUCCESSFULLY_CREATED (open videoIdentificationUrl to start 10nPayments document signing)
Phase B (post-sign) SIGN_SESSION_ID_SUCCESSFULLY_CREATED (may still appear briefly) β†’ DOCUMENT_SIGN_SUCCESS (terminal success for document signing)

⚠️ 3.2 Client Errors β€” 400 / 404 #

Problem-details style errors if parameters are invalid or context not found.

❌ 3.3 Server Error β€” 500 #

Unexpected failure (empty body by policy).


4) πŸ” Polling Contract #

  • When to poll:

    • Phase A: Immediately after your app lands on Success redirect from Borica web identification.

    • Phase B: Immediately after your app lands on Success redirect from Borica after 10nPayments document signing.

  • How to call: GET /Enrollment/{id}/{userType}/true/get-identification-process-status

  • Interval: every 2–5 seconds.

  • Timeout: client-side cap (e.g., 2–5 minutes).

  • Stop conditions:

    • Phase A target: videoIdentificationStatus === "SIGN_SESSION_ID_SUCCESSFULLY_CREATED" and videoIdentificationUrl present β†’ open it to start signing.

    • Phase B target: videoIdentificationStatus === "DOCUMENT_SIGN_SUCCESS" β†’ proceed with your post-KYC flow.

πŸ”’ Open only trusted URLs and enforce a strict allowlist.


5) πŸ’» Examples #

5.1 cURL (Phase A or B) #

curl -X GET \ "https://api-test.10npay.com/Enrollment/2083/0/true/get-identification-process-status" \ -H "Authorization: Bearer <YOUR_SECRET_TOKEN>" -i

5.2 JavaScript (fetch) β€” unified poller #

async function pollStatus({ userId, userType = 0, targetStatuses = [], timeoutMs = 180000 }) { const url = `https://api-test.10npay.com/Enrollment/${userId}/${userType}/true/get-identification-process-status`; const headers = { Authorization: "Bearer <YOUR_SECRET_TOKEN>" }; const start = Date.now(); while (Date.now() - start < timeoutMs) { const r = await fetch(url, { headers }); if (!r.ok) throw new Error(`HTTP ${r.status}`); const data = await r.json(); if (targetStatuses.includes(data.videoIdentificationStatus)) return data; await new Promise(s => setTimeout(s, 3000)); } throw new Error("Polling timeout"); } // Phase A: wait for session creation, then open URL to sign const preSign = await pollStatus({ userId: 2083, targetStatuses: ["SIGN_SESSION_ID_SUCCESSFULLY_CREATED"] }); if (preSign.videoIdentificationUrl) { // open preSign.videoIdentificationUrl to start 10nPayments document signing } // Phase B: after signing success redirect, wait for final confirmation const postSign = await pollStatus({ userId: 2083, targetStatuses: ["DOCUMENT_SIGN_SUCCESS"] }); // proceed with post-KYC flow


6) πŸ”„ Sequences #

Phase A β€” Pre-sign #

  1. App receives Success redirect from Borica (post–web identification).

  2. Client β†’ API: GET .../true/get-identification-process-status (start polling).

  3. Status evolves from PROCESSING β†’ SIGN_SESSION_ID_SUCCESSFULLY_CREATED (with videoIdentificationUrl).

  4. Client: open videoIdentificationUrl to start 10nPayments document signing in Borica.

Phase B β€” Post-sign #

  1. App receives Success redirect from Borica (after signing).

  2. Client β†’ API: GET .../true/get-identification-process-status (start polling again).

  3. Status reaches DOCUMENT_SIGN_SUCCESS (terminal).

  4. Client: proceed to next step in your onboarding/KYC pipeline.

Powered by BetterDocs