Skip to content

The moment it happens

Follow Wise transfers in Slack

Every status change on a transfer is posted, with cancelled and bounced-back transfers called out so you can act.

Runs
The moment it happens
Apps
Wise
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: when any Wise transfer changes status, post the recipient, amount, currency and new status to #payments in Slack, and mention me if it is cancelled or bounced back.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A payment sent through Wise can take minutes or days, and sometimes it simply sticks: waiting for the recipient's bank, held for a compliance check, or bounced back. The sender sees 'in progress' in the app and keeps wondering. A supplier is waiting for funds to ship goods, a landlord expects rent, and the one thing you can do, sending proof or extra documents, is delayed because nobody noticed the hold.

Wise sends a webhook each time a transfer changes state. The automation verifies the signature, so only genuine Wise events are accepted, and posts the new state to Slack, naming completed transfers and flagging ones that are held, bounced or cancelled.

It helps finance people who send regular supplier payments and want to know the moment something needs attention.

What you get out of it

  • Confirm a payment actually arrived

    When a transfer shows completed, you can tell the supplier immediately, so they ship the goods. It removes the back-and-forth where both sides wonder who is waiting for whom. That cuts the follow-up emails from suppliers who are waiting to see the money before they act.

  • Catch stuck transfers early

    A transfer held for a check needs documents quickly. Hearing about it within minutes rather than days shortens the delay and keeps a deadline from slipping. Waiting on the bank or on a compliance check without knowing can easily push a deadline past its date.

  • Know when money bounced back

    A returned transfer means funds are back in your balance and the payee still has not been paid. An alert prompts you to correct the details and send again. Fixing a wrong account number the same day is far easier than discovering the failure a week later.

  • Only real events are trusted

    Checking Wise's signature on each webhook means a fake message cannot post a convincing but false 'completed' notice into your finance channel. That keeps the finance channel trustworthy, since everyone knows that a posted status really came from Wise.

  • Clear record for reconciliation

    The channel shows when each transfer changed state, which helps your bookkeeper match payments to invoices and answer questions about timing. It also saves time when answering a supplier asking exactly when their payment was released.

How it works

What happens, step by step

  1. When a Wise transfer changes status, Wise tells ClickRuntime straight away.

  2. ClickRuntime checks the notice really came from Wise.

  3. It posts the recipient, amount and new status to your Slack channel, calling out cancelled or bounced-back transfers so you can act.

Before it runs live

  • Connect Wise
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Follow Wise transfers in Slackjust nowSucceeded
Slack · #paymentsTransfer to Northwind GmbH: 3,200.00 EUR is now outgoing_payment_sent

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Wise steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
transfer_status_alert.pyexample
import base64
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding
from clickruntime import on_event, credentials, http, notify

WISE = "https://api.wise.com"

def wise(path, **params):
    token = credentials.secret("WISE_API_TOKEN")
    resp = http.get(f"{WISE}{path}", headers={"Authorization": f"Bearer {token}"}, params=params)
    resp.raise_for_status()
    return resp.json()

def signed(event):
    key = serialization.load_pem_public_key(credentials.secret("WISE_WEBHOOK_PUBLIC_KEY").encode())
    try:
        key.verify(base64.b64decode(event.header("X-Signature-SHA256")), event.body.encode(), padding.PKCS1v15(), hashes.SHA256())
        return True
    except Exception:
        return False

@on_event
def handle(event):
    if not signed(event):
        return {"ok": False}
    data = event.json["data"]
    transfer = wise(f"/v1/transfers/{data['resource']['id']}")
    recipient = wise(f"/v1/accounts/{transfer['targetAccount']}")["accountHolderName"]
    state_ = data["current_state"]
    mention = " <!here>" if state_ in ("cancelled", "bounced_back") else ""
    notify.slack(f"Transfer to {recipient}: {transfer['targetValue']:,.2f} {transfer['targetCurrency']} is now {state_}{mention}", channel="#payments")
    return {"transfer": transfer["id"], "state": state_}

FAQ

Common questions

What does verifying the signature mean?
Wise signs each webhook with a key, and the automation checks that signature before trusting the message. That prevents anyone who discovers the webhook address from posting a false transfer status into your channel. That keeps the channel trustworthy.
Which transfer states are reported?
Each change of state is posted, such as processing, funds converted, sent, completed, or problems like bounced back and cancelled. You can ask for only the ones that matter to you, such as completed and failed.
Does it work for transfers I create from the Wise app?
Yes. The webhook covers transfers on your profile regardless of how they were created, so payments started from the app, from batch uploads or from the API all produce state-change alerts. Wise also reports the transfers made by teammates on the same profile.
What permissions does it need?
read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Follow Wise transfers in Slack” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.