Integration

Integration in Cambodia.

We stitch your ERP, bank, e-commerce, CamInvoice, suppliers' EDI and factory MES so data flows without spreadsheets, and build the monitoring around the bridge.

Your ERPBankCamInvoiceE-commerceSuppliersFactory MESMonitored
Your ERPCamInvoiceBankE-commerceSuppliersFactory MESMonitored

What does Scale's Integration practice cover?

Scale's Integration practice connects systems never designed to talk to each other (ERP to banking API, e-commerce to inventory, CamInvoice to accounting, factory MES to operations dashboard) using REST, GraphQL, EDI, MQTT, and webhooks, with observability and retry logic built in from the start. We cover mobile, website, system, and API integration, with depth in Cambodia's bank APIs and CamInvoice.

A typical mid-size Cambodian business in 2026 has: an ERP or accounting system; a banking relationship with ABA, Wing, or Bakong to read statements from and initiate payments through; a GDT return whose figures should come out of the system, not out of a manual scramble before each monthly deadline; an e-commerce presence on Shopify, WooCommerce, or a custom storefront that must feed inventory and order data into the ERP; and increasingly a factory or warehouse system generating data that management wants in a single dashboard.

Each connection is a separate integration project, or a well-scoped phase within a larger programme. What separates a well-built integration from a fragile one is three things: the adapter pattern (a clean contract that does not break when either side changes), observability (in real time: is it running, how many records flowed, what errors occurred), and retry strategy (when the downstream system is unavailable, it queues and retries instead of silently dropping records).

What systems can Scale connect?

We connect your ERP or accounting system to four groups: Cambodian banking, Government, E-commerce and payments, and Factory and SaaS. Beyond them, we connect any system that exposes an API, database view, or structured data export.

  • ERP and accounting: the system you already run (SAP Business One, Acumatica, QuickBooks Online or Desktop, Peachtree/Sage 50, MAQSU, or custom-built).
  • Cambodian banking: ABA (account statements, fund transfer, payment initiation), Wing (disbursement), Bakong (KHQR generation, payment webhook, settlement), Pi Pay (payment confirmation webhooks).
  • Government: CamInvoice/GDDE (B2G e-invoice issuance, status polling) and the NBC rate (the daily exchange rate).
  • E-commerce: Shopify (Admin API, webhooks), WooCommerce (REST API), and custom storefronts, where we define the event contract.
  • Payment gateways: Stripe (Events API, webhook ingestion), PayWay, ABA Pay (QR generation and confirmation), Wing Pay.
  • Factory and operations: Modbus/MQTT for industrial sensor data, OPC-UA for factory equipment, custom MES system APIs, barcode scanner event streams.
  • Third-party SaaS: Salesforce, HubSpot, Mailchimp, Slack, Google Workspace, Microsoft 365, and any SaaS with a published REST or GraphQL API.
Your ERPCambodian bankingABAWingBakongGovernmentCamInvoiceNBC rateE-commerce and paymentsShopifyWooCommerceStripeFactory and SaaSMQTTOPC-UASalesforce
Your ERPCambodian bankingABAWingBakongGovernmentCamInvoiceNBC rateE-commerce and paymentsShopifyWooCommerceStripeFactory and SaaSMQTTOPC-UASalesforce
fig. 01 · the systems a bridge usually joins to your ERP

How do we approach integration architecture?

Every integration Scale builds follows the same architecture principles: adapter isolation (each system connection is an independent module with a defined contract), observability first (every message logged, every error alerted, every retry tracked), and idempotent design (duplicate messages do not create duplicate records in the target system).

Each adapter takes a message from the source system, validates it, maps it, and submits it to the target system. When a SaaS vendor updates its API between versions, or ABA changes its payment initiation endpoint, only the affected adapter changes; the rest of the pipeline is unaffected.

Observability means every integration ships with a log table recording each message, a monitoring dashboard showing submission counts and error rates, and real-time alerting (Telegram and email) for any message that fails after exhausting its retry queue. Your operations team sees what is flowing, what failed, and why, without calling us.

Retry uses exponential back-off: a failed submission is retried after 1 minute, then 5 minutes, then 30 minutes, then 2 hours, then 24 hours. After five failures the message is parked in a dead-letter queue and an alert is sent. The idempotency check hashes the source record's unique identifier and rejects duplicates before they reach the target system; for CamInvoice, a duplicate submission could put the same invoice on the network twice.

Source systemValidateMapSubmitTarget system1 min5 min30 min2 h24 hLog tableRetry queueDead-letter queueAlert
Source systemValidateMapSubmitTarget systemLog tableRetry queue1 min5 min30 min2 h24 hDead-letter queueAlert
fig. 02 · one adapter: validate, map, submit, with the log, the retry queue and the dead-letter alert

How long do integration projects take?

A single integration (one source system, one target system, one data type) typically takes 4–8 weeks for an SMB scope. A multi-system programme connects 3 to 6 systems in a single coordinated build. One that connects ERP, banking, CamInvoice, and e-commerce runs 12–16 weeks for mid-market scope.

