This guide covers the key changes between API v1 and API v3 so you can update your integration efficiently. If you are building a new integration from scratch, skip this page and start with the Welcome to the TaxCloud API guide instead.
v1 passed apiLoginID and apiKey inside every request body:
v3 uses an X-API-KEY header for authentication. The connectionID (which replaces apiLoginID) is part of the URL path:
connectionID (your v1 connection works in v3) or create a new Custom API Connection under Integrations > Custom API.apiLoginID and apiKey from all request bodies.X-API-KEY header to every request.connectionID into each endpoint URL.For full setup details, see Setup and Authentication.
The v1 Lookup endpoint is replaced by the v3 POST /carts endpoint. The core concept is the same (send items and addresses, receive tax amounts), but the request structure and field names have changed.
Tip: v3 returns the tax rate alongside the amount for each line item. v1 only returned the tax amount.
Both v1 and v3 require you to authorize/capture a tax lookup to create an order. The core workflow is the same; the main change is terminology and endpoint structure. What v1 called AuthorizedWithCapture is now “creating an order from a cart” in v3.
Authorized, Captured, AuthorizedWithCapture). v3 consolidates these into a single POST /carts/orders endpoint that handles all three cases. The number of API calls in a given workflow stays the same.completed: false at creation time, then PATCH /orders/{orderId} with a completedDate later. This supports cash-basis accounting, fulfillment-based workflows, and pre-orders.customerID needed. Customer data is already captured in the cart.For the full workflow, see Convert Carts to Orders.
v1 used a single Returned endpoint. v3 introduces a dedicated Refund API and adds standalone credits for adjustments not tied to an existing order.
For partial returns, you included a cartItems array with the items being returned and adjusted Qty values.
Full return (empty body):
Partial return (specify items):
Note: Standalone credits let you reduce tax liability without referencing an original order. Set
kind: "credit"on the Create Order endpoint. See Standalone Credits.
The approach to exemptions has been simplified in v3.
Pass an exemptCert object inside the Lookup request, containing either a CertificateID (for a previously saved certificate) or a full Detail object to create a new certificate inline.
Add an exemption object to the cart or order payload:
Direct attach (recommended):
Auto-match:
isExempt: true) searches by customerID, connectionID, and destination state. If no match is found, the order is flagged Exempt—No certificate and requires manual resolution before filing.exemptionId is the recommended approach for production integrations.For details, see Managing Tax Exemptions.
v1 returned HTTP 200 for every response, using a ResponseType field to indicate success or failure. v3 uses standard HTTP status codes.
ResponseType === 3 with standard HTTP status code checks.Messages array.500 errors. See Handling Errors for a sample pattern.Address fields have been renamed and simplified.
Note: v3 still requires two-character state abbreviations. Do not pass full state names.
Note: The plus-4 extension is optional. If you only have the 5-digit ZIP, pass it as-is (e.g.,
"zip": "98104"). TaxCloud will still calculate tax correctly.
The testing and environment model is largely the same between v1 and v3. The main difference is that v3 uses a connectionID instead of apiLoginID to identify the environment.
Create a dedicated test connection for development and QA. When you go live, switch to your production connectionID. Archive the test connection afterward to prevent accidental use.
For details, see Testing and Going Live.
These capabilities are new or significantly improved in v3:
AddTransactions capability. Submit pre-existing or historical orders directly, bypassing the cart step. See Order Upload Overview.Authorized and Captured endpoints. v3 streamlines this into a single endpoint: create the order with completed: false, then finalize later with a completedDate via PATCH.excludeFromFiling flag. Mark orders that should not be included in TaxCloud’s filed returns (e.g., orders already filed elsewhere).Use this checklist to track your migration progress:
X-API-KEY and create a test connectionID in the TaxCloud portal.X-API-KEY as a header and remove credentials from request bodies.Lookup calls with POST /carts.zip format.ItemID to itemId, TIC to tic, Qty to quantity.AuthorizedWithCapture (or Authorized + Captured) with POST /carts/orders.Returned calls with POST /orders/refunds/{orderId}.exemption object with exemptionId or isExempt.ResponseType checks with HTTP status code handling.connectionID and verify end-to-end.If you run into issues during migration, reach out to the TaxCloud support team or explore the full API Reference.