×
Freshbooks
Official App
Free – Google Play
Get it

Expenses

General Info

Expenses are used to track expenditures your business incurs.

Expense Status Table

Expense statuses are not directly modifiable. Each is a description of the status of the expense, e.g. "expense has client, expense is attached to an invoice".

codenamedescription
0internal-internal- rather than client
1outstandinghas client, needs to be applied to an invoice
2invoicedhas client, attached to an invoice
4recoupedhas client, attached to an invoice, and paid

Includes

Include NameDescription
categoryinclude expense category in expense
expense_profileinclude expense profile info in expense
projectinclude related projects in expense
accountinclude account info in expense

Filters

Filter TypeNameFieldDescription
Equalsexpenseidexpenseidmatches exact expenseid
Inexpenseidsexpenseidmatches list of expenseids, one specified per query arg
Equalsclientidclientidmatches exact clientid
Inclientidsclientidmatches list of clientids, one specified per query arg
NotEqualsclientid_notclientidany clientid but the parameter
Equalsstaffidstaffidmatches exact staffid
Instaffidsstaffidmatches list of staffids, one specified per query arg
Equalsprofileidprofileidmatches exact profileid
Inprofileidsprofileidmatches list of profileids, one specified per query arg
Equalscategoryidcategoryidmatches exact categoryid
Incategoryidscategoryidmatches list of categoryids, one specified per query arg
Equalsprojectidprojectidmatches exact projectid
Inprojectidsprojectidmatches list of projectids, one specified per query arg
Equalshas_receipthas_receipttrue/false expense has related receipt
Betweenamount_minamountamount greater than or equal to parameter
Betweenamount_maxamountamount less than parameter
Betweendate_mindatedate greater than or equal to parameter, YYYY-MM-DD format
Betweendate_maxdatedate less than parameter, YYYY-MM-DD format
Betweenupdated_minupdatedupdated date greater than or equal to parameter, YYYY-MM-DD format
Betweenupdated_maxupdatedupdated date less than parameter, YYYY-MM-DD format
Likevendorvendorvendors containing the parameter
Equalsvendor_eqvendorexact match of vendor field
Likenotesnotesnotes containing the parameter
Likecategory _namecategorycategory containing the parameter
Boolis_cogsis_cogsis cost of goods sold or not
Intransactionidstransactionidmatches list of transactionids, one specified per query arg
Equalsaccountidaccountidexact match of accountid
Inaccountidsaccountidmatches list of accountids, one specified per query arg
Equalsaccount _namenamematches exact name
Equalcategory _parentidspecialmatches either exact categoryid or parentid

Field Descriptions

FieldTypeDescription
categoryidintid of related expense category
markup_percentstringstring-decimal, note of percent to mark expense up
projectidintid of related project if applicable
clientidintid of related client if applicable
taxPercent1stringstring-decimal tax amount
taxName1stringname of first tax
taxPercent2stringstring-decimal tax amount for second tax
taxName2stringname of second tax
isduplicatebooltrue/false is duplicated expense
profileidintid of related profile if applicable
account_namestringname of related account if applicable
transactionidintid of related transaction if applicable
invoiceidintid of related invoice if applicable
idintduplicate of expenseid
taxAmount2objectsubfields amount and code
amountstringstring-decimal
codestring3-letter currency code
taxAmount1objectsubfields amount and code
amountstringstring-decimal
codestring3-letter currency code}
vis_stateint0 for active, 1 for deleted
statusintvalues from expense status table
bank_namestringname of bank expense was imported from, if applicable
updateddatetimetime invoice last updated at, YYYY-MM-DD HH:MM:SS format
vendorstringname of vendor
ext_systemidintid of related contractor system if applicable
staffidintid of related staff member if applicable
datedatedate of expense, YYYY-MM-DD format
has_receiptbooltrue/false has receipt attached
accounting _systemidstringunique id for system
background_jobidint(internal) id for related background job if applicable
notesstringnotes about expense
ext_invoiceidintid of related contractor invoice if applicable
amountobjectsubfields amount and code
amountstringstring-decimal
codestring3-letter currency code
expenseidintunique to this business id for expense
compounded_taxbooltrue/false tax2 was a compound tax
accountidintid of expense account if applicable

