Feature requested
A new API method - Bank_TagTransaction - that allows external integrations to tag a bank feed transaction to an invoice, purchase, or transfer via the API, exactly as the “Tag Me” button does in the QuickFile UI.
Typical use case
I run a small property services business. Customers pay through a Stripe-integrated form on our website. I’ve built a WordPress plugin that automatically calls the QuickFile API to create a client, create an invoice, and email it to the customer within seconds of payment.
The problem is the last mile. When the Stripe bank feed imports the payment into our Holding Account, that transaction sits untagged. I have to log into QuickFile, find it, click “Tag Me”, and manually match it to the invoice I’ve already created. Every single time.
I looked at using Payment_Create to mark the invoice as paid, but that creates a new bank transaction on the nominal. When the bank feed also imports the same payment, you get duplicates. This is a well-documented issue on the forum going back years, and QFMathew confirmed in the “Tagging transactions via API” thread that there’s currently no way to tag bank feed transactions via the API.
This isn’t just my problem. Every business that takes payments online through Stripe, PayPal, or GoCardless and uses the QuickFile API to create invoices hits the same wall. Freelancers with Stripe checkout links, e-commerce businesses, service companies with booking forms, anyone building automations with n8n, Zapier, or Make. The invoice exists, the payment is sitting in the bank feed, but they can’t be connected without a human clicking through the UI.
I asked my friend Claude how to solve this problem and this is what was suggested.
How I would expect it to work
You’d call the new Bank_TagTransaction endpoint with a bank feed transaction ID (found via Bank_Search) and tell it which invoice to tag it to. QuickFile would run the same internal logic it already runs when you tag manually: create the payment record, link it to the invoice, mark it as paid, update the bank transaction status to tagged.
A basic request might look like:
{
"Bank_TagTransaction": {
"Header": { ... },
"Body": {
"BankTransactionID": 12345678,
"TagType": "INVOICE_PAYMENT",
"InvoiceID": 987654
}
}
}
TagType would support the same options the tagging wizard offers: invoice payment, purchase payment, bank transfer, salary, tax payment, nominal post.
The full automated flow then becomes:
-
External system creates invoice via
Invoice_Create -
Payment arrives in bank feed
-
External system finds the untagged transaction via
Bank_Search(filtering by amount, date, nominal) -
External system calls
Bank_TagTransactionto link the bank feed entry to the invoice -
Invoice paid, bank feed tagged, books balanced. No manual step, no duplicates.
Sensible guardrails would keep it safe: validate that the transaction amount matches the invoice outstanding amount (or handle partial payments explicitly), reject attempts to tag already-tagged transactions, respect locked accounting periods, and return clear error messages. The same checks the tagging wizard already applies.
If the team wanted to take it further, a BankTransactionsImported webhook that fires when new transactions arrive via a bank feed would eliminate the need to poll Bank_Search. But even without the webhook, Bank_TagTransaction alone closes the automation gap.
This would make QuickFile the only UK small-business accounting platform with a fully automatable payment reconciliation loop via API. That’s a genuine differentiator as more businesses build integrations with automation tools.

