Fuhad Abdulla
๐ ๐๐๐๐ผ๐บ๐ฎ๐๐ฒ๐ฑ ๐๐ฐ๐ฐ๐ผ๐๐ป๐๐ ๐ฅ๐ฒ๐ฐ๐ฒ๐ถ๐๐ฎ๐ฏ๐น๐ฒ (๐๐ฅ) ๐ฝ๐ฟ๐ผ๐ฐ๐ฒ๐๐, ๐ถ๐ป๐ฐ๐น๐๐ฑ๐ถ๐ป๐ด ๐ณ๐ผ๐น๐น๐ผ๐-๐๐ฝ๐ ๐ฎ๐ป๐ฑ ๐ฎ๐ด๐ฒ๐ถ๐ป๐ด ๐ฟ๐ฒ๐ฝ๐ผ๐ฟ๐ ๐ด๐ฒ๐ป๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป, ๐๐๐ถ๐ป๐ด ๐๐ ๐ฎ๐ป๐ฑ ๐ป๐ด๐ป ๐ฎ๐ ๐ผ๐๐ฟ ๐ฐ๐ผ๐บ๐ฝ๐ฎ๐ป๐.
๐๐ฐ๐ต๐ฆ: ๐๐ฉ๐ฆ ๐ท๐ช๐ฅ๐ฆ๐ฐ ๐ฉ๐ข๐ด ๐ข๐ถ๐ฅ๐ช๐ฐโ๐ฎ๐ข๐ฌ๐ฆ ๐ด๐ถ๐ณ๐ฆ ๐ต๐ฐ ๐ถ๐ฏ๐ฎ๐ถ๐ต๐ฆ ๐ช๐ต ๐ช๐ง ๐บ๐ฐ๐ถ’๐ฅ ๐ญ๐ช๐ฌ๐ฆ ๐ต๐ฐ ๐ฉ๐ฆ๐ข๐ณ ๐ฎ๐ฆ ๐ฆ๐น๐ฑ๐ญ๐ข๐ช๐ฏ ๐ต๐ฉ๐ฆ ๐ฑ๐ณ๐ฐ๐ค๐ฆ๐ด๐ด.
We are a B2B company, and 95% of our sales are credit sales. We have to follow up with our customers multiple times to get the payment, as some of our customers are big companies and they lose track of invoices.
Sometimes, we have to follow up with a customer 5โ10 times just to get the payment.
๐ฆ๐ผ ๐ ๐ฑ๐ฒ๐ฐ๐ถ๐ฑ๐ฒ๐ฑ ๐๐ผ ๐ฎ๐๐๐ผ๐บ๐ฎ๐๐ฒ ๐๐ต๐ถ๐ ๐๐๐ถ๐ป๐ด ๐ป๐ด๐ป.
Hereโs how the workflow works:
โข Credit invoices are prepared and saved to Google Drive by our accountant.
โข n8n detects this, processes the text in the invoice, formats it, and saves it into a Google Sheet.
โข There is another Google Sheet where the contact details of the customers are stored.
โข When the sheet is updated, it triggers another workflow that pushes the data to a PostgreSQL database in Supabase.
โข I used a PostgreSQL database because itโs easier to store and analyze data using SQL queries than searching in Google Sheets.
โข There is another database that keeps track of when the follow-up email is sent.
โข This workflow also generates an aging report.
โข Every day at 9 AM, n8n runs a SQL query to search for:
โข Invoices that havenโt been paid (thereโs a payment_status column in the sheet)
If an invoice is unpaid and overdue, it:
Sends an email to the customer with all the details, including the invoice number, PO number, and attaches the invoice PDF
โข Follows up again in 7 days if still unpaid
It also sends an email to our accountant with the customerโs:
โข Mobile number
โข Name of the concerned person, and asks him to call them
โข Invoice details
This has made Accounts Receivable much more streamlined and automated a lot of boring tasks.