curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["marketplace_provider"]
}'
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"type": "CONSUMER",
"ip": {
"value": "217.217.113.167",
"resolution": "strict"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["marketplace_provider"]
}'
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 5000,
"quantity": 2,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["payment_processor"],
"fee_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 299,
"quantity": 1,
"product_category": "ELECTRONIC_GOODS"
}
]
}
}'
# Returns destination-based rates regardless of the caller's own nexus.
# Use this when you (the payment processor) need to surface the rates the
# merchant would owe, without your own registration footprint gating the response.
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "forced",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["payment_processor"]
}'
{
"id": "calc_platform_123456789",
"object": "tax.calculation",
"testmode": true,
"customer_currency_code": "USD",
"line_items": [
{
"product": {
"product_tax_code": "GENERAL_MERCHANDISE"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 3,
"tax_amount": 656,
"amount_excluding_tax": 7500,
"amount_including_tax": 8156
}
],
"totals": {
"order": {
"tax_amount": 656,
"amount_excluding_tax": 7500,
"amount_including_tax": 8156
}
},
"merchant": {
"id": "merch_abc123",
"reference_merchant_id": "my-seller-123"
},
"roles": ["marketplace_provider"],
"expires_at": 1735690200
}
{
"id": "calc_platform_987654321",
"object": "tax.calculation",
"testmode": true,
"customer_currency_code": "USD",
"line_items": [
{
"product": {
"product_tax_code": "GENERAL_MERCHANDISE"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 2,
"tax_amount": 875,
"amount_excluding_tax": 10000,
"amount_including_tax": 10875
}
],
"fee_line_items": [
{
"product": {
"product_tax_code": "ELECTRONIC_GOODS"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 1,
"tax_amount": 26,
"amount_excluding_tax": 299,
"amount_including_tax": 325
}
],
"totals": {
"order": {
"tax_amount": 875,
"amount_excluding_tax": 10000,
"amount_including_tax": 10875
},
"fees": {
"tax_amount": 26,
"amount_excluding_tax": 299,
"amount_including_tax": 325
}
},
"merchant": {
"id": "merch_abc123",
"reference_merchant_id": "my-seller-123"
},
"roles": ["payment_processor"],
"expires_at": 1735690200
}
{
"error": {
"error_code": "merchant_not_found",
"error_message": "Merchant not found or belongs to different testmode"
}
}
Platform Calculations
Calculate taxes for marketplace and platform transactions
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["marketplace_provider"]
}'
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"type": "CONSUMER",
"ip": {
"value": "217.217.113.167",
"resolution": "strict"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["marketplace_provider"]
}'
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 5000,
"quantity": 2,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["payment_processor"],
"fee_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 299,
"quantity": 1,
"product_category": "ELECTRONIC_GOODS"
}
]
}
}'
# Returns destination-based rates regardless of the caller's own nexus.
# Use this when you (the payment processor) need to surface the rates the
# merchant would owe, without your own registration footprint gating the response.
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "forced",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["payment_processor"]
}'
{
"id": "calc_platform_123456789",
"object": "tax.calculation",
"testmode": true,
"customer_currency_code": "USD",
"line_items": [
{
"product": {
"product_tax_code": "GENERAL_MERCHANDISE"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 3,
"tax_amount": 656,
"amount_excluding_tax": 7500,
"amount_including_tax": 8156
}
],
"totals": {
"order": {
"tax_amount": 656,
"amount_excluding_tax": 7500,
"amount_including_tax": 8156
}
},
"merchant": {
"id": "merch_abc123",
"reference_merchant_id": "my-seller-123"
},
"roles": ["marketplace_provider"],
"expires_at": 1735690200
}
{
"id": "calc_platform_987654321",
"object": "tax.calculation",
"testmode": true,
"customer_currency_code": "USD",
"line_items": [
{
"product": {
"product_tax_code": "GENERAL_MERCHANDISE"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 2,
"tax_amount": 875,
"amount_excluding_tax": 10000,
"amount_including_tax": 10875
}
],
"fee_line_items": [
{
"product": {
"product_tax_code": "ELECTRONIC_GOODS"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 1,
"tax_amount": 26,
"amount_excluding_tax": 299,
"amount_including_tax": 325
}
],
"totals": {
"order": {
"tax_amount": 875,
"amount_excluding_tax": 10000,
"amount_including_tax": 10875
},
"fees": {
"tax_amount": 26,
"amount_excluding_tax": 299,
"amount_including_tax": 325
}
},
"merchant": {
"id": "merch_abc123",
"reference_merchant_id": "my-seller-123"
},
"roles": ["payment_processor"],
"expires_at": 1735690200
}
{
"error": {
"error_code": "merchant_not_found",
"error_message": "Merchant not found or belongs to different testmode"
}
}
Headers
2026-03-01 for platform calculations.Request Body
Show Customer Properties
Show Customer Properties
CONSUMER or BUSINESS.address_type (shipping or billing). At least one of address or ip must be provided.address or ip must be provided.Show Order Details Properties
Show Order Details Properties
USD, EUR).auto, disabled, or forced. Required from API version 2025-05-12+.auto- Return real rates only in jurisdictions where you have an active tax registration. Returns 0 elsewhere.disabled- Always return 0 tax rates regardless of registration status.forced- Return real destination-based rates regardless of your own nexus/registration status. Useful for payment processors that need to surface the rates a merchant would owe without their own collection configuration gating the response. Only valid whenrolesis exactly["payment_processor"]. Customer-level rules (exemptions, reverse-charge, B2B logic) still apply.
automatic_tax must be auto or forced — disabled is rejected because US addresses must always compute tax.marketplace_provider- You operate a marketplace connecting buyers and sellerspayment_processor- You process payments for the transactionmerchant_of_record- You are the legal seller of record
order_details, except automatic_tax only accepts auto or disabled — fees represent the platform’s own tax event toward the merchant and must honor the platform’s own nexus configuration.Line Item Properties
amount: 2500amount × quantity.GENERAL_MERCHANDISE, SAAS_GENERAL).Response
tax.calculation.fee_details provided).Enhanced Response Fields
Platform calculations include additional tax jurisdiction details:STATE, COUNTY, CITY, or DISTRICT.SALES, USE, VAT, or GST.IP Resolution Response Fields
"address" or "ip" — indicates which input was used for tax determination.STREET, POSTAL_PLUS, POSTAL, PROVINCE, COUNTRY, or APPROXIMATED.tax_rate values. Each tax_rate in tax_jurisdictions is the statutory rate for that jurisdiction, and in some jurisdictions a rate applies to only part of the line item amount. Tennessee’s single article rules are the common example: local rates apply only to the first $1,600 of an item, and the 2.75% state single article rate applies only to the portion between $1,600 and $3,200. For a $10,000 item the returned rates sum to 12.25%, but the tax due is $788, an effective rate of 7.88%.Always charge the returned tax_amount (or total_tax_amount). If you need an effective rate, compute tax_amount / amount_excluding_tax from the response rather than adding up tax_rate values. The per-jurisdiction tax_due_decimal field shows how much each jurisdiction actually contributed.curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["marketplace_provider"]
}'
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"type": "CONSUMER",
"ip": {
"value": "217.217.113.167",
"resolution": "strict"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["marketplace_provider"]
}'
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 5000,
"quantity": 2,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["payment_processor"],
"fee_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "auto",
"line_items": [
{
"amount": 299,
"quantity": 1,
"product_category": "ELECTRONIC_GOODS"
}
]
}
}'
# Returns destination-based rates regardless of the caller's own nexus.
# Use this when you (the payment processor) need to surface the rates the
# merchant would owe, without your own registration footprint gating the response.
curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-03-01" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"address": {
"address_line_1": "100 Market St",
"address_city": "San Francisco",
"address_province": "CA",
"address_postal_code": "94105",
"address_country": "US"
}
},
"merchant": {
"merchant_id": "my-seller-123"
},
"order_details": {
"customer_currency_code": "USD",
"tax_included_in_amount": false,
"automatic_tax": "forced",
"line_items": [
{
"amount": 2500,
"quantity": 3,
"product_category": "GENERAL_MERCHANDISE"
}
]
},
"roles": ["payment_processor"]
}'
{
"id": "calc_platform_123456789",
"object": "tax.calculation",
"testmode": true,
"customer_currency_code": "USD",
"line_items": [
{
"product": {
"product_tax_code": "GENERAL_MERCHANDISE"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 3,
"tax_amount": 656,
"amount_excluding_tax": 7500,
"amount_including_tax": 8156
}
],
"totals": {
"order": {
"tax_amount": 656,
"amount_excluding_tax": 7500,
"amount_including_tax": 8156
}
},
"merchant": {
"id": "merch_abc123",
"reference_merchant_id": "my-seller-123"
},
"roles": ["marketplace_provider"],
"expires_at": 1735690200
}
{
"id": "calc_platform_987654321",
"object": "tax.calculation",
"testmode": true,
"customer_currency_code": "USD",
"line_items": [
{
"product": {
"product_tax_code": "GENERAL_MERCHANDISE"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 2,
"tax_amount": 875,
"amount_excluding_tax": 10000,
"amount_including_tax": 10875
}
],
"fee_line_items": [
{
"product": {
"product_tax_code": "ELECTRONIC_GOODS"
},
"tax_jurisdictions": [
{
"tax_rate": 0.0875,
"rate_type": "SALES TAX",
"jurisdiction_name": "California",
"tax_authority_name": "California State",
"tax_authority_type": "STATE",
"tax_type": "SALES",
"fee_amount": 0
}
],
"quantity": 1,
"tax_amount": 26,
"amount_excluding_tax": 299,
"amount_including_tax": 325
}
],
"totals": {
"order": {
"tax_amount": 875,
"amount_excluding_tax": 10000,
"amount_including_tax": 10875
},
"fees": {
"tax_amount": 26,
"amount_excluding_tax": 299,
"amount_including_tax": 325
}
},
"merchant": {
"id": "merch_abc123",
"reference_merchant_id": "my-seller-123"
},
"roles": ["payment_processor"],
"expires_at": 1735690200
}
{
"error": {
"error_code": "merchant_not_found",
"error_message": "Merchant not found or belongs to different testmode"
}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
API version. Must be 2026-01-01 for platform calculations.
2026-01-01 Body
Request body for platform/marketplace tax calculations
Show child attributes
Show child attributes
The merchant (seller) involved in this platform transaction
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Your role(s) in this transaction
marketplace_provider, payment_processor, merchant_of_record ["marketplace_provider"]
Optional: Details for platform fees to be taxed separately
Show child attributes
Show child attributes
Response
Platform calculation response
"calc_platform_123456789"
"tax.calculation"
Show child attributes
Show child attributes
Tax calculations for platform fees (only present when fee_details provided)
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes