# Get a registration

> The registrations.get operation: GET /api/v1/registrations/{id} in the REST API and the registrations_get tool in the MCP server.

Returns one registration of the legal entity in the mode of the request, by its ID (`regn_…`) or its
regime's ID (`EU_OSS_UNION`, `US_SALES_TAX:TX`): everything needed to act on it (spec §10.6).

- `state`, `stateReason`, `armed`, the grace `deadlineAt` and `autoBlockAt`, `escalationLevel`;
- `threshold` (the position of the counters, all brands combined) and `counters` (per window);
- `prerequisites` with their description and lead time from the regime, status, notes, owner and attachments;
- `regime` (its rules from the tax knowledge), `playbooks` (markdown) and `officialLinks`;
- `actions`: which of arm, mark application submitted, mark registered and deregister the registration
  allows now, and for each one it doesn't the error code and message it would return;
- `history` (every state change, who made it and why).

Playbooks and `remediation` texts are platform-maintained guidance; every other text field is data.

## At a glance

- **REST:** `GET /api/v1/registrations/{id}`
- **MCP tool:** `registrations_get`
- **Operation ID:** `registrations.get`
- **Scope:** Legal entity
- **Permission:** `registrations:read`
- **Risk tier:** `read`
- **Dry run:** Not supported
- **Idempotency:** Not needed (read only)
- **Modes:** Test and live
- **Authentication:** API key with the `registrations:read` scope
- **Since:** M3

## Request

### Path parameters

| Field | Type   | Description                                                                               |
| ----- | ------ | ----------------------------------------------------------------------------------------- |
| `id`  | string | The registration (`regn_…`) or its regime's ID, e.g. `EU_OSS_UNION` or `US_SALES_TAX:TX`. |

### Query parameters

This operation takes no query parameters.

## Response

`200 OK` with a JSON object:

