Skip to content

Add gasless USDC deposit on Base (x402)#237

Merged
gianalarcon merged 1 commit intodevelopfrom
x402-deposit
Apr 25, 2026
Merged

Add gasless USDC deposit on Base (x402)#237
gianalarcon merged 1 commit intodevelopfrom
x402-deposit

Conversation

@Huygon764
Copy link
Copy Markdown
Contributor

@Huygon764 Huygon764 commented Apr 23, 2026

Add gasless USDC deposit on Base (#238)

Types of change

  • Feature
  • Bug
  • Enhancement

Comments

PolyPay users can now top up a multisig with USDC on Base in a single click — no
ETH or gas needed. The deposit also works for AI agents and external apps that
speak the x402 standard, so anyone (or any bot) can fund a PolyPay treasury just
by knowing its address.

How to test:

  1. Open the PolyPay app and switch your wallet to Base (mainnet or Sepolia).
  2. Make sure you have at least 1 USDC in your wallet.
  3. Pick a Base multisig, then click the Portfolio button (top-right).
  4. Click Deposit, enter an amount (1–10,000 USDC), sign once in your wallet.
  5. The success screen shows a Basescan link. The USDC lands in the multisig
    within seconds.

UI Screen
image
image

How an agent can use it:
An AI agent (or any third-party script) can fund a PolyPay multisig autonomously,
with no PolyPay account needed. The agent just needs the multisig address and a
wallet with USDC. It calls our public deposit URL using any standard x402 client
library — same flow, just done programmatically instead of through the app. This
is what enables the "AI agent treasurer" use case: a bot that monitors a treasury
and tops it up automatically when balance runs low.

@Huygon764 Huygon764 changed the title Template for x402 (v1) Add gasless USDC deposit on Base (x402) Apr 24, 2026
@Huygon764 Huygon764 marked this pull request as ready for review April 24, 2026 09:25
@gianalarcon gianalarcon merged commit 91240bf into develop Apr 25, 2026
3 of 4 checks passed
Huygon764 added a commit that referenced this pull request May 4, 2026
* refactor: improve layout and responsiveness in Quest and Batch components (#200)

- Updated QuestPage layout for better responsiveness with max-width and padding adjustments.
- Changed BatchTransactions and TransactionSummary components to use flexbox for improved item alignment and responsiveness.
- Enhanced QuestCard to allow for flexible width.
- Added titles for new routes in the Title component.

* Refactor/extract magic numbers to constants (#203)

* refactor: adjust z-index values across various components for improved UI layering

* feat: add timing constants for HTTP timeouts, cache TTL, and retry delays

- Introduced new timing constants in `timing.ts` for backend and nextjs packages.
- Updated index files to export the new timing constants for better accessibility.

refactor: replace hardcoded values with timing constants for retries and timeouts

- Updated various services and modules to utilize new timing constants for retries and timeouts, improving maintainability and consistency across the codebase.
- Adjusted `waitForReceiptWithRetry`, `PriceService`, `ZenTransferService`, `TransactionService`, and `ZkVerifyService` to use centralized timing configurations.

refactor: replace hardcoded values with timing constants across components and hooks

- Updated various components and hooks to utilize new timing constants for polling intervals, refetch intervals, and timeouts, enhancing maintainability and consistency throughout the codebase.
- Adjusted `NotificationItem`, `ClaimSection`, `EditAccountModal`, and several hooks to reference centralized timing configurations.

refactor: standardize formatting and improve component styles

- Refactored various components to enhance code readability by standardizing formatting, including consistent indentation and spacing.
- Updated styles across components to utilize new shadow and height constants for improved UI consistency.
- Adjusted text sizes in multiple components to ensure uniformity in typography.

* refactor: enhance component structure and user feedback in NewAccount sections (#206)

- Updated ChooseNetwork component to include wallet connection checks and commitment validation, enhancing user experience with appropriate notifications.
- Adjusted StatusContainer to allow copying of commitment addresses to clipboard for better usability.
- Enhanced Sidebar component to incorporate wallet connection status in navigation logic.

* feat(x402): gasless USDC deposit for Base multisigs (#237)

* fix(frontend): prevent duplicate modals from stacking on repeated openModal calls (#241)

* fix(nextjs): stop auto-enabling Ethereum mainnet in wagmi config (#242)

* fix(deploy): wire NEXT_PUBLIC_FEATURE_X402_DEPOSIT through Docker build args (#243)

* feat: migrate proving system from UltraPlonk to UltraHonk (#229)

* feat: migrate proving system from UltraPlonk to UltraHonk

* refactor: extract shared account formatter and replace magic numbers with constant

* fix: resolve PR review issues for UltraHonk migration

* refactor(nextjs,docs): rename UI label Commitment to Membership ID (#244)

* chore: hide Quest and Leaderboard from app and docs (#245)

* feat(nextjs): redesign Portfolio receive flow + add wallet version badge (#246)

* chore: disable Quest, Leaderboard, Reward, and Partner endpoints on backend (#247)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants