How-to
CSV Format for Bulk Token Transfers: Template + Common Errors
Updated: Jul 19, 2026 · 6 min read · By TRXSend team · reviewed by the TRXSend team
The CSV for a bulk token transfer needs exactly two columns — recipient address, then amount — one recipient per line, separated by a comma, with a dot as the decimal separator and no header row. That is the entire format. Download the ready-made template below, replace the placeholder rows with your real addresses, and you are done; the rest of this article exists because spreadsheets fight this simplicity in seven predictable ways, and because ten minutes of file hygiene is cheaper than one mis-sent irreversible transfer.
Download the template
Download the CSV template — three example rows in the correct format:
TYourRecipientAddressHere111111111,100
TYourRecipientAddressHere222222222,25.5
TYourRecipientAddressHere333333333,10
One deliberate safety property: the placeholder addresses are format-shaped (34 characters, starting with T) but not real TRON addresses, so the dApp's validator will reject them on upload. You cannot accidentally send funds to the template — replace every row with real recipients and the file passes.
The format, line by line
Each line is one recipient and follows one rule:
<TRON address>,<amount>
- Address: a TRON base58 address — starts with
T, exactly 34 characters. No spaces around it, no quotes. - Comma: the column separator. One comma per line, nothing else.
- Amount: a plain number. Dot for decimals (
25.5), no thousands separators (10000, not10,000), no currency symbols, no trailing spaces. - No header row. The first line must already be a real recipient —
address,amountas text will be flagged as an invalid address (which is the validator telling you to delete it). - Duplicates are allowed but meaningful: the same address twice means two transfers to that wallet. Deduplicate first unless that is genuinely what you want.
The same two-column list can also be pasted directly into the dApp as plain text, and XLS/XLSX files with the same two columns work as-is — CSV is simply the most portable of the three.
Exporting from the tools you already use
The format is trivial; exporters are where it goes wrong. The three most common paths:
Google Sheets. Keep addresses in column A, amounts in column B, nothing else on the sheet — no title row, no notes column. Format the amount column as plain number (Format → Number → Number, then strip the thousands separator display; better yet, Format → Number → Plain text after entering values with dot decimals). Export via File → Download → Comma Separated Values. Sheets exports what you see, so if the column displays 10,000, that comma lands in your file.
Excel. The dangerous variable is the system locale: on many European systems Excel writes semicolon-separated "CSV" with comma decimals — a file that looks right and parses wrong. Two fixes: either set the workbook's decimal separator to a dot (Options → Advanced → uncheck "use system separators"), or skip the trap entirely and upload the .xlsx itself, which the dApp accepts with the same two-column layout.
Everything else (Notion, Airtable, a database dump): export whatever the tool produces, then paste the two columns through a plain-text editor once. This strips smart quotes, invisible characters, and rich-text leftovers in one move — ten seconds that regularly saves an upload cycle.
Whatever the path, open the final file once in a text editor, not a spreadsheet. What you see there — commas, dots, no quotes, no header — is exactly what the parser will see.
The seven classic errors
Years of support conversations reduce to this list:
- Comma decimals. Spreadsheets in many locales (most of Europe, Brazil, and more) write
1,5for one-and-a-half. In a comma-separated file that reads as two columns — an amount of1and garbage after it. Set the amount column's format to use dot decimals before exporting. - Thousands separators.
10,000splits into columns the same fatal way;10 000with a space fails number parsing. Amounts must be bare:10000. - A leftover header row.
address,amounton line one. Delete it. - Whitespace and invisible characters. Addresses copied from chats, Telegram, or web pages arrive wrapped in spaces, tabs, or zero-width characters. The validator flags these, but trimming the column in your spreadsheet first saves a re-upload cycle.
- Quoted values. Some exporters wrap every cell in quotes (
"TAbc...","100"). Most parsers tolerate it, but mixed or stray quotes (a quote inside an address) break lines unpredictably. Export plain, unquoted CSV. - Wrong-network addresses. An Ethereum
0x…address or an exchange memo pasted into the address column. TRON addresses start withTand are 34 characters; anything else cannot receive TRC-20 tokens and will be flagged. - Base58 typos. A hand-edited address with one wrong character usually fails the checksum and gets flagged — this is the validator working as designed. The dangerous case is a valid address that belongs to the wrong person, which no software can catch: that is what the review screen is for.
Check the file before you send
A ninety-second pre-flight that catches nearly everything:
- Sort by the address column in your spreadsheet — duplicates become adjacent and obvious, and malformed entries sort to the top or bottom.
- Check the row count against how many recipients you expect. Off by one usually means a header row or a blank trailing line.
- Sum the amount column and write the total down. After uploading, the dApp shows the parsed total on the review screen — the two numbers must match exactly. If they differ, a decimal or separator problem slipped through.
- Skim the parsed list in the dApp. Validation has already flagged malformed addresses and duplicates at this point; your job is the human check — do the names, amounts, and total look like the payout you intended?
- First time with this list? Send a small test batch to a few rows before the full run, as the step-by-step guide recommends. On-chain transfers are irreversible; rehearsal is the only undo button.
FAQ
Does the file need a specific name or encoding? No specific name. Use plain UTF-8 (what every spreadsheet exports by default). Avoid editors that add a byte-order mark or convert the file to rich text.
Can I use XLS/XLSX instead of CSV? Yes — the dApp accepts CSV, XLS, and XLSX with the same two-column layout, and you can also paste the list as text. CSV survives tool-to-tool transfers with the least surprises, which is why templates ship in it.
How do I put different tokens in one file? You don't — a file is one distribution of one token. The token is selected in the dApp before uploading; run separate batches for separate tokens.
Is there a limit on file size? Practically, no: lists beyond about 150 recipients are simply processed as several consecutive batch transactions in one flow. The fee calculator shows costs for any list size, and the full how-to covers the whole sending process around this file.