# business.set_registration

Record an evidenced company registration number for its jurisdiction. Requires owner authority; does not obtain a number or register the company.

## What it does

Record the company's number in its country's register, evidenced by the registration notice or certificate (source_document): us_ein (NN-NNNNNNN), sg_uen (ACRA UEN), ca_bn (nine-digit CRA business number; program accounts such as RT0001 are tax registrations, not this), gb_company_number (Companies House, eight characters). The kind must be the register of the country the business is incorporated in. Replacing a number keeps the previous one in the event. Owner-only by default; sending the current number answers no_change.

## Before you send it

Requires an interactive OAuth connection; headless credentials are refused. Effective membership, application grant and token permissions still apply. Describe `business.set_registration` through `GET /v1/catalog/commands/{name}` before acting.

The envelope may reference a registered source document of kind `source_document`; this is separate from any evidence required by the input.

## Inputs

Put these fields inside the envelope's `input` object. The outer envelope names the command, a stable `idempotency_key` and `effective_at`; [request and recovery rules](/docs/api/) explain those separately. Use exact minor-unit integer strings for monetary fields. Take existing IDs from prior reads or command results; choose a new identity only where the command asks for one.

Required means required within its containing object; an optional parent can be omitted.

| Field | Type | Required | Meaning and accepted values |
|---|---|---|---|
| `kind` | string | Yes |  Choose `"us_ein"`, `"sg_uen"`, `"ca_bn"`, `"gb_company_number"`. Example: `"us_ein"`. |
| `number` | string | Yes |  Minimum length: `1`. Maximum length: `32`. Example: `"12-3456789"`. |
| `reason` | string | Yes |  Maximum length: `2000`. Pattern: `".*\\S.*"`. Example: `"EIN assigned by the IRS (notice CP 575)"`. |

## After acceptance

When the command emits events, its documented effects and receipt are recorded in the command transaction. The response returns `commandId`, `replayed`, the command-specific `result` below and emitted `events` with their IDs and CIDs. A command is not automatically a cash movement or revenue recognition: use the behavior above to determine what this command records.

Inspect `result` and the affected records or reports before continuing. Save returned identifiers for later calls. Fetch `GET /v1/commands/{id}` with `commandId` to recover the accepted receipt; retry the same intent with the same idempotency key if the response was lost. Some commands can succeed with `events: []` and return a transient result and `commandId` without persisting a receipt. A lookup of that ID can return null; retain the returned result and verify the affected record. Retrying can re-evaluate the current state rather than replay a stored result. A domain `no_change` is a separate success outcome with no persisted receipt.

### Result fields

Required means required within its containing object; an optional parent can be omitted.