A CamInvoice integration takes 6–13 weeks, longer than an ordinary one, because onboarding with GDDE runs beside the build and must start on day one. A meeting with the operator and an NDA come before any integration, GDDE publishes no lead time for it, and it cannot be accelerated by code.

  • Week 1. Discovery and mapping: source and target systems, API access, data schemas, field mapping, error handling, submission frequency, and the gaps.
  • Weeks 2–4. Adapter build: in TypeScript/Node (or Python for SAP B1), wired to staging endpoints, with retry logic, dead-letter queue, audit log, and alerting.
  • Weeks 4–6. End-to-end testing: historical or synthetic records through the pipeline, output validated against target system records, edge cases fixed.
  • Week 6–7. UAT: your team runs live records through the adapter in parallel with the existing process; discrepancies resolved.
  • Week 7–8. Go-live and hypercare: adapter in production, daily monitoring for 30 days, runbook and dashboard access handed over.
0w4w8w12w16w20wSingle integration4–8 wkMulti-system programme12–16 wk
Single integration4–8 wkMulti-system programme12–16 wk0w4w8w12w16w20w
fig. 03 · how long a bridge takes, by scope

What about GDT and CamInvoice specifically?

They are two different things, and only one has an API. GDT's monthly return is filed by a person through GDT's E-Filing, so what we build for it is the figures, ready to file. CamInvoice is GDDE's B2G e-invoicing platform, launched May 2025, and it has an API we integrate.

For GDT, the system keeps the books in KHR at the NBC daily rate on the invoice date, carries the tax codes (VAT 10%, VAT 0%, VAT exempt, WHT at 15%/10%/14%), and produces the monthly return figures and the sales and purchase lists. Your accountant files them through E-Filing by the 25th of the following month; the system removes the re-keying, not the date. Our GDT e-VAT guide covers the pitfalls.

CamInvoice is newer, more complex to onboard, and affects a narrower set of businesses: those invoicing the ministries and institutions the MEF circulars name. It needs onboarding with GDDE, OAuth 2.0 credentials, invoices in UBL 2.1 XML, and a webhook or polling to learn what the network did with each one. Our CamInvoice integration guide walks through the onboarding; the API integration page covers project structure.

FAQ

Frequently asked questions: Integration

Do I need an API agreement with ABA or Wing before you can start building?

Yes. ABA Bank and Wing Money require a formal business API partnership agreement before they grant API credentials. ABA's process typically takes 2–4 weeks; Wing's is similar. We assist with the application, but the agreement is between your business and the bank. Start on day one.

What is Bakong, and when should we integrate it?

Bakong is the National Bank of Cambodia's real-time payment network. It supports KHQR, the unified QR code standard used across ABA, Wing, and other Cambodian banks. To accept QR payments on a website, app, or point-of-sale, the Bakong API is the correct path: simpler than individual bank payment APIs, and it covers more payers.

Can you integrate our Shopify or WooCommerce store with our ERP?

Yes, it is one of our most common projects. The standard scope: product catalogue sync (the ERP is the source of truth), order ingestion (new orders create sales orders in the ERP), inventory level updates (to prevent overselling), and fulfilment webhooks (dispatch updates the order status).

We have a factory with machines generating sensor data. Can you integrate that?

Yes. Factory sensor data is typically exposed via Modbus TCP, OPC-UA, or an MQTT broker. We build adapters that read these protocols and feed a production dashboard. If the factory MES has a database or API, we can also sync production orders, work-order completions, and material consumption into your ERP.

What happens when an API we integrated against changes its schema?

Adapters carry a version-pinned contract and schema validation on the inbound payload. When an upstream API changes (ABA updates endpoints periodically; CamInvoice's specification has changed during rollout), the validator fails loudly: an alert fires and the dead-letter queue catches affected messages. We update the adapter and drain the queue. Schema-change updates are handled as fixed change orders, not open-ended time-and-materials work.

Can you integrate with our existing local ERP (e.g. MAQSU or erpcambodia.biz)?

Usually yes. Some local ERPs have documented REST APIs; others expose data only through database views or scheduled CSV exports, and get an extraction adapter instead of a standard one. Local vendors occasionally change data structures without notice, which breaks the extraction, so we build schema-validation alerts to catch it.

Do you build integrations for mobile apps as well as web systems?

Yes, whether it is a React Native app connecting to your ERP via a REST API we build, a mobile payment flow integrating Bakong KHQR, or a field-service app syncing with your ERP's work orders. The architecture is the same (adapter pattern, observability, retry) for a web front-end or a mobile app.

How do we monitor the integrations after you hand over?

Every integration includes a monitoring dashboard showing message volume, error rate, dead-letter queue depth, and last successful submission timestamp. Alerts go to Telegram and email when error rates exceed threshold or a message sits in the dead-letter queue for more than 24 hours. Your team gets dashboard access and a runbook for reprocessing dead-letter items.

Talk to us

Book a discovery call