Cowdidocs

Send an application back to DRAFT

Admin override that resets an application to DRAFT from any status, clearing the provider session, verification result, rejection reason and reapply cooldown so it can re-run verification from scratch. resubmission_count is preserved. Optionally set `force_new_enroll` to make the applicant’s next Smile ID session a fresh enrollment (overwriting the enrolled biometric). Org-scoped and gated on the backend `accounts.write` permission (override with KYC_REVIEWER_PERMISSION).

POST
/v1/kyc/applications/{id}/draft

Authorization

Cowdi_Sales_KYC_backendBearerAuth
AuthorizationBearer <token>

Cowdi backend-compatible RS256 JWT. sub may be the global user id or a Firebase auth id; Firebase auth-id subjects and missing organization claims are resolved through the backend user/access endpoints. Validated against the configured JWKS (lib/backend-auth.ts).

In: header

Path Parameters

id*string

KYC application id.

Formatuuid

Request Body

application/json

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/kyc/applications/497f6eca-6276-4993-bfeb-53cbbbba6f08/draft" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",  "organization_id": "string",  "user_type": "INDIVIDUAL",  "merchant_type": "SOLE_PROPRIETOR",  "status": "DRAFT",  "source": "string",  "documents": [    {      "id": "string",      "document_type": "string",      "document_sub_type": "string",      "document_number": "string",      "expiry_date": "string",      "presigned_url": "string",      "uploaded_at": "2026-06-04T10:20:00.000Z"    }  ],  "verification": {    "provider": "string",    "provider_job_id": "string",    "result": "string",    "confidence_score": 0,    "completed_at": "2026-06-04T10:20:00.000Z"  },  "verification_reason_code": "string",  "verification_reason": "string",  "resubmission_count": 0,  "force_new_enroll": true,  "reapply_blocked_until": "2026-06-04T10:20:00.000Z",  "rejection_reason": "string",  "submitted_at": "2026-06-04T10:20:00.000Z",  "created_at": "2026-06-04T10:20:00.000Z",  "updated_at": "2026-06-04T10:20:00.000Z"}
{  "code": "INVALID_PARAMS",  "description": "user_id must be a UUID",  "identifier": "string",  "invalid_params": [    {      "path": "user_id",      "reason": "must be a UUID",      "sub_code": "string"    }  ]}
{  "code": "INVALID_PARAMS",  "description": "user_id must be a UUID",  "identifier": "string",  "invalid_params": [    {      "path": "user_id",      "reason": "must be a UUID",      "sub_code": "string"    }  ]}
{  "code": "INVALID_PARAMS",  "description": "user_id must be a UUID",  "identifier": "string",  "invalid_params": [    {      "path": "user_id",      "reason": "must be a UUID",      "sub_code": "string"    }  ]}
{  "code": "INVALID_PARAMS",  "description": "user_id must be a UUID",  "identifier": "string",  "invalid_params": [    {      "path": "user_id",      "reason": "must be a UUID",      "sub_code": "string"    }  ]}
{  "code": "INVALID_PARAMS",  "description": "user_id must be a UUID",  "identifier": "string",  "invalid_params": [    {      "path": "user_id",      "reason": "must be a UUID",      "sub_code": "string"    }  ]}