The moment it happens
Know when a PayPal invoice is paid
You get a message with the invoice number and amount as soon as it is paid.
- Runs
- The moment it happens
- Apps
- PayPal
- AI
- Not needed
- Access
- REST app
Send this to your assistant
Create a ClickRuntime automation: when one of my PayPal invoices is paid, Slack me the invoice number, customer and amount in #billing.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Freelancers and agencies often send PayPal invoices and then keep checking whether they have been paid. The status changes in PayPal, but nobody tells the person who is waiting on that money to start a project, release files or pay a subcontractor. So work gets delayed by a day or two, simply because the payment went unnoticed in a busy week.
When PayPal reports that an invoice has been paid, a Slack post tells you at once. The channel gets a note the moment the money lands, so you can begin the work, send the deliverable or mark the job as settled in your own records without logging in to check.
It is especially handy when billing and delivery are handled by different people, since the person delivering learns immediately that the client has paid.
What you get out of it
Start paid work without delay
If a project begins on payment, knowing within seconds means the client is not left waiting. A prompt start also makes you look organized, which helps with repeat work and referrals.
Stop chasing invoices that are already paid
Reminder emails to a client who paid yesterday are embarrassing. A paid notice tells you to stop chasing, which protects the relationship and saves you the awkward apology. One short ping avoids that whole uncomfortable exchange.
Delivery and billing stay in sync
Whoever hands over files or access sees the paid message and can act. There is no need for a separate message from finance saying the money arrived, so handoffs happen faster.
Cash flow you can see
Seeing paid invoices appear in a channel through the month gives a lively picture of income. You can decide on a purchase or a payroll run knowing that those payments have cleared.
Fewer overdue lists to maintain
With a clear signal for each payment, you do not need to cross-check PayPal against a spreadsheet of outstanding invoices. The channel history becomes the paid record you refer back to.
How it works
What happens, step by step
When a customer pays one of your PayPal invoices, PayPal tells ClickRuntime straight away.
ClickRuntime reads the invoice number, who paid it and the amount.
A message goes to your #billing Slack channel with the invoice number, who paid and the amount.
Before it runs live
- Connect PayPal
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
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 PayPal steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify
API = "https://api-m.paypal.com"
def paypal_headers():
resp = http.post(f"{API}/v1/oauth2/token", data={"grant_type": "client_credentials"},
auth=(credentials.secret("PAYPAL_CLIENT_ID"), credentials.secret("PAYPAL_CLIENT_SECRET")))
resp.raise_for_status()
return {"Authorization": f"Bearer {resp.json()['access_token']}"}
@on_event
def handle(event):
body = event.json
if body.get("event_type") != "INVOICING.INVOICE.PAID":
return {"posted": False}
inv = http.get(f"{API}/v2/invoicing/invoices/{body['resource']['invoice']['id']}", headers=paypal_headers()).json()
customer = inv["primary_recipients"][0]["billing_info"]
name = customer.get("business_name") or customer.get("email_address")
amount = inv["amount"]
notify.slack(f"✅ Invoice {inv['detail']['invoice_number']} paid by {name}: "
f"{amount['currency_code']} {amount['value']}", channel="#billing")
return {"invoice": inv["id"]}FAQ
Common questions
Does a partially paid invoice trigger the alert?
Will the message show the amount and the client?
Does it work for invoices not created in PayPal?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post each PayPal payment to Slack
Every completed payment shows up in Slack with who paid and how much.
See how it worksHear about denied PayPal payments
When a payment is denied, you know straight away and can contact the buyer.
See how it worksGet dispute details before the deadline
A new dispute lands in your inbox with its reason, amount and the date you must reply by.
See how it worksKeep exploring
Set up “Know when a PayPal invoice is paid” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.