| Field | Type | Required | Meaning and accepted values |
|---|---|---|---|
| `demo` | boolean | No | Present only on a demo business: a fictional company, its owner's alone, that never takes a plan or reaches anyone but Economico, which it can send support requests and suggestions. Its figures are not real. Must be `true`. |
| `demoOpenedAt` | string | No | On a demo business: when it was opened. Its seeded books run up to here. Format: date-time. |
| `name` | string | No | The public name.  |
| `legalName` | string | No | The registered name agreements and documents use; a project's is its owner's.  |
| `legalEntityType` | string | No |  Choose `"unknown"`, `"llc"`, `"c_corp"`, `"s_corp"`, `"sole_proprietorship"`, `"partnership"`, `"nonprofit"`, `"unincorporated"`, `"other"`, `"private_limited_company"`, `"corporation"`, `"stock_corporation"`, `"project"`. |
| `ownership` | object | No | What the legal form means for equity: the balance sheet's equity heading, the ownership reports that apply (primary first) and the company-setup skill's ownership recipes.  |
| `ownership.family` | string | Yes |  Choose `"corporation"`, `"members"`, `"partners"`, `"owner"`, `"nonprofit"`, `"unspecified"`. |
| `ownership.equityLabel` | string | Yes |   |
| `ownership.reports` | array | Yes |  Each item must be `"cap_table"`, `"capital_accounts"`. |
| `ownership.recipes` | array | Yes |  Items: string. |
| `jurisdiction` | string | No |   |
| `formationDate` | string | No |  Format: date. |
| `formationDateEventId` | integer | No |   |
| `nameEventId` | integer | No |   |
| `legalNameEventId` | integer | No |   |
| `legalEntityTypeEventId` | integer | No |   |
| `jurisdictionEventId` | integer | No |   |
| `registrations` | array | No |  Items: object. |
| `registrations[].kind` | string | Yes |  Choose `"us_ein"`, `"sg_uen"`, `"ca_bn"`, `"gb_company_number"`. |
| `registrations[].number` | string | Yes |   |
| `registrations[].eventId` | integer | Yes |   |
| `description` | string | No |   |
| `address` | object | No |   |
| `address.line1` | string | Yes |  Maximum length: `200`. Pattern: `"^[^\\r\\n]+$"`. |
| `address.line2` | string | No |  Maximum length: `200`. Pattern: `"^[^\\r\\n]*$"`. |
| `address.city` | string | Yes |  Maximum length: `200`. Pattern: `"^[^\\r\\n]+$"`. |
| `address.region` | string | No |  Maximum length: `200`. Pattern: `"^[^\\r\\n]*$"`. |
| `address.postalCode` | string | No |  Maximum length: `40`. Pattern: `"^[^\\r\\n]*$"`. |
| `address.country` | string | Yes |  Pattern: `"^[A-Z]{2}$"`. |
| `url` | string | No |  Pattern: `"^https?://"`. |
| `slug` | string | No |   |
| `functionalCurrency` | string | No |   |
| `primaryLedgerId` | string | No |   |
| `successions` | array | No | Incorporations in place (business.incorporate), oldest first. Items: object. |
| `successions[].eventId` | integer | Yes |   |
| `successions[].effectiveAt` | string | Yes |   |
| `successions[].previousName` | string | No |   |
| `successions[].previousLegalEntityType` | string | Yes |   |
| `successions[].name` | string | Yes |   |
| `successions[].legalEntityType` | string | Yes |   |
| `successions[].predecessorLedgerId` | string | Yes |   |
| `successions[].successorLedgerId` | string | Yes |   |
| `functionalCurrencyPeriods` | array | No |  Items: object. |
| `functionalCurrencyPeriods[].currency` | string | Yes |   |
| `functionalCurrencyPeriods[].ledgerId` | string | Yes |   |
| `functionalCurrencyPeriods[].effectiveFrom` | string | Yes |   |
| `functionalCurrencyPeriods[].effectiveUntil` | string | No |   |
| `functionalCurrencyPeriods[].changeEventId` | integer | Yes |   |
| `accountingFramework` | object | No |   |
| `accountingFramework.framework` | string | Yes |   |
| `accountingFramework.edition` | string | No |   |
| `accountingFramework.sizeRegime` | string | No |  Choose `"small"`, `"micro"`. |
| `accountingFramework.sizeEligibility` | object | No |   |
| `accountingFramework.sizeEligibility.basis` | string | Yes | What the founder's size conclusion rests on, e.g. 'Companies Act 2006 s384A conditions met in FY2025 and FY2026'. Recorded, never computed. Minimum length: `1`. Maximum length: `2000`. |
| `accountingFramework.sizeEligibility.periodEnd` | string | Yes | Period end the conclusion covers. Format: date. |
| `accountingFramework.reason` | string | Yes |   |
| `accountingFramework.jurisdiction` | string | Yes |   |
| `accountingFramework.evidenceDocumentId` | string | Yes |   |
| `accountingFramework.evidenceDocumentCid` | string | Yes |   |
| `accountingFramework.effectiveAt` | string | Yes |   |
| `accountingFramework.eventId` | integer | No |   |
| `accountingFrameworkHistory` | array | No |  Items: object. |
| `accountingFrameworkHistory[].framework` | string | Yes |   |
| `accountingFrameworkHistory[].edition` | string | No |   |
| `accountingFrameworkHistory[].sizeRegime` | string | No |  Choose `"small"`, `"micro"`. |
| `accountingFrameworkHistory[].sizeEligibility` | object | No |   |
| `accountingFrameworkHistory[].sizeEligibility.basis` | string | Yes | What the founder's size conclusion rests on, e.g. 'Companies Act 2006 s384A conditions met in FY2025 and FY2026'. Recorded, never computed. Minimum length: `1`. Maximum length: `2000`. |
| `accountingFrameworkHistory[].sizeEligibility.periodEnd` | string | Yes | Period end the conclusion covers. Format: date. |
| `accountingFrameworkHistory[].reason` | string | Yes |   |
| `accountingFrameworkHistory[].jurisdiction` | string | Yes |   |
| `accountingFrameworkHistory[].evidenceDocumentId` | string | Yes |   |
| `accountingFrameworkHistory[].evidenceDocumentCid` | string | Yes |   |
| `accountingFrameworkHistory[].effectiveAt` | string | Yes |   |
| `accountingFrameworkHistory[].eventId` | integer | No |   |
| `salesTaxRegistrations` | array | No |  Items: object. |
| `salesTaxRegistrations[].registrationId` | string | Yes |   |
| `salesTaxRegistrations[].regime` | string | Yes | sg_gst (Singapore GST); ca_gst_hst (Canadian GST/HST), ca_qst (Quebec QST), ca_pst_bc, ca_pst_sk, ca_rst_mb (provincial sales taxes, kept apart from GST/HST); gb_vat (UK VAT). It must be a regime of the country the business is incorporated in. There is no US regime: record US state sales tax as custom codes with tax_codes.create. Choose `"sg_gst"`, `"ca_gst_hst"`, `"ca_qst"`, `"ca_pst_bc"`, `"ca_pst_sk"`, `"ca_rst_mb"`, `"gb_vat"`. |
| `salesTaxRegistrations[].country` | string | Yes |   |
| `salesTaxRegistrations[].registrationNumber` | string | Yes |   |
| `salesTaxRegistrations[].province` | string | No |   |
| `salesTaxRegistrations[].effectiveFrom` | string | Yes |  Format: date. |
| `salesTaxRegistrations[].effectiveUntil` | string | No |  Format: date. |
| `salesTaxRegistrations[].reason` | string | Yes |   |
| `salesTaxRegistrations[].sourceDocumentId` | string | Yes |   |
| `logoUrl` | string | No | The logo the business's share pages show. Format: uri. |
| `logoCid` | string | No | The CID in logoUrl.  |
| `ycVerified` | boolean | Yes |   |
| `ycVerificationUrl` | string | No |   |
| `ycVerifiedAt` | string | No |   |
| `ycBatch` | string | No |   |
| `ycFounderName` | string | No |   |
| `ycVerificationPending` | object | No |   |
| `ycVerificationPending.url` | string | Yes |   |
| `ycVerificationPending.requestedAt` | string | Yes |   |
| `ycVerificationError` | string | No |   |