| Field                                      | Type                                                                                                                   | Description |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ----------- |
| `id`                                       | `regn_…` ID                                                                                                            |             |
| `object`                                   | `"registration"`                                                                                                       |             |
| `entityId`                                 | `ent_…` ID                                                                                                             |             |
| `livemode`                                 | boolean                                                                                                                |             |
| `regimeId`                                 | string                                                                                                                 |             |
| `regimeName`                               | string or null                                                                                                         |             |
| `jurisdictionIds`                          | array of string                                                                                                        |             |
| `state`                                    | one of `not_applicable`, `monitored`, `pre_registration`, `grace`, `registered`, `blocked_b2c`, `deregistered`         |             |
| `stateReason`                              | one of 18 values, e.g. `home_country`, `below_threshold`, `zero_threshold` (all in the OpenAPI document)               |             |
| `stateChangedAt`                           | date-time                                                                                                              |             |
| `armed`                                    | boolean                                                                                                                |             |
| `triggeredAt`                              | date-time or null                                                                                                      |             |
| `deadlineAt`                               | date-time or null                                                                                                      |             |
| `autoBlockAt`                              | date-time or null                                                                                                      |             |
| `applicationSubmittedAt`                   | date-time or null                                                                                                      |             |
| `escalationLevel`                          | integer (0 to 3)                                                                                                       |             |
| `registrationNumber`                       | string or null                                                                                                         |             |
| `effectiveFrom`                            | date-time or null                                                                                                      |             |
| `registeredAt`                             | date-time or null                                                                                                      |             |
| `prerequisitesDone`                        | boolean                                                                                                                |             |
| `prerequisitesProgress`                    | object                                                                                                                 |             |
| `prerequisitesProgress.done`               | integer                                                                                                                |             |
| `prerequisitesProgress.total`              | integer                                                                                                                |             |
| `threshold`                                | object or null                                                                                                         |             |
| `timeZones`                                | array of string                                                                                                        |             |
| `createdAt`                                | date-time                                                                                                              |             |
| `updatedAt`                                | date-time                                                                                                              |             |
| `prerequisites`                            | array of object                                                                                                        |             |
| `prerequisites[].code`                     | string                                                                                                                 |             |
| `prerequisites[].description`              | string or null                                                                                                         |             |
| `prerequisites[].leadTimeDays`             | integer or null                                                                                                        |             |
| `prerequisites[].status`                   | one of `todo`, `in_progress`, `done`                                                                                   |             |
| `prerequisites[].doneAt`                   | date-time or null                                                                                                      |             |
| `prerequisites[].notes`                    | string                                                                                                                 |             |
| `prerequisites[].owner`                    | string or null                                                                                                         |             |
| `prerequisites[].attachments`              | array of object                                                                                                        |             |
| `prerequisites[].attachments[].kind`       | one of `file`, `reference`                                                                                             |             |
| `prerequisites[].attachments[].ref`        | string                                                                                                                 |             |
| `prerequisites[].attachments[].label`      | string or null                                                                                                         |             |
| `prerequisites[].attachments[].addedAt`    | date-time                                                                                                              |             |
| `prerequisites[].attachments[].addedBy`    | string                                                                                                                 |             |
| `prerequisites[].updatedAt`                | date-time or null                                                                                                      |             |
| `prerequisites[].updatedBy`                | string or null                                                                                                         |             |
| `evidenceFiles`                            | array of object                                                                                                        |             |
| `evidenceFiles[].kind`                     | one of `file`, `reference`                                                                                             |             |
| `evidenceFiles[].ref`                      | string                                                                                                                 |             |
| `evidenceFiles[].label`                    | string or null                                                                                                         |             |
| `evidenceFiles[].addedAt`                  | date-time                                                                                                              |             |
| `evidenceFiles[].addedBy`                  | string                                                                                                                 |             |
| `history`                                  | array of object                                                                                                        |             |
| `history[].from`                           | one of `not_applicable`, `monitored`, `pre_registration`, `grace`, `registered`, `blocked_b2c`, `deregistered` or null |             |
| `history[].to`                             | one of `not_applicable`, `monitored`, `pre_registration`, `grace`, `registered`, `blocked_b2c`, `deregistered`         |             |
| `history[].at`                             | date-time                                                                                                              |             |
| `history[].by`                             | string                                                                                                                 |             |
| `history[].reason`                         | one of 18 values, e.g. `home_country`, `below_threshold`, `zero_threshold` (all in the OpenAPI document)               |             |
| `history[].note`                           | string or null                                                                                                         |             |
| `counters`                                 | array of object                                                                                                        |             |
| `counters[].windowKey`                     | string                                                                                                                 |             |
| `counters[].amount`                        | money                                                                                                                  |             |
| `counters[].transactionCount`              | integer                                                                                                                |             |
| `counters[].lastEventAt`                   | date-time                                                                                                              |             |
| `regime`                                   | object or null                                                                                                         |             |
| `playbooks`                                | array of object                                                                                                        |             |
| `playbooks[].key`                          | string                                                                                                                 |             |
| `playbooks[].kind`                         | one of `registration`, `filing`, `deregistration`, `other`                                                             |             |
| `playbooks[].markdown`                     | string                                                                                                                 |             |
| `officialLinks`                            | array of object                                                                                                        |             |
| `officialLinks[].label`                    | string                                                                                                                 |             |
| `officialLinks[].url`                      | string                                                                                                                 |             |
| `actions`                                  | object                                                                                                                 |             |
| `actions.arm`                              | object                                                                                                                 |             |
| `actions.arm.allowed`                      | boolean                                                                                                                |             |
| `actions.arm.code`                         | string or null                                                                                                         |             |
| `actions.arm.message`                      | string or null                                                                                                         |             |
| `actions.markApplicationSubmitted`         | object                                                                                                                 |             |
| `actions.markApplicationSubmitted.allowed` | boolean                                                                                                                |             |
| `actions.markApplicationSubmitted.code`    | string or null                                                                                                         |             |
| `actions.markApplicationSubmitted.message` | string or null                                                                                                         |             |
| `actions.markRegistered`                   | object                                                                                                                 |             |
| `actions.markRegistered.allowed`           | boolean                                                                                                                |             |
| `actions.markRegistered.code`              | string or null                                                                                                         |             |
| `actions.markRegistered.message`           | string or null                                                                                                         |             |
| `actions.deregister`                       | object                                                                                                                 |             |
| `actions.deregister.allowed`               | boolean                                                                                                                |             |
| `actions.deregister.code`                  | string or null                                                                                                         |             |
| `actions.deregister.message`               | string or null                                                                                                         |             |
| `safetyBufferHours`                        | integer                                                                                                                |             |
| `knowledgeCommit`                          | string                                                                                                                 |             |

