How can we help?

Show Page Sections

About Sovos application responses

Application responses communicate document processing status through multiple status codes that describe your document's journey through the Sovos platform and tax authority systems.

Application responses are formatted in UBL 2.1 and carry status updates and attachments, such as cleared invoices, generated PDFs, or tax authority messages.

Where application responses appear

The Indirect Tax API returns application responses as Base64-encoded strings in the content field of the response in the following cases:

MethodEndpointDescription
POST/documentsDocument creation. Returns an application response only when you specify one business scope (for example, mapping) in the new document (synchronous).
GET/documents/{countryCode}/{documentId}/notificationsReturns all notifications for a given document.
GET/notifications/{countryCode}Lists notifications pending acknowledgment for a given country.
GET/notifications/{countryCode}/{notificationId}Retrieves a specific notification.

Response codes and status reason codes

Each application response contains one Sovos response code and several status reason codes that provide document status and help determine when further action is required.

The following response code and status reason codes can appear in the application response:

CodeCode typeDisplay frequencyDescription
SCIResponseCodeResponse codeAlwaysShows the overall compliance status of the document.
SCICloudStatusCodeStatus reason codeAt least onceProvides more specific information about the status of the document and helps you understand why the document received a particular SCIResponseCode.
SCIGovtStatusCodeStatus reason codeIn some casesComes from the tax authority of the relevant market.
SCIStatusActionStatus reason codeIn some casesInforms you when additional action is required.
SCIInternalValidationStatus reason codeIn some casesInforms you when Sovos detects validation errors for market-specific validation. Shows the fields in the document that need to be fixed.
Note:

The system performs schema validation sequentially, from top to bottom, according to the structure of the schema (XSD) for the applicable market. Validation stops and returns an error as soon as it finds a mandatory field, so no further validation is performed on the remaining fields.

SCIResponseCode (primary)

SCIResponseCode is a two-letter response code that is always included in the application response. It provides the overall compliance status of a document, the primary processing logic for implementers, and indicates whether a document has been processed successfully.

This is the most important status element within the application response. Base your primary decision logic on this code.

SCICloudStatusCode (detailed)

SCICloudStatusCode is a unique three-digit status code that provides additional status information for the SCIResponseCode. This code appears one or more times in the application response.

SCICloudStatusCode provides specific information about which processing stage completed or failed, giving you context for the SCIResponseCode.

Elements:

  • StatusReason — Explains what the status code means.
  • Text — May be included to offer more in-depth details.

SCIGovtStatusCode (tax authority)

SCIGovtStatusCode comes directly from the tax authority of certain countries. Sovos collects the tax authority response and passes along the raw error message to the calling application or customer.

This code offers similar information to the Sovos-generated SCIResponseCode and SCICloudStatusCode. However, it is usually accompanied by a local language rationale for the error, such as:

  • Address field format is invalid
  • Tax ID length is incorrect
  • Duplicate invoice number
  • Invalid tax calculation

Elements:

  • StatusReason - Explains what the status code means (often in local language).
  • SequenceID - May be included to represent the legal tracking ID provided by the tax authority.
Tip:

For a comprehensive list of government status codes, go to the corresponding tax authority's website. Your country-specific implementation guide covers links to official tax authority error code documentation.

SCIStatusAction (action required)

SCIStatusAction is a three-letter status code based on SCIResponseCode. It identifies any additional required action and is included at least once in every application response.

SCIInternalValidation (validation errors)

SCIInternalValidation is a code that identifies country-specific schema validation errors. This code highlights the specific field or node that is causing validation errors so you can review and correct them.

When the Sovos validation service detects market-specific validation errors in the document, SCIInternalValidation appears in the application response showing exactly which fields need to be fixed.

Sample application response

A sample application response shows how status codes appear together in a single XML response.

<ApplicationResponse>
  <cac:DocumentResponse>
    <cac:Response>
      <!-- PRIMARY: Overall status -->
      <cbc:ResponseCode listID="SCIResponseCode">AP</cbc:ResponseCode>
      
      <!-- DETAILED: Sovos processing status -->
      <cac:Status>
        <cbc:StatusReasonCode listID="SCICloudStatusCode">200</cbc:StatusReasonCode>
        <cbc:StatusReason>Authorized by the tax authority</cbc:StatusReason>
      </cac:Status>
      
      <!-- TAX AUTHORITY: Government response -->
      <cac:Status>
        <cbc:StatusReasonCode listID="SCIGovtStatusCode">S100</cbc:StatusReasonCode>
        <cbc:StatusReason>Invoice authorized. Number: 278754</cbc:StatusReason>
        <cbc:SequenceID>278754</cbc:SequenceID>
      </cac:Status>
      
      <!-- ACTION: What to do -->
      <cac:Status>
        <cbc:StatusReasonCode listID="SCIStatusAction">NOA</cbc:StatusReasonCode>
        <cbc:StatusReason>No action required</cbc:StatusReason>
      </cac:Status>
    </cac:Response>
  </cac:DocumentResponse>