Get Expense

Request: GET https://api.freshbooks.com/accounting/account/<accountid>/expenses/expenses/<id>

Response:
{
  "response": {
    "result": {
      "expense": {
        "categoryid": 121374834,
        "markup_percent": "0",
        "projectid": 0,
        "clientid": 0,
        "taxPercent1": "100",
        "taxName2": null,
        "taxName1": "HST",
        "isduplicate": false,
        "profileid": null,
        "taxPercent2": null,
        "account_name": null,
        "transactionid": null,
        "invoiceid": null,
        "id": 1569533,
        "taxAmount2": null,
        "taxAmount1": {
          "amount": "1.30",
          "code": "CAD"
        },
        "vis_state": 0,
        "status": 0,
        "bank_name": null,
        "updated": "2016-09-27 21:09:13",
        "vendor": "Ice Cream",
        "ext_systemid": 0,
        "staffid": 1,
        "date": "2016-09-19",
        "has_receipt": false,
        "accounting_systemid": "KAG77",
        "background_jobid": null,
        "notes": "Rocky Road",
        "ext_invoiceid": 0,
        "amount": {
          "amount": "10.00",
          "code": "CAD"
        },
        "expenseid": 1569533,
        "compounded_tax": false,
        "accountid": null
      }
    }
  }
}

Create Expense

Request: POST https://api.freshbooks.com/accounting/account/<accountid>/expenses/expenses
{
  "expense": {
    "amount": {
      "amount": "39.991"
    },
    "categoryid": 93993004,
    "staffid": 1,
    "date": "2009-11-24"
  }
}
Response:
{
  "response": {
    "result": {
      "expense": {
        "categoryid": 93993004,
        "markup_percent": "0",
        "projectid": 0,
        "clientid": 0,
        "taxPercent1": null,
        "taxName2": null,
        "taxName1": null,
        "isduplicate": true,
        "profileid": null,
        "taxPercent2": null,
        "account_name": null,
        "transactionid": null,
        "invoiceid": null,
        "id": 1574917,
        "taxAmount2": null,
        "taxAmount1": null,
        "vis_state": 0,
        "status": 0,
        "bank_name": null,
        "updated": "2016-09-29 19:08:17",
        "vendor": null,
        "ext_systemid": 0,
        "staffid": 1,
        "date": "2009-11-24",
        "has_receipt": false,
        "accounting_systemid": "zDmNq",
        "background_jobid": null,
        "notes": "",
        "ext_invoiceid": 0,
        "amount": {
          "amount": "39.991",
          "code": "USD"
        },
        "expenseid": 1574917,
        "compounded_tax": false,
        "accountid": null
      }
    }
  }
}

Update Single Expense

Request: PUT https://api.freshbooks.com/accounting/account/<accountid>/expenses/expenses/<id>
{
  "expense": {
    "vendor": "Arnold Vendor"
  }
}
Response:
{
  "response": {}
}

Delete Single Expense

Request: PUT https://api.freshbooks.com/accounting/account/<accountid>/expenses/expenses/<id>
{
  "expense": {
    "vis_state": 1
  }
}
Response:
{
  "response": {}
}

List Expenses

Request: GET https://api.freshbooks.com/accounting/account/<accountid>/expenses/expenses

Response:
{
  "response": {
    "result": {
      "per_page": 15,
      "pages": 1,
      "total": 3,
      "page": 1,
      "expenses": [
        {
          // same format as single expense
        },
        {
          // same format as single expense
        },
        {
          // same format as single expense
        }
      ]
    }
  }
}