How can we help?

Show Page Sections

How the External Partner API works

The External Partner API follows a fixed sequence of steps to authenticate, import, and process your VAT transaction data.

The API connects to Sovos through an Apigee API gateway (the API management layer). The gateway authenticates every request and routes it to the Sovos VAT Filing service. These steps follow a fixed sequence. Each step depends on the previous one completing successfully:

  1. Get the filing period for your company and country using specific identifiers.

  2. Register a transaction import for that filing period. The API returns a time-limited upload URL and an import ID.

  3. Upload your JSON transaction file to the upload URL using an HTTP PUT request.

  4. Poll the import status using the import ID until it reaches COMPLETED or FAILED.

  5. Download result files for the filing or import once processing finishes.

Tip:

Poll every 5 minutes after uploading your file.

External Partner API responses

Understand response fields, HTTP status codes, and subcodes to handle API responses in your code.

Every API response uses the same StandardEnvelope structure, whether the call succeeds or fails. Each response includes these fields:

Response elementTypeDescription
successbooleanA flag indicating whether the call succeeded. Always false for error responses.
statusintegerThe HTTP status code. Always equal to the HTTP status code of the response.
messagestringA short description of the outcome.
timestampintegerThe time of the response (Unix epoch ms).
uuidstring (UUID)A correlation ID for this response for support tracing.
dataobjectThe response payload.
errorsarray

An array of error details (ErrorItem object). Each item in the errors array has two properties message (string, required) and subCode (string, optional).

Always null for error responses.

Successful response example:

{
  "success": true,
  "status": 200,
  "message": "OK",
  "timestamp": 1776333600000,
  "uuid": "7c9e2f1a-4b3d-5e6f-7890-abcdef123456",
  "data": { ... },
  "errors": []
}

You can write one response handler for the entire API. Use the uuid field when you contact Sovos support to trace any call.

Note:

See API concepts for more on the standard envelope.

Date and timestamps

The External Partner API uses ISO 8601 and Unix epoch milliseconds format to manage the different date field types and timestamps.

ISO 8601 dates

The External Partner API uses ISO 8601 dates for the envelope IsoDate to note filing period date boundaries and date filters. startDate,endDate, dueDate, and their query parameter equivalents use this format.

  • Format: YYYY-MM-DD (UTC, no time component)

  • Example: 2019-03-12

startDate and endDate
Time boundary of the filing's reporting period.
dueDate
Deadline for submitting the filing to the tax authority.
expirationDate
Date when a presigned upload or download URL expires.

Timestamps

The API uses timestamps for the envelope timestamp (Unix epoch milliseconds, UTC) field and presigned URL expirationDate fields. expirationDate also appears as a query parameter on GET /filings, where it filters results by expiration timestamp rather than marking a URL's expiry.

  • Type: 64-bit integer (int64)

  • Example: 1776333600000

Important:

Using the wrong date format causes silent filtering errors or upload failures.

Pagination

Use pagination parameters to control how many results list endpoints return.

Use the page and pageSize query parameters to control which results you get.

ParameterDescriptionTypeDefaultMax
pageThe page number to return. Starts at 1.integer1-
pageSizeThe number of items per page.integer50500

Pagination response

Every paginated response includes a pageState object with these fields:

page
Current page number
perPage
Items returned on this page
totalPages
Total number of pages
totalEntries
Total number of records across all pages

Example of a paginated response:

"pageState": {
  "page": 1,
  "perPage": 50,
  "totalPages": 3,
  "totalEntries": 120
}

To get all records, iterate requests until page equals totalPages.

Filtering

Two endpoints support filtering: List VAT filings and List transaction imports. Add one or more filter parameters to your request to narrow the results. All filter parameters are optional.

Note:

Both endpoints also support pagination, which lets you control how many results a request returns.

Filing filters

Use these parameters on the List VAT filings endpoint:

ParameterDescriptionExample
companyIdReturns filings for this company only. Include it in most requests.078be7d7-a1c0-44f8-a2ca-5b23b370d242
countryReturns filings for this country name.Hungary
countryCodeReturns filings for this ISO 3166-1 alpha-2 country code.HU
returnTypeReturns filings for this return or report type.VAT
startDateReturns filings with a period start date on or after this date.2019-01-01
endDateReturns filings with a period end date on or before this date.2019-03-31
dueDateReturns filings with this due date.2019-03-12
expirationDateReturns filings with this expiration timestamp.1776333600000
Note:

See Date and timestamps for the date and timestamp formats these parameters use.

Transaction import filters

Use these parameters on List transaction imports:

ParameterDescriptionExample
companyIdReturns imports for this company only.078be7d7-a1c0-44f8-a2ca-5b23b370d242
importIdReturns only the import that matches this ID, if it's visible to your token.a1b2c3d4-e5f6-7890-abcd-ef1234567890
status

Returns imports with one of these statuses:

  • PENDING

  • PROCESSING

  • COMPLETED

  • FAILED

COMPLETED