Skip to content

[BUG]: No stablecoin balance check before direct transfer #96

@sach2004

Description

@sach2004

Bug Description

When a user picks the stablecoin option (SOD, MOD, ECSD) to pay, the widget doesn't check if they actually have enough of that token before letting them proceed. WalletContext.jsx only fetches native balance using publicClient.getBalance() theres no balanceOf() call on the stablecoin contract anywhere. so TransactionReview.jsx builds the ERC-20 transfer() and shows "✅ Transaction ready!" even with 0 stablecoin balance. on send it just reverts with a confusing metamask error and no feedback from the widget.

This would affect anyone picking direct transfer without enough stablecoins, could be a new user who chose the wrong option or someone who just doesn't have enough balance.

Suggested approach: call balanceOf(account) on the stablecoin contract after wallet connection using existing publicClient, expose it in wallet context, and check it against the required amount in TransactionReview.jsx before enabling "Prepare Transaction". affected files: WalletContext.jsx, TransactionReview.jsx

Steps to Reproduce

  1. Open the stablepay widget or merchant demo site
  2. Select any network (e.g. sepolia)
  3. Select "SOD (Direct Transfer)" as payment token
  4. Connect a wallet that has 0 SOD
  5. Click "Prepare Transaction" — shows "✅ Transaction ready!"
  6. Click "Send Transaction" — tx reverts, no useful error from widget

Environment Details

OS: macOS
Browser: any (tested on chrome)
Network: sepolia (reproducible on all supported networks)
Wallet: metamask

Impact

Medium - Feature works but has issues

Code of Conduct

  • I have joined the Discord server and will post updates there
  • I have searched existing issues to avoid duplicates

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions