SAP Business One and BILL integration
SAP Business One runs your financials and purchasing. BILL handles vendor payments and accounts payable workflows. Connecting the two lets approved purchase invoices in SAP Business One become payable bills in BILL without re-keying, and brings the payment result back into the SAP B1 ledger once a bill is paid. Vendors stay aligned across both systems, and GL accounts and cost centers are mapped so each bill line lands on a valid account. ml-connector handles the different APIs on each side and moves the data on a schedule you control.
What moves between them
The main flow runs from SAP Business One into BILL. ml-connector reads approved purchase invoices from SAP B1 and creates them as bills in BILL for payment, and keeps vendor records aligned so each bill references a vendor that exists on both sides. Once a bill is paid in BILL, the payment status and amount flow back into SAP Business One as outgoing payments applied against the matching purchase invoice, so the ledger reflects what was actually paid. GL accounts and cost centers are mapped to BILL chart of accounts and departments so every bill line is coded correctly. Purchase orders stay in SAP B1 because BILL has no purchase order object.
How ml-connector handles it
ml-connector stores both credential sets encrypted and authenticates each side on its own model: it logs in to SAP Business One to get a B1SESSION cookie and re-authenticates when a call returns the -5002 session-expiry code, and it logs in to BILL for a sessionId and re-logs on a 401 since BILL reports expiry as a plain auth error. The full SAP B1 Service Layer base URL is taken per customer because there is no shared hostname, and on-premise instances may need a custom CA or port access. GL accounts and cost centers are mapped first so vendor and SAP B1 PurchaseInvoice lines land on valid BILL accounts and departments. Because SAP B1 webhooks usually are not configured, ml-connector polls SAP B1 for new and updated purchase invoices on a schedule, while inbound BILL webhooks signed with HMAC-SHA256 (x-bill-sha-signature) are verified to drive payment status updates back into SAP B1. BILL allows only three concurrent requests per org, so calls are queued and backed off on rate-limit codes, and since neither API offers idempotency keys, ml-connector checks for an existing bill or payment by document number before creating one. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized distribution company with roughly 150 employees runs SAP Business One for purchasing, inventory, and finance, and adopts BILL to centralize vendor payments and approvals. Before the integration, the AP team exported approved supplier invoices from SAP B1 and re-entered each one into BILL to schedule payment, then manually marked the invoices as paid back in SAP B1 once the funds went out. With SAP Business One and BILL connected, approved purchase invoices flow into BILL as bills automatically, coded to the right GL accounts and departments, and the payment confirmation posts back to SAP B1 as an outgoing payment. The double entry is gone and the ledger stays current with what BILL has actually paid.
What you can do
- Create approved SAP Business One purchase invoices as payable bills in BILL without re-keying.
- Keep vendor records aligned between SAP Business One BusinessPartners and BILL vendors.
- Post BILL payment status back into SAP Business One as outgoing payments applied to the matching purchase invoice.
- Map SAP B1 GL accounts and cost centers to BILL chart of accounts and departments so each bill line is coded correctly.
- Authenticate the SAP B1 session cookie and the BILL session token, with retries and a full audit trail on every record.
Questions
- Which direction does data move between SAP Business One and BILL?
- The main flow is SAP Business One into BILL. Approved purchase invoices and vendors move from SAP B1 into BILL as bills and vendors for payment. Once a bill is paid, the payment status flows back into SAP Business One as an outgoing payment applied to the matching invoice, so the ledger reflects what was paid.
- What happens to purchase orders, since BILL does not support them?
- Purchase orders stay in SAP Business One. BILL is accounts-payable focused and has no purchase order object, so ml-connector pushes approved purchase invoices into BILL as bills rather than POs. The ordering and receiving workflow continues in SAP B1, and only the payable document and its payment status move between the two systems.
- How does the integration handle SAP Business One's session login and lack of webhooks?
- ml-connector logs in to the Service Layer for a B1SESSION cookie, reuses it across requests, and re-authenticates when SAP B1 returns the -5002 expiry code. Because SAP B1 webhooks require server-side admin setup that most sites do not have, it polls SAP B1 for new and updated purchase invoices on the schedule you set rather than waiting for a push.
Related integrations
More SAP Business One integrations
Other systems that connect to BILL
Connect SAP Business One and BILL
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started