The quick answer
Enter each open bill from the legacy system as a normal vendor bill, with one line on the Expenses subtab that posts to an equity clearing account such as 3100 Opening Balance instead of an expense account. Post them all in the cutover period and check that A/P Aging matches the legacy aging total. Then make a journal that debits Accounts Payable with a placeholder vendor in Name and credits the clearing account. Your opening trial balance journal credits Accounts Payable with the same placeholder vendor. Apply the two journals to each other with a 0.00 bill payment in Pay Single Vendor. Aging keeps the real bills, the clearing account ends at zero, and the balance sheet matches the legacy trial balance.
The screenshots show sample data. Person and operating-company names are fictional. Use your own records and values when following the steps.
Before you start
You need two things from the old system: its A/P aging, so you can pay each open bill by vendor and due date, and its trial balance, so the ledger starts at the audited numbers. Both contain Accounts Payable. Load both straight into Accounts Payable and payables are counted twice. Load the bills against expense accounts and you book those expenses a second time. The clearing account avoids both problems.
The example company goes live on 08/31/2026 with three open bills totaling 8,450.85. It uses the Administrator role, one subsidiary, US dollars, no tax on the conversion bills, and no bill or journal approvals. The vendors already exist, and the Aug 2026 period is open. Every bill and journal here uses the same A/P account, 2000 Accounts Payable, and the same subsidiary and currency. If you run OneWorld or several A/P accounts, keep all of the conversion entries in one of each, or the offsets won't meet. Aging Reports Use is set to Due Date, and the account allows a bill date outside its posting period, so a June bill can post in August. If your account doesn't, check Allow Transaction Date Outside of Posting Period under Setup > Accounting > Accounting Preferences before you start.
Try the whole thing in a sandbox first. The last step saves a bill payment with no money in it, and some bill payment forms want a check number or other fields before they'll save.
01. Read the legacy totals
Start with the legacy export, because every check later compares against it. The A/P aging sheet lists three open bills: CP-77215 from Cascade Packaging Co. for 2,184.60, NF-30498 from Northgate Freight for 1,396.25 and GB-11862 from Greenbank Coffee Importers for 4,870.00. The total is 8,450.85.
The trial balance sheet carries the same 8,450.85 as a credit to 2000 Accounts Payable, next to a 31,600.00 debit to 1010 Operating Checking and a 23,149.15 credit to 3700 Retained Earnings.
02. Prepare the clearing account
Go to Lists > Accounting > Accounts. In this account, 3100 Opening Balance is an Equity account with a balance of $0.00, and it's the clearing account for every conversion posting. Don't assume your account already has one with the right name and type. Create or confirm it before loading anything, and keep it out of everyday purchasing.
A bill's expense line normally lists expense-type accounts. To choose the equity account there, go to Setup > Accounting > Accounting Preferences, and on the General subtab under General Ledger, check Expand Account Lists and click Save. If your form and role already offer the clearing account on the expense line, you can skip this.
03. Enter each legacy open bill
Go to Transactions > Payables > Enter Bills. Type the vendor's invoice number in Reference No., CP-77215 for the first bill, and choose the Vendor, Cascade Packaging Co. Then type the legacy bill Date, 06/12/2026. In this account NetSuite moves Posting Period to the date's month, Jun 2026.
Set Posting Period back to Aug 2026, the cutover period, so every conversion posting lands in one period. Keep the legacy date, because aging works from it. Type Legacy AP conversion in Memo so the conversion bills are easy to find later. On the Billing subtab, choose the bill's legacy terms, Net 30 here, and Due Date becomes 07/12/2026. If a bill's legacy due date doesn't follow from its terms, use the legacy due date so NetSuite ages it the way the old system did.
On Expenses and Items > Expenses, choose 3100 Opening Balance in Account and type the open amount, 2,184.60, in Amount. Enter the open balance from the legacy aging, not the bill's original total if it was partly paid. Click Add, then Save. No item is needed.
Enter the other two the same way: NF-30498 for Northgate Freight dated 07/24/2026 for 1,396.25 (due 08/23/2026), and GB-11862 for Greenbank Coffee Importers dated 08/19/2026 for 4,870.00 (due 09/18/2026). Both post in Aug 2026 with Net 30 and one 3100 Opening Balance line.
04. Check where the bill posted
Open the saved bill GB-11862 and click the GL Impact subtab. 2000 Accounts Payable is credited $4,870.00 with Greenbank Coffee Importers in Name, and 3100 Opening Balance is debited $4,870.00. No expense account is touched.
05. Match A/P Aging to the legacy total
Go to Reports > Vendors/Payables > A/P Aging as of 08/31/2026. Each bill ages from its due date: Cascade Packaging Co. $2,184.60 in 07/02/2026 - 07/31/2026 (60), Northgate Freight $1,396.25 in 08/01/2026 - 08/30/2026 (30) and Greenbank Coffee Importers $4,870.00 in Current. Your column ranges depend on the as-of date and aging settings. The Total is $8,450.85, the legacy aging total. If it doesn't match, find the missing or doubled bill now, before you reverse anything.
Then go to Reports > Financial > Balance Sheet as of Aug 2026. 2000 Accounts Payable is $8,450.85 and 3100 Opening Balance shows ($8,450.85), a debit balance in an equity account. Both come from the conversion bills.
06. Reverse the conversion to an offset vendor
The trial balance is going to bring Accounts Payable into the ledger, so the conversion has to come back out. Go to Lists > Relationships > Vendors > New, type AP Conversion Offset in Company Name, and click Save. This placeholder vendor holds the offsetting entries so they can be applied to each other later. Don't give it an opening balance, which would add another payable. With OneWorld, give it the same subsidiary as the bills.
Go to Transactions > Financial > Make Journal Entries. Keep Date 08/31/2026 and Posting Period Aug 2026, and type Reverse legacy AP in Memo. Add a line debiting 2000 Accounts Payable 8,450.85 with Name AP Conversion Offset, then a line crediting 3100 Opening Balance 8,450.85. Click Save. Don't leave Name empty on the A/P line.
Open A/P Aging again. AP Conversion Offset shows ($8,450.85) in Current. The three real vendors haven't changed, so the Total is $0.00 for now.
07. Enter the opening trial balance
Make another journal entry dated 08/31/2026 in Aug 2026 with Memo Opening trial balance, using the lines from the legacy trial balance. Debit 1010 Operating Checking 31,600.00, credit 2000 Accounts Payable 8,450.85 with Name AP Conversion Offset, and credit 3700 Retained Earnings 23,149.15. Click Save. The A/P credit names the same placeholder vendor as the reversal, so the two land on one vendor.
08. Apply the two journals to each other
Go to Transactions > Payables > Pay Single Vendor. Choose AP Conversion Offset in Payee and 1010 Operating Checking in Account. The Apply subtab lists both journals for that vendor. In this example the reversal, JE205, shows -8,450.85 and the trial balance journal, JE206, shows 8,450.85. Your journal numbers will differ.
Check both. Their Payment amounts cancel, so the bill payment's Amount stays 0.00. The reversal debit pays the trial balance credit and no cash moves.
Click Save. In this example NetSuite confirms the save and returns to the Bill Payments list, which has no rows, so don't expect a check or a 0.00 payment to show up there. What changes is the two journals: they're applied to each other and no longer open for AP Conversion Offset. The three legacy bills aren't touched and stay open for normal payment.
09. Confirm the finished conversion
Open A/P Aging one more time. Only Cascade Packaging Co., Northgate Freight and Greenbank Coffee Importers remain, in the same columns as before, and the Total is $8,450.85. AP Conversion Offset is gone, and there's no "- No Vendor -" row. That row shows up when an A/P journal line has no vendor in Name, here or anywhere else in the account, so a clean aging also depends on the rest of your A/P history.
Check the result (example values)
- A/P Aging shows only Cascade Packaging Co., Northgate Freight and Greenbank Coffee Importers, totaling $8,450.85, the legacy aging total.
- AP Conversion Offset has no balance, and there's no "- No Vendor -" row.
- On the Balance Sheet, 2000 Accounts Payable is $8,450.85, the same as A/P Aging and the legacy trial balance.
- 1010 Operating Checking is $31,600.00, 3700 Retained Earnings is $23,149.15 and 3100 Opening Balance is $0.00.
- The three legacy bills are still open for payment.
Common questions
Why not post the legacy bills to their original expense accounts?
Those expenses were already booked in the old system, and they're inside the retained earnings on your opening trial balance. Posting the bills to expense accounts again would count them twice. A line to an equity clearing account gives you the bill in Accounts Payable without touching expense, and the reversal takes the clearing balance back to zero.
Why doesn't my Opening Balance account show up on the bill's expense line?
The account list on a bill's expense line usually offers expense-type accounts. Turning on Expand Account Lists under Setup > Accounting > Accounting Preferences lets you choose other account types there, including an equity account. Custom forms, roles and account restrictions can still limit the list, so check with the form and role you'll use for the load.
Should the bill date or the posting period be the go-live date?
Keep the legacy bill date and due date so aging matches the old system, and set the posting period to the cutover period so every conversion entry lands in one place. That only works if the period is open and your account lets a transaction date fall outside its posting period.
What does the "- No Vendor -" row in A/P Aging mean?
It collects A/P postings with no vendor attached, usually journal lines to Accounts Payable with an empty Name. Those amounts can't be applied to anyone's bills, so they sit in aging until someone fixes them. Naming the placeholder vendor on both A/P journal lines is what lets you apply them to each other and clear them.
Can I import the legacy bills with a CSV file instead of typing them?
Yes. Map the vendor, reference number, bill date, posting period, terms or due date, A/P account, the clearing account on the expense line, and the open amount. Import a few bills first, check their GL impact and due dates, then load the rest and compare A/P Aging to the legacy total.
What about partly paid bills and open vendor credits?
For a partly paid bill, enter only the open balance, since that's what you still owe, and keep the payment history in your conversion files. Load an open vendor credit as a vendor credit against the same clearing account, so it shows as a credit for that vendor in aging and nets against the bills in the legacy total.