How to create an invoice for a job in NetSuite
To create an invoice for a job in NetSuite, go to Transactions > Sales > Invoice Sales Orders > Project Invoicing (or open the Project record and click Bill). Select the project, choose the billing type (time-and-materials, fixed-fee, or charge-based), review the billable charges, and save the invoice. NetSuite will draw billable time entries, expense reports, and charges from the project, applying any negotiated rates from the customer or project record.
For a quick step-by-step, this is the canonical workflow. The exact path depends on which NetSuite project module you use (Projects, Advanced Projects, SuiteProjects/OpenAir) — covered below.
The 3 ways to invoice a job in NetSuite
Which path you use depends on your project setup:
Option 1: Bill directly from the Project record (most common)
This works for time-and-materials, fixed-fee, and charge-based projects when you use NetSuite's native Projects module.
- Open the project: Lists > Activities > Projects (or Transactions > Sales > Projects)
- Locate the project with billable charges
- Click the "Bill" button on the project header
- NetSuite opens an invoice draft with all billable items pre-populated
- Review the line items:
- Time entries marked as billable
- Expenses with the "billable" flag
- Project milestones or fixed-fee charges
- Adjust if needed — remove lines, update rates, or change descriptions
- Verify the customer, billing address, and due date
- Save (or save and email/print to send to client)
Option 2: Use the Invoice Sales Orders > Project Invoicing flow (batch)
If you bill multiple projects at month-end, the batch interface is more efficient:
- Go to Transactions > Sales > Invoice Sales Orders > Project Invoicing
- Filter by customer, project status, or date range
- Select the projects to invoice (checkbox)
- Click "Create Invoices" — NetSuite generates one invoice per project (or one consolidated invoice per customer, depending on your setup)
- Review each generated invoice in batch
This is the standard workflow for services firms doing month-end billing across 20-100+ projects.
Option 3: From a charge record (for charge-based projects)
If your project uses Charge-Based Billing (a specific NetSuite project billing type), you create charges first and invoice them in a second step:
- Open the project and verify the billing type is "Charge-Based"
- Create charges: Lists > Accounting > Charges > New (or from the project sub-tab)
- Set the charge type (rate, fixed, expense, etc.)
- Run the charge process: Transactions > Sales > Bill Sales Order or use the Project Invoicing batch
- NetSuite consolidates charges into an invoice for the customer
Charge-based billing gives you fine-grained control over what gets invoiced when — useful for complex T&M arrangements, milestone-triggered fixed fees, or retainer drawdowns.
Setting up billable items on a project
Before you can invoice a job, billable items have to exist on the project. The common sources:
Billable time entries
- Time entries are created by team members via Activities > Track Time, or via Weekly Timesheets
- Each time entry must have
Billable: Trueon the entry — otherwise it never appears on an invoice - The service item on the time entry determines the billing rate. Either:
- Use a generic service item with the project's default rate
- Use role-specific service items (Senior Consultant, Junior Developer, etc.) with different rates
- Override rates at the project level if the customer negotiated different rates than your standard list
Billable expenses
- Expense reports with
Billable: Truecheckbox on each line - Markup percentage can be configured per customer or per project (e.g., 10% markup on travel costs)
- Receipts can be attached and optionally included as PDF on the customer invoice
Project milestones / fixed-fee charges
- Open the project record > Financial sub-tab
- Add a billing rule for the fixed fee (e.g., "30% on kickoff, 40% on midpoint, 30% on delivery")
- Set the milestone date or trigger (manual, date-based, or % completion-based)
- When the milestone is reached, NetSuite generates the charge automatically — ready to invoice
Common errors when creating a job invoice
After supporting dozens of services teams on NetSuite, these are the recurring issues:
"No billable items found for this project"
Causes:
- Time entries weren't marked Billable
- Expenses weren't flagged Billable
- The project's billing type doesn't match the items (e.g., a Fixed-Fee project won't pull T&M time entries)
- Billable items are dated outside the invoice date range you selected
Fix: open the project's Time and Expense sub-tabs. Filter for entries where Billable = False but should be True. Bulk-update with a mass update or saved search.
"Insufficient permissions" when clicking Bill
Cause: the user role doesn't have permission for the Invoice transaction type or for the project's customer.
Fix: ensure the role has at least View access to the customer record and Create access to Invoice transactions. For project managers, the typical permission set is Project Manager role plus Custom Invoice Permissions on assigned customers.
Invoice generates with wrong rates
Cause: the project's rate hierarchy isn't set up correctly. NetSuite uses this priority order:
- Charge-level rate (if charge-based)
- Project resource role override
- Project billing rate
- Customer billing rate
- Service item default rate
Fix: identify which level should determine the rate, and ensure it's populated. The most common mistake is leaving the project resource role rate blank and relying on the service item, which doesn't reflect the customer's negotiated rate.
Invoice misses billable items that should be there
Cause: time entries or expenses are in "Approval Pending" status, not "Approved." NetSuite only invoices approved billable items.
Fix: process the approval queue (Approvals > Approve Time Entries / Approve Expense Reports) before running the invoicing flow.
Project Invoicing flow shows no projects
Cause: project status is "Not Started" or "Closed," or there are no unbilled approved charges.
Fix: filter by project status = "In Progress" or "Pending Closure" on the Project Invoicing screen. Also check that the project has at least one unbilled approved time entry, expense, or charge.
Job invoicing in OpenAir (PSA) — different module
If your team uses NetSuite OpenAir (Professional Services Automation) instead of native Projects, the invoicing flow lives in OpenAir, not in NetSuite ERP. Quick differences:
- OpenAir is a separate-module Oracle product specifically for services firms; invoicing happens in OpenAir, then syncs to NetSuite ERP as an invoice transaction
- Native NetSuite Projects is built into the ERP and invoices directly into the same NetSuite account
- SuiteProjects is a deprecated middle product; most accounts have either Projects or OpenAir, not SuiteProjects
For OpenAir-based job invoicing: go to Invoices > Generate Invoices, select projects, set the date range, and approve. The synced invoice appears in NetSuite ERP under Transactions > Sales > Invoices.
Common questions about NetSuite job invoicing
Frequently Asked Questions
When job invoicing breaks down at scale
For services firms billing 100+ projects per month, the standard NetSuite Projects module sometimes hits limits — complex rate hierarchies, multi-currency project billing, intricate revenue recognition, or unique customer billing rules. We help services teams refine their NetSuite project setup, build custom invoicing flows where needed, and integrate with revenue recognition modules. Contact our team if you're hitting friction with project billing at scale.
Related reading: NetSuite OpenAir PSA guide · NetSuite Advanced Financials guide · NetSuite customization guide

BrokenRubik
NetSuite Development Agency
Expert team specializing in NetSuite ERP, SuiteCommerce development, and enterprise integrations. Oracle NetSuite partner with 8+ years of experience delivering scalable solutions for mid-market and enterprise clients worldwide.
Related Articles
How to Kill a Script in NetSuite (SuiteScript Debugging 2026)
Stop a running SuiteScript that won't terminate. How to identify the runaway script, kill it safely, and prevent it from happening again.
NetSuite for Professional Services (2026)
How professional services firms use NetSuite for project accounting, resource management, time tracking, and financial operations.
Acumatica vs NetSuite: Unlimited Users vs Ecosystem
Acumatica offers unlimited users. NetSuite charges per seat but has 3x the partner network. Compare pricing, manufacturing depth, and which ERP fits.
BrokenRubik