Callbacks

Only admin users have access to the callbacks API methods.

The Callbacks API allows you to register HTTP URIs that are used for our implementation of Webhooks.

callback.create

Create a new callback for a specific event or a set of events. See list of valid events.

Request

<?xml version="1.0" encoding="utf-8"?>
<request method="callback.create">
  <callback>
    <event>invoice.update</event>
    <!-- Must be a valid HTTP URI -->
    <uri>http://example.com/webhooks/ready</uri>
  </callback>
</request>

Response

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

callback.verify

Verify a callback using a unique verification code that was sent when the callback was first created.

Request

<?xml version="1.0" encoding="utf-8"?>
<request method="callback.verify">
  <callback>
    <callback_id>20</callback_id>
    <verifier>YLN6RcfR3Q99Xxmfzz8WdJChgVjb4uZ42</verifier>
  </callback>
</request>

Response

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

callback.resendToken

Resend a verification code to an unverified callback. Note that no token will be sent if the callback is already verified.

Request

<?xml version="1.0" encoding="utf-8"?>
<request method="callback.resendToken">
  <callback_id>20</callback_id>
</request>

Response

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

callback.list

Return a list of registered callbacks. You can optionally filter by event or uri.

Note: This method uses pagination

Request

<?xml version="1.0" encoding="utf-8"?>
<request method="callback.list">
  <!-- Filter by event (Optional) -->
  <event>invoice.create</event>
  <!-- Filter by uri (Optional) -->
  <uri>http://example.com/webhooks/ready</uri>
</request>

Response

<?xml version="1.0" encoding="utf-8"?>
<response xmlns="http://www.freshbooks.com/api/" status="ok">
  <callbacks page="1" per_page="25" pages="1" total="2">
    <callback>
      <callback_id>20</callback_id>
      <uri>http://example.com/webhooks/ready</uri>
      <event>invoice.create</event>
      <verified>0</verified>
    </callback>
    <callback>
      <callback_id>21</callback_id>
      <uri>http://example.com/webhooks/ready</uri>
      <event>invoice.create</event>
      <verified>1</verified>
    </callback>
  </callbacks>
</response>

callback.delete

Delete an existing callback.

Request

<?xml version="1.0" encoding="utf-8"?>
<request method="callback.delete">
  <callback_id>20</callback_id>
</request>

Response

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

Valid Events

Events in FreshBooks are identified by the combination of a noun and a verb (i.e. invoice.create). You can subscribe to all supported events related to a noun by using only the noun part (i.e. estimate) or you can subscribe to all events regardless of noun using the special string ‘all’. Note that callbacks are notified when these events occur from within the FreshBooks application or from another application that uses the FreshBooks API.

  • all
  • category
  • category.create
  • category.delete
  • category.update
  • client
  • client.create
  • client.delete
  • client.update
  • estimate
  • estimate.create
  • estimate.delete
  • estimate.sendByEmail
  • estimate.update
  • expense
  • expense.create
  • expense.delete
  • expense.update
  • invoice
  • invoice.create
  • invoice.delete
  • invoice.dispute
  • invoice.pastdue.1
  • invoice.pastdue.2
  • invoice.pastdue.3
  • invoice.sendByEmail
  • invoice.sendBySnailMail
  • invoice.update
  • item
  • item.create
  • item.delete
  • item.update
  • payment
  • payment.create
  • payment.delete
  • payment.update
  • project
  • project.create
  • project.delete
  • project.update
  • recurring
  • recurring.create
  • recurring.delete
  • recurring.update
  • staff
  • staff.create
  • staff.delete
  • staff.update
  • task
  • task.create
  • task.delete
  • task.update
  • time_entry
  • time_entry.create
  • time_entry.delete
  • time_entry.update

Search