</ApplicationResponse>

You receive all of these status codes in a single response. Check them in order to understand the complete status.

How status codes work together

Status codes work together to tell the complete story of your document's processing status.

Reading the complete story

Step 1: Check SCIResponseCode first
This tells you the overall outcome:
CodeNameMeaningNext action
APAcceptedDocument approvedCheck SCICloudStatusCode for details, proceed with delivery.
RERejectedDocument rejected or errorCheck SCICloudStatusCode and SCIGovtStatusCode for reason, fix, and resubmit.
IPIn ProcessStill processingContinue polling.
CAConditionally AcceptedAccepted with conditionsCheck SCIGovtStatusCode for conditions.
ABAcknowledgementReceipt acknowledgedContinue polling.
Step 2: Check SCICloudStatusCode for specifics
This tells you which processing stage completed and provides the detailed explanation:
Important:

209 means "Workflow complete," not "Success." Check SCICloudStatusCode, StatusReason or SCIStatusAction for more information.

Step 3: Check SCIStatusAction
This tells you what action to take:
Tip:

The tax authority's raw response code and message, often in local language, are available in SCIGovtStatusCode . Use SCICloudStatusCode and StatusReason to drive your primary decision logic. Sovos has already interpreted the tax authority response so you get clear, actionable status information.

Interpreting combined status codes

Scenario 1: Document successfully authorized
SCIResponseCode: AP
SCICloudStatusCode: 200
StatusReason: "Invoice authorized by tax authority"
SCIStatusAction: NOA

Document authorized by tax authority. No further action needed.

Scenario 2: Document rejected
SCIResponseCode: RE
SCICloudStatusCode: 400
StatusReason: "Tax authority rejected: Invalid tax ID format"
SCIStatusAction: NIN

Tax authority rejected the document due to invalid tax ID. Fix the tax ID and submit a new invoice. Sovos has translated the tax authority's rejection reason into clear English.

Scenario 3: Still processing
SCIResponseCode: IP
SCICloudStatusCode: 105
StatusReason: "Tax authority is processing the document"
SCIStatusAction: NOA

Document transmitted, tax authority is processing. Continue polling for final status.

About document attachments

Application responses for authorized and completed documents typically include attachments such as cleared invoices and PDF renderings.

Application responses for status 200 (document.authorized) and 209 (workflow complete) typically include the following document attachments:

  • LegalCleared - Country-specific format with tax authority clearance metadata.
  • PDF - PDF rendering (if configured).

These attachments provide the cleared invoice and proof of authorization.

Processing multiple notifications

You may receive multiple notifications for a single document as it progresses through processing stages. Each notification represents an event or milestone.

Use documentId to correlate notifications.

Processing order

Use timestamps to process in chronological order. Notifications may arrive out of sequence. Use the createdAt timestamp to order notifications chronologically and track progression.

Track progression using SCICloudStatusCode:
  • 100 > 101 > 104 > 105 > 200 (successful authorization)
  • 100 > 101 > 400 (rejected)

Implement idempotent processing. Each notification has a unique notificationId. Track which notifications you have processed to avoid duplicate handling.

Determining final document status

The most important status element is the SCIResponseCode. A document is complete when you receive one of the final SCI response codes (AP, RE, or CA).

When you have multiple notifications, apply the following status code priority for final determination:
  1. Highest priority: document.cancelled (201) — If a document was authorized then cancelled, the cancellation takes precedence.
  2. Next: document.authorized (200) — Authorization status indicates tax authority approval.
  3. Then: Rejection codes (400-404) — If no authorization or cancellation, check for rejection status.
  4. Finally: In Process (IP) — If none of the previous conditions apply, the document is still processing.

Valid status code combinations

Not all status code combinations are valid. Understanding which combinations can occur helps you implement correct response handling logic.

Valid combinations
SCICloudStatusCodeSCIResponseCodeScenario
100-105IPProcessing stages
200AP or CAAuthorization (standard or conditional)
201APCancellation successful
202REUse denied
207APPDF created
208ABArchived
209APWorkflow completed (check other status codes for outcome)
400RERejected
401REProcessing error
500-504RESystem or network errors
Invalid combinations
If you observe any of the following combinations, it indicates a problem that you should report to Sovos:
SCICloudStatusCodeSCIResponseCodeWhy invalid
200REAuthorization cannot be rejected.
400APRejection cannot be accepted.
201RECancellation cannot be rejected.

If you see invalid combinations in your application responses, flag them as problems. This helps Sovos identify and fix system problems.

Reference: SCIResponseCode values

SCIResponseCode is a two-letter response code that provides the overall compliance status of a document.

CodeNameDescriptionTerminal?
APAcceptedDocument accepted or workflow successfulYes
RERejectedDocument rejected or processing failedYes
CAConditionally AcceptedAccepted with conditionsYes
IPIn ProcessProcessing ongoingNo
ABMessage AcknowledgementReceipt acknowledgedNo
UQUnder QueryProcessing halted pending responseNo
PDPaidPayment completedYes

