Invoicing and Getting Paid: Tools and Best Practices
In this tutorial, you'll learn everything about invoicing and getting paid as a freelance developer. Why it matters: getting paid consistently is the lifeblood of your freelance business. By the end, you will have a reliable invoicing system that ensures timely payments.
Invoicing might seem like a simple task, but poor invoicing practices cause unnecessary payment delays and cash flow problems. A professional invoicing system speeds up payments and reduces administrative overhead.
Essential Invoice Elements
Every invoice must include specific information to be valid and professional.
| Element | Why It Matters |
|---|---|
| Invoice number | Tracking and reference |
| Your business name and address | Legal requirement in most jurisdictions |
| Client name and address | Identification |
| Invoice date | Payment timeline reference |
| Payment terms | When payment is due |
| Itemised services | What the client is paying for |
| Total amount due | Clear figure |
| Payment instructions | How to pay |
| Late payment policy | Encourages timely payment |
# Invoice template
INVOICE #2026-001
From:
Your Name / Business Name
Your Address
Your Tax ID / VAT Number
To:
Client Name
Client Address
Date: June 22, 2026
Due Date: July 7, 2026 (Net 15)
Description Quantity Rate Amount
Website landing page design 1 $2,500 $2,500.00
Contact form integration 1 $500 $500.00
SEO setup 1 $300 $300.00
----------------------------------------
Subtotal: $3,300.00
Tax (0%): $0.00
Total Due: $3,300.00
Payment Methods: Bank Transfer / PayPal / Stripe
Bank: [Bank Name], Account: [Number], Routing: [Number]
Late payments subject to 1.5% monthly fee after 15 days.
Expected output: A professional invoice that includes all essential elements.
Invoicing Tools Comparison
| Tool | Price | Best Feature | Best For |
|---|---|---|---|
| FreshBooks | $15-50/month | Automated reminders | Small businesses |
| Wave | Free | No monthly fee | Solo freelancers |
| Stripe Invoicing | 0.4% per invoice | Payment processing | Tech-savvy freelancers |
| QuickBooks | $25-150/month | Full accounting | Growing agencies |
| Bonsai | $19-39/month | Contract + invoicing | Freelancers wanting all-in-one |
Payment Terms and Strategies
Set clear payment terms to maintain healthy cash flow.
def calculate_payment_due(invoice_date_iso, terms_days):
from datetime import datetime, timedelta
date = datetime.fromisoformat(invoice_date_iso)
due_date = date + timedelta(days=terms_days)
return due_date.strftime("%Y-%m-%d")
print(f"Due date: {calculate_payment_due('2026-06-22', 15)}")
print(f"Due date: {calculate_payment_due('2026-06-22', 30)}")
Expected output: Due dates of "2026-07-07" for Net 15 and "2026-07-22" for Net 30.
Handling Late Payments
Late payments are unfortunately common. Have a system for handling them.
flowchart LR
A[Invoice Sent] --> B{Due Date Passed?}
B -->|No| C[Wait]
B -->|Yes| D[Send Gentle Reminder]
D --> E[Day 7: Friendly Follow-up]
E --> F[Day 14: Firm Notice]
F --> G[Day 21: Final Notice + Late Fee]
G --> H[Day 30: Escalate / Stop Work]
H --> I[Collections or Legal]
Late Payment Email Templates
# Gentle reminder (Day 1 past due)
Subject: Friendly reminder - Invoice #2026-001
Hi [Client Name],
Just a quick note that invoice #2026-001 for $3,300 was due yesterday.
Please let me know if you need any clarification on the invoice.
Best,
Your Name
# Firm notice (Day 14 past due)
Subject: Overdue invoice #2026-001 - $3,300
Hi [Client Name],
Invoice #2026-001 for $3,300 is now 14 days overdue. Per our agreement,
a late fee of 1.5% per month has been applied.
Updated balance: $3,349.50
Please remit payment within 5 business days.
Best,
Your Name
Expected output: A late payment sequence that escalates appropriately.
International Payments
Working with international clients introduces currency and transfer complexity.
| Consideration | Best Practice |
|---|---|
| Currency | Specify invoice currency and include exchange rate clause |
| Transfer fees | Add 2-3% to cover conversion costs |
| Payment method | Wise (TransferWise) or Paypal for international |
| VAT / GST | Understand your obligations for cross-border services |
function calculateInternationalTotal(baseAmount, currency, feePercentage) {
const fees = baseAmount * (feePercentage / 100);
const total = baseAmount + fees;
return {
base: baseAmount,
currency: currency,
fee: fees,
total: total
};
}
console.log(calculateInternationalTotal(5000, "EUR", 3));
Expected output: Total of 5,150 EUR including 3% international fee.
Recurring Billing Setup
For retainer clients, automate your invoicing to save time and ensure consistency.
class RecurringInvoice:
def __init__(self, client, amount, frequency, start_date):
self.client = client
self.amount = amount
self.frequency = frequency
self.start_date = start_date
def generate_schedule(self, months):
from datetime import datetime, timedelta
dates = []
current = datetime.fromisoformat(self.start_date)
for _ in range(months):
dates.append(current.strftime("%Y-%m-%d"))
if self.frequency == "monthly":
current += timedelta(days=30)
elif self.frequency == "weekly":
current += timedelta(days=7)
return dates
retainer = RecurringInvoice("Acme Corp", 2000, "monthly", "2026-07-01")
print(retainer.generate_schedule(3))
Expected output: Invoice dates for July 1, July 31, and August 30.
Tax Compliance on Invoices
Ensure your invoices comply with tax regulations in your jurisdiction.
| Requirement | Example |
|---|---|
| Tax ID / VAT number | Your business registration number |
| Tax rate | 0%, 5%, 20% depending on location |
| Reverse charge | For EU B2B services |
| Receipts | Retain copies for 5-7 years |
Practice Questions
- What are the nine essential elements of a professional invoice?
- What is the recommended payment term for freelance projects?
- How should you escalate a late payment over 30 days?
- What tool is best for international payments?
- How do recurring invoices benefit your freelance business?
Answers:
- Invoice number, your info, client info, date, terms, itemised services, total, payment instructions, late policy.
- Net 15 or Net 30, with 25-50% upfront for larger projects.
- Gentle reminder, friendly follow-up, firm notice, final notice with late fee, then escalation.
- Wise (TransferWise) for low-fee international transfers.
- They save time on manual invoicing and ensure consistent cash flow from retainer clients.
Challenge
Set up a recurring invoice system for a hypothetical retainer client. Create three months of invoices with different amounts to test proration and adjustments.
Real-World Task
Review your current invoicing Process. Identify one improvement from this guide and implement it. Create a new invoice template that includes all nine essential elements.
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro