# Verification Results

> **Breaking change — effective 17 August 2026:** `Privy-Version: 2026-08-17.heimdall` standardizes response field names and changes `status` from `ok` to `success`. New integrations must send this request header. Inspect the `Privy-Version` response header to identify your current version, and review the [response changes and migration steps](/b2b-digital-certificate/changelog#17-august-2026-response-standardization) before adopting it.

A successful HTTP `200` response reports one of two business outcomes. Always
check `userStatus` before continuing the registration flow.

| `userStatus` | Meaning | Additional field |
| --- | --- | --- |
| `verified` | The digital certificate was issued. | `privy_id` |
| `rejected` | The digital certificate was held. | `rejected_code` |

Both outcomes contain the remaining integer `balance`, Privy's
`transaction_id`, and a human-readable `message`.

## Verified result

```json
{
  "code": 200,
  "status": "ok",
  "userStatus": "verified",
  "privy_id": "ABC1234",
  "balance": 13,
  "transaction_id": "deabaaa2-73a1-46a6-9794-45d14a3be4f6",
  "message": "digital certificate has been issued"
}
```

## Rejected result

```json
{
  "code": 200,
  "status": "ok",
  "userStatus": "rejected",
  "rejected_code": "R102",
  "balance": 12,
  "transaction_id": "ceeb66a2-ea88-9id7-9137-aa744a3dae775",
  "message": "digital certificate has been held"
}
```

Treat `rejected_code` as the machine-readable rejection reason. Keep the code
and `transaction_id` when you contact Privy or reconcile a rejected request.

## Registration-status catalog

The source contract also documents these registration status codes. It does
not identify them as a field in the verification response payload.

| Code   | Meaning                                                                  |
|--------|--------------------------------------------------------------------------|
| `R200` | Registration succeeded.                                                  |
| `R201` | Registration failed because the phone is used by another NIK.            |
| `R202` | Registration failed because the email is used by another NIK.            |
| `R203` | Registration failed because the phone and email are used by another NIK. |

Do not substitute a registration status code for `userStatus` or infer that it
will be present when the response contract does not include it.

## Registration statuses when Phone Match is enabled

The following registration statuses apply only when Phone Match is enabled:

| Code     | Meaning                                                              |
|----------|----------------------------------------------------------------------|
| `R200-1` | Registration succeeded with an additional telco phone and NIK check. |
| `R201-1` | The phone is used by another NIK after the additional telco check.   |
