ml-connector
Infor CloudSuiteTaxJar

Infor CloudSuite and TaxJar integration

Infor CloudSuite holds your sales orders, customers, and GL accounts. TaxJar calculates the sales tax rate for every transaction and reports to state tax authorities. Connecting them ensures every sale that leaves your ERP goes to TaxJar with the correct nexus region and exemption status, tax is calculated in real time at checkout, and your tax liability is reported accurately. ml-connector bridges the two APIs and keeps your tax and sales data in lockstep.

How Infor CloudSuite works

Infor CloudSuite is a cloud ERP family (SyteLine, Financials, Distribution, LN, M3) integrated via the ION API Gateway. It exposes customers, sales orders, items, GL accounts, and payment data through REST APIs authenticated with OAuth2 service account credentials. The ION API Gateway uses a per-customer base URL and tenant ID extracted from a .ionapi credentials file. CloudSuite publishes no webhooks, so transactions are read by polling the API for updates by modified date or status. M3 operations require a company number (CONO) parameter, and token lifetime is configured per tenant and may be as short as 1 hour.

How TaxJar works

TaxJar is a cloud sales tax compliance platform that accepts order transactions and refund transactions through REST APIs. Every API call requires an API key token in the Authorization header. TaxJar does not support OAuth2. The API is read-mostly for tax rate lookups and nexus regions, and write-once for transaction reporting; there is no transaction mutation or deletion endpoint, only POST for new orders and PUT to update an existing order if it already exists. Sandbox tokens are available for testing. TaxJar does not publish webhooks or support push events from merchants.

What moves between them

Infor CloudSuite order data flows into TaxJar in two directions. First, customer master records flow from CloudSuite to TaxJar to track exemption status and nexus regions. Second, sales orders flow from CloudSuite to TaxJar after fulfillment or at checkout, keyed by order ID. Tax rates and nexus status flow from TaxJar back to CloudSuite as reference data so orders are tagged with the correct tax category and GL account. The sync runs on a schedule tied to your fulfillment cycle, not in real time, because CloudSuite publishes no order-created events.

How ml-connector handles it

ml-connector stores both credential sets encrypted: the Infor .ionapi file containing the OAuth2 endpoint and tenant URL, and the TaxJar API key token. It authenticates to CloudSuite with OAuth2 Resource Owner Password Credentials, extracting the base URL and tenant ID from the .ionapi file per customer; every CloudSuite token is refreshed before expiry because the configured lifetime may be as short as 1 hour. It authenticates to TaxJar with the API key in the Authorization header. Because CloudSuite publishes no webhooks, ml-connector polls the customer and order APIs on a schedule you set. When an order is read from CloudSuite, ml-connector looks up the tax rate from TaxJar and posts the transaction; if TaxJar returns 422 (transaction exists), it updates the order with PUT instead. Every order is keyed by CloudSuite order ID so duplicate submissions do not create multiple records. Rate limits and retries are handled per API: CloudSuite returns 429 when the per-minute budget is exhausted, and TaxJar rate-limits per account tier. All transactions carry timestamps and full details in the audit log and can be replayed without re-keying.

A real-world example

A mid-sized e-commerce and manufacturing company runs Infor M3 for order management, procurement, and finance across multiple regions. Before the integration, after each order was fulfilled, the finance team manually looked up the tax rate for the customer's state and entered the tax amount in the GL, then submitted a spreadsheet to the tax accountant monthly for nexus and reporting. Audit findings showed the tax liability was understated in high-nexus states because manual entry missed out-of-state orders. With CloudSuite and TaxJar connected, every order is automatically classified by nexus on fulfillment and posted to TaxJar, tax is calculated in real time, and the accountant receives accurate transaction feeds daily instead of a monthly spreadsheet.

What you can do

  • Read customers from Infor CloudSuite and sync exemption status and nexus regions to TaxJar.
  • Poll CloudSuite sales orders on a schedule and post them to TaxJar with the correct tax category and customer.
  • Look up tax rates from TaxJar and post the transaction if it does not exist, or update it with PUT if it was already reported.
  • Authenticate Infor CloudSuite with OAuth2 and the per-customer base URL from the .ionapi credentials file, and TaxJar with an API key token.
  • Keep a complete audit trail of every order, tax calculation, and API error, with full replay capability if a transaction fails.

Questions

How does ml-connector know the Infor CloudSuite base URL and tenant ID?
CloudSuite does not publish a shared API hostname. The base URL, tenant ID, and OAuth2 token endpoint are all provided in a per-customer .ionapi credentials file that you upload to ml-connector during setup. ml-connector extracts these values and uses them to construct the REST API calls to ION.
Why does the integration poll instead of waiting for webhooks from CloudSuite?
Infor CloudSuite does not publish webhooks or events to external endpoints. ION BOD subscriptions exist but require manual configuration in ION Desk by an admin and do not expose a programmable API. ml-connector polls the customer and order list endpoints on a schedule you define, keyed by modified date or status, so you control the sync frequency.
What happens if TaxJar receives the same order twice?
TaxJar returns HTTP 422 if an order with the same ID is posted a second time. ml-connector catches the 422, looks up the order by ID with PUT to update it instead, and records both attempts in the audit log so you can see exactly what happened and replay the transaction if needed.

Related integrations

Connect Infor CloudSuite and TaxJar

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started