The moment it happens
Get dispute details before the deadline
A new dispute lands in your inbox with its reason, amount and the date you must reply by.
- Runs
- The moment it happens
- Apps
- PayPal
- AI
- Not needed
- Access
- REST app with disputes feature
Send this to your assistant
Create a ClickRuntime automation: when a buyer opens a PayPal dispute, email me the reason, disputed amount, transaction ID and response deadline.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A PayPal dispute starts a clock. The seller has a limited window to respond with tracking numbers, proof of delivery or a refund, and missing that window usually means the buyer wins and the funds are held or taken back. The trouble is that PayPal's own notice lands in an inbox among receipts and marketing mail, so a dispute opened on Friday can sit unread until Monday.
When PayPal sends a dispute created event, the dispute is fetched in full so the details are not limited to the short webhook body. You receive an email at once with the dispute id, the amount, the buyer's reason and the response deadline, so the person who handles disputes can start gathering evidence the same day.
Small stores and marketplaces with a single person handling payments find it especially useful, since that person may not watch PayPal all day.
What you get out of it
Meet the response deadline
Having the dispute in your inbox within moments gives you the full window to answer. A disputed sale answered on day one with a tracking link is far more likely to be settled in your favor.
Lose less money to unanswered claims
Disputes that go unanswered are typically decided for the buyer. Quick notice lets you send evidence, offer a partial refund or settle, rather than losing both the item and the payment.
Everything needed in one email
The reason code, amount and dispute id are fetched and included, so you do not need to click through several PayPal screens to learn what the case is about. You can decide your response from the email itself.
Spot fraud and patterns sooner
Several disputes on similar items or from one region in a week point to a problem with a product, a courier or a fraudster. Instant alerts make that pattern visible while you can still act on it.
Protect your account standing
A high dispute rate can hurt a seller's standing with PayPal. Responding promptly keeps the number of lost cases low, which helps preserve your ability to keep taking payments without extra holds.
How it works
What happens, step by step
When a customer opens a dispute in PayPal, PayPal tells ClickRuntime straight away.
ClickRuntime fetches the full dispute, including the reason, the amount and the date you must respond by.
You get an email with those details, so you can reply before the deadline.
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") != "CUSTOMER.DISPUTE.CREATED":
return {"emailed": False}
d = http.get(f"{API}/v1/customer/disputes/{body['resource']['dispute_id']}", headers=paypal_headers()).json()
amount = d["dispute_amount"]
txn = d["disputed_transactions"][0]["seller_transaction_id"]
notify.email_me(f"PayPal dispute opened: {amount['currency_code']} {amount['value']}",
f"Reason: {d['reason']}\nAmount: {amount['currency_code']} {amount['value']}\n"
f"Transaction: {txn}\nRespond by: {d.get('seller_response_due_date', 'not set')}\n"
f"https://www.paypal.com/resolutioncenter")
return {"dispute": d["dispute_id"]}FAQ
Common questions
Which kinds of disputes trigger the email?
How quickly will I be told?
Do I need a business account?
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 worksKnow when a PayPal subscriber cancels
Each cancellation is posted so you can follow up while the customer still remembers you.
See how it worksKeep exploring
Set up “Get dispute details before the deadline” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.