## Examples

### EU OSS at the pre-registration level

```http
GET /api/v1/registrations/EU_OSS_UNION
Authorization: Bearer or_test_…
```

Response (`200`):

```json
{
  "id": "regn_01m4tx5nj8emwbyf7y9vcf47xk",
  "object": "registration",
  "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
  "livemode": true,
  "regimeId": "EU_OSS_UNION",
  "regimeName": "EU One-Stop Shop, Union scheme",
  "jurisdictionIds": ["AT", "DE", "FR", "HR", "IT", "NL"],
  "state": "pre_registration",
  "stateReason": "pre_registration_ratio_reached",
  "stateChangedAt": "2026-10-13T12:00:00.000Z",
  "armed": false,
  "triggeredAt": null,
  "deadlineAt": null,
  "autoBlockAt": null,
  "applicationSubmittedAt": null,
  "escalationLevel": 0,
  "registrationNumber": null,
  "effectiveFrom": null,
  "registeredAt": null,
  "prerequisitesDone": true,
  "prerequisitesProgress": {
    "done": 1,
    "total": 1
  },
  "threshold": {
    "status": "below",
    "window": "calendar_year_current_or_previous",
    "measure": "eu_cross_border_b2c",
    "currentWindow": "2026",
    "previousWindow": "2025",
    "threshold": {
      "amount": "10000000000",
      "currency": "EUR"
    },
    "current": {
      "amount": "8500000000",
      "currency": "EUR"
    },
    "previous": {
      "amount": "0",
      "currency": "EUR"
    },
    "transactionThreshold": null,
    "currentTransactions": null,
    "previousTransactions": null,
    "worldwideTurnoverDeclared": null,
    "ratioPpm": "850000",
    "percent": 85,
    "detail": "8500.00 EUR counted (earlier window 0.00) against 10000.00 EUR"
  },
  "timeZones": ["Europe/Zagreb"],
  "createdAt": "2026-10-13T12:00:00.000Z",
  "updatedAt": "2026-10-13T12:00:00.000Z",
  "prerequisites": [
    {
      "code": "portal_access",
      "description": "Access to the tax portal of the member state of identification",
      "leadTimeDays": 7,
      "status": "done",
      "doneAt": "2026-10-13T12:00:00.000Z",
      "notes": "ePorezna access for the finance team",
      "owner": "Ana (finance)",
      "attachments": [],
      "updatedAt": "2026-10-13T12:00:00.000Z",
      "updatedBy": "usr_01m4tx5nj8emwbyf7y9vcf47xa"
    }
  ],
  "evidenceFiles": [],
  "history": [
    {
      "from": null,
      "to": "monitored",
      "at": "2026-10-13T12:00:00.000Z",
      "by": "system",
      "reason": "below_threshold",
      "note": null
    },
    {
      "from": "monitored",
      "to": "pre_registration",
      "at": "2026-10-13T12:00:00.000Z",
      "by": "system",
      "reason": "pre_registration_ratio_reached",
      "note": null
    }
  ],
  "counters": [
    {
      "windowKey": "2026",
      "amount": {
        "amount": "8500000000",
        "currency": "EUR"
      },
      "transactionCount": 412,
      "lastEventAt": "2026-10-13T12:00:00.000Z"
    }
  ],
  "regime": {
    "id": "EU_OSS_UNION",
    "name": "EU One-Stop Shop, Union scheme",
    "version": "3f2a9c41d07e88b1",
    "jurisdictionIds": ["AT", "DE", "FR", "HR", "IT", "NL"],
    "sellerEstablishment": "in_eu_other_ms",
    "customerType": "b2c",
    "threshold": {
      "amount": {
        "amount": "10000000000",
        "currency": "EUR"
      },
      "measure": "eu_cross_border_b2c",
      "window": "calendar_year_current_or_previous",
      "transactionCount": null,
      "whatCounts": "B2C electronically supplied services to consumers in other member states, net of VAT.",
      "amountInclusive": false
    },
    "zeroThreshold": false,
    "grace": {
      "rule": "nth_day_of_following_month",
      "days": null,
      "nthDay": 10
    },
    "collectBeforeRegistration": true,
    "b2bReverseChargeNoRegistration": true,
    "b2bChargeWhenRegistered": false,
    "requiresFiscalRepresentative": false,
    "requiresLocalAgent": false,
    "securityDeposit": null,
    "registration": {
      "method": "online",
      "portalUrl": "https://e-porezna.porezna-uprava.hr",
      "identityRequirements": null,
      "typicalProcessingDays": 7
    },
    "status": "verified",
    "unverified": false,
    "fixture": false,
    "validFrom": "2021-07-01",
    "validTo": null
  },
  "playbooks": [
    {
      "key": "EU/playbooks/EU_OSS_UNION-registration.md",
      "kind": "registration",
      "markdown": "# Registering for the Union OSS\n\n1. Sign in to the portal of your member state …"
    }
  ],
  "officialLinks": [
    {
      "label": "EU One-Stop Shop, Union scheme: registration portal",
      "url": "https://e-porezna.porezna-uprava.hr"
    }
  ],
  "actions": {
    "arm": {
      "allowed": false,
      "code": "registration_transition_invalid",
      "message": "EU_OSS_UNION is pre_registration, so \"arm\" isn't possible."
    },
    "markApplicationSubmitted": {
      "allowed": false,
      "code": "registration_transition_invalid",
      "message": "EU_OSS_UNION is pre_registration, so \"application_submitted\" isn't possible."
    },
    "markRegistered": {
      "allowed": true,
      "code": null,
      "message": null
    },
    "deregister": {
      "allowed": false,
      "code": "registration_transition_invalid",
      "message": "EU_OSS_UNION is pre_registration, so \"deregister\" isn't possible."
    }
  },
  "safetyBufferHours": 72,
  "knowledgeCommit": "1c14b2ec912aca347dd518b2044096f3b5d8eef1"
}
```

