A variance is only meaningful between the two. Comparing one side against itself always nets to zero.
Setup
Setup needs two credentials, and one of them has to come from Infor rather than from your own administrator.Confirm prerequisites
Your Nexus tenancy licenses Freight Pay & Audit, and freight invoices are actually flowing through it.
An Infor Nexus administrator who can manage users and access keys.
Your organization’s Infor Nexus data key — a 40-character string. If you do not have one, your administrator can request a production data key from Infor.
Ask Infor Nexus to create an OAuth Client Agent user
Raise a request with Infor Nexus support for an OAuth Client Agent user.Ask for the user to be scoped read-only for the freight invoice objects. Nexus sets create and edit rights per user in the User Profile’s Security Detail, so this has to be specified rather than assumed.
Generate the access key pair
Once the user exists, a Trade Admin can generate its keys. You need both halves:
- Access Key ID — the client identifier
- Secret Access Key — the secret
Add the connection in Duvo
On the Connections page, choose Infor Nexus and enter:
string
required
The Access Key ID from the OAuth Client Agent user.
string
required
The matching secret, shown once when the key was generated.
string
required
Your organization’s 40-character Infor Nexus data key.
string
Leave empty for production, or enter
training for the Infor Nexus training environment.The Data Key is separate from the access key pair and is sent on every request. Nexus rejects calls without it before it even looks at the access keys — so if you see an authentication failure, check the data key first.
Capabilities
List invoices
Read either side — carrier or expected — filtered by carrier SCAC or your own query expression, page by page. Paging has a limit worth knowing; see below.
Read one invoice in full
Fetch a single invoice with its charge lines: charge code, charge type, amount and currency for each line.
Key Benefits
- Both sides of the bill in one place — the carrier’s invoice and the expected invoice Nexus rated itself, so a difference is readable without exporting anything or joining two systems by hand.
- Charge-level detail, not just totals — every charge line arrives with its own code, amount and currency, which is the level any rate dispute is actually argued at.
- No portal exports to maintain — your agents read the invoices directly, so nobody is downloading spreadsheets on a monthly rhythm to keep a spend review current.
- Honest about what it found — every invoice list states which filters it covered and whether charge lines were included, so a summary built on it cannot quietly overclaim.
Works Well With
Google Sheets
Write charge lines into a spreadsheet for review. Lining the two sides up against each other needs a shipment reference present on both invoices, and a full read of each — see the limits below.
Microsoft Excel
Build a recurring freight-spend workbook from the charge lines, read one invoice at a time, rather than from portal exports.
Slack
Post what an agent found on the invoices it read — the charge codes and amounts — to the channel that handles carrier queries.
Microsoft Teams
Raise the same findings in the channel where freight and finance already talk.
Gmail
Draft the dispute to the carrier with the specific charge codes and amounts already filled in.
Microsoft Outlook
Send the same carrier correspondence from an Outlook mailbox.
What this connection cannot do
Charge lines are not internally re-rateable
Charge lines are not internally re-rateable
Each charge line carries a reported rate amount, a rate basis and a quantity alongside its amount. Those cannot be multiplied to re-derive the amount. In Infor’s own published samples the arithmetic does not hold, and the field Nexus calls a rate is labelled “Amount” in its own interface.Your agents get a trustworthy charge code, amount and currency per line. Re-rating against a contracted tariff needs that tariff from elsewhere.
Listing invoices does not return charge lines
Listing invoices does not return charge lines
A Nexus list query returns summary fields only, because the full objects are large, and a list row from Duvo never carries charge lines even when Nexus happens to include some. Each row reports how many charge lines Nexus returned for it, so a zero reads as “not returned”, not as “no charges”. Charge lines come from reading a single invoice.
Paging can skip a row
Paging can skip a row
Nexus orders the pages itself and publishes no ordering key, so a row can move across a page boundary while you page and never be returned. Every page that has a next page says so. De-duplicate on the invoice uid, and if completeness matters — it usually does on a freight audit — re-run the whole walk rather than trusting a single pass.Nexus does not always report a total for the query. When it does not, every non-empty page carries a
nextOffset and the walk ends on the first empty page, so a page shorter than your limit is not the end. Follow nextOffset until a page comes back empty before treating the set as complete; the tool says so in a note on those pages.Bill of lading numbers are usually empty
Bill of lading numbers are usually empty
Nexus’s invoice objects have bill of lading, booking and carrier reference fields, but they are empty in practice — these invoices are generated from the transport plan, so they key on the transport plan number and tender number instead.Every result lists which identifiers were actually populated, so your agents can pick a join that works on your data rather than one that silently matches nothing.
There is no incremental sync
There is no incremental sync
Nexus publishes no “changed since” filter on the invoice objects, unlike its shipment objects, and no date field on them is confirmed to be indexed, so narrowing by a date window may be refused outright. There is no reliable way to fetch only what changed: a scheduled read pages through the whole object with
offset, de-duplicates on the invoice uid, and compares against what it already stored.Nexus already audits these invoices itself
Nexus already audits these invoices itself
Where Freight Pay & Audit is live, Nexus compares the carrier’s invoice against its own expected invoice within a configured tolerance. Duvo adds value on what a tolerance match cannot see — differences inside the tolerance band, charges Nexus has no expected value for, and whether the expected value itself was built from current contract data.Worth setting expectations accordingly: this is a second opinion on an existing audit, not a first look at unexamined invoices.
No shipment or rate objects yet
No shipment or rate objects yet
This connection covers invoices. Nexus also exposes shipment objects (including the carrier’s chargeable weight, which matters for reweigh disputes) and contracted costs from its rating engine. Those are not wired up yet.
Troubleshooting
Authentication is rejected
Authentication is rejected
Two credentials can cause this, and they fail in a specific order. Check the Data Key first — Nexus rejects a call without it before considering the access keys. Then check the Access Key ID and Secret Access Key.Also confirm the keys belong to an OAuth Client Agent user. Keys from an HMAC Data API Agent User are a different credential type and will not work here.
Access is denied
Access is denied
The credentials are valid but the agent user is not entitled to the object. Check both the Freight Pay & Audit license and the user’s Security Detail in Nexus.
Everything returns empty
Everything returns empty
An unfiltered query that returns zero rows usually means the tenancy is not licensed for Freight Pay & Audit, rather than that there are no invoices. An unlicensed module reads as absent, not as empty. Confirm the license before widening filters.