API Changelog
Version 2026-03-01
Release Date: March 1, 2026This version adds IP-based tax resolution to calculations and platform calculations, enabling tax determination from a customer’s IP address without requiring a full street address.
New Feature: IP-Based Tax Resolution
IP Resolution
Pass a customer IP address instead of a full address for tax calculations.
- Works with both
/tax/calculationsand/tax/platform/calculations - Supports IPv4 and IPv6 addresses
Resolution Modes
Control how insufficient IP data is handled.
strict- Error if insufficient detailzero- Return zero-rateapproximate- Use most populous ZIPbest_effort- Try approximate, fall back to zero
The customer.ip Object
Instead of providing customer.address, you can now pass customer.ip:
| Field | Type | Required | Description |
|---|---|---|---|
value | string | Yes | A valid IPv4 or IPv6 address |
resolution | string | No | Resolution strategy (default: "strict") |
At least one of
customer.address or customer.ip must be provided. You can also provide both — the address will be used first, with IP as a fallback.Resolution Modes
| Mode | Behavior |
|---|---|
strict (default) | Returns an error if IP cannot resolve to sufficient detail for tax calculation |
zero | Returns a zero-rate response immediately if resolution is insufficient |
approximate | Attempts to resolve the IP to an address using heuristics |
best_effort | Tries approximate first, falls back to zero rates if that also fails |
New Response Fields
Calculation responses now include these additional fields:| Field | Type | Description |
|---|---|---|
location_source | string | "address" or "ip" — which input was used for tax determination |
resolution_precision | string | Precision level: STREET, POSTAL_PLUS, POSTAL, PROVINCE, COUNTRY, or APPROXIMATED |
address_used | object | The resolved address that was actually used for tax calculation |
Example: IP-Based Calculation
New Error Types
| Type | HTTP Code | Description |
|---|---|---|
INVALID_IP_FORMAT | 400 | ip.value is not a valid IPv4 or IPv6 address |
IP_RESOLUTION_FAILED | 422 | IP could not be resolved to any country |
IP_RESOLUTION_INSUFFICIENT_US | 422 | IP resolved to a US state but no postal code was found |
IP_RESOLUTION_INSUFFICIENT_CA | 422 | IP resolved to CA but no province was found |
Error Codes Reference
See the complete list of error types and their meanings.
Migration Guide
From 2026-01-01 to 2026-03-01
There are no breaking changes from 2026-01-01. All existing requests continue to work as-is.
- Update your
X-API-Versionheader to2026-03-01 - Optionally use
customer.ipinstead of or in addition tocustomer.address - Handle new 422 error types if using IP resolution with
strictmode - Check
location_sourcein responses to see whether address or IP was used
Version 2026-01-01
Release Date: January 1, 2026This version introduces Merchant Management and Platform Calculations for marketplace and payment processor scenarios.
New Endpoints
Merchant CRUD
Full create, read, update, and delete operations for merchants (sellers) on your platform.
POST /tax/merchants- Create merchantGET /tax/merchants- List merchantsGET /tax/merchants/:id- Get merchantPOST /tax/merchants/:id- Update merchantDELETE /tax/merchants/:id- Delete merchant
Platform Calculations
Tax calculations for marketplace transactions with merchant context.
POST /tax/platform/calculations
Platform Transactions
Convert platform calculations into recorded transactions for tax reporting.
POST /tax/platform/transactions
Breaking Changes
New Features
Merchant Management
Create and manage merchants (sellers) on your platform:- Use your own IDs via
reference_merchant_id - Store merchant tax IDs for B2B transactions
- Default addresses used as origin in calculations
- Testmode isolation (test merchants separate from live)
Platform Calculations
Calculate taxes for marketplace/platform transactions:- Per-unit pricing -
amount × quantity = taxable base - Merchant context - Link calculations to specific sellers
- Platform roles - Specify your role (marketplace, payment processor, merchant of record)
- Fee calculations - Separate tax calculation for platform fees
- Enhanced response - Includes
tax_authority_name,tax_authority_type,tax_type
Platform Roles
Specify your role in the transaction:| Role | Description |
|---|---|
marketplace_provider | You operate a marketplace connecting buyers and sellers |
payment_processor | You process payments for the transaction |
merchant_of_record | You are the legal seller of record |
Platform Transactions
Convert platform calculations into recorded transactions for tax reporting and filing:- Returns a list - May return one or two transactions depending on your platform role
- Payment processors - Receive separate
orderandfeetransactions - Marketplace providers / Merchants of record - Receive a single
ordertransaction - Transaction types -
type: "order"for sales,type: "fee"for platform fees
| Platform Role | Transactions Created |
|---|---|
payment_processor | 2 (order + fee) |
marketplace_provider | 1 (order only) |
merchant_of_record | 1 (order only) |
Fee Calculations
Calculate taxes on platform fees separately from order items:Enhanced Tax Response
Platform calculations include additional jurisdiction details:| Field | Description |
|---|---|
tax_authority_name | Human-readable authority name |
tax_authority_type | STATE, COUNTY, CITY, or DISTRICT |
tax_type | SALES, USE, VAT, or GST |
New Error Format
Previous format (2025-05-12 and earlier):- Flattened structure - No more nested
errorobject - HTTP status in response -
codefield contains the HTTP status code - Uppercase error types - Error types are now SCREAMING_SNAKE_CASE
- Consistent typing - Use the
typefield for programmatic error handling
Error Codes Reference
See the complete list of error types and their meanings.
Previous Versions
| Version | Key Features |
|---|---|
| 2026-01-01 | Merchant management, platform calculations, per-unit pricing, fee calculations |
| 2025-05-12 | Customer types (B2B/B2C), tax IDs, 32 currencies, automatic_tax |
| 2024-09-01 | Base version with core tax calculation features |