[All commands](/docs/command-reference/) · [Operation and errors](/docs/api-reference/operations/commands-execute/) · [Reusable schemas](/docs/api-reference/components/)

Keep credentials out of prompts; rehearse writes only in a disposable sandbox.

## Exact request schema


```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "const": "business.set_registration"
    },
    "input": {
      "type": "object",
      "required": [
        "kind",
        "number",
        "reason"
      ],
      "properties": {
        "kind": {
          "enum": [
            "us_ein",
            "sg_uen",
            "ca_bn",
            "gb_company_number"
          ]
        },
        "number": {
          "type": "string",
          "minLength": 1,
          "maxLength": 32
        },
        "reason": {
          "type": "string",
          "pattern": ".*\\S.*",
          "maxLength": 2000
        }
      },
      "additionalProperties": false
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    },
    "effective_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "source_document_id": {
      "description": "A registered document of kind source_document that caused this command.",
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "name",
    "input",
    "idempotency_key",
    "effective_at"
  ],
  "additionalProperties": false
}
```

## Accepted command receipt


```json
{
  "type": "object",
  "required": [
    "commandId",
    "replayed",
    "result",
    "events"
  ],
  "properties": {
    "commandId": {
      "type": "string"
    },
    "replayed": {
      "type": "boolean"
    },
    "imported": {
      "const": true,
      "description": "The command's events are history from before the business joined Economico, recorded as an import: free of monthly events."
    },
    "result": {
      "type": "object",
      "properties": {
        "demo": {
          "const": true,
          "description": "Present only on a demo business: a fictional company, its owner's alone, that never takes a plan or reaches anyone but Economico, which it can send support requests and suggestions. Its figures are not real."
        },
        "demoOpenedAt": {
          "type": "string",
          "format": "date-time",
          "description": "On a demo business: when it was opened. Its seeded books run up to here."
        },
        "name": {
          "type": "string",
          "description": "The public name."
        },
        "legalName": {
          "type": "string",
          "description": "The registered name agreements and documents use; a project's is its owner's."
        },
        "legalEntityType": {
          "enum": [
            "unknown",
            "llc",
            "c_corp",
            "s_corp",
            "sole_proprietorship",
            "partnership",
            "nonprofit",
            "unincorporated",
            "other",
            "private_limited_company",
            "corporation",
            "stock_corporation",
            "project"
          ]
        },
        "ownership": {
          "type": "object",
          "description": "What the legal form means for equity: the balance sheet's equity heading, the ownership reports that apply (primary first) and the company-setup skill's ownership recipes.",
          "properties": {
            "family": {
              "enum": [
                "corporation",
                "members",
                "partners",
                "owner",
                "nonprofit",
                "unspecified"
              ]
            },
            "equityLabel": {
              "type": "string"
            },
            "reports": {
              "type": "array",
              "items": {
                "enum": [
                  "cap_table",
                  "capital_accounts"
                ]
              }
            },
            "recipes": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "family",
            "equityLabel",
            "reports",
            "recipes"
          ]
        },
        "jurisdiction": {
          "type": "string"
        },
        "formationDate": {
          "type": "string",
          "format": "date"
        },
        "formationDateEventId": {
          "type": "integer"
        },
        "nameEventId": {
          "type": "integer"
        },
        "legalNameEventId": {
          "type": "integer"
        },
        "legalEntityTypeEventId": {
          "type": "integer"
        },
        "jurisdictionEventId": {
          "type": "integer"
        },
        "registrations": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "kind": {
                "enum": [
                  "us_ein",
                  "sg_uen",
                  "ca_bn",
                  "gb_company_number"
                ]
              },
              "number": {
                "type": "string"
              },
              "eventId": {
                "type": "integer"
              }
            },
            "required": [
              "kind",
              "number",
              "eventId"
            ]
          }
        },
        "description": {
          "type": "string"
        },
        "address": {
          "type": "object",
          "properties": {
            "line1": {
              "type": "string",
              "maxLength": 200,
              "pattern": "^[^\\r\\n]+$"
            },
            "line2": {
              "type": "string",
              "maxLength": 200,
              "pattern": "^[^\\r\\n]*$"
            },
            "city": {
              "type": "string",
              "maxLength": 200,
              "pattern": "^[^\\r\\n]+$"
            },
            "region": {
              "type": "string",
              "maxLength": 200,
              "pattern": "^[^\\r\\n]*$"
            },
            "postalCode": {
              "type": "string",
              "maxLength": 40,
              "pattern": "^[^\\r\\n]*$"
            },
            "country": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            }
          },
          "required": [
            "line1",
            "city",
            "country"
          ],
          "additionalProperties": false
        },
        "url": {
          "type": "string",
          "pattern": "^https?://"
        },
        "slug": {
          "type": "string"
        },
        "functionalCurrency": {
          "type": "string"
        },
        "primaryLedgerId": {
          "type": "string"
        },
        "successions": {
          "type": "array",
          "description": "Incorporations in place (business.incorporate), oldest first.",
          "items": {
            "type": "object",
            "properties": {
              "eventId": {
                "type": "integer"
              },
              "effectiveAt": {
                "type": "string"
              },
              "previousName": {
                "type": "string"
              },
              "previousLegalEntityType": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "legalEntityType": {
                "type": "string"
              },
              "predecessorLedgerId": {
                "type": "string"
              },
              "successorLedgerId": {
                "type": "string"
              }
            },
            "required": [
              "eventId",
              "effectiveAt",
              "previousLegalEntityType",
              "name",
              "legalEntityType",
              "predecessorLedgerId",
              "successorLedgerId"
            ]
          }
        },
        "functionalCurrencyPeriods": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string"
              },
              "ledgerId": {
                "type": "string"
              },
              "effectiveFrom": {
                "type": "string"
              },
              "effectiveUntil": {
                "type": "string"
              },
              "changeEventId": {
                "type": "integer"
              }
            },
            "required": [
              "currency",
              "ledgerId",
              "effectiveFrom",
              "changeEventId"
            ]
          }
        },
        "accountingFramework": {
          "type": "object",
          "required": [
            "framework",
            "reason",
            "jurisdiction",
            "evidenceDocumentId",
            "evidenceDocumentCid",
            "effectiveAt"
          ],
          "properties": {
            "framework": {
              "type": "string"
            },
            "edition": {
              "type": "string"
            },
            "sizeRegime": {
              "enum": [
                "small",
                "micro"
              ]
            },
            "sizeEligibility": {
              "type": "object",
              "required": [
                "basis",
                "periodEnd"
              ],
              "properties": {
                "basis": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 2000,
                  "description": "What the founder's size conclusion rests on, e.g. 'Companies Act 2006 s384A conditions met in FY2025 and FY2026'. Recorded, never computed."
                },
                "periodEnd": {
                  "type": "string",
                  "format": "date",
                  "description": "Period end the conclusion covers."
                }
              }
            },
            "reason": {
              "type": "string"
            },
            "jurisdiction": {
              "type": "string"
            },
            "evidenceDocumentId": {
              "type": "string"
            },
            "evidenceDocumentCid": {
              "type": "string"
            },
            "effectiveAt": {
              "type": "string"
            },
            "eventId": {
              "type": "integer"
            }
          }
        },
        "accountingFrameworkHistory": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "framework",
              "reason",
              "jurisdiction",
              "evidenceDocumentId",
              "evidenceDocumentCid",
              "effectiveAt"
            ],
            "properties": {
              "framework": {
                "type": "string"
              },
              "edition": {
                "type": "string"
              },
              "sizeRegime": {
                "enum": [
                  "small",
                  "micro"
                ]
              },
              "sizeEligibility": {
                "type": "object",
                "required": [
                  "basis",
                  "periodEnd"
                ],
                "properties": {
                  "basis": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000,
                    "description": "What the founder's size conclusion rests on, e.g. 'Companies Act 2006 s384A conditions met in FY2025 and FY2026'. Recorded, never computed."
                  },
                  "periodEnd": {
                    "type": "string",
                    "format": "date",
                    "description": "Period end the conclusion covers."
                  }
                }
              },
              "reason": {
                "type": "string"
              },
              "jurisdiction": {
                "type": "string"
              },
              "evidenceDocumentId": {
                "type": "string"
              },
              "evidenceDocumentCid": {
                "type": "string"
              },
              "effectiveAt": {
                "type": "string"
              },
              "eventId": {
                "type": "integer"
              }
            }
          }
        },
        "salesTaxRegistrations": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "registrationId": {
                "type": "string"
              },
              "regime": {
                "enum": [
                  "sg_gst",
                  "ca_gst_hst",
                  "ca_qst",
                  "ca_pst_bc",
                  "ca_pst_sk",
                  "ca_rst_mb",
                  "gb_vat"
                ],
                "description": "sg_gst (Singapore GST); ca_gst_hst (Canadian GST/HST), ca_qst (Quebec QST), ca_pst_bc, ca_pst_sk, ca_rst_mb (provincial sales taxes, kept apart from GST/HST); gb_vat (UK VAT). It must be a regime of the country the business is incorporated in. There is no US regime: record US state sales tax as custom codes with tax_codes.create."
              },
              "country": {
                "type": "string"
              },
              "registrationNumber": {
                "type": "string"
              },
              "province": {
                "type": "string"
              },
              "effectiveFrom": {
                "type": "string",
                "format": "date"
              },
              "effectiveUntil": {
                "type": "string",
                "format": "date"
              },
              "reason": {
                "type": "string"
              },
              "sourceDocumentId": {
                "type": "string"
              }
            },
            "required": [
              "registrationId",
              "regime",
              "country",
              "registrationNumber",
              "effectiveFrom",
              "reason",
              "sourceDocumentId"
            ]
          }
        },
        "logoUrl": {
          "type": "string",
          "format": "uri",
          "description": "The logo the business's share pages show."
        },
        "logoCid": {
          "type": "string",
          "description": "The CID in logoUrl."
        },
        "ycVerified": {
          "type": "boolean"
        },
        "ycVerificationUrl": {
          "type": "string"
        },
        "ycVerifiedAt": {
          "type": "string"
        },
        "ycBatch": {
          "type": "string"
        },
        "ycFounderName": {
          "type": "string"
        },
        "ycVerificationPending": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string"
            },
            "requestedAt": {
              "type": "string"
            }
          },
          "required": [
            "url",
            "requestedAt"
          ]
        },
        "ycVerificationError": {
          "type": "string"
        }
      },
      "required": [
        "ycVerified"
      ]
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "cid": {
            "type": "string"
          }
        }
      }
    }
  }
}
```

## Example request


```json
{
  "name": "business.set_registration",
  "input": {
    "kind": "us_ein",
    "number": "12-3456789",
    "reason": "EIN assigned by the IRS (notice CP 575)"
  },
  "effective_at": "2026-09-01T00:00:00Z",
  "idempotency_key": "business.set_registration-example-0"
}
```


