Balian.dev
St. Paul, MN · remote Book a call

Blog

If it has an API, I can connect it

Clients ask whether I work with their ERP, their CRM or their EDI provider. The answer is the same every time: if the system has a proper API, yes. Here is what that means and which systems have one.

The question arrives in the first ten minutes of almost every call. “Do you work with NetSuite?” “Our CRM is Zoho, is that a problem?” “We do EDI through SPS Commerce, can you handle that?” People expect the answer to depend on the brand. It does not. It depends on whether the system has a proper API, and nearly every system a business would pay for today has one.

I have spent a good part of twenty years wiring stores and websites into whatever the client already ran: ERPs, accounting systems, Salesforce, HubSpot, TrueCommerce EDI, Avalara, a dozen payment and shipping providers. The brand changes. The work does not. Read the documentation, get a sandbox, map the records, write the sync, log everything, hold the ambiguous cases for a person.

What “a proper API” means

Vendors all claim to have an API. Here is what I check before I say yes.

What I look forWhy it matters
Documented endpoints for the records you care aboutIf orders are readable but customers are not, half the job is impossible
A way to write as well as readPlenty of “integrations” are read-only exports with a logo on them
Authentication a server can use without a person logging inOAuth with refresh tokens or API keys. Anything that needs a browser session will break at 3am
Webhooks or a reliable way to ask “what changed since”Otherwise the sync polls everything, which is slow, expensive and eventually rate-limited
A sandboxYou do not test against the live ledger
Rate limits you can live withFine for most. A problem for catalogs with tens of thousands of items and a vendor that allows one call a second
StabilityVersioned, with deprecation notices. Some vendors change things on a Tuesday

If a system fails most of these, it can still be connected, but the honest answer changes from “yes” to “yes, with a workaround”, and I say which one.

The systems I get asked about

This is not a complete list. It is the ones that come up, with a one-line note on what the connection actually looks like.

KindSystemsNotes
ERPNetSuite, Sage 100, Sage Intacct, Sage X3, Microsoft Dynamics 365 Business Central and Finance, SAP Business One, SAP S/4HANA, Acumatica, Epicor, Infor, OdooNetSuite, Acumatica, Business Central, Intacct and Odoo have good modern APIs. SAP Business One goes through its Service Layer. Sage 100 is the odd one: it is a desktop product, so the connection goes through its own API or ODBC on a machine that can reach it, and I have done both
AccountingQuickBooks Online, QuickBooks Desktop, Xero, FreshBooks, Bill.comQuickBooks Online and Xero are straightforward. QuickBooks Desktop needs the Web Connector or a middleware service, which works but is a different kind of project
CRMSalesforce, HubSpot, Zoho, Pipedrive, Dynamics 365 Sales, Copper, CloseAll fine. Salesforce and HubSpot are the deepest and the most particular about limits and object models
EDITrueCommerce, SPS Commerce, Cleo, Orderful, direct X12 or EDIFACT over AS2 or SFTPThe providers give you an API or a document drop; direct EDI means I parse and produce the documents myself. Both are routine. The hard part is always the trading partner’s own rules
CommerceShopify, WooCommerce, BigCommerce, Magento, Squarespace, WixShopify and WooCommerce are excellent. BigCommerce is good. Magento is capable and heavy. Squarespace and Wix are limited, and I say so
Payments and taxStripe, PayPal, Authorize.net, Braintree, Avalara, TaxJarAmong the best APIs in the industry. Rarely the problem
ShippingShipStation, EasyPost, Shippo, UPS, FedEx, USPSThe aggregators are easy. The carriers’ own APIs are workable and change more often than you would like
Marketing and supportKlaviyo, Mailchimp, ActiveCampaign, Zendesk, Intercom, FreshdeskAll fine
Everything elseGoogle Workspace, Microsoft 365, Slack, Jira, Asana, Airtable, Notion, your own databaseIf it stores records and exposes them, it goes on the list

If your system is not here, ask. The answer is usually still yes.

When the API is bad

Some systems are old, or locked down, or the vendor charges extra for the API and you have not paid. The order of fallbacks, worst last:

  1. A database or ODBC connection, where the vendor allows it. Common with on-premise ERPs.
  2. Scheduled file exports and imports, CSV or XML, picked up and processed by a job. Unfashionable and reliable.
  3. A vendor’s own middleware or a connector marketplace, when a well-kept one exists for your exact pair of systems.
  4. Driving the vendor’s screens with automation. The last resort, because it breaks when they move a button, and I will tell you it will break.

What I actually build

The brand of the system is the smallest part of the job. The work that makes an integration trustworthy is the same every time: a data map that says which system owns the truth for each field, rules for what syncs and in which direction, validation before a record moves, a log of every move, retries when the other side is down, and a review queue for records that do not fit the rules so a person decides instead of a guess. That last part is where most integrations I inherit have gone wrong. They guessed.

The process for this is on the process page. It starts small on purpose: one direction, one record type, watched for a week, then the next.

So bring the system you have. If it has a proper API, I can connect it. If it does not, I will tell you what it will take.

Want a second opinion on what you are paying for?