Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vouchmark.com/llms.txt

Use this file to discover all available pages before exploring further.

Every error response has the same shape:
{
  "success": false,
  "statusCode": 400,
  "message": "Company RC number is required for TIN verification",
  "error": "RC_REQUIRED",
  "timestamp": "2026-05-12T09:14:00Z",
  "path": "/v1/check-firstin"
}
error is the stable, machine-readable code. message is for humans and may change over time.

Status codes

StatusMeaningRetry?
400Invalid input or precondition failedNo — fix the request.
401Authentication failed or token expiredRefresh and retry.
403Authenticated but not authorisedNo.
404Resource not found, or not owned by youNo.
409Conflict (duplicate, race)Sometimes — see the error code.
413Payload too largeNo — shrink.
415Unsupported file typeNo — re-encode.
422Validation failed (Zod)No — fix the body.
429Rate limit hitYes, after Retry-After.
500Server errorYes, with exponential backoff.
502/503/504Upstream issueYes, with backoff.

Common error codes

Auth

CodeStatusWhen
NO_TOKEN401Authorization header missing.
TOKEN_EXPIRED401Access token expired. Refresh.
TOKEN_REVOKED401Token blacklisted (logout, password change).
EMAIL_NOT_VERIFIED403Account exists but email confirmation pending.
INVALID_CREDENTIALS401Wrong email or password.
REFRESH_TOKEN_REUSED401The refresh token has already been used. Force re-auth.

Validation

CodeStatusWhen
VALIDATION_ERROR422Body or query failed Zod schema. The response includes a details array of per-field problems.
INVALID_FILE_TYPE400Uploaded file had the wrong MIME type.
FILE_SIZE_LIMIT_EXCEEDED413Upload exceeded the per-endpoint size cap.
FILE_COUNT_LIMIT_EXCEEDED400Too many files in a multi-upload request.

Companies

CodeStatusWhen
COMPANY_NOT_FOUND404The company doesn’t exist or you don’t own it.
RC_REQUIRED400Operation needs an RC number; none on file.
ALREADY_IN_PROGRESS400A duplicate verification kickoff was attempted.
RC_NOT_FOUND400CAC returned no record for this RC.

Verifications

CodeStatusWhen
JTB_NO_TIN404JTB resolver returned no TIN.
NAME_MISMATCH422Resolved name doesn’t match CAC.
OCR_LOW_CONFIDENCE422Document text couldn’t be parsed reliably.
BILL_STALE422Utility bill is older than 90 days.
PROVIDER_NOT_ACCEPTED422Utility provider not on the supported list.
ADDRESS_NO_MATCH422Bill address doesn’t match company address.
ACCOUNT_NAME_NO_MATCH422Bank account name doesn’t match CAC.

Trust Badge

CodeStatusWhen
BADGE_NOT_ELIGIBLE200Company isn’t eligible (score, sanction, missing CAC). Response has badge: null.
INVALID_SIGNATURE200/trust-badge/verify — token signature doesn’t match.
EXPIRED200/trust-badge/verify — token past expiresAt.
REVOKED200/trust-badge/verify — badge revoked in DB.