I will build a pos, erp or shopify API integration and data sync
About this gig
Your sales, stock and orders live in a POS, ERP or Shopify store that doesn't talk to anything else. I connect it to a database or spreadsheet on a schedule, and show you the numbers match.
What you get:
- A scheduled sync from REST, GraphQL or SOAP APIs into PostgreSQL, Google Sheets or CSV
- Safe re-runs with no duplicate rows, plus automated tests
- A reconciliation report against your own totals (Standard and Premium)
- History backfill, alerts when a sync stalls, and a runbook (Premium)
Not included: writing data back into other apps, dashboards, cleaning your source data, vendor fees. Ask me for a custom offer.
How it works: I check access, map the fields, build, backfill, reconcile, schedule and hand over.
Relevant work: I built the production syncs behind an ERP used by two clients, a multi-store apparel retailer and an auto dealer network, including a legacy SOAP POS and dealer API feeds. I also extracted years of sales history from a legacy SOAP API.
Get to know Juan Manuel D.
AI Agents, Demand Forecasting and ERP Integrations
- FromSpain
- Member sinceJun 2020
- Avg. response time1 hour
Languages
English, Spanish
My Portfolio
Other Software Development Services I Offer
FAQ
Which systems can you connect?
Most POS, ERP, dealer systems or stores with a REST, GraphQL or SOAP API. I built production syncs from an apparel retailer's POS/ERP and a dealer network's feeds (lead engineer, 3-person team), most of a Last app POS integration, and Shopify Admin API product search. No API? An export can work.
What does the reconciliation report check?
Synced counts and totals are compared with a report you trust, like daily sales per store, and every mismatch is listed (Standard, Premium). Every package logs row counts per run and flags an empty run as partial instead of passing it quietly.
Will re-running the sync create duplicate rows?
No. Rows are upserted on the source system's own IDs, and I test that a re-run over the same dates changes nothing. Re-running my import of an apparel retailer's production orders from a spreadsheet was verified as a no-op.
My vendor's API is slow or rate-limited. Can you handle it?
Yes. Requests are spaced out and retried when the vendor says to slow down, and history loads in slices that resume after a crash. My extractor for an apparel retailer's SOAP-only POS spaced its calls, retried with backoff and resumed after crashes while pulling years of sales history.
Who owns the code, and where does it run?
You do. The code goes into a repository you own and runs on your server, your cloud account or a free-tier scheduler in an account you own. I keep no access after delivery unless you ask me to monitor it.
Do you use AI tools to write the code?
Yes. AI coding agents draft parts of the sync, and I review each change myself. Every sync ships with automated tests, a CI check and a re-run test that proves no duplicate rows. If your contract rules out AI tools, say so before ordering and I'll follow it.
Can this data feed demand forecasts or a chatbot later?
Yes, that's often the next step. The same clean sales and stock data can feed per-store forecasts and reorder points, or a chatbot that answers stock and order questions. Each is scoped separately.
What do I get at delivery?
The code in a repository you own, automated tests and a README (Basic) or runbook (Standard, Premium). Standard and Premium add the reconciliation report; Premium adds stale and empty-run alerts, a recorded walkthrough and 30 days of fixes.
Can you push stock or orders into Shopify or another app?
The packages pull data one way into a database, sheet or CSV. Pushing into another app, or two-way sync, depends on that app's API and on which system wins a conflict, so I scope it as a custom offer after checking both APIs.
How long does a history backfill take?
It depends on the vendor's rate limit, which I measure in the access check. If a long backfill can't finish within the delivery time, you get the working sync on time and the backfill keeps running, resuming where it stopped, until it completes.

