Skip to main content
PageTech Solutions Limited logo Turning Complex Problems Into Confident Technology
  • Consultancy (current section)
    • Consultancy overview
    • Services
    • Fixed-price reviews
    • Testimonials
    • Pricing
    • Working with your IT team
    • FAQ
    • Contact
  • Freelance
    • Freelance overview
    • What I fix
    • Testimonials
    • Pricing
    • Hiring through a platform
    • Availability
    • Tech stack
    • FAQ
    • Contact
  • Recruiters
    • Recruiters overview
    • Fit and experience
    • Testimonials
    • Rates
    • Availability
    • Tech stack
    • FAQ
    • Contact
  • About
  • Workshop
  • Search
  • Talk to Jamie
  1. Home
  2. Workshop
  3. Internal Invoicing System

Case study

Internal Invoicing System

Seven-phase billing automation with audit-logged writes, FreeAgent sync, and a WPF desktop app.

C#Azure SQLWPFFreeAgent

At a glance

  1. ChallengeManual invoicing creates friction at every step — chasing payments, reconciling the accounts, producing reports — and the errors compound: a missed reminder, a duplicate entry, no clear record of what was sent, when, and why.
  2. ApproachA billing platform for my own business, built in deliberate phases, each solid before the next was added.
  3. OutcomeBuilt to cover the full billing lifecycle without manual chasing or re-keying

Challenge

Manual invoicing creates friction at every step — chasing payments, reconciling the accounts, producing reports — and the errors compound: a missed reminder, a duplicate entry, no clear record of what was sent, when, and why.

Approach

A billing platform for my own business, built in deliberate phases, each solid before the next was added. First the domain: optimistic concurrency and soft delete, so simultaneous edits fail safely and nothing is lost for good. Then an audit layer: every write logged, every operation carrying an idempotency key so a retry can never double-bill. Then a contract-first API with strict validation, observability with health checks and structured logging, and the automation itself — batch invoice runs, scheduled payment reminders and finance reporting. A WPF desktop application (MVVM, EF Core) gives day-to-day use without touching the API: client and invoice management, time-entry workflow, PDF invoices and estimates with brand defaults, and a light/dark theme checked for WCAG AA contrast. FreeAgent keeps payment status in sync, and local OCR handles incoming documents. Infrastructure is defined as code and deployed through a multi-environment pipeline.

Outcome

  • Built to cover the full billing lifecycle without manual chasing or re-keying
  • Every write has an audit trail, which is what you want when a payment is disputed
  • Designed so reminders go out automatically when an invoice falls overdue
  • Built to keep accounting records current through the FreeAgent sync, with invoices and estimates exported in one action

Have a similar problem in your own systems? Book a free 20-minute call or describe it.

Where judgement mattered

  • Idempotent writes before features — retries are the normal case in a system that talks to an accounting API
  • Phased delivery so each layer could be trusted before the next depended on it
  • A desktop interface for the person doing the work, not just an API for other systems

Technology stack

C# / .NET 10 · Azure Functions · Azure SQL · WPF with EF Core · QuestPDF · FreeAgent API · Microsoft Graph · infrastructure as code · Azure DevOps CI/CD

Book a free 20-minute call More case studies

Calendar not loading, or no time suits? Call, WhatsApp or message me.

© 2026 PageTech Solutions Limited. All rights reserved.

Company no. 17014904

VAT no. 514295790

Based in Andover, Hampshire, working remotely with businesses across the UK.

Registered office (post only, no visitors): Belmont Suite, Paragon Business Park, Chorley New Road, Bolton, Lancashire, BL6 6HG

ICO registration no. ZC179729

I use Microsoft Clarity to improve this site's usability, only if you allow it. See my privacy policy for details.

Visa Mastercard American Express PayPal

Contact Hours

Monday 09:00–12:00, 13:00–17:00
Tuesday 09:00–12:00, 13:00–17:00
Wednesday 09:00–12:00, 13:00–17:00
Thursday 09:00–12:00, 13:00–17:00
Friday 09:00–12:00, 13:00–17:00
Saturday Closed
Sunday Closed
UK time (GMT/BST)

Phone: 01264 354354

ContactAboutTestimonialsWorkshopFAQPricingProductsNot a business?PrivacyTermsAccessibilitySearchSite mapBook a free 20-minute callLinkedInX (Twitter)Bluesky