For FreshBooks billable expenses, the receipt-to-invoice path is: capture or import the expense data, create the expense in FreshBooks, assign it to the correct client or project, mark it as billable, and then pull it onto a client invoice from the unbilled expenses selector. According to FreshBooks' guide to rebilling expenses, the status changes from Unbilled to Billed when the expense is added to an invoice, and the expense will only appear for rebilling if the expense and invoice use the same currency. If the expense is tied to a project, FreshBooks can also carry the receipt image and project-level markup through that workflow.
The operational sequence is straightforward once you view it as a pipeline instead of a set of isolated help-center steps:
- Capture the receipt details, either by entering them manually or preparing them for import.
- Create the expense in FreshBooks and attach it to the right client or project.
- Mark the expense as billable so it is eligible for rebilling.
- Confirm the invoice will use the same currency, otherwise same-currency rebilling will fail and the expense will not appear.
- Add the expense from the invoice's unbilled expenses picker, at which point its status changes to Billed.
FreshBooks explains expense creation, rebilling, and project settings in separate places. The real operational problem for most teams starts earlier: turning messy receipt data into clean, billable expense records before the invoice step. That is why this guide treats the process as one pipeline rather than a set of disconnected clicks.
Choose manual entry or CSV import before the expense reaches FreshBooks
The right intake path depends on volume. If you only create a handful of one-off reimbursable costs each month, manual entry is usually fine because you can review each receipt individually and catch mistakes as you go. If you process recurring vendor spend, weekly staff receipts, or client pass-through costs in batches, a FreshBooks expense CSV import or CSV-ready prep is usually the better choice because it gives you one review layer before those costs become billable expenses.
FreshBooks can handle low-volume capture when you create expenses from individual receipts and review them one by one. That works for occasional travel, a few client pass-through costs, or one-off reimbursable purchases. The weak point appears when receipts arrive in batches, across multiple staff members, or from recurring vendor spend. At that stage, the problem is less about capture and more about cleanup, which is why export-first batch prep becomes more efficient than repeated manual entry.
Before anything enters FreshBooks, standardize the fields that cause rebilling problems later:
- Merchant or vendor name, using one consistent naming style
- Transaction date, in one format across all rows
- Amount, with refunds or credits clearly marked
- Tax treatment, if the expense needs tax reporting or markup review
- Category, because FreshBooks only allows one category per expense
- Client or project destination, so the charge lands with the right work
- Billable status intent, so your team knows what should be rebilled versus absorbed
- Currency, especially if contractors or client work span multiple countries
That one-category-per-expense rule matters more than it looks. If one receipt mixes client materials, mileage, and internal office supplies, do not push it through as a single expense and hope to sort it out later. Split it into separate expense rows before import or entry so each row has one category, one client or project destination, and one clear billable decision. Keep the original receipt attachments tied to those rows so whoever creates the expense can match the document back to the right line.
This is where most teams actually lose time. The bottleneck is usually not clicking the rebill option inside FreshBooks. It is the manual re-keying between receipt capture and expense creation. An export-first workflow fixes that: extract the receipt data, standardize the fields, review the rows, export to Excel or CSV, and only then import or enter the clean records in FreshBooks. You can automate receipt data extraction for FreshBooks that way, while FreshBooks-compatible invoice and receipt scanning tools and a repeatable batch receipt scanning workflow help at the intake stage.
A concrete example: an agency comes back from a client install with 60 receipts across parking, hotels, courier fees, printer materials, and subcontractor purchases. Manual entry means 60 chances to mistype dates, totals, or client assignments. Invoice Data Extraction can process batches of PDFs, JPGs, and PNGs into structured Excel or CSV so the team can review the rows, split mixed-purpose receipts, and verify each row against its source file and page before those expenses ever reach FreshBooks.
Create the expense so it can be billed to the right client or project
Once you have the receipt data, your next job is to create an expense record that FreshBooks can actually use later for rebilling. That means filling in the operational fields correctly the first time, not just saving a transaction with an amount attached.
When you enter or import the expense, make sure these fields are clean and complete:
-
Amount Use the final amount you want represented on that expense line. If tax treatment matters in your workflow, stay consistent with how your team normally records expenses so the rebilled item matches your accounting records.
-
Date Use the receipt or transaction date, not the day you happened to enter it. This keeps expense reporting, project history, and client documentation aligned.
-
Vendor or merchant Record the supplier name exactly enough that someone reviewing the client charge can recognize it later. Generic entries like "Card purchase" create confusion when the expense shows up for rebilling.
-
Category Pick the single FreshBooks expense category that best matches the cost. This matters for reporting, and it also affects how understandable the charge looks when someone audits the source expense.
-
Client or project assignment This is the field choice that determines whether the expense is merely stored or is positioned properly for client billing.
-
Billable status Mark the expense as billable at creation time if you intend to pass it through. If you leave it non-billable, you create extra cleanup later and increase the odds that the cost never reaches the invoice.
The client-versus-project decision deserves extra attention. If you assign the expense directly to a client, you are saying, in effect, "this cost belongs to this customer," without tying it to a specific job. That can work for straightforward pass-through charges. If you assign it to a project, you create better structure for teams that bill against defined client projects, because the expense sits inside the same delivery context as time, services, and other costs. That distinction matters later when you want cleaner project profitability reporting and a more controlled rebilling workflow.
If you are trying to solve the common "FreshBooks attach receipt to invoice" question, the practical answer is this: you do not usually attach the receipt directly to the invoice as the core workflow step. You attach the receipt to the expense record first. FreshBooks then uses that underlying expense in the rebilling flow, and it can include that supporting proof when the expense is billed from a project context. In other words, treat the receipt attachment as part of expense setup, not as a last-minute invoice fix.
That also means your receipt attachments should be organized at the expense level. Each FreshBooks expense should have the supporting document that matches that exact charge. Treat each expense as one category, one client or project, and one billable decision. If a receipt needs to be split across categories or client assignments, do that before import rather than trying to repair it later in the invoice step.
For imports, each CSV row should represent one rebillable expense with the amount, date, merchant, category, client or project assignment, and billable flag already normalized. If the extracted data from receipts is inconsistent, such as mixed date formats or one row representing several categories, fix that before import. A bad import only moves the manual cleanup downstream.
A rebill-ready FreshBooks expense is straightforward in principle: one real cost, one clear category, one correct client or project, one billable status, and the matching receipt attached to that record. If you set it up that way, the later invoice step is much less likely to break.
Apply markup and keep project profitability accurate
Markup should be a pricing decision, not an automatic accounting habit. In a FreshBooks workflow, it matters most when an expense is tied to a project and you plan to rebill that cost to the client. That is where FreshBooks project expense markup belongs: on costs where your firm is adding coordination, procurement effort, risk, or delivery value, not on every receipt that happens to be billable.
Mechanically, markup changes the amount the client sees when the project expense is rebilled. If a $100 project expense carries a 15% markup, the client-facing amount becomes $115. That is the practical behavior readers usually care about when they search for FreshBooks project expense markup.
A useful policy is to split expenses into two buckets before they ever reach the client:
- Pure pass-through costs: filing fees, client-approved travel, permits, or third-party charges you agreed to reimburse at cost
- Margin-bearing costs: subcontractor coordination, rush purchases, managed print production, sourced materials, or other direct job costs where your firm is doing more than fronting cash
That distinction matters because markup is not a universal setting you should expect to apply across every expense in every context. Some client projects should carry expense markup. Others should stay at exact cost for contractual, ethical, or relationship reasons. If your team does not decide that deliberately by expense type, you end up with inconsistent billing and hard-to-defend invoice lines.
If you care about FreshBooks project profitability expenses, plan level matters too. FreshBooks limits project profitability features to Premium and Select plans. So even if you can rebill expenses, the profitability view you get afterward depends on whether your subscription actually includes that project-level visibility.
Once expenses are rebilled, your reporting is only as good as your category discipline. If you want project profitability to mean something, separate:
- Pass-through reimbursables
- Direct job costs
- Cost of Goods Sold or COGS-type spend, if that is how your firm classifies client-delivery costs
Do that consistently and your project reports are far easier to interpret. Mix everything into one generic expense category and FreshBooks can show that money was spent and rebilled, but it cannot cleanly tell you whether the project margin came from real service value, reimbursed outlays, or markup on delivery costs.
Keep the receipt attached wherever possible, even when the main goal is margin tracking rather than proof of reimbursement. It strengthens the client-facing record if someone questions a marked-up charge, and it gives your team a clear audit trail back to the original vendor amount when reviewing project profitability later.
Pull unbilled expenses onto the invoice and fix the blockers
To complete the rebilling step, open the invoice for the same client the expense was assigned to, or create a new invoice for that client and then pull in the eligible unbilled expense. In practice, this is the last-mile answer to how to rebill expenses in FreshBooks: the expense has to exist first, be marked billable, and be tied to the right client before it can be added from the invoice side. Once you add it, it stops being just one of your FreshBooks unbilled expenses and becomes part of the client-facing invoice line set.
After the expense is attached to the invoice, two things should be true. First, the billable cost is now treated as billed, so it should no longer sit in your open pool of unbilled items for that client. Second, whatever you set earlier carries through: if you added markup, the invoice reflects the marked-up amount rather than the raw cost, and if you attached receipt backup at the expense stage, your documentation trail stays aligned with that expense record. If you track profitability or project reporting inside FreshBooks, this is also the point where the workflow moves from data entry into margin review.
If FreshBooks rebill expenses to client is not working the way you expect, the blocker is usually one of six things:
- Currency mismatch: same-currency rebilling matters. If the expense is in one currency and the invoice is in another, the expense may not appear as eligible for rebilling.
- Wrong client assignment: the expense was saved under the wrong client, or under no client at all, so it cannot surface on the invoice you are building.
- Wrong project context: if you use projects, the expense may be sitting against the wrong project, which can distort both visibility and profitability reporting.
- Not actually marked billable: the expense exists, but it was created as a non-billable cost, so it will never show up in the invoice's billable-expense flow.
- Prep-data inconsistency: imported rows with inconsistent client names, date formats, categories, amounts, or currency fields can leave you with expenses that technically import but are operationally hard to rebill cleanly.
- One receipt covering multiple chargeable items: if a single receipt includes costs that belong to different clients, projects, or markup rules, it should have been split into separate expenses before you got to the invoice.
A quick troubleshooting sequence usually resolves it fast:
- Confirm the invoice client matches the expense client exactly.
- Check that the expense is still unbilled and marked billable.
- Verify the expense currency matches the invoice currency.
- Review the related project assignment if project tracking is enabled.
- Re-open the source receipt and ask whether it should have been one expense or several separate expenses.
- If the expense came from import, inspect the prep file for inconsistent labels, duplicate rows, or mixed formatting that created messy records downstream.
For firms handling only a small number of receipts each month, manual entry may still be perfectly reasonable. The break point comes when volume or repetition turns rebilling into a cleanup job. At that stage, standardize the data before it reaches FreshBooks so your CSV-ready import prep produces clean client, project, amount, tax, and currency fields every time. Then the invoice step becomes a review-and-attach action, not another round of re-keying from receipt images.
One documentation edge case is worth flagging. If you cannot attach valid backup for every reimbursable cost, do not improvise a weak paper trail inside the expense record. Follow your firm's missing receipt policy and affidavit process so the exception is documented correctly without turning this workflow into a receipt-compliance workaround.
The main decision point is this: manual entry is fine when receipt volume is low and the review burden is small. Once receipts become frequent or repetitive, the real efficiency gain comes from standardizing the data before it reaches FreshBooks so rebilling becomes a review step instead of another round of re-keying.
Related Articles
Explore adjacent guides and reference articles on this topic.
FreshBooks Automation: Zapier vs Make vs Power Automate
Compare Zapier, Make, and Power Automate for FreshBooks bills, invoices, and expenses, including native triggers, connector gaps, and API workarounds.
FreshBooks Accounts Payable: Bills, Limits, Workarounds
See which FreshBooks plans include AP, how bills and vendors work, where the workflow breaks, and which workarounds help when manual entry does not scale.
FreshBooks Bill Approval Workflow: What Actually Works
FreshBooks has bills and permissions but no native multi-step bill approvals. Learn when a manual workflow works and when an approval app makes more sense.
Extract invoice data to Excel with natural language prompts
Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.