The FreshBooks API allows 3rd party developers to expand and build on the FreshBooks platform.

The FreshBooks API is an interface for accessing your FreshBooks account data using HTTP and XML. The API makes it easy to create web and desktop applications that integrate with your account.

Some potential application ideas:

Service URL

The FreshBooks API has a single point of entry, derived from your account URL:

https://sample.freshbooks.com/api/2.1/xml-in

Please note the use of https:// in the URL above. All FreshBooks API communication is encrypted over HTTPS. Any non-secure requests are automatically rejected, so we recommend establishing a test connection with the secure API entry point before sending sensitive data.

Request Limits

There are no limit on the number of API requests per day. However, requests will be rate-limited if too many calls are made within a short period of time. Additionally, a maximum of 100 results will be returned for list methods, regardless of the value sent with the per_page parameter.

Representation Formats

All FreshBooks API requests are composed of light-weight XML delivered as an HTTP POST request to the endpoint URL.

  • All XML should be UTF-8 encoded.
  • Date and time values are of the form YYYY-MM-DD HH:MM:SS.
  • Booleans are either 1 (true) or 0 (false).
  • Fields denoting percentages are passed as whole values, not decimals (e.g. 5 for five percent).

Sample request

<?xml version="1.0" encoding="utf-8"?>
<request method="invoice.list">
</request>

All responses are wrapped in a top-level response element. The status attribute will let you know whether the request succeeded or failed.

Successful response

<?xml version="1.0" encoding="utf-8"?>
<response xmlns="http://www.freshbooks.com/api/" status="ok">
</response>

Unsuccessful response

<?xml version="1.0" encoding="utf-8"?>
<response xmlns="http://www.freshbooks.com/api/" status="fail">
  <error>Error Message</error>
  <code>40010</code>
</response>

In the case of a failure response, the response body will contain one or more error messages.

Search