Everything a professional agency needs to create invoices, accept payments, and manage clients — fully functional, completely free.
agency_pulse_invoice Custom Post Type powers the entire invoicing system, deeply integrated within the WordPress dashboard.invoice-admin role with granular capability controls separates billing administrators from general site users.agency_pulse_inv_tpl post type for creating, managing, and versioning multiple branded invoice layouts.[apwp_invoices_list], [apwp_invoice_detail], [apwp_payment_form], [apwp_invoice_checkout], [apwp_payment_response]) for flexible page placement.GatewayManager service orchestrates all registered payment gateways, providing a unified API for initialization, asset loading, and gateway discovery.GatewayRegistry component maintains the master list of all available gateways, enabling dynamic registration by companion plugins.GatewayInterface and AbstractGateway base class define the required contract for all gateway implementations, ensuring consistent behavior across integrations.Agency_Pulse_Invoice_Gateway_AJAX) manages real-time payment initiation and response processing requests from the client-side checkout UX.Payment_Captured_Handler listens for the gateway payment capture hook and automatically marks the corresponding invoice as paid, triggering all downstream status updates.Dashboard_Widgets system with registered sections and a sidebar context, designed so companion plugins can inject their own reporting widgets.Agency_Pulse_Invoice class follows the Singleton pattern, ensuring a single, stable instance is accessible throughout the WordPress lifecycle.Agency_Pulse_Invoice_Invoice_API class exposes a stable, documented API surface for external code and companion plugins to interact with invoice data.api_invoice_mark_paid(), agency_pulse_invoice()) providing clean, reliable shortcuts for common operations.agency_pulse_invoice_activated, agency_pulse_invoice_payment_received, api_invoice_marked_paid) enabling deep customization without core modifications./languages directory, making the plugin compatible with any language or locale.