Skip to content

API Overview

API Overview

The ShipVAT API provides RESTful endpoints for tax calculation, transaction recording, customer management, and compliance reporting.

Base URL

https://api.shipvat.com

Core Endpoints

EndpointMethodDescription
/healthGETHealth check (no auth required)
/v1/calculatePOSTCalculate tax for transactions
/v1/calculate/batchPOSTBatch calculate multiple transactions
/v1/ratesGETGet tax rates for a jurisdiction
/v1/thresholdsGETGet nexus thresholds
/v1/decision/collectPOSTTax collection decision

Transaction Recording

EndpointMethodDescription
/v1/transactionsPOSTCreate a transaction
/v1/transactionsGETList transactions
/v1/transactions/:idGETGet transaction details
/v1/transactions/external/:externalIdGETGet transaction by external ID
/v1/transactions/:id/refundPOSTRefund a transaction
/v1/transactions/:id/voidPOSTVoid a pending transaction
/v1/transactions/batchPOSTCreate multiple transactions (max 50)

Customer Management

EndpointMethodDescription
/v1/customersPOSTCreate a customer
/v1/customersGETList customers
/v1/customers/:idGETGet customer details
/v1/customers/external/:externalIdGETGet customer by external ID
/v1/customers/:idPUTUpdate a customer
/v1/customers/:idDELETEDelete a customer
/v1/customers/:id/exemptionsPOSTAdd tax exemption
/v1/customers/:id/exemptions/:exemptionIdPUTUpdate exemption
/v1/customers/:id/exemptions/:exemptionIdDELETERemove exemption
/v1/customers/:id/exemptions/checkGETCheck exemption status

VAT Validation

EndpointMethodDescription
/v1/vat/validatePOSTValidate VAT ID (EU VIES)
/v1/vat/format-checkGETCheck VAT format only
/v1/vat/validate-customer/:customerIdPOSTValidate and update customer VAT
/v1/vat/countriesGETList supported VAT countries

Compliance Reports

EndpointMethodDescription
/v1/reports/summaryGETTax summary by jurisdiction
/v1/reports/transactionsGETTransaction report for period
/v1/reports/filingGETFiling report (EU OSS, etc.)
/v1/reports/exportGETExport report as CSV

Webhooks

EndpointMethodDescription
/v1/webhooksPOSTCreate webhook endpoint
/v1/webhooksGETList webhooks
/v1/webhooks/:idGETGet webhook details
/v1/webhooks/:idPUTUpdate webhook
/v1/webhooks/:idDELETEDelete webhook
/v1/webhooks/:id/rotate-secretPOSTRotate webhook secret
/v1/webhooks/events/listGETList available event types

Address Validation

EndpointMethodDescription
/v1/addresses/validatePOSTValidate and normalize address
/v1/addresses/countriesGETList supported countries
/v1/addresses/regions/:countryGETGet regions for country

Metadata

EndpointMethodDescription
/v1/metadata/jurisdictionsGETList all jurisdictions
/v1/metadata/jurisdictions/:idGETGet jurisdiction details
/v1/metadata/sync-statusGETData sync status
/v1/export/snapshotGETExport full data snapshot

Authentication

All /v1/* endpoints require a Bearer token:

Terminal window
curl https://api.shipvat.com/v1/rates?jurisdiction=DE \
-H "Authorization: Bearer sk_live_your_api_key"

Response Format

All successful responses are JSON with a queried_at timestamp:

{
"jurisdiction": "DE",
"rates": [...],
"queried_at": "2024-01-15T10:30:00Z"
}

Error Format

{
"error_code": "VALIDATION_ERROR",
"message": "Human readable message",
"details": {
"field": "jurisdiction",
"reason": "Invalid jurisdiction code"
}
}

Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Invalid or missing API key
FORBIDDEN403Insufficient permissions
NOT_FOUND404Resource not found
VALIDATION_ERROR400Invalid request parameters
RATE_LIMIT_EXCEEDED429Too many requests
INTERNAL_ERROR500Server error

Rate Limits

TierLimit
Free10 requests/minute
Pro1,000 requests/minute
Enterprise10,000 requests/minute