How to Create a Positive Pay File from Sage 50 (US / Peachtree)
Sage 50 US (the product many bookkeepers still call Peachtree) does not export a bank-ready positive pay file on its own. What it does give you is a clean list of every check you have written: the Check Register. With that report copied to Excel and a free converter, you can produce the check issue file your bank expects in a few minutes.
This guide walks through the exact path: run the Check Register, copy it to Excel, fix the one column that trips up most people, account for voids, then convert. If you want the background on what banks do with these files, read what is positive pay first.
Step 1: Run the Check Register report
In Sage 50, open Reports & Forms > Accounts Payable, then select Check Register. This report lists the checks you have issued, including payroll checks, and you can sort it by date, check number, payee ID, payee name, or check amount.
Before you generate the file, set the date filter to the period you have not yet sent to your bank. Positive pay works best when you upload every batch of new checks the same day you print them, so most shops run this report daily or right after each check run. Use the date range option to pull just the new checks rather than the entire year.
Step 2: Copy the report to Excel
With the Check Register on screen, use Copy Report to Excel (the Excel button on the report toolbar). Sage 50 gives you two layout choices. Pick Raw data layout if it is offered. Raw data puts each value in its own cell with no merged headers or subtotal rows, which is exactly what a converter wants. The Sage 50 report layout option keeps the on-screen formatting, including blank spacer rows and grouped headings, and those have to be cleaned out by hand.
Save the result as .xlsx or .csv. Either works for the next step.
Step 3: Fix the Cash Account gotcha
This is the step that catches people. The Check Register includes a Cash Account column, and it is tempting to map that straight to the account number field your bank wants. Do not. In Sage 50, the Cash Account column holds the general ledger account ID for the bank, not your real bank account number.
For example, your checking might be GL account 10200 in Sage 50 while the actual account number on the bottom of your checks is something like 1234567890. Your bank's positive pay file matches on the real account number. If you send the GL ID, the bank cannot tie the file to your account and the upload fails or, worse, every check is flagged.
So when you build the file, do not pull the account number from the Sage column. Enter your real bank account number separately, either as a fixed value in your converter or as a column you add to the spreadsheet yourself. Keep the GL account around only if you run several bank accounts and need it to filter which checks belong to which account.
Step 4: Handle voids correctly
Voided checks matter to positive pay. If you wrote check 1050, voided it, and your bank still has it on file as outstanding, someone could try to cash it. A complete issue file tells the bank which check numbers are void so they get rejected at the teller window.
Review the register for any voided checks in the period. Some banks want voids included in the same file with a void status code; others want them in a separate void file or omitted entirely. There is no universal rule, so confirm how your bank wants voids represented before your first upload. If your converter supports a void or status column, map it; if not, handle voids in whatever channel your bank specifies. The amount on a void is usually zero, which is normal.
Step 5: Convert to your bank's positive pay format
Now turn the cleaned spreadsheet into the layout your bank publishes. Every bank is different. Some want a fixed-width text file, most want CSV with columns in a specific order: account number, check number, amount, issue date, and often payee name and a void flag. Date formats vary too, so check whether your bank wants MM/DD/YYYY or YYYYMMDD.
You can build this by hand in Excel, but it is error-prone and you have to redo the column mapping every time. PositivePayMaker does it for free in your browser. It reads your Check Register CSV or Excel file, lets you map Sage 50's columns to your bank's fields once, and writes the output file. Your check data never leaves your computer: the conversion runs entirely client-side, so nothing is uploaded to a server.
It ships with 11 bank layouts, including specs published by Chase and Huntington, plus a custom format builder for banks that are not listed. If your bank has its own template, the builder lets you define field order, delimiters, and date format to match.
Verify the first file with your bank
Before you rely on this every week, send one generated file to your bank and ask them to confirm it loaded without errors. Field positions, headers, and void handling differ between banks, and the only way to know yours is correct is to have them accept a real file. You can also run the output through the free file validator to catch obvious structural problems before you upload.
Once the first file clears, the process becomes routine: run the Check Register for the new batch, copy to Excel, convert, upload. The same approach works for other accounting tools too. If you also use Intuit's software, see the QuickBooks positive pay guide, since QuickBooks cannot export these files natively either.
Why not buy desktop software for this
Paid converters exist, and as of 2026 they are not cheap. Big Red Consulting's PositivePay File Creator runs about $119 the first year and $99 per year after, and it is Windows desktop software that requires Excel installed. Treasury Software's Bank Positive Pay is roughly $29.95 to $89.95 per month, billed per seat, also Windows-only. For a single bank account and a check register you already have, a free client-side converter covers the same ground without the install or the subscription.