Developers · Base

Verify Builder Code attribution for USDCtoFiat deposits.

The issued code is wired into the production app's transaction calldata. Use this guide to see which path owns the suffix and what must be verified after a transaction.

01

Attribution sequence

  1. 01Deploy the Base Mini App to a stable HTTPS origin.
  2. 02Register and verify the app on Base.dev.
  3. 03Copy the real Builder Code from Base.dev settings.
  4. 04Generate the ERC-8021 dataSuffix from that code with ox/erc8021.
  5. 05For a direct transaction path you own, append one normalized dataSuffix after removing any existing suffix.
  6. 06Create a small USDCtoFiat deposit and verify attribution before launching a campaign.
02

Where it belongs

SurfaceAttribution path
Base AppBase docs say registered apps can receive automatic attribution for activity inside the Base App.
Web appThe USDCtoFiat web adapter replaces any existing suffix and appends the production codes.
USDCtoFiat SDKThe SDK supplies its own galleonlabs referrer. Do not stack a second client-level suffix; separate integrator codes are not supported by the current SDK API.
ContractsNo contract change is needed; ERC-8021 suffix data is appended to calldata and indexed offchain.
03

Implementation notes

  • Use viem 2.45.0 or newer for the Base docs path; this app already runs a newer viem version.
  • USDCtoFiat's production adapter is wired with an issued Builder Code. Successful attribution still needs transaction-level verification.
  • For direct Viem or Wagmi transactions you own, generate one dataSuffix from all intended codes.
  • Do not concatenate independent ERC-8021 suffixes. Parse and replace or merge codes into one suffix before signing.
  • The @usdctofiat/offramp SDK already supplies Galleon Labs attribution. It does not expose a separate Builder Code merge option.
04

Verification

CheckPass condition
Base.devOnchain transaction counts increment for the app's Builder Code.
Block explorerThe transaction input ends with the ERC-8021 suffix marker and decodes to the expected code.
USDCtoFiat resultThe created deposit returns depositId and txHash, then appears in deposits(address).
PeerlyticsThe deposit and intent lifecycle can be inspected after indexing catches up.

Common questions

Does USDCtoFiat already use an issued Builder Code?

Yes. The production adapter appends its issued Builder Code to onchain deposit calldata. Verify successful attribution in Base.dev or a block explorer after a real transaction.

Does @usdctofiat/offramp need a separate Builder Code option?

No. The SDK already supplies a galleonlabs referrer and does not currently expose a supported merge path for a separate Builder Code. Do not add a second client-level suffix.

Does ERC-8021 change the ZKP2P contracts?

No. Base docs describe Builder Codes as calldata suffix attribution. The contracts execute normally; attribution is read by offchain indexers after the transaction lands.