API, request and reply
The caller needs an answer now: price, stock, credit or creating an order.
Thousands of records at once, or when the ERP throttles heavy traffic.
Business Central API v2.0, SAP Business One Service Layer, Epicor Kinetic REST.
Integrations that tell you when they break.
ERP integration connects your ERP to the bank, CRM, EDI partners, web store and 3PL through supported APIs, files and events, so data arrives once, in the right shape, and every failure reaches a person. QServices builds and runs those integrations for SYSPRO, Epicor, Dynamics, Sage, Infor and SAP Business One.
Through each ERP's own business logic. Never straight into its database.
ERP integration is the connection of an ERP system to the other systems a business runs, so that orders, invoices, payments, stock and customer data move between them automatically. A good integration uses the ERP's supported interfaces, handles duplicates and retries, reconciles what was sent against what arrived, and alerts a person when something fails.
Microsoft's integration guidance: message brokers deliver at least once, so every consumer must ignore duplicates, or it can double-charge a customer.Most companies need three or four of these. Mixing them is normal; picking the wrong one for a flow is what causes the pain.
The caller needs an answer now: price, stock, credit or creating an order.
Thousands of records at once, or when the ERP throttles heavy traffic.
Business Central API v2.0, SAP Business One Service Layer, Epicor Kinetic REST.
Banks, lockbox, older partners and nightly master data loads.
Anything that needs to be current within minutes.
BAI2 statements in, NACHA payment files out, with PGP encryption.
Retailers, distributors and 3PLs that trade in X12 or EDIFACT.
Partners who can't send EDI; read their emailed orders instead.
850 orders in, 855, 856 and 810 out, every 997 acknowledgement tracked.
Near real time without the cost of polling.
Relying on them alone. Shopify says delivery isn't always guaranteed.
Shopify orders, Business Central change notices, CRM updates.
Bursts of orders, or an ERP that goes down for maintenance.
Simple, low-volume flows where it only adds parts.
Azure Service Bus between the web store and the ERP, with a dead-letter queue.
End-of-day stock, GL summaries and anything where yesterday's number is fine.
Stock that blocks a pick, or credit decisions.
Nightly reconciliation of orders, invoices and cash between systems.
Direct SQL is for reading into reports only. Writing straight into ERP tables skips its business logic and isn't supported by the vendor.
Each bank has its own variant and its own channel, which is why each bank is its own small project. X9 itself notes that banks often ask clients to implement variations of the standard.
| Format | What it carries | Where you'll meet it |
|---|---|---|
| BAI2 / BTRS (X9.121) | Prior-day and intraday balances and transactions | Most US and Canadian banks; feeds cash application and bank reconciliation |
| ISO 20022 camt.053 / camt.054 | End-of-day statements and debit or credit notices | Europe; in the US, Fedwire, CHIPS, FedNow and RTP now run on ISO 20022 |
| ISO 20022 pain.001 / pain.002 | Payment instructions and their status | Wires and international payments |
| Nacha ACH (CCD, CTX) | US ACH payments, with remittance in CTX addenda | Supplier and payroll runs. Same Day ACH limit rises to $10M per payment on 17 Sep 2027 |
| X12 820 | Remittance advice | Customers who pay by ACH and send details separately |
| Positive pay | Issued cheques, for fraud checks | Any company still writing cheques |
From X9, Nacha and X12 documentation. Fedwire moved to ISO 20022 on 14 Jul 2025. Channels range from SFTP with PGP to bank APIs.
An integration nobody watches is a manual process waiting to happen. These are the checks every integration we build ships with.
One correlation ID from the source to the ERP, so a question like where did order 48211 go takes seconds, not an afternoon.
Failed runs go to email, Teams or your ticketing tool, with an owner. Expiring certificates, PGP keys and Business Central webhooks (3 days) are on the calendar too.
Every write carries an order, invoice or bank reference, so a resend can't post twice.
Azure Service Bus never cleans its dead-letter queue on its own, so we alert on the first message.
No bank file by 7 a.m. means someone hears about it at 7:01.
Counts and totals compared between systems, because pushes and webhooks get missed.
Every ERP has a different supported way in, and some are much thinner than others. That's the first thing we check.
Most integration budgets slip on the same few questions. Tick off what you already know.
Fixed price per phase. The monitoring and the runbook are part of the build, not an extra.
We list every flow, check your ERP's supported API and your partners' formats, and price each integration.
Your team decides the system of record for each kind of data and who handles exceptions.
API, file, EDI, event or queue per flow, on Azure Integration Services or Power Automate.
Duplicate checks, retries, a queue for anything that can't post, alerts and nightly reconciliation.
Banks and EDI partners test against your real files before go-live.
An AI agent can suggest the fix for a held EDI order or an unmatched payment. A person approves it.
Middleware and connector fees are separate. You get a fixed price per integration after the assessment.
List every flow with its direction, volume and how fresh it must be. Name the system of record for each kind of data, confirm your ERP's supported API and its limits, get your partners' format guides, and decide who owns errors before anything is built.
It depends on the number of systems and flows, how good your ERP's API is, real time or batch, data cleanup, and how many banks and EDI partners are involved. In our experience a simple connector costs a few thousand dollars and a full programme can reach six figures. We price each integration after a two-week assessment.
Ask for work on your exact ERP through its supported API, not database writes. Check their bank and EDI format experience, whether monitoring and a runbook are part of the build, who owns errors after go-live, and how middleware fees are shown.
Agree a channel with each bank, usually SFTP with PGP or a bank API. Bring statements in as BAI2 or camt.053 for reconciliation and cash application, send payments out as Nacha or pain.001 files from the ERP's payment run, and alert when a file doesn't arrive.
Decide which system owns customers, products, prices, orders, invoices and credit status, and which way each one syncs. Use a first-party connector where one exists, such as Business Central with Dynamics 365 Sales, otherwise an API or iPaaS, and match customers on a shared ID.
An EDI provider's translation service, or Logic Apps X12 actions with an integration account, turns X12 into data your ERP's API can take. Inbound 850s become sales orders, the ERP sends 855, 856 and 810 back, and every 997 acknowledgement is tracked so a missing one raises an alert.
Start with the flow that costs your team the most hours, and build the rest from there.
Facts on this page checked on 22 October 2026.

Founder and CEO

Chief Sales Officer
Join our live webinar on Sept 24 and see five
ways to automate meetings, approvals, and
document search with tools already in your
tenant.