Reach · Schema

Tax only

Fulfillment partner or logistics providers pass tax details from their tax providers to Reach for reporting and compliance. The supplier's `Reference` ID is required. Omit `PspTransactionId` or `PspName`. For refunds, set `ParentReference` to the original submission's `Reference` and use negative amounts throughout.

CompanyPaymentsTaxComplianceE-commerceMerchant of Record

Properties

Name Type Description
Reference string Your order ID or internal reference for this transaction. Acts as the idempotency and correlation key—duplicate submissions with the same `Reference` return `202 Accepted` and are silently discarded a
ParentReference stringnull The `Reference` of the original transaction being reversed. The original can be a Tax only or a Tax linking submission. Set this field to indicate a refund or reversal—no separate boolean is needed. W
Currency string ISO 4217 three-letter currency code. Case sensitive. Validated against an allowlist.
ShippingAddress object Customer or subscriber shipping address for tax jurisdiction determination.
WarehouseAddress object Address from which the goods are shipped, for tax jurisdiction determination. Recommended for cross-border or supplier shipments where the ship-from location affects the tax calculation.
TaxProviderId string Transaction ID returned by your tax provider for this calculation.
TaxProviderReferenceId string The reference your system passed into the tax provider when requesting the tax calculation.
BusinessIdentificationNumber string Tax ID or VAT registration number. Provides evidence for why tax may be zero on B2B transactions.
TaxDate string Local date and time of the tax calculation. Format: `yyyy-MM-ddTHH:mm:ss`—no timezone offset, no fractional seconds.
Items array Line items on the transaction. Must contain at least one item.
View JSON Schema on GitHub

JSON Schema

