How to Automate Payroll in Your Agency With Make.com
You can automate payroll with a Google Sheet and two Make.com scenarios. The first sums each person's monthly pay and sends a summary to an admin in Slack. The admin approves salaries in the sheet. The second scenario finds approved, unsent payments and pays them through the Wise API, then marks them as sent.
- Three sheets drive the system: a weekly log, a monthly recap and an employee list with Wise IDs.
- Scenario one sends a monthly summary to an admin in Slack with a button to the sheet.
- A human approval tick box sits between the summary and the payment.
- Scenario two creates a Wise quote, creates a transfer, funds it, then updates the sheet.
- Test in a Wise sandbox account before connecting a live business account.
How does automated payroll work?
The system has two automations that run at the end of each month. The first collects everyone's monthly pay from a Google Sheet and sends an admin a Slack message with each person's monthly salary and hours worked, plus a button that opens the sheet. The admin checks the figures, edits anything that is wrong and approves each salary with a tick box.
The second automation reads the approved salaries and sends each payment through Wise, directly to the employee. It then marks the payment as sent in the sheet.
You need three tools: Make.com for the automations, Google Sheets to track pay, and Wise to send the money. The video above walks through the full build, and the free templates for this guide include the sheet and both scenarios.
How do you set up the payroll Google Sheet?
The sheet has three tabs. For simplicity, the weekly log is filled in by hand, but it could be automated, for example from a time tracking app.
- Weekly log: employee name, email, hourly rate, week start date, hours worked and total pay. Calculate total pay by multiplying hours worked by the hourly rate, and drag the formula down.
- Monthly recap: employee name, email, hourly rate, month, monthly hours, monthly total pay, approved, sent, date sent, transaction ID and employee ID. A query formula compiles the weekly log by employee and month, so the sums update on their own. The approved and sent columns are tick boxes, added through the Insert menu.
- Employees: name, email and the Wise recipient ID. A lookup formula in the monthly tab matches each employee name to this ID.
How do you make the sheet easy to read at a glance?
Add conditional formatting with custom formulas so an admin can see the status of every row. We used three rules: green when the payment has been sent, red when it has not been approved or sent, and yellow when it is approved but not yet sent.
This tells the admin exactly which rows need attention, which are waiting to go out and which are done.
Automation 1: How do you send the monthly summary to an admin?
- Create a scenario and add a Google Sheets search rows module. Connect your Google account, select your payroll sheet and the monthly tab.
- Filter on the month column. Use the format date function on the date, in the same year and month format as the sheet. Since the summary should cover the month just ended, use the add months function with minus one.
- Add an array aggregator to collect all the rows, then an iterator from flow control, and then a text aggregator. In the text aggregator, build one line per employee with their name, hourly rate, hours worked and monthly pay, with a new row as the separator.
- Add a Slack create a message module. Connect a bot connection and choose the channel.
- Paste in Slack Block Kit code that formats the message with the month and year, inserts the text aggregator output and adds a button. Set the button link to the URL of your payroll sheet.
- Test it, then set the schedule so it runs on the first day of the month.
Why keep a human approval step?
Any automation that moves money should include a human check. You could send payments with no approval, but a mistake could pay someone too much or too little, and these are your employees. The tick box lets an admin review the summary, fix the weekly log if something looks wrong and approve the payments that are correct. Only approved rows are paid.
Automation 2: How do you pay approved salaries through Wise?
You need a Wise business account to do this properly. Test first with a sandbox account, so no real money moves. In Wise, add each employee as a recipient first. Creating recipients automatically for each user is much more complicated.
Create an API token in Wise under integrations and tools, with full access. Use an HTTP make a request module in Make.com and send the token in an authorization header. Calling the endpoint that lists recipients returns each recipient's ID. A simple way to read that long output is to paste it into ChatGPT and ask for the names and IDs. Put those IDs in your employees tab. You also need your Wise business profile ID, which you can also find with ChatGPT's help from the API output.
- Add a Google Sheets search rows module for the monthly tab. Filter the month with the add months function set to minus one.
- Add a filter so only rows where approved is true and sent is false continue. This is a safety check.
- Create a quote with an HTTP POST request. Use your profile ID in the address, an authorization header and a content type header of application/json. The body carries the source and target currency, the source amount from the monthly total pay, the target account (the recipient ID) and the payroll date. Parse the response as JSON.
- Create a transfer with a second HTTP POST request, using the quote ID from the previous step, the recipient ID and a unique customer transaction ID (a UUID) so the transaction cannot be duplicated. Parse the JSON again.
- Fund the transfer with a third HTTP POST request to the payments endpoint, using the transfer ID (not the quote ID) and your profile ID. Set the body type to pay from your balance. Check the address carefully, because a small typo such as payment instead of payments returns a resource not found error.
- Add a Google Sheets update a row module. Set sent to true, set approved to false, add today's date as the date sent and paste in the balance transaction ID.
- Set the schedule. We run it on the second day of the month, to give the admin a day to review and approve.
How can you take it further?
The weekly log is manual in this build. If you use time tracking, you can feed the weekly log from a time tracking database so nobody updates hours by hand. The harder part is the payment flow, and the approval step keeps it safe. Always check API requests against the current Wise documentation, because they can change.
Questions people ask
How do you automate payroll without payroll software?
Track hours in a Google Sheet, summarise them monthly, have an admin approve each salary, then use Make.com to send approved payments through the Wise API. The system in this guide uses two Make.com scenarios.
What are the three Wise API steps for sending a payment?
Create a quote, create a transfer using the quote ID, then fund the transfer from your balance. Each step is one HTTP request in Make.com.
Should payroll automation include an approval step?
Yes. A human tick box before payment prevents paying someone the wrong amount because of an error in the data or the automation. The second scenario only pays rows that are approved and not yet sent.
How do I test the Wise automation safely?
Use a Wise sandbox account first. It lets you create recipients, quotes, transfers and funding calls without real money moving. Switch to a live business account only when it works.
Rather have it built for you?
Fluxomate builds internal tools and AI agents for agencies. On your stack, owned by you.
See if you qualify