business.register_sales_tax

Record an evidenced sales-tax registration and create its standard tax codes. Requires an interactive owner; does not register with an authority or file a return.

What it does

Record the business’s sales-tax registration — Singapore GST, Canadian GST/HST (with the registrant’s province) or the separate QST/PST/RST, or UK VAT — from its effective date, evidenced by the registration certificate as source_document_id, and seed that regime’s standard tax codes (output, input, reverse-charge/imported-services and non-recoverable, at the current official rates). Preview what a regime seeds with the business read’s sales_tax_regimes action. Owner-only and interactive. Files no return.

Before you send it

Requires an interactive OAuth connection; headless credentials are refused. Effective membership, application grant and token permissions still apply. Describe business.register_sales_tax 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 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.

FieldTypeRequiredMeaning and accepted values
regimestringYessg_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". Example: "gb_vat".
registrationNumberstringYesAs issued: a Singapore UEN or IRAS GST number (201912345K, M2-1234567-K); a Canadian BN with its RT account (123456789RT0001); a QST number (1234567890TQ0001); PST-1234-5678 (BC); a UK VAT number (GB123456789). Spaces are ignored. Minimum length: 1. Example: "GB123456789".
provincestringNoRequired for ca_gst_hst: the province the registrant operates from, e.g. CA-ON. Not accepted for other regimes. Pattern: "^CA-[A-Z]{2}$".
effectiveFromstringYesThe effective date of registration the authority confirmed. Format: date. Example: "2026-01-01".
reasonstringYesMinimum length: 1. Maximum length: 1000. Example: "VAT registration certificate received from HMRC".

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.

FieldTypeRequiredMeaning and accepted values
registrationobjectYes
registration.registrationIdstringYes
registration.regimestringYessg_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".
registration.countrystringYes
registration.registrationNumberstringYes
registration.provincestringNo
registration.effectiveFromstringYesFormat: date.
registration.effectiveUntilstringNoFormat: date.
registration.reasonstringYes
registration.sourceDocumentIdstringYes
seededTaxCodesarrayYesItems: string.

All commands · Operation and errors · Reusable schemas

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

Exact request schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "const": "business.register_sales_tax"
    },
    "input": {
      "type": "object",
      "required": [
        "regime",
        "registrationNumber",
        "effectiveFrom",
        "reason"
      ],
      "properties": {
        "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."
        },
        "registrationNumber": {
          "type": "string",
          "minLength": 1,
          "description": "As issued: a Singapore UEN or IRAS GST number (201912345K, M2-1234567-K); a Canadian BN with its RT account (123456789RT0001); a QST number (1234567890TQ0001); PST-1234-5678 (BC); a UK VAT number (GB123456789). Spaces are ignored."
        },
        "province": {
          "type": "string",
          "pattern": "^CA-[A-Z]{2}$",
          "description": "Required for ca_gst_hst: the province the registrant operates from, e.g. CA-ON. Not accepted for other regimes."
        },
        "effectiveFrom": {
          "type": "string",
          "format": "date",
          "description": "The effective date of registration the authority confirmed."
        },
        "reason": {
          "type": "string",
          "minLength": 1,
          "maxLength": 1000
        }
      },
      "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

{
  "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",
      "required": [
        "registration",
        "seededTaxCodes"
      ],
      "properties": {
        "registration": {
          "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"
          ]
        },
        "seededTaxCodes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "cid": {
            "type": "string"
          }
        }
      }
    }
  }
}

Example request

{
  "name": "business.register_sales_tax",
  "input": {
    "regime": "gb_vat",
    "registrationNumber": "GB123456789",
    "effectiveFrom": "2026-01-01",
    "reason": "VAT registration certificate received from HMRC"
  },
  "effective_at": "2026-09-01T00:00:00Z",
  "idempotency_key": "business.register_sales_tax-example-0"
}

Example request

{
  "name": "business.register_sales_tax",
  "input": {
    "regime": "ca_gst_hst",
    "registrationNumber": "123456789RT0001",
    "province": "CA-ON",
    "effectiveFrom": "2026-01-01",
    "reason": "Registered for GST/HST with the CRA"
  },
  "effective_at": "2026-09-01T00:00:00Z",
  "idempotency_key": "business.register_sales_tax-example-1"
}
Navigate documentation