Skip to content

[enterprise][P2 MEDIUM] Org wallet top-up confirms only through the payment.captured webhook; no client-side confirmation path like consumer checkout #1438

Description

@teetangh

Found 2026-09-04 on the deploy preview of #1422 (flow D). A wallet top-up creates a real Razorpay order and the card is captured, but WalletTopUp stays PENDING and the wallet is not credited until payment.captured arrives (app/api/organizations/[orgId]/billing-account/wallet/top-ups/route.ts → handleOrgPaymentSuccess → confirmTopUp). Consumer checkout has a second, client-side confirmation path (verify-signature) so a lost or delayed webhook does not strand the buyer; the top-up has none, so the org admin sees a captured card and an unchanged balance until the sweep-orphaned-topup-captures job runs. Decide whether to add the same client-side verify path for top-ups or document the webhook-only design and surface the pending state in the wallet UI.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MgadJydWEKkdhhzY58yiL7

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnterpriseEnterprise tier — B2B org features, Architecture 4financePayments, refunds, earnings, payouts, invoicing, ledgerlaunch: post-mvpFirst 90 days after launch — coverage, polish, operational maturitytech-debtRefactors, structure, dependency upgrades, cleanup

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions