Skip to content

Get a registration packet

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

GET/api/v1/registrations/{id}/packet

Returns the registration packet of a registration: what you need to apply in the authority's portal, generated from the entity's current data:

  • fields: the regime's registration form fields filled in (with missing for required ones Ownrecord doesn't have: find them elsewhere before you submit);
  • the entity, the representatives (authorizations valid now for the regime), the start date, the expected turnover (a guide from the threshold counters), bank details, the activity, websites and prerequisites;
  • the regime's method, portal URL and identity requirements from the tax knowledge.

format: "pdf" returns a PDF summary instead (base64 in content); over MCP, read it as the resource ownrecord://entities/{entity_id}/registrations/{id}/packet.pdf rather than in a tool result. The steps themselves are in the regime's playbook. The packet is data; only the playbook is guidance.

At a glance

  • REST: GET /api/v1/registrations/{id}/packet
  • MCP tool: registration_get_packet
  • Operation ID: registrations.packet
  • 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: M10

Request

Path parameters

FieldTypeDescription
idstringThe registration (regn_…) or its regime's ID, e.g. EU_OSS_UNION or US_SALES_TAX:TX.

Query parameters

FieldTypeRequiredDescription
formatone of json, pdfNojson (default) or pdf (a summary, base64).

Response

200 OK with a JSON object:

FieldTypeDescription
object"registration_packet_document"
registrationIdregn_… ID
formatone of json, pdf
filenamestring
contentTypestring
dataobject or null
contentstring or null
sizeinteger (at least 0)
sha256string

Examples

The packet for the EU One-Stop Shop, non-Union scheme

HTTP
GET /api/v1/registrations/regn_01m4ttwd3veh9apbewxheq5xag/packet
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "registration_packet_document",
  "registrationId": "regn_01m4ttwd3veh9apbewxheq5xag",
  "format": "json",
  "filename": "registration-packet-EU_OSS_NON_UNION.json",
  "contentType": "application/json",
  "data": {
    "object": "registration_packet",
    "regimeId": "EU_OSS_NON_UNION",
    "regimeName": "One-Stop Shop, non-Union scheme",
    "registrationId": "regn_01m4ttwd3veh9apbewxheq5xag",
    "state": "grace",
    "method": "online_portal",
    "portalUrl": "https://ownrecord.io/fixtures/EU/oss-non-union-portal",
    "identityRequirements": "Online registration with the chosen member state of identification",
    "typicalProcessingDays": 14,
    "fields": [
      {
        "label": "Legal name",
        "value": "Helvetia Apps AG",
        "source": "legal_entities.legalName",
        "required": true,
        "missing": false,
        "notes": null
      },
      {
        "label": "Date of the first supply",
        "value": "2026-10-14",
        "source": "registrations.triggeredAt",
        "required": true,
        "missing": false,
        "notes": null
      },
      {
        "label": "Contact person and email",
        "value": null,
        "source": null,
        "required": true,
        "missing": true,
        "notes": "The entity's tax manager"
      }
    ],
    "entity": {
      "legalName": "Helvetia Apps AG",
      "tradingName": null,
      "address": "Bahnhofstrasse 1, 8001 Zürich, CH",
      "country": "CH",
      "companyRegistryId": "CHE-000.000.042",
      "taxId": {
        "type": "ch_vat",
        "value": "CHE-000.000.042 MWST"
      },
      "currency": "CHF",
      "timeZone": "Europe/Zurich"
    },
    "representatives": [
      {
        "name": "Ana Horvat",
        "kind": "employee_eid",
        "contact": "ana.horvat@example.com",
        "validFrom": "2026-01-01",
        "validTo": null,
        "portals": ["OSS portal"]
      }
    ],
    "startDate": "2026-10-14",
    "expectedTurnover": {
      "amount": {
        "amount": "1200000000",
        "currency": "EUR",
        "decimal": "1200.00"
      },
      "basis": "Sales counted toward the EU_OSS_NON_UNION threshold in 2026, all brands (a guide, not a forecast)."
    },
    "bankDetails": null,
    "activity": "Software as a service",
    "websites": ["pay.helvetia.example"],
    "prerequisites": [
      {
        "code": "portal_access",
        "description": "Open a portal account",
        "leadTimeDays": 14,
        "status": "done"
      }
    ],
    "missing": ["Contact person and email"]
  },
  "content": null,
  "size": 1630,
  "sha256": "9b2f4c6e8a0d1f3b5c7e9a2d4f6b8c0e1a3d5f7b9c2e4a6d8f0b1c3e5a7d9f2b"
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400The registration reference or format is invalid.Fix the fields listed in details.issues and send the request again.
resource_not_found404No registration with this ID or regime exists for the legal entity in this mode.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
scope_required400The request names no legal entity (an organization key or agent without entity_id).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_denied403You can't see this entity's registrations.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.