All cases

    Princess Auto — payments & checkout

    Payment integration and checkout for Princess Auto — the Canadian retail brand. Connecting and configuring the payment stack for secure, reliable transactions at scale.

    Princess Auto storefront with Mega Smasher promo
    50+
    Stores supported
    M+
    Annual transactions
    PCI
    DSS-compliant
    100%
    Idempotent flows

    Boring payments are the best payments

    Client
    Industry
    Retail · Payments
    Role
    Full-stack engineering · Payments lead, alongside Princess Auto digital + partner agency
    Timeline
    2024 · 3-month engagement

    The job wasn't to reinvent checkout — it was to make sure every transaction lands cleanly, every refund threads, and every state survives a retry.

    Princess Auto is a Canadian retailer specialising in tools, automotive parts, industrial equipment and hardware, serving DIY enthusiasts, tradespeople and professionals.

    We owned the payment integration end to end: server-side intents, the client-side checkout flow, webhook handlers for async settlement, and the dashboard plumbing that lets ops see what's stuck. The work was the unglamorous half of e-commerce — idempotency keys, webhook reconciliation, refund handling, and the surface where a storefront meets a checkout SDK.

    A storefront with payments wired through

    Catalog, promos, flyers, and a basket flow — on top of a checkout backend that doesn't lose money on a flaky connection.

    Homepage hero — Mega Smasher promo
    Sale landing with live promos
    Flyers and catalogue

    What we built

    01 · Payment intents

    Server-authoritative intents and retries

    Every payment is initiated server-side with an idempotency key tied to the cart hash. Retries from a flaky client don't double-charge; webhook reconciliation closes the loop.

    • Server-side payment intents with idempotency keys
    • Cart-hash-bound retry semantics
    • Webhook-driven settlement reconciliation
    Cart with store-pickup availability
    Checkout with pickup and shipping options
    02 · One checkout, two fulfillments

    Pickup + ship-to-home in one flow

    Store-pickup and shipping share the same intent model, so refunds and partial captures behave the same regardless of fulfillment path — with per-SKU availability surfaced right in the checkout.

    • Pickup + ship-to-home in one checkout
    • Idempotent basket and intent semantics
    03 · Refunds & partial captures

    Refunds that survive partial fulfillment

    Online plus store-pickup means partial fulfillment is the norm. Refunds are processed against the same intent model so accounting stays clean across split shipments.

    • Partial + full refund support
    • Reconciles across store-pickup and ship-to-home
    • Accounting export with per-line tax + fees
    Account creation over the cart flow
    Technologies used
    Frontend
    Next.jsTypeScript
    Backend
    NestJSWebhooksIdempotency keys
    Payments
    StripePayment gatewayTransaction processing

    More screens

    Princess Auto — screen 2
    Princess Auto — screen 3
    Princess Auto — screen 4
    Princess Auto — screen 5
    Princess Auto — screen 6
    Princess Auto — screen 7
    Princess Auto — screen 8

    More cases

    Have a similar project in mind?

    The first call is a free 30-minute technical scoping session.

    Book a call