Skip to content
Freshbooks Integrat...
 
Notifications
Clear all

Freshbooks Integration

3 Posts
2 Users
0 Reactions
3 Views
bastien.sarolea
(@bastien-sarolea)
Posts: 2
New Member
Topic starter
 

An integration with Freshbooks would be fantastic and would significantly enhance callin.io's appeal to business users. The potential use cases are numerous, including:

  • A workflow that automatically checks if a customer exists, creates the customer based on an if/else condition, and then generates an invoice for that customer.
  • Recording a Stripe payment against a customer's Freshbooks balance.
  • Creating an estimate and then emailing it to a customer.
  • Bank automation based on expenses.
  • ...

Authentication:

  • Authentication via OAuth 2.0

Actions (BREAD model actions for all objects - browse/query, read, edit, add, delete)
Most important:

  • Bill
  • Customer
  • Estimate
  • Invoice
  • Payment

NB: I've adapted this post from one that was about Quickbooks, as Freshbooks is a very similar service, if not identical, and also boasts a large user base.

 
Posted : 28/03/2022 8:57 am
nic
 nic
(@nic)
Posts: 1
New Member
 

Would love to see this too. We currently have our own integration to transfer tracked time within ClickUp to FreshBooks, but maintaining that with callin.io would be so much easier

 
Posted : 12/04/2022 6:29 am
bastien.sarolea
(@bastien-sarolea)
Posts: 2
New Member
Topic starter
 

I actually implemented my own OAuth2 integration because the default callin.io one wasn't functioning.

Here's a screenshot that might be helpful to others.

To save the refresh_token, you have a couple of options: writing to/reading from a file or using an Airtable record. Since I'm hosting the app on Heroku, I couldn't use the file method, so I opted for Airtable. (Alternatively, you could use static data to store the value, but it's only retained during the flow's execution and isn't truly persistent).

Regardless, this setup works, but it would be more convenient with a native node.

Flow:

  1. Webhook: A new expense is added (this can be any webhook you configure).
  2. Retrieve Refresh Token: Get the persistently stored refresh token from an Airtable record.
  3. Obtain New Tokens: Request new access and refresh tokens using the previously obtained refresh token. These new tokens are only valid for 12 hours, which is why I'm requesting a new set each time the webhook is triggered.
  4. Update Airtable: Update the persistent Airtable record with the new access and refresh tokens.
  5. HTTP Request: Make your HTTP request to the Freshbooks API, including an Authorization header (Bearer <access_token>).
 
Posted : 12/04/2022 6:47 am
Share: