Avoiding re-inventing the wheel


I am new to FreeAgent.
I have experience of APIs but not used this one yet.

I am using it for a charity which gets donations into PayPal, Stripe and Go-Cardless (and other payment providers).
FreeAgent looks like it is designed to use these as a way of getting payments - from invoices, rather than external payments coming in.

Our main account does not support a bank feed. (It does xero and may work with Nordigen - now part of GoCardless).

What I would like to do is set up APIs to import bank transactions to freeagent, probably from Stripe and bank using the nordifen/Go-Cardless APIs.

Rather than re-inventing - has anyone already done this or are there any examples available?

Many thanks


I don’t work at FreeAgent, I’m simply a happy customer.

Normally the first step with FreeAgent is to set up a bank feed so FreeAgent can pull in the transactions in your bank account. You said your main account does not support a bank feed – have you seen the list of supported banks here?

As you wrote, FreeAgent’s payment-provider integrations are mainly geared towards work which is invoiced from within FreeAgent. It’s up to you to explain payments you receive outside any FreeAgent invoices.

I have some experience of this for Stripe and GoCardless payments, though not Paypal. You can see the result here if you’re interested.

Happy to try to help with any further questions!

Andrew Stewart


FreeAgent supports the importing of bank transactions from:

Whilst these integrations differ slightly from bank feeds they do ultimately result in a “bank” account containing the associated transactions.

Hopefully this helps but happy to discuss it further :slight_smile:

Alistair Sutherland

Thanks for replying.

Co-operative business bank only supports bank feeds with Zero.

It’s CSV format unhelpfully contains a couple of title/information lines.
Fortunately it is one of the specific bank csv formats that freeagent does support.

Nordigen, who provide bank feed services (is now part of GoCardless) does list the co-op as a supported bank.
I am interested in trying using the Freeagent and gocardless bank feed APIs together to automate it. However a monthly file upload is not too onerous.

The FreeAgent PayPal feed works fine, I can see all transactions, even though they did not originate in FreeAgent.

Hopefully the linked Stripe & GoCardless will also fetch transactions.


I have made progress and have a usable workaround.

The regular activities each month are covered by automated feeds except for Manual import of a bank statement.
The Co-operative business does not support bank feeds, fortunately FreeAgent supports CSV import for their file format.

I have occasional need to import Stipe and SumUp transactions.
There is no automated feed and the CSV format needs heavy editing, with each line containing 2 transactions (original amount and fees).
I have managed to create a PowerShell script to read the provided CSV files and create a file that uploads ok into FreeAgent.

When I get a bit of time I will see if this can be done by API.

I’ve done the same thing for izettle @notdodgy - the best solution here is for you to build a middleware which downloads transactions from the Stripe and Sumup APIs (at least for Stripe I know you get a very detailed JSON feed), and then transforms it into the format expected by the “Upload a bank statement as an array of transactions” endpoint described here.

There are several upsides here - (a) you can fill the “fitid” field with the payment processor’s transaction ID, meaning freeagent will ignore duplicates uploaded in the future. So you can always just push “all transactions from this month” without worrying about remembering what the last transactions you pushed were. (b) You can take the information about fees deducted by the card processor, and therefore push two transactions per income - one with the whole amount of the income, and the other with the amount of fees deducted as an outgoing. The latter can then be explained in an appropriate accounting category like “Bank / Finance charges”, so that the P&L displays the entire sales figure and there is no manual entry of finance charges when a lower amount is transferred to the cash bank account.

Something very inconvenient about the API for uploading transactions is that you cannot pre-attach an explanation to the upload, even though you know as you’re uploading that this is going to be explained in a certain accounting category. You also cannot upload explanations in bulk. This combined with the Freeagent API rate limit means that after uploading, when you list transactions and then explain them, it can take a while before all the uploaded transactions appear on the actual accounts.

That sounds exactly what I was thinking of.

It’s a project for when I have the time.

My use is for a charity, stripe / sumup only get used when we have events running.
So for 2 or 3 times a year, using the PowerShell Script will do the job.
(It’s not the cleanest code I have written, as doesn’t handle errors gracefully, but it works).

Our main bank - co-operative business do not have a bank feed.
However there is an open banking service that lists it as a bank feed. It’s now part of GoCardless.
So getting that API linked to the FreeAgent API would be useful.