Expense Reporting
GET https://YOURACCOUNT.harvestapp.com/people/{USER_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD
This call requires parameters (from
and to
) to describe the timeframe to use for a report.
You can filter by is_closed
status, for example to show only the expenses that have not yet been approved by an Administrator. Acceptable values are yes
and no
.
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD&is_closed=no
You can also filter by updated_since. To show only the expenses that have been updated since “2015-09-25 18:30”, pass the UTC date time value (URL encoded).
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD&updated_since=2015-09-25+18%3A30
HTTP Response: 200 OK
Examples
<?xml version="1.0" encoding="UTF-8"?>
<expenses type="array">
<expense>
<id type="integer">4</id>
<total-cost type="decimal">100.0</total-cost>
<units type="decimal">1.0</units>
<created-at type="dateTime">2015-10-02T23:34:55Z</created-at>
<updated-at type="dateTime">2015-10-02T23:34:55Z</updated-at>
<project-id type="integer">24</project-id>
<expense-category-id type="integer">2</expense-category-id>
<user-id type="integer">1</user-id>
<spent-at type="date">2015-10-02</spent-at>
<is-closed type="boolean">false</is-closed>
<notes>Some notes.</notes>
<invoice-id type="integer">0</invoice-id>
<billable type="boolean">true</billable>
<company-id type="integer">1</company-id>
<has-receipt type="boolean">false</has-receipt>
<receipt-url></receipt-url>
<is-locked type="boolean">false</is-locked>
<locked-reason nil="true"/>
</expense>
</expenses>
[
{
"expense": {
"id": 4,
"total_cost": 100,
"units": 1,
"created_at": "2015-10-02T23:34:55Z",
"updated_at": "2015-10-02T23:34:55Z",
"project_id": 24,
"expense_category_id": 2,
"user_id": 1,
"spent_at": "2015-10-02",
"is_closed": false,
"notes": "Some notes.",
"invoice_id": 0,
"billable": true,
"company_id": 1,
"has_receipt": false,
"receipt_url": "",
"is_locked": false,
"locked_reason": null
}
}
]
All project expense entries for timeframe
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD
This call requires parameters (from
and to
) to describe the timeframe to use for a report.
You can filter by is_closed
, only_billed
or only_unbilled
status, for example to show only the expenses that have not yet been approved by an Administrator. Acceptable values are yes
and no
.
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD&is_closed=no
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD&only_billed=yes
Acceptable value for the only_billed
parameter is yes
. Anything else will be ignored.
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD&only_unbilled=yes
Acceptable value for the only_unbilled
parameter is yes
. Anything else will be ignored.
You can also filter by updated_since
. To show only the expenses that have been updated since “2010-09-25 18:30”, pass the UTC date time value (URL encoded).
GET https://YOURACCOUNT.harvestapp.com/projects/{PROJECT_ID}/expenses?from=YYYYMMDD&to=YYYYMMDD&updated_since=2010-09-25+18%3A30
In conjunction with the reporting calls, you may wish to retrieve all users, projects, expense categories and tasks to convert numeric IDs to users, projects, tasks, and expense categories.
HTTP Response: 200 OK
Examples
<?xml version="1.0" encoding="UTF-8"?>
<expenses type="array">
<expense>
<id type="integer">4</id>
<total-cost type="decimal">100.0</total-cost>
<units type="decimal">1.0</units>
<created-at type="dateTime">2015-10-02T23:34:55Z</created-at>
<updated-at type="dateTime">2015-10-02T23:48:34Z</updated-at>
<project-id type="integer">13</project-id>
<expense-category-id type="integer">2</expense-category-id>
<user-id type="integer">1</user-id>
<spent-at type="date">2015-10-02</spent-at>
<is-closed type="boolean">false</is-closed>
<notes>Some notes.</notes>
<invoice-id type="integer">0</invoice-id>
<billable type="boolean">true</billable>
<company-id type="integer">1</company-id>
<has-receipt type="boolean">false</has-receipt>
<receipt-url></receipt-url>
<is-locked type="boolean">false</is-locked>
<locked-reason nil="true"/>
</expense>
</expenses>
[
{
"expense": {
"id": 4,
"total_cost": 100,
"units": 1,
"created_at": "2015-10-02T23:34:55Z",
"updated_at": "2015-10-02T23:48:34Z",
"project_id": 13,
"expense_category_id": 2,
"user_id": 1,
"spent_at": "2015-10-02",
"is_closed": false,
"notes": "Some notes.",
"invoice_id": 0,
"billable": true,
"company_id": 1,
"has_receipt": false,
"receipt_url": "",
"is_locked": false,
"locked_reason": null
}
}
]