# Country & Tax Setup

> Solarium docs. All requests are `POST https://api.trysolarium.com/graphql/` with `Authorization: Bearer <api key>` and a JSON body `{"query": ..., "variables": ...}`. Every query and mutation takes an `organizationId` (find it with `myOrganizations`). Index of all pages: https://trysolarium.com/llms.txt

Every organization books under one country's rules. Canada has GST/HST, PST and QST with input tax credits and CRA GIFI account codes. The United States has sales tax collected per state and IRS form lines as account codes, chosen by business type. Any other supported country uses its own VAT- or GST-style rates and no account codes. The home currency is set at signup and can't change once transactions are booked.

## List Countries

Countries an organization can book in, each with its default home currency (empty when it must be picked from the supported currencies).

### Request

```graphql
query {
  countries {
    code
    name
    currency
  }
}
```

### Response

```json
{
  "data": {
    "countries": [
      { "code": "CA", "name": "Canada", "currency": "CAD" },
      { "code": "US", "name": "United States", "currency": "USD" },
      { "code": "GB", "name": "United Kingdom", "currency": "GBP" },
      { "code": "NZ", "name": "New Zealand", "currency": "" }
    ]
  }
}
```

## Country Options

A country's region picker, currency, account code system and capabilities before an organization exists. The same shape is on every organization as jurisdiction.

### Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `country` | `String` | No | ISO country code (default CA) |

### Request

```graphql
query {
  jurisdictionOptions(country: "US") {
    country
    currency
    regionLabel
    regions { code name }
    codeSystem
    codeLabel
    businessTypes { value label }
    capabilities
  }
}
```

### Response

```json
{
  "data": {
    "jurisdictionOptions": {
      "country": "US",
      "currency": "USD",
      "regionLabel": "State",
      "regions": [{ "code": "AL", "name": "Alabama" }, { "code": "AK", "name": "Alaska" }],
      "codeSystem": "us_sch_c",
      "codeLabel": "IRS Line",
      "businessTypes": [
        { "value": "sch_c", "label": "Sole proprietor or single-member LLC (Schedule C)" },
        { "value": "1065", "label": "Partnership or multi-member LLC (Form 1065)" },
        { "value": "1120", "label": "C corporation (Form 1120)" },
        { "value": "1120s", "label": "S corporation (Form 1120-S)" }
      ],
      "capabilities": ["sales_tax_by_state"]
    }
  }
}
```

## Update Country Settings

For an organization outside Canada: its region, tax registration number, and either its own sales tax rates (generic countries) or its business type (US). The currency (generic countries) and the business type (US) can only change before any transactions are booked. Changing the business type re-codes every account to the new form's lines. Requires the owner or admin role. A Canadian organization's province and filing frequency are set with updateOrganization.

### Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `organizationId` | `UUID!` | Yes | Organization ID |
| `region` | `String` | No | US: a state code. Elsewhere: free text |
| `currency` | `String` | No | Generic countries, before any transactions |
| `taxRates` | `[TaxRateInput!]` | No | Generic countries: replaces the rates. Each has name, ratePercent and recoverable (tax paid on purchases is claimed back) |
| `registrationNumber` | `String` | No | Sales tax registration number |
| `businessType` | `String` | No | US, before any transactions: sch_c, 1065, 1120 or 1120s |

### Request

```graphql
mutation {
  updateJurisdiction(
    organizationId: "a1b2c3d4-..."
    taxRates: [
      { name: "VAT", ratePercent: "20", recoverable: true }
      { name: "Reduced VAT", ratePercent: "5", recoverable: true }
    ]
  ) {
    success
    error
    jurisdiction { currency taxRates { code name ratePercent recoverable } }
  }
}
```

### Response

```json
{
  "data": {
    "updateJurisdiction": {
      "success": true,
      "error": null,
      "jurisdiction": {
        "currency": "GBP",
        "taxRates": [
          { "code": "vat", "name": "VAT", "ratePercent": "20", "recoverable": true },
          { "code": "reduced_vat", "name": "Reduced VAT", "ratePercent": "5", "recoverable": true }
        ]
      }
    }
  }
}
```
