A retail chain we worked with ran into this in a very literal way. Customer walks up with a cart full of items. The cashier rings everything up in Shopify POS, total comes to whatever it comes to. Then it's time to take payment.
For some merchants, that means turning to a completely separate EDC terminal and typing the same total in again by hand. For others, the EDC terminal is Android-based and actually has the Shopify POS app installed directly on it, or the cashier is running Shopify POS on a tablet right next to the terminal. Either way, the setup looks a little different depending on the hardware, but the actual gap is the same: the cashier still has to key in the amount on the EDC side separately, pick the payment mode, card, UPI, whatever the customer's using, and let the customer tap or insert their card to complete payment.
Now someone has to connect that terminal payment back to the Shopify order. Some stores write the terminal's transaction ID on a receipt or into an order note by hand. A lot of stores don't bother at all, because there's no real way to do it quickly at the counter. Either way, Shopify shows the order as unpaid or manually marked paid, and the EDC terminal has its own separate batch report with its own transaction numbers, sitting in a completely different system with no link between the two.
If this is how your stores run today, you already know where this goes wrong.
Where It Actually Broke Down for Them
At the counter, it's just one extra step per sale. A few seconds, no big deal. But it adds up in ways that only show up later, and for this chain, running several locations, it showed up everywhere.
Reconciliation had become a manual matching exercise. At day-end or month-end, someone sat down with each EDC terminal's batch report and the Shopify order list and matched them up by hand, transaction by transaction, store by store. With multiple locations and real volume, that turned into hours of work every single cycle, done by someone who could have been doing anything else.
Re-keyed amounts introduced errors that didn't show up until later. A cashier retyping a total under time pressure, with a line building up behind the customer, is going to fat-finger a number eventually. Shopify would say one amount, the terminal had processed another, and reconciliation would surface a mismatch nobody could explain without pulling the receipt.
Missing transaction IDs made disputes genuinely harder. When a customer disputed a charge or asked for a refund weeks later, someone needed to trace that Shopify order back to the exact terminal transaction. Without that link recorded reliably, that trace turned into guesswork.
None of it showed up as one obvious cost. A few minutes here, a mismatched batch there, a slower month-end close. That's exactly why it had gone unfixed for as long as it had — none of the individual pieces felt urgent enough to prioritize on their own.
What We Built to Close the Gap
The fix wasn't a new payment gateway or a rebuild of their checkout. It was a direct link between the two systems that already existed: Shopify POS and their EDC terminals, so a payment confirmed on the terminal flows straight back into the matching Shopify order.
The cashier still rings up the sale in POS and takes payment on the terminal exactly as before — nothing about the customer-facing experience changes. What changes is everything that used to happen after: the amount doesn't get re-typed, the transaction ID doesn't get written down by hand, and the Shopify order gets marked Paid the moment the terminal confirms, automatically.
Multiple providers aren't a problem either. As long as we have the integration documentation from a given provider, we can add it in wherever it's needed — one store, one payment method, or across the whole chain.
One thing worth being direct about, since it matters to anyone evaluating this: raw card data never touches this layer at all. All actual card processing stays with the existing PCI-compliant EDC provider, exactly as before. The integration only relays a payment request and a confirmation — it doesn't sit in the path of card data.
What Changed Once It Was Live
Once payments started flowing through this way, every terminal-based payment across every location showed up in one filterable log inside Shopify admin: order number, store, provider, amount, status (approved, declined, cancelled, error), and timestamp. Their finance team could filter by date range, location, or provider and get a real answer in minutes instead of stitching together separate batch reports and order exports by hand.
The whole build, from discovery to production, took about four weeks.
That's the actual point of a project like this. Not a flashier checkout screen — a closed gap between two systems that were never supposed to be separate in the first place.
Who This Actually Matters To
If you're a merchant running Shopify POS across one or more physical locations with EDC terminals that aren't talking to Shopify, this is the exact gap the project above closed. And if you're an EDC provider, this is worth paying attention to for a different reason: merchants running Shopify are going to keep asking whether your terminals can connect directly to their POS, and having a real, working answer to that question is a genuine differentiator against providers who don't.
We've built Shopify and e-commerce integrations for retail and consumer brands, and this exact kind of terminal-to-POS gap comes up often enough that it was worth writing up properly. If you're running into something similar, Lucent Innovation is a reasonable place to start the conversation.
