Nightly Wise transfers sync to Google Sheets ledger
Every night at midnight, completed Wise transfers from the last 24 hours land as new rows in your Google Sheets ledger, with built-in duplicate skipping.
Build me a deterministic code workflow that syncs completed Wise transfers into a Google Sheets accounting ledger every night at midnight. No reasoning needed: every field is a known mapping, so this is a code workflow, not an agent.
Trigger: cron, every day at 00:00 in the workflow owner's timezone.
Step 1. Call Wise List Transfers, filtered to status outgoing_payment_sent, with a created-at window covering the previous 24 hours (now minus 24h to now). Target the configured Wise profile ID.
Step 2. Call Google Sheets Get Values on the configured spreadsheet, tab named "Wise Ledger", reading the transfer ID column (for example column A from row 2 down). Build a set of transfer IDs already present in the sheet.
Step 3. For each transfer returned from Wise, skip it if its ID is already in the set. Otherwise map it to a row with these columns in this order: transfer id, created date, source currency, source amount, target currency, target amount, exchange rate, recipient name, reference.
Step 4. Call Google Sheets Append Values once with all new rows, appending to the "Wise Ledger" tab using USER_ENTERED so dates and numbers parse cleanly. If there are no new rows, exit successfully without writing.
Configuration the workflow should expose: Wise profile ID, Google Sheets spreadsheet ID, tab name (default "Wise Ledger"), and the transfer ID column letter (default A).
Idempotency requirement: re-running the workflow on the same day, or running it with overlapping windows, must never create duplicate rows. The dedupe check in step 2 is the guard.
What does this prompt do?
- Pulls every completed Wise transfer from the last 24 hours on a nightly schedule.
- Appends one tidy row per transfer to your Google Sheets ledger with the fields your bookkeeper actually wants.
- Checks the transfer ID column before writing so re-runs never create duplicate rows.
- Runs without any AI guessing because every field is a direct, deterministic mapping.
What do I need to use this?
- A Wise account with API access turned on and two-step verification enabled.
- A Google account with edit access to the spreadsheet you want to write to.
- A Google Sheet with a tab named Wise Ledger and a header row that includes a transfer ID column.
How can I customize it?
- Change the run time if midnight is not when your books close, for example 6am local time or every six hours.
- Add or remove columns in the row mapping to match the exact ledger format your accountant uses.
- Filter to a specific source currency, recipient, or reference prefix if you only want a subset of transfers in this tab.
FAQs
Will this create duplicate rows if it runs twice in one night?
Do I need to know how to code to use this?
Which Wise transfers get added to the sheet?
Can I send the rows to a different tab or a second sheet?
What if my Wise account has multiple profiles?
Related templates
Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.
Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.
Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.
See exactly which ingredients next week needs based on what you actually sold, adjust anything by hand, then build a one-click grocery cart.
See follower growth, posting cadence, format mix and engagement rate for your brand and every competitor you track, side by side on one board.
Open one screen to see how every service in your Jobber price book actually performed: how often it sold, what you charged, and where prices swing.
Stop pasting Wise transfers into your books by hand.
Connect Wise and Google Sheets once, and Geni quietly keeps your ledger up to date every night while you sleep.