Terminal codes (AP, RE, CA) indicate final status. Non-terminal codes (IP, AB, UQ) mean continue polling.

Reference: SCICloudStatusCode values

The following table provides the complete reference for all status codes across all markets. Only a subset of these status codes are used in each country or region. Your country-specific implementation guide covers which status codes apply to your market.

CodeEventSCIResponseCodeDescription
100 series — Processing stages
100document.receivedIPDocument received by SovosSovos
101document.mappedIPTransformed to Sovos Canonical InvoiceSCI
102document.validatedIPSchema validation passed
103document.signedIPDigital signature applied
104document.transmittedIPSent to tax authority
105document.processingIPTax authority processing (may repeat)
106document.processingInternallyIPSovos internal processing
107action.receivedABAction request received
108document.processingByRecipientIPBuyer processing document
200 series — Success or completion
200document.authorizedAP or CATax authority authorized document
201document.cancelledAPDocument canceled successfully
202document.deniedREUse denied by tax authority
203document.acceptedByRecipientAPBuyer accepted document
204document.distributedABDelivered to recipient
205document.printedABDocument printed
206document.finalizedAPDocument finalized
207document.pdf.createdAPPDF generated
208document.archivedABStored for compliance
209workflow.completedAPWorkflow finished — check other status codes for outcome
210document.approvedAPApproved by counterparty
212document.commerciallyRejectedAPRejection acknowledged
213document.paymentSentByRecipientABPayment sent by the buyer
214document.validatedByRecipientPlatformABValidated by the buyer platform
215document.madeAvailableToRecipientABMade available to the buyer
216document.acknowledgedByRecipientAPBuyer acknowledged receipt
217document.partiallyAcceptedByRecipientCAPartially accepted by the buyer
218document.disputedByRecipientIPDisputed by the buyer
219document.suspendedByRecipientIPSuspended by the buyer
220document.paymentReceivedAPPayment received
221document.endorsedIPDocument endorsed
222document.continuedIPContinue request accepted/acknowledged by the tax authority
223document.hearingRequestedIPHearing request accepted/acknowledged by the tax authority
225document.conditionallyAcceptedByRecipientCAConditionally accepted by the recipient
226document.queryAPQuery response received
227document.qrcode.createdIPQR code created
228document.reportAcceptedByTaxAuthorityABReport accepted by the tax authority
229document.receivedSuccessfullyByTaxAuthorityABReceived successfully by the tax authority
231document.reportSubmittedToTaxAuthorityABReport submitted to the tax authority
232document.submittedToTaxAuthorityABDocument submitted to the tax authority
233document.madeAvailableToTaxAuthorityABDocument made available to the tax authority
234document.reportNotReceivedByTaxAuthorityABTax authority did not receive report notification
235document.reportReceivedByTaxAuthorityABReport received by the tax authority
400 series — Document errors
400document.rejectedRETax authority rejected document
401document.errorREError processing document
402document.notFoundREDocument not found
403document.cancellationRejectedRECancellation request denied
404document.processedPreviouslyREDocument already processed
405document.rejectedByRecipientREBuyer rejected document
406document.alreadyInProgressREDuplicate submission detected
407document.reportRejectedByTaxAuthorityRETax authority rejected report
408document.recipientNotFoundRERecipient not registered on the United Arab Emirates (UAE) PEPPOL network
409document.recipientUnreachableRERecipient registered on the UAE PEPPOL network but unreachable
410document.signingFailedREDigital signature failed
500 series — System errors
500system.errorREInternal system error
501taxAuthority.unavailableRETax authority service down
502request.invalidParametersREInvalid input parameters
503request.invalidCredentialsREAuthentication failed
504process.TimeoutREProcessing timeout
505system.errorREPDF document generation failed
Tip:

Sovos automatically retries 5xx errors. Continue polling with the document processing status parameter. 505 shares the system.error event with code 500, so subscribing to system.error gives you notifications for both.

5xx notifications guidance

A 5xx notification with sciResponseCode=RE indicates a transient processing problem. It doesn't override or invalidate a previously received positive notification (for example, 200/AP).

Use the following guidance when your integration receives a 5xx notification:

  • If you already got a positive compliance notification such as 200/AP for authorization, the document's tax authority status remains valid. The 5xx indicates a downstream processing step had a problem. Sovos retries automatically.

  • If you subscribe to later lifecycle events such as 207 (PDF Created) or 209 (Workflow Completed), keep polling. You get those notifications when retries succeed.

  • Treat a 5xx notification as a terminal failure only if no later positive notification arrives within the configured retry window.

Important:

Don't treat sciResponseCode=RE on a 5xx event as the final document status. Always use the highest-priority positive notification you've received as the authoritative document state.

Reference: SCIStatusAction values

SCIStatusAction is a three-letter status code that identifies any additional required action.

CodeNameMeaning
NOANo ActionProcessing complete or progressing normally
NINNew Invoice NeededFix errors and resubmit
OTHOtherYour country implementation guide covers specific guidance for this code