Reports
Reports in FreshBooks provide detailed data on various aspects of your business. There are seven types of reports you are able to access.
- Invoice Details
- Expense Details
- Profit/Loss
- Aging Accounts
- Tax Summary
- Payments Collected
Access Requirements
Access | Requires Authorization |
Scopes | user:reports:read |
Includes
There are no includes for reports
Filters
Filter Type | Name | Field | Description | Applicable Reports |
---|---|---|---|---|
between | start_date | Date | created during or after the given date | ALL |
between | end_date | Date | created during or before the given date | ALL Except Aging Accounts |
Equals | currency_code | String | reports using the given currency as primary currency | ALL |
Equals | cash_based | Boolean | True ignores billed payments and uses just collected payments | Tax Summary, Profit/Loss Report |
Equals | clientids | int | returns data from specific client(s) | Invoice Details, Payments Collected |
Equals | payment_method | String | returns data from clients who used the specific method of payment | Payments Collected |
Equal | statusids | String | returns invoices that has the same status as the given status. (draft, sent, paid, etc) | Invoice Details |
Equal | date_type | String | returns invoices with the specified date_type (issue or paid) | Invoice Details |
Equals | group_by | String | Data returned is organized by the given argument. (parent_category, clients, vendor, author) | Expense Report |
Equals | exclude_personal | boolean | true returns data without personal expenses included | Expense Report |
Equals | resolution | String | specifies how often data is calculated and stored. For example, “3m” would specify to return data grouped in three month intervals. | Profit/Loss Report |
Invoice Details
The Invoice Details Report shows all the information involving your invoices
Field Descriptions
Field | Type | Description |
---|---|---|
statusids | array | The status id(s) for the invoices. Used for filtering. |
clientids | array | The client id(s) that are on the invoices. Used for filtering |
end_date | Date | Will only return invoices that were created before the given date |
date_type | string | If equals “issue”, Date will be the date the invoice was issued. If equals “paid”, date will be the date the invoice was paid. |
invoiceid | int | The unique id of the invoice |
create_date | Date | The date the invoice was created |
due_offset_Days | int | Number of days from creation that the invoice is due |
outstanding | Object | Subfields: amount, code |
amount | string | the amount of money that is owed or been paid |
code | string | the currency that the amount is in |
po_number | int | post office box number for address on invoice |
lines | array | Lines of the invoice |
tax | object | sub fields: amount, code |
paid | object | sub fields: amount, code |
date_paid | Date | The date the invoice was paid |
v3_status | string | description of Invoice Status |
discount_total | object | subfields: amount, code |
invoice_number | string | user-specified and visible invoice id |
total | object | subfields: amount, code |
subtotal | object | user-specified and visible invoice id |
currency_code | string | three-letter currency code for invoice |
userid | int | The unique id of the client |
summary | object | subfields: total, paid, outstanding, download_token, company_name, start_date, currency_code |
download_token | string | the download token allows you to download the report into a csv file |
company_name | string | the name of the company that the report is refering to |
start_date | Date | the starting date for the expense report query |
currency_code | string | three-letter currency code for invoice |
lname | string | the last name of the user |
fname | string | first name of the user |
organization | string | name of the organization the user is a part of |
string | The email of the user |
Expenses
The Expenses Report shows all the information involving your Expenses
Field Descriptions
Field | Type | Description |
---|---|---|
exclude_personal | boolean | true doesn’t return personal expenses |
end_date | Date | Will only return invoices that were created before the given date |
clients | object | subfields: clientid(s) |
clientid(s) | object | subfields: language, userid, email, lname, fname, organization, id |
language | string | 2 letter string representing the primary language of the client |
userid | int | duplicate value of the client’s id |
string | the email of the client | |
lname | string | last name of the client |
fname | string | first name of the client |
organization | string | name of the organization the client is a part of |
id | int | unique id for the client |
download_token | string | the download token allows you to download the report into a csv file |
vendors | object | subfields: vendorid(s) |
vendorid(s) | string | the name of the vendor |
group_by | string | The category that you would like to group your data by |
currency_code | string | three-letter currency code for invoice |
authors | object | subfields: userid(s) |
userid(s) | object | subfields: lname, fname, email, organization, userid |
data | array | holds majority of the numerical data that is returned |
groupid | string | unique id for the group |
total | object | subfields: amount, code |
amount | string | the amount of money that is owed or been paid |
code | string | the currency that the amount is in |
children | array | holds data about a sub expense |
expenses | array | stores Expense objects |
vendorid | string | the unique id for the vendor |
vendor | string | The name of the vendor |
notes | string | custom notes about the expense |
clientid | int | unique id for the client |
taxPercent1 | string | the percentage you are being taxed on |
authorid | string | id for the author |
taxName1 | string | the name of the first tax |
taxName2 | string | the name of the second tax |
date | Date | the date the expense took place |
taxAmount2 | object | subfields: amount, code |
taxAmount1 | object | subfields: amount, code |
expenseid | int | uniqueid for the expense |
taxPercent2 | string | the percentage you are being taxed on |
categoryid | string | unique id for the category of the expense |
start_date | Date | the starting date for the expense report query |
categories | object | subfields: categoryid(s) |
categoryid(s) | object | subfields: category, subcategory_name, categoryid |
category | string | name of the category |
subcategory_name | string | name of the subcategory |
categoryid | int | unique id for the category |
company_name | string | name of the company that the expenses are charged too |
Profit/Loss
The profit/Loss Report shows all the information involving both your Profits and Losses
Field Descriptions
Field | Type | Description |
---|---|---|
net_profit | object | subfields: entry_type, total, data, description, children |
entry_type | string | method of payment |
total | object | subfields: amount, code |
amount | string | the amount of money paid or owed |
code | string | the currency that the amount is in |
data | array | Data[] represents a row of values in the profit/loss report. Each row in the profit/loss report will output a data array. To populate data you must specify a resolution. For example resolution=3m with populate each data array with 4 amount objects |
description | string | The description for the net profit portion of the report |
children | array | holds info on child profits/expenses |
total_income | object | subfields: entry_type, total, data, description, children |
end_date | Date | the ending date for the profit/loss report query |
income | array | holds income objects |
labels | array | labels is an array that holds all the months of profit/loss recording specified by resolution. |
expenses | array | holds expense objects |
download_token | string | the download token allows you to download the report into a csv file |
company_name | string | The name of the company the profit/loss report belongs to |
cash_based | boolean | true toggles profit/loss to be calculated on collected payments rather than billed |
total_expense | object | subfields: entry_type, total, data, description, children |
resolution | string | specifies the frequency that the profit/loss report is calculated. Example quarterly vs annually |
start_date | Date | the starting date for the expense report query |
currency_code | string | three-letter currency code for invoice |
Account Aging Report
The Account Aging Report shows details regarding overdue invoices from clients
Field | Type | Description |
---|---|---|
totals | object | subfields: intervals (0-30, 31-60, 61-90, 91+). Each interval represents the amount due from overdue invoices. |
interval(x)’s | object | subfields: amount, code |
amount | string | the amount of money paid or owed |
code | string | the currency that the amount is in |
download_token | string | the download token allows you to download the report into a csv file |
accounts | array | holds client objects |
userid | int | unique id for the client |
lname | string | the last name of the client |
fname | string | the first name of the client |
organization | string | the organization the client belongs to |
string | the email belonging to the client | |
company_name | string | the company that the report refers to |
currency_code | string | three-letter currency code for overdue payments |
end_date | Date | the ending date for the profit/loss report query |
Payments Collected Report
The payments Collected Report shows details regarding collected payments made to your business
Field | Type | Description |
---|---|---|
currency_code | array | filters payments by specific currency code(s) |
start_date | Date | the starting date for the payments collected report query |
end_date | Date | the ending date for the payments collected report query |
clientsids | array | filters payments by specific client(s) using their client id |
payment_methods | array | filters payments by specific method(s) of payments |
download_token | string | the download token allows you to download the report into a csv file |
totals | array | holds total objects with subfields: amount, code |
amount | string | the amount of money paid or owed |
code | string | the currency that the amount is in |
payments | array | holds payment objects with the subfields: invoiceid, description, clientid, amount, client, date, invoice_number, method |
invoiceid | int | the unique id of the invoice |
description | string | the description of the payment |
clientid | int | the unique id of the client |
client | string | the name of the business the client belongs to |
date | Date | the date of the payment |
invoice_number | string | a custom id for the invoice |
method | string | method of payment |
Tax Summary Report
The Tax Summary Report that outlines the taxes involved with your sales
Field | Type | Description |
---|---|---|
total_invoiced | object | subfields: amount, code |
amount | string | the amount of money paid or owed |
code | string | the currency that the amount is in |
start_date | Date | the starting date for the tax summary report query |
end_date | Date | the ending date for the tax summary report query |
taxes | array | holds tax objects with subfields: taxable_amount_paid, taxable_amount_collected, net_taxable_amount, tax_paid, tax_collected, net_tax, tax_name |
taxable_amount_paid | object | subfields: amount, code |
taxable_amount_collected | object | subfields: amount, code |
net_taxable_amount | object | subfields: amount, code |
tax_paid | object | subfields: amount, code |
tax_collected | object | subfields: amount, code |
net_tax | object | subfields: amount, code |
tax_name | object | subfields: amount, code |
download_token | string | the download token allows you to download the report into a csv file |
cash_based | boolean | true toggles tax to be calculated on collected sales rather than billed |
currency_code | string | three-letter currency code for overdue payments |
Get Invoice details
curl -X GET
-H "Authorization: Bearer <a token>"
-H "Api-Version: alpha"
-H "Content-Type: application/json"
"https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/invoice_details?start_date=2017-01-01&end_date=2017-12-31"
Response:
{
"response": {
"result": {
"invoice_details": {
"statusids": [],
"end_date": "2017-12-31",
"clientids": [],
"date_type": "issue",
"clients": [
{
"invoices": [
{
"invoiceid": 638384,
"create_date": "2016-04-04",
"due_offset_days": 0,
"outstanding": {
"amount": "0.00",
"code": "CAD"
},
"po_number": null,
"lines": [],
"tax_summaries": [],
"tax": {
"amount": "0.00",
"code": "CAD"
},
"paid": {
"amount": "0.00",
"code": "CAD"
},
"date_paid": null,
"v3_status": draft,
"discount_total": {
"amount": "0.00",
"code": "CAD"
},
"invoice_number": "0000001",
"total": {
"amount": 0.00,
"code": CAD
},
"subtotal": {
"amount": "0.00",
"code": "CAD"
},
"currency_code": "CAD"
}
],
"userid": 144577,
"summary": {
"total": {
"amount": "0.00",
"code": "CAD"
},
"paid": {
"amount": "0.00",
"code": "CAD"
},
"outstanding": {
"amount": "0.00",
"code": "CAD"
},
"lname": "Doe",
"fname": "Jane",
"organization": "Company and Co",
"email": "[email protected]",
}
],
"summary": {
"total": {
"amount": "0.00",
"code": "CAD"
},
"paid": {
"amount": "0.00",
"code": "CAD"
},
"outstanding": {
"amount": "0.00",
"code": "CAD"
},
"download_token": "bunch of letters and numbers",
"company_name": "My Company",
"start_date": "2017-01-01",
"currency_code": "CAD"
}
}
}
}
Example Searches for Invoice Details
Get Invoice Details for a Specific Client
Request: GET https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/invoice_details?start_date=2017-01-01&end_date=2017-12-31&clientids%5B%5D=144577
Get Invoice Details of Sent Invoices
Request: GET https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/invoice_details?start_date=2017-01-01&end_date=2017-12-31&statusids%5B%5D=sent
Get Expense Details
curl -X GET
-H "Authorization: Bearer <a token>"
-H "Api-Version: aplha"
-H "Content-Type: application/json"
"https://api.freshbooks.com/accounting/account/<account_id>/reports/accounting/expense_details?start_date=2017-01-01&end_date=2017-12-31"
Response:
{
"response": {
"result": {
"expense_details": {
"exclude_personal": false,
"end_date": "2017-12-31",
"clients": {
"0": {
"language": null,
"userid": null,
"email": "[email protected]",
"lname": "Doe",
"fname": "Jane",
"organization": "Company and Co",
"id": null
},
"144599": {
"langauge": null,
"userid": 144599,
"email": "[email protected]",
"lname": "Wayne",
"fname": "bruce",
"organization": "Fake Company",
"id": 144599
}
},
"download_token": "A bunch of letters and numbers",
"vendors": {
"92d61cbb2aa3a9e323151955eb4484b2": "Vendor 1",
"419107f1667df41b85d4eef9455ae41a": "Vendor 2",
},
"group_by": "category",
"currency_code": "CAD",
"authors": {
"1": {
"lname": "Parker",
"organization": "Spurs",
"userid": 1,
"email": "[email protected]",
"fname": "Tony",
}
},
"data": [
{
"groupid": "5372370",
"total": {
"amount": "854.76",
"code": "CAD"
},
"children": [],
"expenses": [
{
"vendorid": "419107f1667df41b85d4eef9455ae41a",
"vendor": "vendor 1",
"notes": "",
"amount": {
"amount": "854.76",
"code": "CAD"
},
"clientid": "144599",
"taxPercent1": null,
"authorid": "1",
"taxName2": "Tax Two",
"taxName1": "Tax One",
"date": "2017-07-21",
"taxAmount2": {
"amount": "0.00",
"code": "CAD"
},
"expenseid": 999712,
"taxPercent2": null,
"taxAmount1": {
"amount": "0.00",
"code": "CAD"
},
"categoryid": "5372366",
}
]
}
],
"start_date": "2017-01-01",
"categories": {
"5372366": {
"category": "Gas",
"subcategory_name": "Gas",
"categoryid": "5372366"
},
"5372370": {
"category": "Personal",
"subcategory_name": "personal (general)",
"categoryid": 5372370
}
},
"company_name": "My Company Name"
}
}
}
}
Example Searches with Expense Details
Get Expense Details Between a Specific Range
Request: GET https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/expense_details?start_date=2016-04-19&end_date=2017-07-25
Get Expense Details Excluding Personal Expenses
Request: GET https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/expense_details?start_date=2016-04-19&exclude_personal=true&end_date=2017-09-17
Get Profit/Loss Report
curl -X GET
"Authorization: <a token >"
"Api-Version: alpha"
"Content-Type: application/json"
https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/profitloss_entity?start_date=2017-01-01&end_date=2017-12-31"
code>
Response:
{
"response": {
"result": {
"profitloss": {
"net_profit": {
"entry_type": "credit",
"total": {
"amount": "-1572.18",
"code": "CAD"
},
"data": [],
"description": "Net Profit (CAD)",
"children": []
},
"total_income": {
"entry_type": "credit",
"total": {
"amount": "0.00",
"code": "CAD"
},
"data": [],
"description": "Gross Profit",
"children": []
},
"end_date": "2017-12-31",
"income": [
{
"entry_type": "credit",
"total": {
"amount": "0.00",
"code": "CAD"
},
"data": [],
"description": "Sales",
"children": []
},
{
"entry_type": "credit",
"total": {
"amount": "0.00",
"code": "CAD"
},
"data": [],
"description": "Cost of Goods Solds",
"Children": []
}
],
"labels": [],
"expenses": [
{
"entry_type": "credit",
"total": {
"amount": "854.76",
"code": "CAD"
},
"data": [],
"description": "Car & Truck Expenses",
"children": [
{
"entry_type": "debit",
"total": {
"amount": "717.42",
"code": "CAD"
},
"data": [],
"description": "Gas",
"children": []
}
]
},
{
"entry_type": "debit",
"total": {
"amount": "717.42",
"code": "CAD"
},
"data": [],
"description": "Personal",
"children": [
{
"entry_type": "debit",
"total": {
"amount": "717.42",
"code": "CAD"
},
"data": [],
"description": "Personal (general)",
"children": []
}
]
}
],
"download_token": "A bunch of letters and numbers",
"company_name": "My Company",
"cash_based": false,
"total_expense": {
"entry_type": "debit",
"total": {
"amount": "1572.18",
"code": "CAD"
},
"data": [],
"description": "Total Expenses",
"children": []
},
"resolution": null,
"start_date": "2017-01-01",
"currency_code": "CAD"
}
}
}
}
Example Search with Profit/loss report
Get Profit/Loss report quarterly instead of anually
Request: GET https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/profitloss?start_date=2017-01-01&end_date=2017-12-31&resolution=3m
Get Tax Summary Report
curl -X GET
-H "Authorization: Bearer <a token>"
-H "Api-Version: alpha"
-H "Content-Type: application/json"
"https://api.freshbooks.com/accounting/account/<account_id>/reports/accounting/taxsummary?start_date=2017-01-01&end_date=2017-12-31"
Response:
{
"response": {
"result": {
"taxsummary": {
"total_invoiced": {
"amount": "0.00",
"code": "CAD"
},
"end_date": "2017-12-31",
"taxes": [
{
"taxable_amount_paid": {
"amount": "854.76",
"code": "CAD"
},
"tax_collected": {
"amount": "0.00",
"code": "CAD"
},
"tax_name": "Tax One",
"net_tax": {
"amount": "0.00",
"code": "CAD"
},
"taxable_amount_collected": {
"amount": "0.00",
"code": "CAD"
},
"net_taxable_amount": {
"amount": "-854.76",
"code": "CAD"
},
"tax_paid": {
"amount": "0.00",
"code": "CAD"
}
},
{
"taxable_amount_paid": {
"amount": "854.76",
"code": "CAD"
},
"tax_collected": {
"amount": "0.00",
"code": "CAD"
},
"tax_name": "Tax Two",
"net_tax": {
"amount": "0.00",
"code": "CAD"
},
"taxable_amount_collected": {
"amount": "0.00",
"code": "CAD"
},
"net_taxable_amount": {
"amount": "-854.76",
"code": "CAD"
},
"tax_paid": {
"amount": "0.00",
"code": "CAD"
}
}
],
"download_token": "A bunch of Characters",
"cash_based": false,
"start_date": "2017-01-01",
"currency_code": "CAD"
}
}
}
}
Search Example With Tax Summary
Tax Summary using Collected instead of billed
Request GET:
https://api.freshbooks.com/accounting/account/<account_id>/reports/accounting/taxsummary?start_date=2017-01-01&end_date=2017-12-31&cash_based=true
Payments Collected Report
curl -X GET
-H "Authorization: Bearer <a token>"
-H "Api-Version: alpha"
-H "Content-Type: application/json"
"https://api.freshbooks.com/accounting/account/<account_id>/reports/accounting/payments_collected?start_date=2017-01-01&end_date=2017-12-31"
Response:
{
"response": {
"result": {
"payments_collected": {
"currency_codes": [],
"end_date": "2017-12-31",
"clientids": [],
"payment_methods": [],
"totals": [
{
"amount": "114.77",
"code": "CAD"
}
],
"download_token": “A lot of characters“,
"payments": [
{
"invoiceid": 668361,
"description": "",
"clientid": 144599,
"amount": {
"amount": "114.77",
"code": "CAD"
},
"client": "Magic",
"date": "2017-07-26",
"invoice_number": "0000012",
"method": "Bank Transfer"
}
],
"start_date": "2017-07-26"
}
}
}
}
Search Example with Payments Report
Searching Payment information by Client
Request: GET
https://api.freshbooks.com/accounting/account/<account_id>/reports/accounting/payments_collected?start_date=2017-01-01&end_date=2017-12-31&clientids%5B%5D=144599
Get Account Aging Report
curl -X GET
-H "Authorization: Bearer <a token>"
-H "Api-Version: alpha"
-H "Content-Type: application/json"
"https://api.freshbooks.com/accounting/account/<account_id>/reports/accounting/accounts_aging?start_date=2017-01-01&end_date=2017-12-31"
Response:
{
"response": {
"result": {
"accounts_aging": {
"end_date": "2017-12-31",
"totals": {
"0-30": {
"amount": "0.00",
"code": "CAD"
},
"61-90": {
"amount": "0.00",
"code": "CAD"
},
"total": {
"amount": "0.00",
"code": "CAD"
},
"91+": {
"amount": "0.00",
"code": "CAD"
}, "31-60": {
"amount": "0.00",
"code": "CAD"
}
},
"download_token": “Lots of Characters”,
"accounts": [],
"company_name": "FB",
"currency_code": "CAD"
}
}
}
}
Search Example with Account Aging Report
Get the accounts until a certain end date
Request: GET
https://api.freshbooks.com/accounting/account/<accountid>/reports/accounting/accounts_aging?end_date=2017-05-17