withreach-transaction-details-mode-b-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/withreach/json-schema/withreach-transaction-details-mode-b-schema.json",
  "title": "Tax only",
  "description": "Fulfillment partner or logistics providers pass tax details from their tax providers to Reach for reporting and compliance.  The supplier's `Reference` ID is required. Omit `PspTransactionId` or `PspName`.  For refunds, set `ParentReference` to the original submission's `Reference` and use negative amounts throughout.",
  "x-generated": "2026-10-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/withreach-transaction-details-api-openapi.yml#/components/schemas/TransactionDetailsModeB",
  "type": "object",
  "not": {
    "anyOf": [
      {
        "required": [
          "PspTransactionId"
        ]
      },
      {
        "required": [
          "PspName"
        ]
      }
    ]
  },
  "required": [
    "Reference",
    "Currency",
    "ShippingAddress",
    "TaxProviderId",
    "TaxProviderReferenceId",
    "TaxDate",
    "Items"
  ],
  "properties": {
    "Reference": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Your order ID or internal reference for this transaction. Acts as the idempotency and correlation key—duplicate submissions with the same `Reference` return `202 Accepted` and are silently discarded after the first."
    },
    "ParentReference": {
      "type": [
        "string",
        "null"
      ],
      "minLength": 1,
      "maxLength": 255,
      "description": "The `Reference` of the original transaction being reversed. The original can be a Tax only or a Tax linking submission. Set this field to indicate a refund or reversal—no separate boolean is needed. When present, all `Amount`, `TaxAmount`, `TaxableAmount`, and `NonTaxableAmount` values in `Items` must be negative.\n\nThe value must match the `Reference` of exactly one earlier non-refund submission for your merchant. If it matches none, or more than one, the request returns `400` with a field error on `ParentReference`."
    },
    "Currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "ISO 4217 three-letter currency code. Case sensitive. Validated against an allowlist.",
      "enum": [
        "AED",
        "AFN",
        "ALL",
        "AMD",
        "ANG",
        "AOA",
        "ARS",
        "AUD",
        "AWG",
        "AZN",
        "BAM",
        "BBD",
        "BDT",
        "BGN",
        "BHD",
        "BIF",
        "BMD",
        "BND",
        "BOB",
        "BRL",
        "BSD",
        "BTN",
        "BWP",
        "BYN",
        "BZD",
        "CAD",
        "CDF",
        "CHF",
        "CLP",
        "CNY",
        "COP",
        "CRC",
        "CUP",
        "CVE",
        "CZK",
        "DJF",
        "DKK",
        "DOP",
        "DZD",
        "EGP",
        "ERN",
        "ETB",
        "EUR",
        "FJD",
        "FKP",
        "GBP",
        "GEL",
        "GHS",
        "GIP",
        "GMD",
        "GNF",
        "GTQ",
        "GYD",
        "HKD",
        "HNL",
        "HTG",
        "HUF",
        "IDR",
        "ILS",
        "INR",
        "IQD",
        "IRR",
        "ISK",
        "JMD",
        "JOD",
        "JPY",
        "KES",
        "KGS",
        "KHR",
        "KMF",
        "KPW",
        "KRW",
        "KWD",
        "KYD",
        "KZT",
        "LAK",
        "LBP",
        "LKR",
        "LRD",
        "LSL",
        "LYD",
        "MAD",
        "MDL",
        "MGA",
        "MKD",
        "MMK",
        "MNT",
        "MOP",
        "MRU",
        "MUR",
        "MVR",
        "MWK",
        "MXN",
        "MYR",
        "MZN",
        "NAD",
        "NGN",
        "NIO",
        "NOK",
        "NPR",
        "NZD",
        "OMR",
        "PAB",
        "PEN",
        "PGK",
        "PHP",
        "PKR",
        "PLN",
        "PYG",
        "QAR",
        "RON",
        "RSD",
        "RUB",
        "RWF",
        "SAR",
        "SBD",
        "SCR",
        "SDG",
        "SEK",
        "SGD",
        "SHP",
        "SLE",
        "SLL",
        "SOS",
        "SRD",
        "SSP",
        "STN",
        "SVC",
        "SYP",
        "SZL",
        "THB",
        "TJS",
        "TMT",
        "TND",
        "TOP",
        "TRY",
        "TTD",
        "TWD",
        "TZS",
        "UAH",
        "UGX",
        "USD",
        "UYU",
        "UZS",
        "VED",
        "VES",
        "VND",
        "VUV",
        "WST",
        "XAF",
        "XCD",
        "XOF",
        "XPF",
        "YER",
        "ZAR",
        "ZMW",
        "ZWL"
      ]
    },
    "ShippingAddress": {
      "allOf": [
        {
          "$ref": "#/$defs/Address"
        }
      ],
      "description": "Customer or subscriber shipping address for tax jurisdiction determination."
    },
    "WarehouseAddress": {
      "allOf": [
        {
          "$ref": "#/$defs/Address"
        }
      ],
      "description": "Address from which the goods are shipped, for tax jurisdiction determination. Recommended for cross-border or supplier shipments where the ship-from location affects the tax calculation."
    },
    "TaxProviderId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Transaction ID returned by your tax provider for this calculation."
    },
    "TaxProviderReferenceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "The reference your system passed into the tax provider when requesting the tax calculation."
    },
    "BusinessIdentificationNumber": {
      "type": "string",
      "maxLength": 50,
      "description": "Tax ID or VAT registration number. Provides evidence for why tax may be zero on B2B transactions."
    },
    "TaxDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$",
      "description": "Local date and time of the tax calculation. Format: `yyyy-MM-ddTHH:mm:ss`—no timezone offset, no fractional seconds."
    },
    "Items": {
      "type": "array",
      "description": "Line items on the transaction. Must contain at least one item.",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/LineItem"
      }
    }
  },
  "$defs": {
    "Address": {
      "title": "Address",
      "description": "A postal address used for tax jurisdiction determination.",
      "type": "object",
      "required": [
        "Street",
        "City",
        "Country"
      ],
      "properties": {
        "Street": {
          "type": "string",
          "maxLength": 255,
          "description": "Street address line."
        },
        "City": {
          "type": "string",
          "maxLength": 100,
          "description": "City name."
        },
        "Region": {
          "type": "string",
          "maxLength": 100,
          "description": "State, province, or region code (e.g. `\"CA\"` for California, `\"NSW\"` for New South Wales). Free text, not validated as an ISO 3166-2 code. Recommended for US and Canadian addresses."
        },
        "Country": {
          "type": "string",
          "minLength": 2,
          "maxLength": 2,
          "description": "ISO 3166-1 alpha-2 country code. Case sensitive. Validated against an allowlist.",
          "enum": [
            "AD",
            "AE",
            "AF",
            "AG",
            "AI",
            "AL",
            "AM",
            "AO",
            "AQ",
            "AR",
            "AS",
            "AT",
            "AU",
            "AW",
            "AX",
            "AZ",
            "BA",
            "BB",
            "BD",
            "BE",
            "BF",
            "BG",
            "BH",
            "BI",
            "BJ",
            "BL",
            "BM",
            "BN",
            "BO",
            "BQ",
            "BR",
            "BS",
            "BT",
            "BV",
            "BW",
            "BY",
            "BZ",
            "CA",
            "CC",
            "CD",
            "CF",
            "CG",
            "CH",
            "CI",
            "CK",
            "CL",
            "CM",
            "CN",
            "CO",
            "CR",
            "CU",
            "CV",
            "CW",
            "CX",
            "CY",
            "CZ",
            "DE",
            "DJ",
            "DK",
            "DM",
            "DO",
            "DZ",
            "EC",
            "EE",
            "EG",
            "EH",
            "ER",
            "ES",
            "ET",
            "FI",
            "FJ",
            "FK",
            "FM",
            "FO",
            "FR",
            "GA",
            "GB",
            "GD",
            "GE",
            "GF",
            "GG",
            "GH",
            "GI",
            "GL",
            "GM",
            "GN",
            "GP",
            "GQ",
            "GR",
            "GS",
            "GT",
            "GU",
            "GW",
            "GY",
            "HK",
            "HM",
            "HN",
            "HR",
            "HT",
            "HU",
            "ID",
            "IE",
            "IL",
            "IM",
            "IN",
            "IO",
            "IQ",
            "IR",
            "IS",
            "IT",
            "JE",
            "JM",
            "JO",
            "JP",
            "KE",
            "KG",
            "KH",
            "KI",
            "KM",
            "KN",
            "KP",
            "KR",
            "KW",
            "KY",
            "KZ",
            "LA",
            "LB",
            "LC",
            "LI",
            "LK",
            "LR",
            "LS",
            "LT",
            "LU",
            "LV",
            "LY",
            "MA",
            "MC",
            "MD",
            "ME",
            "MF",
            "MG",
            "MH",
            "MK",
            "ML",
            "MM",
            "MN",
            "MO",
            "MP",
            "MQ",
            "MR",
            "MS",
            "MT",
            "MU",
            "MV",
            "MW",
            "MX",
            "MY",
            "MZ",
            "NA",
            "NC",
            "NE",
            "NF",
            "NG",
            "NI",
            "NL",
            "NO",
            "NP",
            "NR",
            "NU",
            "NZ",
            "OM",
            "PA",
            "PE",
            "PF",
            "PG",
            "PH",
            "PK",
            "PL",
            "PM",
            "PN",
            "PR",
            "PS",
            "PT",
            "PW",
            "PY",
            "QA",
            "RE",
            "RO",
            "RS",
            "RU",
            "RW",
            "SA",
            "SB",
            "SC",
            "SD",
            "SE",
            "SG",
            "SH",
            "SI",
            "SJ",
            "SK",
            "SL",
            "SM",
            "SN",
            "SO",
            "SR",
            "SS",
            "ST",
            "SV",
            "SX",
            "SY",
            "SZ",
            "TC",
            "TD",
            "TF",
            "TG",
            "TH",
            "TJ",
            "TK",
            "TL",
            "TM",
            "TN",
            "TO",
            "TR",
            "TT",
            "TV",
            "TW",
            "TZ",
            "UA",
            "UG",
            "UM",
            "US",
            "UY",
            "UZ",
            "VA",
            "VC",
            "VE",
            "VG",
            "VI",
            "VN",
            "VU",
            "WF",
            "WS",
            "YE",
            "YT",
            "ZA",
            "ZM",
            "ZW"
          ]
        },
        "Postcode": {
          "type": "string",
          "maxLength": 20,
          "description": "Postal or ZIP code. No country-specific format check is applied."
        }
      }
    },
    "ItemTax": {
      "title": "Item Tax",
      "description": "A single tax charge at one jurisdiction level for a line item.",
      "type": "object",
      "required": [
        "Name",
        "Type",
        "JurisdictionName",
        "JurisdictionLevel",
        "JurisdictionCountryCode",
        "JurisdictionRegionCode",
        "TaxableAmount",
        "NonTaxableAmount",
        "TaxRate",
        "TaxAmount"
      ],
      "properties": {
        "Name": {
          "type": "string",
          "maxLength": 255,
          "description": "Name for this tax charge."
        },
        "Type": {
          "type": "string",
          "maxLength": 50,
          "description": "Tax type as classified by the tax provider. Typical values: `SALES`, `USE`, `EXCISE`, `COMMUNICATIONS`, `USF`, `DISTRICT`. Listed values are not enforced."
        },
        "JurisdictionName": {
          "type": "string",
          "maxLength": 255,
          "description": "Name of the taxing jurisdiction (e.g. `\"California\"`, `\"Los Angeles County\"`)."
        },
        "JurisdictionLevel": {
          "type": "string",
          "description": "Geographic level of the taxing jurisdiction. Allowlist is case sensitive.",
          "enum": [
            "FEDERAL",
            "STATE",
            "COUNTY",
            "CITY",
            "DISTRICT"
          ]
        },
        "JurisdictionCountryCode": {
          "type": "string",
          "minLength": 2,
          "maxLength": 2,
          "description": "ISO 3166-1 alpha-2 country code of the taxing jurisdiction. Case sensitive. Validated against an allowlist.",
          "enum": [
            "AD",
            "AE",
            "AF",
            "AG",
            "AI",
            "AL",
            "AM",
            "AO",
            "AQ",
            "AR",
            "AS",
            "AT",
            "AU",
            "AW",
            "AX",
            "AZ",
            "BA",
            "BB",
            "BD",
            "BE",
            "BF",
            "BG",
            "BH",
            "BI",
            "BJ",
            "BL",
            "BM",
            "BN",
            "BO",
            "BQ",
            "BR",
            "BS",
            "BT",
            "BV",
            "BW",
            "BY",
            "BZ",
            "CA",
            "CC",
            "CD",
            "CF",
            "CG",
            "CH",
            "CI",
            "CK",
            "CL",
            "CM",
            "CN",
            "CO",
            "CR",
            "CU",
            "CV",
            "CW",
            "CX",
            "CY",
            "CZ",
            "DE",
            "DJ",
            "DK",
            "DM",
            "DO",
            "DZ",
            "EC",
            "EE",
            "EG",
            "EH",
            "ER",
            "ES",
            "ET",
            "FI",
            "FJ",
            "FK",
            "FM",
            "FO",
            "FR",
            "GA",
            "GB",
            "GD",
            "GE",
            "GF",
            "GG",
            "GH",
            "GI",
            "GL",
            "GM",
            "GN",
            "GP",
            "GQ",
            "GR",
            "GS",
            "GT",
            "GU",
            "GW",
            "GY",
            "HK",
            "HM",
            "HN",
            "HR",
            "HT",
            "HU",
            "ID",
            "IE",
            "IL",
            "IM",
            "IN",
            "IO",
            "IQ",
            "IR",
            "IS",
            "IT",
            "JE",
            "JM",
            "JO",
            "JP",
            "KE",
            "KG",
            "KH",
            "KI",
            "KM",
            "KN",
            "KP",
            "KR",
            "KW",
            "KY",
            "KZ",
            "LA",
            "LB",
            "LC",
            "LI",
            "LK",
            "LR",
            "LS",
            "LT",
            "LU",
            "LV",
            "LY",
            "MA",
            "MC",
            "MD",
            "ME",
            "MF",
            "MG",
            "MH",
            "MK",
            "ML",
            "MM",
            "MN",
            "MO",
            "MP",
            "MQ",
            "MR",
            "MS",
            "MT",
            "MU",
            "MV",
            "MW",
            "MX",
            "MY",
            "MZ",
            "NA",
            "NC",
            "NE",
            "NF",
            "NG",
            "NI",
            "NL",
            "NO",
            "NP",
            "NR",
            "NU",
            "NZ",
            "OM",
            "PA",
            "PE",
            "PF",
            "PG",
            "PH",
            "PK",
            "PL",
            "PM",
            "PN",
            "PR",
            "PS",
            "PT",
            "PW",
            "PY",
            "QA",
            "RE",
            "RO",
            "RS",
            "RU",
            "RW",
            "SA",
            "SB",
            "SC",
            "SD",
            "SE",
            "SG",
            "SH",
            "SI",
            "SJ",
            "SK",
            "SL",
            "SM",
            "SN",
            "SO",
            "SR",
            "SS",
            "ST",
            "SV",
            "SX",
            "SY",
            "SZ",
            "TC",
            "TD",
            "TF",
            "TG",
            "TH",
            "TJ",
            "TK",
            "TL",
            "TM",
            "TN",
            "TO",
            "TR",
            "TT",
            "TV",
            "TW",
            "TZ",
            "UA",
            "UG",
            "UM",
            "US",
            "UY",
            "UZ",
            "VA",
            "VC",
            "VE",
            "VG",
            "VI",
            "VN",
            "VU",
            "WF",
            "WS",
            "YE",
            "YT",
            "ZA",
            "ZM",
            "ZW"
          ]
        },
        "JurisdictionRegionCode": {
          "type": "string",
          "maxLength": 10,
          "description": "ISO 3166-2 state or region code (e.g. `\"CA\"` for California). Required for all jurisdiction. Not validated against code list."
        },
        "TaxableAmount": {
          "type": "number",
          "format": "decimal",
          "multipleOf": 0.0001,
          "minimum": -1000000000000000,
          "maximum": 1000000000000000,
          "description": "The portion of the line item amount subject to this tax. A decimal value with at most 15 integer digits and at most 4 fractional digits. Must be **negative** for reversal/refund tax lines."
        },
        "NonTaxableAmount": {
          "type": "number",
          "format": "decimal",
          "multipleOf": 0.0001,
          "minimum": -1000000000000000,
          "maximum": 1000000000000000,
          "description": "The portion of the line item amount exempt from this tax. A decimal value with at most 15 integer digits and at most 4 fractional digits. Use `0.00` if the full amount is taxable, ommiting it is a `400` error."
        },
        "TaxRate": {
          "type": "number",
          "format": "decimal",
          "description": "Tax rate as a decimal in the closed range [0, 1]. For example, `0.0625` represents 6.25%.",
          "minimum": 0,
          "maximum": 1
        },
        "TaxAmount": {
          "type": "number",
          "format": "decimal",
          "multipleOf": 0.0001,
          "minimum": -1000000000000000,
          "maximum": 1000000000000000,
          "description": "Tax amount charged for this jurisdiction. A decimal value with at most 15 integer digits and at most 4 fractional digits. Must be **negative** for reversal/refund tax lines."
        },
        "TransactionType": {
          "type": "integer",
          "format": "int64",
          "description": "Avalara AFC transaction type code. Identifies the nature of the communication service being taxed. Pass the value directly from your AFC response. Required when using an Avalara AFC-based tax provider."
        },
        "ServiceType": {
          "type": "integer",
          "format": "int64",
          "description": "Avalara AFC service type code. Identifies the customer class or service category. Pass the value directly from your AFC response. Required when using an Avalara AFC-based tax provider."
        }
      }
    },
    "LineItem": {
      "title": "Line Item",
      "description": "A single line item on the transaction.",
      "type": "object",
      "required": [
        "Sku",
        "Description",
        "Quantity",
        "Amount",
        "ProviderTaxCode",
        "ProviderTaxCategory",
        "ProviderParentTaxCategory",
        "TaxAmount",
        "ItemTaxes"
      ],
      "properties": {
        "Sku": {
          "type": "string",
          "maxLength": 255,
          "description": "Product SKU code."
        },
        "Description": {
          "type": "string",
          "maxLength": 100,
          "description": "A text description of the line item."
        },
        "CountryOfOrigin": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country code of the country from which the goods originate. Used for cross-border and supplier shipments.",
          "pattern": "^[A-Z]{2}$"
        },
        "Quantity": {
          "type": "integer",
          "format": "int64",
          "description": "Quantity of this item. Must be zero or greater. Oversized value fails as a malformed-body 400 error, not a field error.",
          "minimum": 0,
          "maximum": 9223372036854776000
        },
        "Amount": {
          "type": "number",
          "format": "decimal",
          "multipleOf": 0.0001,
          "minimum": -1000000000000000,
          "maximum": 1000000000000000,
          "description": "Line item amount. A decimal value with at most 15 integer digits and at most 4 fractional digits. Must be **negative** for reversal/refund line items."
        },
        "ProviderTaxCode": {
          "type": "string",
          "maxLength": 100,
          "description": "Tax code used for this item by the tax provider. Pass the value directly from your tax provider response. Not free text."
        },
        "ProviderTaxCategory": {
          "type": "string",
          "maxLength": 100,
          "description": "Tax category classification assigned by the tax provider (e.g. `\"DIGITAL_STREAMING\"`). Not free text."
        },
        "ProviderParentTaxCategory": {
          "type": "string",
          "maxLength": 100,
          "description": "Parent tax category assigned by the tax provider (e.g. `\"DIGITAL_GOODS\"`). Not free text."
        },
        "TaxAmount": {
          "type": "number",
          "format": "decimal",
          "multipleOf": 0.0001,
          "minimum": -1000000000000000,
          "maximum": 1000000000000000,
          "description": "Total tax for this line item. Must equal the sum of all `ItemTaxes[].TaxAmount` values within a tolerance of 0.01. A decimal value with at most 15 integer digits and at most 4 fractional digits. Must be **negative** for reversal/refund line items."
        },
        "ItemTaxes": {
          "type": "array",
          "description": "Jurisdiction-level tax breakdown for this line item. Must contain at least one entry. The sum of all `TaxAmount` values here must equal the line item's `TaxAmount` within 0.01.",
          "minItems": 1,
          "maxItems": 100,
          "items": {
            "$ref": "#/$defs/ItemTax"
          }
        },
        "WarehouseAddress": {
          "allOf": [
            {
              "$ref": "#/$defs/Address"
            }
          ],
          "description": "Address this item ships from, for tax jurisdiction determination. Overrides the transaction-level `WarehouseAddress` for this item. Use when a single order ships from more than one origin."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/withreach-transaction-details-mode-b"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.