Invoice Automation logo

Invoice Automation

invoice automation

SKILL.md

Full skill instructions

Invoice Automation

Comprehensive invoice automation skill for generating, sending, tracking, and reconciling invoices across multiple accounting platforms.

Core Workflows

1. Invoice Generation

INVOICE CREATION FLOW:
┌─────────────────┐
│  Customer Data  │
└────────┬────────┘
         ▼
┌─────────────────┐
│  Line Items     │
│  - Products     │
│  - Services     │
│  - Quantities   │
└────────┬────────┘
         ▼
┌─────────────────┐
│  Apply Template │
│  - Branding     │
│  - Terms        │
│  - Tax rates    │
└────────┬────────┘
         ▼
┌─────────────────┐
│  Generate PDF   │
└─────────────────┘

2. Multi-Platform Integration

PlatformCapabilities
QuickBooksFull CRUD, payments, reports
XeroInvoices, contacts, bank feeds
FreshBooksTime tracking, expenses, invoices
StripeRecurring, one-time, subscriptions
WaveFree invoicing, receipts
Zoho InvoiceMulti-currency, templates

3. Automated Workflows

Auto-Invoice from Time Tracking:

trigger: weekly_timesheet_approved
actions:
  - aggregate_billable_hours
  - calculate_totals
  - generate_invoice
  - send_to_client
  - log_to_accounting

Payment Reminder Sequence:

reminders:
  - days_before_due: 3
    template: friendly_reminder
  - days_after_due: 1
    template: payment_due
  - days_after_due: 7
    template: overdue_notice
  - days_after_due: 30
    template: final_notice

Invoice Templates

Standard Invoice Template

## INVOICE

**Invoice Number:** INV-{YYYY}{MM}-{####}
**Date:** {issue_date}
**Due Date:** {due_date}

### Bill To:
{customer_name}
{customer_address}
{customer_email}

### Items:
| Description | Qty | Unit Price | Amount |
|-------------|-----|------------|--------|
| {item_1}    | {q} | ${price}   | ${amt} |
| {item_2}    | {q} | ${price}   | ${amt} |

**Subtotal:** ${subtotal}
**Tax ({tax_rate}%):** ${tax_amount}
**Total Due:** ${total}

### Payment Methods:
- Bank Transfer: {bank_details}
- Credit Card: {payment_link}
- PayPal: {paypal_email}

Recurring Invoice Setup

recurring_invoice:
  customer_id: "cust_123"
  frequency: monthly
  day_of_month: 1
  items:
    - description: "Monthly Retainer"
      quantity: 1
      unit_price: 5000
  auto_send: true
  payment_terms: net_30
  reminder_enabled: true

Payment Tracking

Status Dashboard

PAYMENT STATUS OVERVIEW:
┌──────────────────────────────────────────┐
│  Outstanding    │ $45,000  │ 12 invoices │
│  Overdue        │ $8,500   │ 3 invoices  │
│  Paid (30 days) │ $125,000 │ 28 invoices │
│  Pending        │ $15,000  │ 5 invoices  │
└──────────────────────────────────────────┘

Aging Report

ACCOUNTS RECEIVABLE AGING:
┌─────────────┬──────────┬─────────┐
│ Period      │ Amount   │ Count   │
├─────────────┼──────────┼─────────┤
│ Current     │ $25,000  │ 8       │
│ 1-30 days   │ $12,000  │ 4       │
│ 31-60 days  │ $5,000   │ 2       │
│ 61-90 days  │ $2,500   │ 1       │
│ 90+ days    │ $1,000   │ 1       │
└─────────────┴──────────┴─────────┘

Reconciliation Workflows

Bank Feed Matching

reconciliation_rules:
  - match_type: exact_amount
    tolerance: 0
    auto_match: true
  - match_type: invoice_reference
    field: memo
    auto_match: true
  - match_type: customer_name
    fuzzy_match: 0.9
    auto_match: false
    flag_for_review: true

Multi-Currency Support

currency_settings:
  base_currency: USD
  supported:
    - EUR
    - GBP
    - JPY
    - CNY
  exchange_rate_source: openexchangerates
  update_frequency: daily
  auto_convert: true

API Integration Examples

QuickBooks Invoice Creation

const invoice = {
  CustomerRef: { value: "123" },
  Line: [
    {
      DetailType: "SalesItemLineDetail",
      Amount: 1000,
      SalesItemLineDetail: {
        ItemRef: { value: "1" },
        Qty: 10,
        UnitPrice: 100
      }
    }
  ],
  DueDate: "2024-02-15",
  EmailStatus: "NeedToSend"
};

Stripe Invoice

const invoice = await stripe.invoices.create({
  customer: 'cus_xxx',
  collection_method: 'send_invoice',
  days_until_due: 30,
  auto_advance: true
});

await stripe.invoiceItems.create({
  customer: 'cus_xxx',
  invoice: invoice.id,
  price: 'price_xxx',
  quantity: 1
});

await stripe.invoices.sendInvoice(invoice.id);

Best Practices

  1. Consistent Numbering: Use sequential, searchable invoice numbers
  2. Clear Terms: Always specify payment terms and accepted methods
  3. Timely Sending: Send invoices immediately upon delivery
  4. Automated Reminders: Set up reminder sequences for overdue invoices
  5. Regular Reconciliation: Match payments to invoices weekly
  6. Backup Records: Maintain copies in multiple systems

Common Triggers

TriggerAction
Project completedGenerate final invoice
Timesheet approvedBill for hours
Subscription renewalCreate recurring invoice
Payment receivedUpdate status, send receipt
Invoice overdueSend reminder
Month endGenerate aging report