Inspiration

A shopper wants to buy something, enters their card, and gets "Your card was declined." What should they do next? Most checkouts leave them guessing, while the merchant sees another failed payment.

We built Lasso to close that gap. Payment failures carry useful information, and we wanted to turn that information into clear, safe next steps that help shoppers finish their purchases.

What it does

Lasso helps merchants rescue failed payments, recover abandoned purchases, and understand why payments fail.

  • Checkout rescue: Turns declines into actionable guidance, such as correcting a security code, verifying with the bank, or choosing another payment method.
  • Recovery: Offers consent-based follow-up payment links, with server-side checks for retry eligibility. Delivery is currently simulated.
  • Merchant diagnostics: Shows decline causes, the rescue funnel, confirmed recovered revenue, and clearly labeled recovery estimates.
  • Checkout concierge: Helps shoppers with budget concerns, shipping options, promo codes, and unavailable products using verified store data. Shoppers approve every proposed cart or price change.

The demo includes English and Spanish remedy copy, plus static safety messaging in additional languages.

How we built it

We built Lasso with Next.js 16, React 19, TypeScript, Tailwind CSS, and shadcn/ui. Prisma and SQLite handle persistence, Recharts powers the merchant dashboard, and Zod validates API contracts.

Processor adapters convert payment responses into a shared format. A pure core handles diagnosis, remedies, retry eligibility, and recovery attribution. A single ingestion path prevents duplicate processing and protects paid orders from regressing.

The application runs without API keys through a local mock processor. Optional integrations support Stripe test mode, Visa Acceptance sandbox payments, and Anthropic-assisted responses with validation and deterministic fallbacks.

Challenges we ran into

The hardest part was deciding what information belonged with each audience. Merchants need diagnostic detail, while shoppers need useful guidance that never exposes sensitive fraud or risk signals.

Retry handling also required care. Different payment failures need different responses, and retry rules contain processor-specific details and documented uncertainty. We separated policy enforcement from retry timing recommendations.

Recovery attribution was another challenge. A successful payment must only count once, and an inferred association must remain distinguishable from confirmed recovery. Sandbox behavior also limited what we could verify, particularly for Visa same-order recovery.

Accomplishments that we're proud of

We're proud of connecting the full journey: a shopper can resolve a cart concern, encounter a payment decline, receive guidance, and complete the purchase within the same flow.

We also built a reproducible demo that makes zero external API calls, even when credentials are present. It lets people explore realistic scenarios without setting up payment accounts.

Safety shaped the implementation throughout, including consent-gated follow-ups, generic messaging for sensitive declines, and shopper approval before concierge changes.

What we learned

Payment recovery depends on understanding the failure. A mistyped security code, a temporary processing issue, and a lost card require different next steps.

We also learned that trustworthy reporting needs precise definitions. Confirmed recovery, estimated opportunity, and inferred associations answer different questions.

For the concierge, verified product and policy data proved essential. Helpful advice has to match what the merchant can actually offer.

What's next for Lasso

Our next priorities are production authentication, real consent-based follow-up delivery, and broader processor verification. Live payment support will require validating retry policies with acquiring partners and completing operational safeguards.

We also want to evaluate recovery outcomes with real merchant data, expand language coverage, and improve recommendations as stores collect more payment history. Subscription renewal recovery is a future extension beyond the current checkout scope.

Built With

Share this project:

Updates

Submission history