E-commerce breaks in the gaps between systems#
A storefront is the easy part. The hard part is everything after "Pay": the charge that needs 3D Secure, the webhook that arrives twice, the inventory that has to update, the order the fulfilment team needs, the invoice accounting wants and the confirmation email the customer is waiting for. When those links are manual or fragile, orders get lost, stock goes wrong and customers get charged twice or not at all.
I build the checkout and payment flows and the integrations behind them, so every order moves from payment to fulfilment without someone re-typing it, and every edge case has a defined outcome.
Signs you need custom e-commerce work#
- Standard checkouts don't fit what you sell: bookings, services, deposits, per-use billing or bundles.
- Staff re-enter orders from the store into fulfilment, accounting or a CRM.
- Stock levels are wrong because systems update at different times.
- Payments occasionally go missing or duplicate, and nobody is sure why.
- You're building a marketplace where money moves between buyers, sellers and the platform.
What I build#
Custom checkouts#
For services, bookings, deposits, quotes that become orders, and non-standard pricing. Every step validates on the server, so prices, discounts and availability can't be manipulated in the browser.
Stripe payment flows#
Saved cards with SetupIntents, charges with PaymentIntents, delayed and usage-based charging, 3D Secure / SCA and subscriptions. Payment state is driven by webhooks, which are the only reliable source of truth.
Marketplace payment flows#
Payments involving buyers, sellers and the platform, with clear records of who paid what, for what, and what is owed.
Store integrations#
Connecting WooCommerce or Shopify stores to inventory, fulfilment, CRM and accounting systems through their APIs, so orders and stock stay in sync. For WordPress-based stores, see WordPress & WooCommerce.
Order and catalog sync#
Automated product, price and inventory updates from suppliers or vendors, so the catalog stays accurate without manual edits.
Payments done safely#
Payment code is where shortcuts cost the most, in money and in trust. Every flow I build:
- validates prices and totals on the server, never trusting the device or browser;
- processes webhooks idempotently, so a resent event never creates a second charge or order;
- handles 3D Secure challenges, declines and expired cards gracefully, with clear messages;
- keeps card data with the payment provider, so your servers never handle full card numbers;
- logs every state change, so disputes and support questions can be traced in minutes.
Commerce and payment projects#
- Stripe lead billing: clients save a card with a SetupIntent without an immediate charge, then are billed automatically with PaymentIntents when qualified leads are delivered, integrated with GoHighLevel through webhooks with a Zapier fallback.
- Planuojam: a five-language event marketplace with Stripe payments and real-time messaging.
- Nooora: a Dubai home beauty services platform with multi-tier service discovery and an operational payment workflow.
- ION DASH: Stripe PaymentIntents with 3D Secure / SCA, server-side pricing validation, on-site billing and automated vendor catalog pricing sync.
- Imperial Votes: paid public voting with Stripe and Paystack, with payment and vote handling built to be 100% idempotent.
Custom build, WooCommerce or Shopify?#
There's no single right answer. Shopify is excellent for straightforward product catalogs and lets you avoid running infrastructure. WooCommerce suits businesses already on WordPress that want full control of content and store together. A custom checkout on Laravel or Next.js makes sense when you sell bookings, services, deposits or per-use billing, or when the purchase is part of a larger product. Often the best answer is a standard platform for the catalog plus custom integrations for everything behind it. I'll recommend an approach based on what you sell and how your operations work.
Testing the unhappy paths#
Most payment bugs live in the scenarios nobody clicks through during a demo. Before launch I test declined cards, 3D Secure challenges that are abandoned, webhooks that arrive late, out of order or twice, refunds and partial refunds, network failures mid-checkout, and prices changing while a customer is paying. Each one has a defined, tested outcome rather than a support ticket waiting to happen.
Common e-commerce mistakes I fix#
- Marking orders paid on the browser redirect instead of the payment provider's webhook, so abandoned 3D Secure challenges look like successful payments.
- Prices sent from the browser and trusted by the server.
- Inventory updated only after fulfilment, so popular items oversell.
- Webhooks processed without idempotency, creating duplicate orders when providers retry.
- Integrations that fail silently, leaving orders stuck between systems until a customer chases them.
What you get#
- checkout and payment flows that handle failures, not just the happy path;
- orders flowing automatically into the systems your team uses;
- an admin view of every payment and its history;
- alerts when payments or syncs fail, sent to the right person;
- documentation of every integration and how to troubleshoot it.
Related services#
Commerce projects lean heavily on API integrations. Booking-based businesses should also see event & booking platforms, and subscription products SaaS development.
Working together#
We start with a free 30-minute call where we map how money and orders move through your business today. You get a written scope with the flows, integrations and edge cases covered, and an estimate. Builds run at a fixed scope, with ongoing support available on a retainer.
Selling something that doesn't fit a standard checkout? Book a free call.







