ml-connector
Infor CloudSuiteBILL

Infor CloudSuite and BILL integration

Infor CloudSuite runs your ERP and finance. BILL runs vendor payments and bill approval. Connecting the two lets the supplier invoices already approved in Infor CloudSuite become payable bills in BILL without re-keying, and lets the payment result come back so the Infor ledger reflects what cleared. Suppliers stay aligned across both systems, and each bill line lands on a GL account that exists in both. ml-connector handles the two very different authentication models and moves the records on a schedule you control.

How Infor CloudSuite works

Infor CloudSuite exposes suppliers, supplier invoices, purchase orders, GL accounts, and payments through the ION API Gateway, a REST surface reached at a tenant-specific URL embedded in the customer's .ionapi credentials file. Authentication is OAuth2 using the resource owner password grant, combining the registered app client credentials with a service account access key and secret, and the bearer token expires in one to twenty-four hours. M3 sites use transaction-style API programs such as APS100MI for invoices and CRS620MI for suppliers, while LN and FSM use BOD documents. Infor has no self-service webhooks, so records are read by polling unless an admin configures an ION Desk document flow.

How BILL works

BILL exposes vendors, bills, payments, customers, invoices, and a chart of accounts through its REST v3 API at gateway.prod.bill.com. Authentication is a session token, not OAuth2: a login call with the developer key, organization ID, and user credentials returns a sessionId used as a header on every request, and it expires after thirty-five minutes of inactivity or up to forty-eight hours on a sync token. BILL is AP and AR focused and does not support purchase orders, so PO data stays in Infor and arrives in BILL as bills. BILL also pushes real webhooks for bill and payment events, signed with HMAC-SHA256 in the x-bill-sha-signature header.

What moves between them

The main flow runs from Infor CloudSuite into BILL. Suppliers approved for payment in Infor are created or updated as BILL vendors, and supplier invoices that have cleared Infor approval are created as BILL bills with their line items mapped to the matching GL accounts. Payment status flows the other direction: once a bill is paid in BILL, ml-connector reads the payment record and posts the paid status, amount, and date back against the corresponding Infor AP invoice. GL accounts and dimensions are aligned so every bill line references an account present in both systems. Purchase orders stay in Infor because BILL has no PO concept.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Infor side it accepts the full .ionapi field set per customer, requests an OAuth2 bearer token with the password grant, and refreshes the token proactively before its one to twenty-four hour expiry rather than waiting for a 401. On the BILL side it performs the session login per organization and re-authenticates when a call returns an auth error, since BILL signals an expired session as a generic auth failure rather than a clear code. Suppliers and GL accounts are mapped first so every bill it creates references a BILL vendor and chart-of-accounts entry that already exist. Because Infor has no webhooks, approved invoices are pulled on a schedule using list programs like APS100MI filtered by status, while BILL payment events arrive by webhook and are verified against the HMAC-SHA256 signature before processing. Neither system has native idempotency, so ml-connector checks for an existing record by external ID before each create to avoid duplicate vendors or bills. BILL allows only three concurrent calls per organization, so requests are throttled and backed off on the BDC_1144 and BDC_1322 rate-limit codes.

A real-world example

A mid-sized professional services firm of around two hundred staff runs Infor CloudSuite Financials for its general ledger and procurement, and pays vendors through BILL because of its approval routing and ACH payments. Before the integration, the AP clerk re-typed every approved supplier invoice from Infor into BILL by hand, then later updated each Infor invoice with the payment date and reference pulled from BILL reports. With Infor CloudSuite and BILL connected, approved invoices move into BILL as bills automatically with the right GL coding, and the payment result flows back so the Infor ledger shows what was paid without anyone reconciling two screens. The double entry and the end-of-month payment chase are gone.

What you can do

  • Create approved Infor CloudSuite supplier invoices as bills in BILL with line items coded to the matching GL accounts.
  • Keep BILL vendors aligned with Infor CloudSuite suppliers so bills always reference a known payee.
  • Read BILL payment status, amount, and date back into the Infor CloudSuite AP ledger after a bill is paid.
  • Bridge the Infor OAuth2 bearer token and the BILL session login, refreshing each before it expires.
  • Poll Infor on your schedule while taking BILL payment events by signature-verified webhook.

Questions

Which direction does data move between Infor CloudSuite and BILL?
The main flow is Infor CloudSuite into BILL. Suppliers and approved supplier invoices move from Infor into BILL as vendors and bills, while payment status moves back from BILL into the Infor AP ledger once a bill is paid. Suppliers and GL accounts are aligned so every bill line references an account that exists in both systems.
How does the integration handle two different login methods?
Infor CloudSuite uses OAuth2 with a service account from the .ionapi file, while BILL uses a session token from a login call with the developer key and organization ID. ml-connector stores both credential sets encrypted, refreshes the Infor bearer token before its one to twenty-four hour expiry, and re-runs the BILL login when a call returns an auth error, since BILL reports an expired session as a generic auth failure.
Can purchase orders sync into BILL?
No. BILL is AP and AR focused and has no purchase order concept, so PO data stays in Infor CloudSuite. Purchase orders are managed and received in Infor, and only the resulting approved supplier invoices are pushed into BILL as bills for payment.

Related integrations

Connect Infor CloudSuite and BILL

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

Get started