Thomson Reuters · Schema
CommitRequest
The request entity for Tax Calculation and commit.
LegalTaxFinanceRisk ManagementFraud PreventionComplianceData
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/thomson-reuters/main/json-schema/thomson-reuters-commit-request-schema.json",
"title": "CommitRequest",
"description": "The request entity for Tax Calculation and commit.",
"x-generated": "2026-10-20",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/thomson-reuters-indirect-tax-determination-rest-tax-service-openapi.yml#/components/schemas/CommitRequest",
"allOf": [
{
"$ref": "#/$defs/TaxRequest"
},
{
"type": "object",
"required": [
"documents"
],
"properties": {
"callingSystemNumber": {
"type": "string",
"maxLength": 100,
"description": "A pass-through element that contains a descriptor of the calling system sending the transaction. Determination uses as cobmination of hostSystem, callingSystemNumber and uniqueDocumentNumber to lookup of audit records. If a existing record is found in Audit database, the existing document is reversed, and new document is added to the Audit database."
},
"hostSystem": {
"type": "string",
"maxLength": 100,
"description": "The name of the Source System instance sending the transaction. Determination uses as combination of hostSystem, callingSystemNumber and uniqueDocumentNumber to lookup of audit records. If a existing record is found in Audit database, the existing document is reversed, and new document is added to the Audit database."
},
"documents": {
"type": "array",
"items": {
"$ref": "#/$defs/CommitDocumentRequest"
},
"minItems": 1,
"description": "The documents block serves as the container for an individual document. Each payload can have one or more documents."
}
}
}
],
"$defs": {
"Address": {
"type": "object",
"description": "Address for the document for line. Address at Document are required for document level charges.",
"required": [
"type",
"country"
],
"properties": {
"type": {
"type": "string",
"description": "The type of address.",
"enum": [
"billTo",
"shipTo",
"shipFrom",
"orderAcceptance",
"orderOrigin",
"supply",
"sellerPrimary",
"buyerPrimary",
"middleMan"
]
},
"country": {
"type": "string",
"maxLength": 50,
"description": "Country."
},
"region": {
"type": "string",
"maxLength": 50,
"description": "Province, or non-US state."
},
"county": {
"type": "string",
"maxLength": 50,
"description": "County"
},
"city": {
"type": "string",
"maxLength": 50,
"description": "City"
},
"district": {
"type": "string",
"maxLength": 50,
"description": "District"
},
"postcode": {
"type": "string",
"maxLength": 50,
"description": "The Postal or Zip Code For US ZIP Codes, the first five digits."
},
"geocode": {
"type": "string",
"maxLength": 50,
"description": "Geocode (the most granular geographic division) For US ZIP Codes, the +4 portion of the code."
},
"isBonded": {
"type": "string",
"description": "If set to (Y)es, indicates that this is a Bonded Warehouse. This status can then be used as a rule qualifier during rule selection."
},
"locationTaxCategory": {
"type": "string",
"description": "Indicates the type of location for this address, for example, Refinery. This value can then be used as a rule qualifier during rule selection."
},
"companyBranchId": {
"type": "string",
"maxLength": 50,
"description": "The branch ID of a company, passed with registration numbers for VAT Returns in several countries. For example, in the UK, companies must file their VAT Returns with Branch ID information included."
},
"address1": {
"type": "string",
"maxLength": 50,
"description": "Street Address 1, not used in calculation."
},
"address2": {
"type": "string",
"maxLength": 50,
"description": "Street Address 2, not used in calculation."
},
"address3": {
"type": "string",
"maxLength": 50,
"description": "Street Address 3, not used in calculation."
},
"bulkStorageFacility": {
"type": "boolean",
"description": ""
},
"facilityId": {
"type": "string",
"description": ""
},
"irsRegisteredFacility": {
"type": "boolean",
"description": ""
},
"latitude": {
"type": "string",
"pattern": "^-?[0-9]{1,3}(?:\\.[0-9]{1,10})?$",
"description": "Latitude of the location based on type, value range -90 to 90"
},
"longitude": {
"type": "string",
"pattern": "^-?[0-9]{1,3}(?:\\.[0-9]{1,10})?$",
"description": "Longitude of the location based on type, value range -180 to 180"
},
"localTaxCategory": {
"type": "string",
"description": ""
},
"addressValidationMode": {
"type": "string",
"description": ""
},
"defaultAddressValidationMode": {
"type": "string",
"description": ""
}
}
},
"AddressFlagForExempt": {
"type": "object",
"description": "Forces exemption from tax for a line in the specified jurisdictions. Exemption is different from zero tax for VAT authorities, as exemption completely excludes the transaction from VAT accounting. In the case of a sale, VAT paid to make the supply cannot be recovered if the supply is exempt. In Sales Tax countries such as the US, the exempt indicator prevents tax from being charged. If false is explicitly passed the exemption certificate lookup is suppressed; tax will be charged even though an apparently valid certificate may exist in Determination.",
"properties": {
"all": {
"type": "boolean",
"description": "Forces exemption override from tax for all jurisdictions.",
"enum": [
false
]
},
"country": {
"type": "boolean",
"description": "Exemption override status at Country zone level.",
"enum": [
false
]
},
"region": {
"type": "boolean",
"description": "Exemption override status at Province or State zone level.",
"enum": [
false
]
},
"county": {
"type": "boolean",
"description": "Exemption override status at County zone level.",
"enum": [
false
]
},
"city": {
"type": "boolean",
"description": "Exemption override status at City zone level.",
"enum": [
false
]
},
"postcode": {
"type": "boolean",
"description": "Exemption override status at Postcode zone level.",
"enum": [
false
]
},
"geocode": {
"type": "boolean",
"description": "Exemption override status at Geocode zone level.",
"enum": [
false
]
}
}
},
"BillOfLanding": {
"type": "object",
"description": "",
"properties": {
"number": {
"type": "number",
"description": "Bill of lading number."
},
"dateTime": {
"type": "string",
"format": "date-time",
"description": "Bill of lading date"
}
}
},
"Charge": {
"type": "object",
"required": [
"type",
"amount"
],
"properties": {
"type": {
"type": "string",
"maxLength": 50,
"description": "Must be unique (each charge type can only exist once in the structure for a given line). For example, the structure could contain charge types of Freight, Insurance, and Handling, but not two instances of Freight. If there is a desire or need to use multiple freights then they must be sent uniquely, for example, Freight 1, Freight 2, etc. or Freight UPS, Freight FedEx, etc."
},
"amount": {
"type": "number",
"description": "Amount of the specific charge"
},
"productCode": {
"type": "string",
"maxLength": 100,
"description": "Product Code for the charge, required if chargeCommodityCode is null. See productCode at line level for details."
},
"commodityCode": {
"type": "string",
"maxLength": 50,
"description": "Commodity Code for the charge, required if chargeProductCode is null. See commodityCode at line level for details."
}
}
},
"ClassificationCode": {
"type": "object",
"description": "",
"properties": {
"classificationCodeId": {
"type": "string",
"description": ""
},
"classificationCodeType": {
"type": "string",
"description": "",
"enum": [
"INDUSTRY PRODUCT CODE",
"INDUSTRY CODE",
"CNAE CODE"
]
}
}
},
"CommitDocumentRequest": {
"description": "A commit document request is used to determine which tax types are relevant and to calculate the amount of tax due on a business transaction document. Tax results are also persisted in the Determination/'s Audit database for reporting purposes.",
"allOf": [
{
"$ref": "#/$defs/DocumentRequest"
},
{
"type": "object",
"required": [
"documentNumber",
"lines"
],
"properties": {
"callingSystemNumber": {
"type": "string",
"maxLength": 100,
"description": "A pass-through element that contains a descriptor of the calling system sending the transaction. Determination uses as cobmination of hostSystem, callingSystemNumber and uniqueDocumentNumber to lookup of audit records. If a existing record is found in Audit database, the existing document is reversed, and new document is added to the Audit database."
},
"fiscalDate": {
"type": "string",
"format": "date",
"description": "Stores a transaction by a fiscal date in addition to the invoice date. For example, you can use fiscalDate to indicate when revenue was recognized."
},
"hostSystem": {
"type": "string",
"maxLength": 100,
"description": "The name of the Source System instance sending the transaction. Determination uses as combination of hostSystem, callingSystemNumber and uniqueDocumentNumber to lookup of audit records. If a existing record is found in Audit database, the existing document is reversed, and new document is added to the Audit database."
},
"documentNumber": {
"type": "string",
"maxLength": 200,
"description": "This number is passed through to the Audit database and acts as a reference for all document types. Determination uses as combination of hostSystem, callingSystemNumber and uniqueDocumentNumber to lookup of audit records. If a existing record is found in Audit database, the existing document is reversed, and new document is added to the Audit database. Required for Commit."
},
"isAuditUpdate": {
"type": "boolean",
"description": "Indicates whether or not to permit Audit database update instead of overwrite. Updates provide for 'Line at a Time' document submissions. The effect is that a duplicate document submission updates the document level record and replaces any matching line and tax level as determined by the lineNumber. Any new line numbers that are submitted will be added to the existing document in the audit tables. Valid values are <B>true</B> and <B>false</B>."
},
"originalDocumentId": {
"type": "string",
"maxLength": 100,
"description": "The original document id as shown on the document in the Source system. Not used in calculations."
},
"originalDocumentNumber": {
"type": "string",
"maxLength": 200,
"description": "This number enables an adjustment to an existing document to be associated with an original document in the Audit database for reporting purposes."
},
"uniqueDocumentNumber": {
"type": "string",
"maxLength": 200,
"description": "The unique identifier for this document, as assigned by the Source System. ONESOURCE Determination uses as combination of hostSystem, callingSystemNumber and uniqueDocumentNumber to lookup of audit records. If a existing record is found in Audit database, the existing document is reversed. If Source system does not provide this value (both for commit and reverse endpoints), ONESOURCE determination will auto generate this value based on concatenated value of externalCompanyID|documentNumber|companyRole. If Source system provided a value for the document in the commit call, same value must be passed when reversing the document, otherwise, reversal will fail."
},
"lines": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/CommitLineRequest"
},
"description": "The line block serves as the container for an individual line. Each document can have 1 or more lines."
}
}
}
]
},
"CommitLineRequest": {
"description": "A commit line request is used to determine which tax types are relevant and to calculate the amount of tax due on one or more lines in the business transaction document. Tax results are also persisted in the Determination's Audit database for reporting purposes.",
"allOf": [
{
"$ref": "#/$defs/LineRequest"
},
{
"type": "object",
"properties": {
"uniqueLineNumber": {
"type": "string",
"maxLength": 100,
"description": "The Source System's primary key for this line number."
},
"originalDocumentLine": {
"type": "string",
"maxLength": 100,
"description": "The original document item as shown on the document in the Source System. Not used in calculations."
}
}
}
]
},
"DeliveryTerm": {
"type": "object",
"description": "Indicates how goods were shipped and where title was transferred. if using Incoterms, Valid values include Incoterms 2000 codes and any other customer-defined codes. If using The Point of Title Transfer (POTT) location. Valid values are: D: Destination.O: Origin.I: In transit. If deliveryTerm element is passed in at either the document or line level, the default for the document is set to In Transit.",
"properties": {
"type": {
"type": "string",
"maxLength": 10,
"description": "Type of delivery term, Possible value: 'Incoterms', 'POTT' or null",
"enum": [
"Incoterms",
"POTT",
"null"
]
},
"term": {
"type": "string",
"maxLength": 10,
"description": "Delivery Term or Point of Title Transfer"
}
}
},
"DocumentRequest": {
"type": "object",
"required": [
"currencyCode",
"documentDate"
],
"properties": {
"basisPercent": {
"type": "number",
"description": "A percentage amount that is used to adjust the Taxable Basis of a tax calculation. The default is 100%. .5 is equal to 50%, .6 is equal to 60%, and so on. If this element is provided, it overrides any data found on an authority rule or exemption certificate applied to the transaction."
},
"addresses": {
"type": "array",
"items": {
"$ref": "#/$defs/Address"
},
"description": "List of address type"
},
"companyRole": {
"type": "string",
"maxLength": 20,
"description": "The role the company plays in a given transaction: Buyer (<B>B</B>), Middleman (<B>M</B>) or Seller (<B>S</B>). Each role results in different transaction tax and reporting requirements. Currently only Seller(<B>S</B>) role is supported by the API."
},
"countryOfOrigin": {
"type": "string",
"maxLength": 100,
"description": "The country where the goods were manufactured. Used in Intrastat reporting."
},
"currencyCode": {
"type": "string",
"maxLength": 3,
"description": "The currency associated with this transaction."
},
"customerName": {
"type": "string",
"maxLength": 100,
"description": "The customer's name as passed in from the Source System. Used in the calculation of US Sales Tax when Exemption Certificates are evaluted for applicability to the transaction. Customer Name is also used in evaluating VAT Registration Group member, and in the case where Licenses are defined to match based on a customerName. For Exemption Certificate and License customer lookups, this element is no longer used by default; use customerNumber instead. To use customerName as well, set the Company Configuration parameter STRICT_CUSTOMER_LOOKUP to N. See Configuration for more information. For VAT Registration Group member evaluation, this element is used as a fall-back if a match cannot be made using externalCompanyId or customerNumber."
},
"customerNumber": {
"type": "string",
"maxLength": 100,
"description": "The customer number as passed in by the Source System. This element's value is used by Determination when searching for US Sales Tax Exemption Certificates or with the lookup of a License that are relevant to a transaction. Optionally, Determination may use the value in this element to auto-create a customer or an associated certificate. This element's value can also be used to match VAT Registration Group members if no match is found using externalCompanyId."
},
"deliveryTerm": {
"$ref": "#/$defs/DeliveryTerm",
"description": "Indicates how goods were shipped and where title was transferred. if using Incoterms, Valid values include Incoterms 2000 codes and any other customer-defined codes. If using The Point of Title Transfer (POTT) location. Valid values are:D: Destination.O: Origin.I: In transit.If deliveryTerm element is passed in at either the document or line level, the default for the document is set to In Transit."
},
"deptOfConsign": {
"type": "string",
"maxLength": 100,
"description": "Department of consignment. Used in Intrastat reporting."
},
"documentType": {
"type": "string",
"maxLength": 50,
"description": "Document Type references a virtual or a physical document created and managed by the Source System. Examples include document, order, or credit memo. The document type represents the type of transaction to be processed, including defining the types of entities in the transaction. For example, a sales quote will have different attributes than a document for purchased goods."
},
"endUserName": {
"type": "string",
"maxLength": 100,
"description": "Identifier of the user who made a change to the document in the calling Source system."
},
"externalCompanyId": {
"type": "string",
"maxLength": 100,
"description": "The unique identifier used by your business application to indicate which company to use in Determination. This identifier also distinguishes between different calling applications that may be used by your company. This element may be passed at the batch level or with each document, and is passed through to the Determination response, and to the Audit database."
},
"inclusiveTaxIndicator": {
"$ref": "#/$defs/InclusiveTaxIndicator",
"description": "Contains information on whether to treat some or all authority taxes for this invoice as inclusive, regardless of the selected rule."
},
"documentDate": {
"type": "string",
"format": "date",
"description": "The date as stored on this document. This is used for comparison to configurations throughout Determination and is also used to query transaction data in reporting. Required."
},
"isBusinessSupply": {
"type": "boolean",
"description": "Indicates whether a supply is being used for business. In Brazilian ICMS and IPI transactions, whether a supply is being used for business or not impacts the tax and reporting requirements of the buyer and the seller. Valid values are true and false."
},
"isCredit": {
"type": "boolean",
"description": "Indicates whether the current document is a credit as identified by your Source System. A true value in this elements indicates a credit for both auditing and reporting purposes. When set to true, any amount on the document should be passed in as a negative value. Valid values are <B>true</B> and <B>false</B>.",
"enum": [
true,
false
]
},
"isExempt": {
"$ref": "#/$defs/AddressFlagForExempt"
},
"isSimplification": {
"type": "boolean",
"description": "Indicates an override to any triangulation simplification determinations. Valid values are true and false. If set to true, you must pass registrations in for the Buyer, Seller, and Middleman in the transaction or a warning message will be returned."
},
"modeOfTransport": {
"type": "string",
"maxLength": 100,
"description": "The method of transport. Used for Intrastat reporting in the EU."
},
"movementDate": {
"type": "string",
"format": "date",
"description": "Indicates the date of a movement of goods, such as via a pipeline, or the data of issue. Used in rule qualifiers and in date determination rules."
},
"movementType": {
"type": "string",
"maxLength": 100,
"description": "Indicates the type of movement, such as a pipeline. Used in rule qualifiers and in date determination rules."
},
"natureOfTransactionCode": {
"type": "string",
"maxLength": 2,
"description": "Used in Intrastat reports in all countries in the EU."
},
"originalDocumentDate": {
"type": "string",
"format": "date",
"description": "The date of the original document. Can be used in Date Determination Rules."
},
"portOfEntry": {
"type": "string",
"maxLength": 100,
"description": "The Port of Entry, used for Intrastat reporting in the EU."
},
"portOfLoading": {
"type": "string",
"maxLength": 5,
"description": "The Port or Airport of Departure; used for Intrastat reporting in the EU."
},
"regime": {
"type": "string",
"maxLength": 100,
"description": "The Regime, used for French Intrastat reports."
},
"registrations": {
"type": "array",
"items": {
"$ref": "#/$defs/Registrations"
},
"description": "List of registrations for role."
},
"statisticalProcedure": {
"type": "string",
"maxLength": 6,
"description": "A statistical indicator used for large shipments. Used for Intrastat filing purposes in the EU."
},
"titleTransferLocation": {
"type": "string",
"maxLength": 100,
"description": "A pass-through element indicating where the location where title transferred for the associated delivery term."
},
"taxCode": {
"type": "string",
"maxLength": 50,
"description": "An optional value which can be specified in the transaction to be compared to a Tax Code specified on a Rule."
},
"taxDeterminationDate": {
"type": "string",
"format": "date",
"description": "The date used in selecting all applicable system configuration including tax rates and rules. Overrides any system-determined date."
},
"charges": {
"type": "array",
"items": {
"$ref": "#/$defs/Charge"
},
"description": "List of charges associated with the line. The Charge functionality is limited to the CompanyRole=Seller only. Seller-type roles are allowed to use the Charges structure, buyer type transactions cannot due to vendor charge and accrual logic."
},
"userAttributes": {
"type": "array",
"maxItems": 50,
"description": "The userAttributes block enables companies to submit, and have returned, user-defined elements that are not directly supported in Determination. These elements can be used in conjunction with TransEditors to enable tax calculations, and may be stored in the Audit database for reporting purposes. Each userAttribute block contains a single name/value pair. <B>TR reserves ATTRIBUTE41 to ATTRIBUTE50 for internal PS use</B>.",
"items": {
"$ref": "#/$defs/UserAttribute"
}
},
"vatGroupRegistration": {
"type": "string",
"maxLength": 25,
"description": "The value of the VAT Group registration number for the invoice. Used as the primary way of looking up VAT Registration Groups during calculation."
},
"vendorName": {
"type": "string",
"maxLength": 100,
"description": "The vendor's name. If this is a B2B transaction and the Company is the buyer, the Company becomes the Customer and the Vendor becomes the Company for the transaction."
},
"vendorNumber": {
"type": "string",
"maxLength": 100,
"description": "The vendor's number. If this is a B2B transaction and the Company is the buyer, the Company becomes the Customer and the Vendor becomes the Company for the transaction."
},
"billOfLading": {
"$ref": "#/$defs/BillOfLanding"
},
"isExchange": {
"type": "boolean",
"description": ""
},
"licenses": {
"$ref": "#/$defs/LicenseType"
},
"operatingLicenses": {
"$ref": "#/$defs/OperatingLicenses"
},
"vendorGroupName": {
"type": "string",
"maxLength": 100,
"description": ""
},
"vendorGroupOwner": {
"type": "string",
"maxLength": 100,
"description": ""
},
"userAmountAttributes": {
"type": "array",
"description": "",
"maxItems": 5,
"items": {
"$ref": "#/$defs/UserAttributeAmount"
}
},
"userDateAttributes": {
"type": "array",
"description": "",
"maxItems": 5,
"items": {
"$ref": "#/$defs/UserAttributeDate"
}
},
"processingOptions": {
"$ref": "#/$defs/ProcessingOption"
},
"allocationGroupName": {
"type": "string",
"maxLength": 100,
"description": "Name of the Allocation Group to use for this transaction. Named Allocations will be looked up in this group."
},
"allocationGroupOwner": {
"type": "string",
"maxLength": 100,
"description": "Name of the Company owning the Allocation Group to use for this transaction. The named Allocation Group will be looked up in this company's data."
},
"allocationName": {
"type": "string",
"maxLength": 100,
"description": "Name of the Allocation to use for this transaction. Named Allocations will be looked up in the specified group owned by the specified company (see above). Company default owner and group will be used if not specified in the transaction. Allocations are dated, so the named version active as of the <INVOICE_DATE> will be used. If none match, a message will be added to output indicating an active named Allocation was not found. Allocation processing can be overridden at the line level. See LINE.IS_ALLOCATABLE."
},
"vendorChargeTax": {
"$ref": "#/$defs/VendorChargeTaxDocumentRequest"
},
"businessLocation": {
"type": "string",
"maxLength": 500,
"description": "The business location."
},
"relatedLineAmounts": {
"type": "array",
"items": {
"$ref": "#/$defs/RelatedLineAmount"
},
"description": "The related line amounts"
}
}
},
"InclusiveTaxIndicator": {
"type": "object",
"description": "Contains information on whether to treat some or all authority taxes for this invoice as inclusive, regardless of the selected rule.",
"properties": {
"fullyInclusive": {
"type": "boolean",
"description": "If set to true, indicates that all authorities that Determination will select for taxing will be considered as Inclusive Tax. This element overrides the calculation method set for the selected rule by forcing inclusive tax."
},
"authorityType": {
"type": "array",
"description": "If the authority selected for a transaction matches the type indicated here, all taxes for that authority are considered as inclusive. You can have multiple authorityType.",
"items": {
"type": "string",
"maxLength": 100
}
}
}
},
"License": {
"type": "object",
"description": "Contains data pertaining to a single license, consisting of a number-type pair.",
"properties": {
"type": {
"type": "string",
"maxLength": 100,
"description": "Type of license."
},
"number": {
"type": "string",
"maxLength": 100,
"description": "License number."
}
}
},
"LicenseType": {
"type": "object",
"description": "One or more licenses applicable for the transaction.",
"properties": {
"customerLicense": {
"$ref": "#/$defs/License"
}
}
},
"LineRequest": {
"type": "object",
"required": [
"lineNumber",
"quantities",
"amount"
],
"properties": {
"accountingCode": {
"type": "string",
"maxLength": 100,
"description": "The Accounting Code (or GL Code) passed in by the Source System."
},
"basisPercent": {
"type": "number",
"description": "A percentage amount that is used to adjust the Taxable Basis of a tax calculation. The default is 100%. .5 is equal to 50%, .6 is equal to 60%, and so on. If this element is provided, it overrides any data found on an authority rule or exemption certificate applied to the transaction."
},
"addresses": {
"type": "array",
"items": {
"$ref": "#/$defs/Address"
},
"description": "List of addresses"
},
"commodityCode": {
"type": "string",
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thomson-reuters/refs/heads/main/json-schema/thomson-reuters-commit-request-schema.json
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/thomson-reuters-commit-request"
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.