Build a Safe CSV Airdrop file from your payout sheet
Paste the sheet you pay contractors from and get a file for the CSV Airdrop app in Safe{Wallet}: one per network, with the right token contract, every amount exact and every address checked before anyone signs.
Runs in your browser. Your sheet is never uploaded. No wallet to connect and no account. Payclose never holds funds or keys: the file goes to your own Safe, and its owners sign it there.
Your payout sheet
A CSV with a header row, or rows pasted from Google Sheets or Excel. It needs an address and an amount column; name, network and token columns are used when they’re there.
Your CSV Airdrop files
What the file looks like
A payout sheet as a team keeps it, and the CSV Airdrop file this page builds from it. The amounts lose their formatting but not a digit, the token becomes its contract on Base, and Mei Lin’s address, pasted in lowercase, gets its checksummed (EIP-55) form.
| name | network | token | amount | wallet |
|---|---|---|---|---|
| Lucía Fernández | Base | USDC | 3,200.00 | 0x4bE0D1a793C5e240F18b6C3dA0579E21b4C607FD |
| Priya Nair | Base | USDC | 4,250.00 | 0xfAe48f710e9803C40c712e968eF38ef417E34769 |
| Mei Lin | Base | USDC | 3800.5 | 0x92c7eec36db7a94cacabacb6d7df21e4dc4f4aed |
safe-csv-airdrop-base.csvtoken_type,token_address,receiver,amount,id erc20,0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0x4bE0D1a793C5e240F18b6C3dA0579E21b4C607FD,3200, erc20,0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0xfAe48f710e9803C40c712e968eF38ef417E34769,4250, erc20,0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913,0x92c7eeC36Db7A94cAcaBaCB6d7df21e4Dc4F4aEd,3800.5,
The CSV Airdrop format
Checked on 14 October 2026 against the CSV Airdrop app listed in Safe{Wallet} and its source code.
The app reads a comma-separated file with a header row and one transfer per line. This page writes exactly these columns, in this order:
| Column | What goes in it |
|---|---|
token_type | erc20 for USDC and USDT. The app also takes native and nft rows; payouts don’t need them. |
token_address | The token’s contract on the Safe’s network, from the table below. |
receiver | The contractor’s 0x address. This page writes its checksummed (EIP-55) form. |
amount | The amount in tokens, not in base units: 3200 is 3,200 USDC. No thousands separators, no currency sign. |
id | Empty. It is the token ID of an NFT. |
- No other columns.
A name, a note or a
decimalscolumn makes the app refuse the whole file with “Unknown header field(s)”. It looks up each token’s decimals itself, from the Safe’s balances or the token contract. - No more decimals than the token has. The app multiplies the amount by the token’s decimals and drops anything finer without a warning. USDC and USDT have 6, so this page refuses 2437.3333333 instead of letting it become 2437.333333.
- At most 499 transfers per file. The app refuses a file longer than 501 lines and counts the line break at the end as one; with the header line, that leaves 499.
- One network per file. The app runs inside a Safe, and a Safe lives on one network. A sheet that pays on Base and on Arbitrum One becomes two files, one for each Safe.
The header line, as the app expects it: token_type,token_address,receiver,amount,id
Token contracts in the file
From Payclose’s token registry, each contract and its decimals checked on-chain.
A wrong token contract is the quietest mistake in a CSV Airdrop file. Native USDC and bridged USDC.e on Arbitrum One are different tokens, and a contractor’s exchange may credit only one of them. The sheet says USDC or USDT; the file gets the contract below for the row’s network.
Not in the list: USDT on Base, because it is a bridged copy of Ethereum USDT, not issued by Tether, and exchanges may not credit deposits of it. A row in USDT on Base is refused.
| Network | Token | Contract | Decimals |
|---|---|---|---|
| Ethereum | USDT Tether USD | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 6 |
| Ethereum | USDC USD Coin | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | 6 |
| Base | USDC USD Coin | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 6 |
| Arbitrum One | USDC USD Coin | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 | 6 |
| Arbitrum One | USDC.e Bridged USDC | 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8 | 6 |
| Arbitrum One | USDT Tether USD | 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 | 6 |
Mistakes this page catches
- A look-alike address. One that starts and ends like another address in the sheet but differs in the middle, the trace of address poisoning. To compare this month’s addresses with the ones you paid before, use the address checker.
- A retyped address. Mixed case that doesn’t match the EIP-55 checksum means at least one character is wrong, and the row is refused. An all-lowercase address has no checksum to check; the file gets its checksummed form.
- A TRON address on an EVM row. USDT on TRON (TRC-20) and on Ethereum or Arbitrum (ERC-20) look alike in a sheet. A T… address on a Base row is refused, and rows marked TRON are left out: a Safe can’t pay them.
- The wrong token for the network. USDC.e anywhere but Arbitrum One, USDT on Base, or a token the registry doesn’t know.
- Amounts from a formula or a currency format. 2437.3333333, $3,200 or 3,20,0. Amounts are read exactly or not at all: nothing is rounded or guessed. If your sheet writes 3.200,50, choose that under “Amounts are written like”.
- A totals row, someone listed twice, a shared address. A row with an amount and no address is refused; the same person and address twice, or one address for two people, is flagged for you to check.
Using the file in Safe{Wallet}
On 14 October 2026, CSV Airdrop was listed under Apps on Ethereum, Base and Arbitrum One. Where it isn’t, Transaction Builder batches the same transfers, entered one by one, with amounts in the token’s smallest unit: 3,200 USDC is 3200000000.
- Build the files here and download the one for your Safe’s network.
- Open your Safe in Safe{Wallet} on that network, go to Apps and open CSV Airdrop.
- Upload the file or paste its text. The app lists every transfer with its token and amount: check the count and the total against this page.
- Submit. The Safe gets one transaction with every transfer in it; the owners confirm it and one of them executes it.
Paying from Payclose? It proposes the batch to your Safe itself, and offers the same kind of file as a fallback: see paying from a Safe.
When a CSV Airdrop isn’t enough
CSV Airdrop sends what the file says. It doesn’t know what you paid last month, who approved this month, or whether an address changed since the last payout, and for a monthly contractor payout that’s where the risk is. Payclose adds that around the same Safe:
- Every payout compared with the last one: people added or removed, amounts and addresses changed. The payout diff checker does this for two files.
- A new or changed address checked against every address you’ve paid, approved, and held for 24 hours before its first payout.
- Approvals signed with passkeys and recorded, then one batch per network proposed to your Safe.
- After execution, every transfer reconciled with the approved lines, and a proof file anyone can check.
Your owners still sign in Safe{Wallet}, and Payclose never holds funds or keys. More on contractor payouts from a Safe multisig.
Building this file every month?
Payclose keeps the sheet for you: rates and addresses in one place, each month compared with the last, new addresses confirmed before they’re paid, approvals recorded, and the batch proposed to your Safe without a file in between.
Free during the beta. EVM networks, from a Safe or a regular wallet; TRON later.
Questions
Is my sheet uploaded anywhere?
No. The sheet is read and checked in your browser, and the files are built there too. Nothing is sent to a server, saved, or kept in cookies or browser storage; close the tab and it’s gone. The page counts how many rows were checked and how many were flagged, never names, addresses or amounts.
Which networks and tokens does it support?
USDC on Ethereum, Base and Arbitrum One, USDT on Ethereum and Arbitrum One, and USDC.e on Arbitrum One, with each token’s contract from Payclose’s token registry. USDT on Base isn’t offered: the USDT contract on Base is a bridged copy of Ethereum USDT, not one Tether issues, and exchanges may not credit deposits of it. Rows on TRON are left out of every file, because a Safe lives on an EVM network.
Why aren’t the names in the file?
The CSV Airdrop format has no column for them, and the app refuses a file with any column it doesn’t know. The names stay on this page, next to each row, so you can check who gets what before you download.
What if an amount has more decimals than the token?
The row is refused and the file isn’t built until you fix it. USDC and USDT have 6 decimals; an amount like 2437.3333333, typical of a formula, has 7. The CSV Airdrop app would cut it to 2437.333333 without a warning, so this page says so instead.
How many payouts fit in one file?
499. The app refuses a file longer than 501 lines and counts the line break at the end as a line. A sheet with more rows on one network needs to be split into several files.
Is CSV Airdrop still available in Safe{Wallet}?
On 14 October 2026 it was listed under Apps in Safe{Wallet} on Ethereum, Base and Arbitrum One, and on the Sepolia and Base Sepolia test networks. If you can’t find it on your network, Transaction Builder, also under Apps, batches the same transfers: you enter each one by hand, with the amount in the token’s smallest unit.