curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-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-01-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-01-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-01-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-01-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-01-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-01-01 for platform calculations.Request Body
Show Order Details Properties
Show Order Details Properties
USD, EUR).auto, disabled, or forced.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.curl -X POST https://api.numeralhq.com/tax/platform/calculations \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-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-01-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-01-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