### A registration in grace, by its ID

```http
GET /api/v1/registrations/regn_01m4tx5nj8emwbyf7y9vcf47xk
Authorization: Bearer or_test_…
```

Response (`200`):

```json
{
  "id": "regn_01m4tx5nj8emwbyf7y9vcf47xk",
  "object": "registration",
  "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
  "livemode": true,
  "regimeId": "EU_OSS_UNION",
  "regimeName": "EU One-Stop Shop, Union scheme",
  "jurisdictionIds": ["AT", "DE", "FR", "HR", "IT", "NL"],
  "state": "grace",
  "stateReason": "threshold_crossed",
  "stateChangedAt": "2026-10-14T09:30:00.000Z",
  "armed": false,
  "triggeredAt": "2026-10-14T09:30:00.000Z",
  "deadlineAt": "2026-11-10T22:59:59.000Z",
  "autoBlockAt": "2026-11-07T22:59:59.000Z",
  "applicationSubmittedAt": null,
  "escalationLevel": 0,
  "registrationNumber": null,
  "effectiveFrom": null,
  "registeredAt": null,
  "prerequisitesDone": true,
  "prerequisitesProgress": {
    "done": 1,
    "total": 1
  },
  "threshold": {
    "status": "over",
    "window": "calendar_year_current_or_previous",
    "measure": "eu_cross_border_b2c",
    "currentWindow": "2026",
    "previousWindow": "2025",
    "threshold": {
      "amount": "10000000000",
      "currency": "EUR"
    },
    "current": {
      "amount": "8500000000",
      "currency": "EUR"
    },
    "previous": {
      "amount": "0",
      "currency": "EUR"
    },
    "transactionThreshold": null,
    "currentTransactions": null,
    "previousTransactions": null,
    "worldwideTurnoverDeclared": null,
    "ratioPpm": "1004500",
    "percent": 100,
    "detail": "8500.00 EUR counted (earlier window 0.00) against 10000.00 EUR"
  },
  "timeZones": ["Europe/Zagreb"],
  "createdAt": "2026-10-13T12:00:00.000Z",
  "updatedAt": "2026-10-14T09:30:00.000Z",
  "prerequisites": [
    {
      "code": "portal_access",
      "description": "Access to the tax portal of the member state of identification",
      "leadTimeDays": 7,
      "status": "done",
      "doneAt": "2026-10-13T12:00:00.000Z",
      "notes": "ePorezna access for the finance team",
      "owner": "Ana (finance)",
      "attachments": [],
      "updatedAt": "2026-10-13T12:00:00.000Z",
      "updatedBy": "usr_01m4tx5nj8emwbyf7y9vcf47xa"
    }
  ],
  "evidenceFiles": [],
  "history": [
    {
      "from": null,
      "to": "monitored",
      "at": "2026-10-13T12:00:00.000Z",
      "by": "system",
      "reason": "below_threshold",
      "note": null
    },
    {
      "from": "monitored",
      "to": "pre_registration",
      "at": "2026-10-13T12:00:00.000Z",
      "by": "system",
      "reason": "pre_registration_ratio_reached",
      "note": null
    }
  ],
  "counters": [
    {
      "windowKey": "2026",
      "amount": {
        "amount": "8500000000",
        "currency": "EUR"
      },
      "transactionCount": 412,
      "lastEventAt": "2026-10-13T12:00:00.000Z"
    }
  ],
  "regime": {
    "id": "EU_OSS_UNION",
    "name": "EU One-Stop Shop, Union scheme",
    "version": "3f2a9c41d07e88b1",
    "jurisdictionIds": ["AT", "DE", "FR", "HR", "IT", "NL"],
    "sellerEstablishment": "in_eu_other_ms",
    "customerType": "b2c",
    "threshold": {
      "amount": {
        "amount": "10000000000",
        "currency": "EUR"
      },
      "measure": "eu_cross_border_b2c",
      "window": "calendar_year_current_or_previous",
      "transactionCount": null,
      "whatCounts": "B2C electronically supplied services to consumers in other member states, net of VAT.",
      "amountInclusive": false
    },
    "zeroThreshold": false,
    "grace": {
      "rule": "nth_day_of_following_month",
      "days": null,
      "nthDay": 10
    },
    "collectBeforeRegistration": true,
    "b2bReverseChargeNoRegistration": true,
    "b2bChargeWhenRegistered": false,
    "requiresFiscalRepresentative": false,
    "requiresLocalAgent": false,
    "securityDeposit": null,
    "registration": {
      "method": "online",
      "portalUrl": "https://e-porezna.porezna-uprava.hr",
      "identityRequirements": null,
      "typicalProcessingDays": 7
    },
    "status": "verified",
    "unverified": false,
    "fixture": false,
    "validFrom": "2021-07-01",
    "validTo": null
  },
  "playbooks": [
    {
      "key": "EU/playbooks/EU_OSS_UNION-registration.md",
      "kind": "registration",
      "markdown": "# Registering for the Union OSS\n\n1. Sign in to the portal of your member state …"
    }
  ],
  "officialLinks": [
    {
      "label": "EU One-Stop Shop, Union scheme: registration portal",
      "url": "https://e-porezna.porezna-uprava.hr"
    }
  ],
  "actions": {
    "arm": {
      "allowed": false,
      "code": "registration_transition_invalid",
      "message": "EU_OSS_UNION is grace, so \"arm\" isn't possible."
    },
    "markApplicationSubmitted": {
      "allowed": true,
      "code": null,
      "message": null
    },
    "markRegistered": {
      "allowed": true,
      "code": null,
      "message": null
    },
    "deregister": {
      "allowed": false,
      "code": "registration_transition_invalid",
      "message": "EU_OSS_UNION is grace, so \"deregister\" isn't possible."
    }
  },
  "safetyBufferHours": 72,
  "knowledgeCommit": "1c14b2ec912aca347dd518b2044096f3b5d8eef1"
}
```

## Errors

| Code                                                                                     | HTTP status | When                                                                        | What to do                                                                                                                                         |
| ---------------------------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed)   | 400         | `id` is neither a registration ID nor a regime ID.                          | Fix the fields listed in `details.issues` and send the request again.                                                                              |
| [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found) | 404         | This entity has no such registration in this mode.                          | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.                                               |
| [`scope_required`](https://ownrecord.io/docs/reference/errors.md#scope_required)         | 400         | The request names no legal entity (an org key without `Ownrecord-Entity`).  | Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (`details.required_scope`). |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied)   | 403         | You can't see this entity's registrations (brand-scoped members never can). | Ask an organization owner or admin for a role or scope that allows this action.                                                                    |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`dry_run_not_supported`](https://ownrecord.io/docs/reference/errors.md#dry_run_not_supported), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
