Retail · Payments

Princess Auto/

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

50+/
Stores supported
M+/
Annual transactions
PCI/
DSS-compliant
100%/
Idempotent flows
Role
Full-stack engineer · Payments lead
Timeline
2024 · 3-month engagement
Team
Princess Auto digital + partner agency
Live
Princess Auto — storefront with Mega Smasher promo
Overview

Boring payments are the best payments/

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 needed payments wired up across their public storefront and store-pickup flow. The work was the unglamorous half of e-commerce: payment intents, idempotency keys, webhook reconciliation, refund handling, and the surface area where the storefront meets a checkout SDK.

I owned the integration end-to-end: server-side intents in NestJS, client-side checkout flow in Next.js, webhook handlers for async settlement, and the dashboard plumbing that lets ops see what's stuck.

The store-pickup and shipping options share the same intent model, so refunds and partial captures behave the same regardless of fulfillment path.

Next.jsNestJSTypeScriptStripePostgreSQLRedis (idempotency)WebhooksPCI-aware patterns
Princess Auto — storefront with contracts table
01 · Storefront

A storefront with payments wired through/

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

  • Mega Smasher / sale promo placements
  • Pickup + ship-to-home in one checkout
  • Idempotent basket and intent semantics
Princess Auto — checkout flow
02 · 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
Princess Auto — refund flow
03 · Refunds & partial captures

Refunds that survive partial fulfillment/

Online + 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
Storefront

From homepage to confirmation/

A walk through the public storefront surfaces.

Build something like this

Payments that don't lose money/

If you're plugging a payment processor into a real-world commerce flow and want it to behave under load — let's talk.