Never let an invoice slip through

List of overdue invoices from your payment provider

What you will receive

You have 3 overdue invoices

just now

Overdue Invoices

1. Acme Corp - $2,500 (15 days overdue)
2. Widget Inc - $850 (7 days overdue)
3. Tech Co - $1,200 (3 days overdue)

Total overdue: $4,550

Send reminders →

How it works

  1. 1Humrun checks your Stripe account for open invoices
  2. 2It filters for invoices past their due date
  3. 3You get a list of overdue invoices to follow up on

You configure

sk_live_...

Your Stripe secret key (starts with sk_)

View Python code
import requests
import os
from datetime import datetime

STRIPE_API_KEY = os.environ.get("STRIPE_API_KEY")

# Fetch open invoices from Stripe
response = requests.get(
    "https://api.stripe.com/v1/invoices",
    auth=(STRIPE_API_KEY, ""),
    params={
        "status": "open",
        "limit": 100
    }
)

data = response.json()
invoices = data.get("data", [])
now = datetime.utcnow()

overdue = []
for inv in invoices:
    due_date = inv.get("due_date")
    if due_date and due_date < now.timestamp():
        days_overdue = (now.timestamp() - due_date) // 86400
        overdue.append({
            "customer": inv.get("customer_name", inv.get("customer_email", "Unknown")),
            "amount": inv["amount_due"] / 100,
            "days": int(days_overdue)
        })

if overdue:
    overdue.sort(key=lambda x: x["days"], reverse=True)
    total = sum(inv["amount"] for inv in overdue)

    print(f"Overdue Invoices: {len(overdue)}\n")
    for inv in overdue:
        print(f"• {inv['customer']}: $" + f"{inv['amount']:,.2f} ({inv['days']} days overdue)")
    print(f"\nTotal overdue: $" + f"{total:,.2f}")

    raise Exception(f"You have {len(overdue)} overdue invoices totaling $" + f"{total:,.2f}")
else:
    print("No overdue invoices. All caught up!")
Suggested schedule: Every day at 9 AMNotifications: After every run
Browse more templates