Example Transaction Sequences
Post a Sale
Taxnexus invoice has certain specifications required for posting to the GL and for subsequent operations such as returns or reversals.
An important consideration is that the invoice items must represent the actual sales price of the item after all discounts. No discount information may be encoded in the invoice.
The other major requirement is that each invoice must be properly coded with the geocoodinates of the transaction, and the appropriate Sales Regulation and Taxnexus Code values.
Sales are recorded in Taxnexus by posting a Taxnexus-format invoice to an ingest endpoints. For example, when a new invoice is posted to Taxnexus the following things happen:
- A Taxnexus Ingest record is created and linked to all invoices in the POST.
- The invoice and the invoice items are inserted into the database.
- If BusinessAddress is invalid, the invoice is rejected.
- If InvoiceID field is null, a new UUID is assigned
- If InvoiceItemIDs are null, new UUIDs are assigned
- BusinessAddress is indexed in Taxnexus Situs, and applicable tax types are used to generate Taxnexus Tax Transactions.
- Tax Transactions are returned in the response to the POST.
- Invoice is totaled and the tax types are tabulated for bill presentment.
- Invoice is posted to GL using the “T” method.
- A new journal entry is created for each invoice item
- Separate journal items are generated for each applicable Accounting Rule (see below) for each tax transaction
Two separate-but-equal Taxnexus API endpoints post new invoices:
- POST /v1/invoices - Bulk invoice ingest; no taxes are returned
- POST /v1/taxes/invoices - Online invoice ingest; return tax transactions
Step #1 reads the POST and queues a separate process to perform the ingest function; no errors or taxes are returned. The InvoiceIDs are returned, and taxes are available asynchronously. The performance goal for #1 is less than 75ms for up to 100 invoices.
Step #2 inserts invoices online and returns the tax transactions as soon as they are available. Error codes are returned. The performance goal for #2 is about 100 ms for a single invoice.