Security: an invoice payment is recorded only once, even when the return page and the webhook arrive together, and a paid, cancelled or refunded invoice is left alone
Normalise billing customer addresses onto the core polymorphic addresses table and resolve customer display names from the linked user account
Migrated billing_customers.billing_address / shipping_address JSON columns into the core polymorphic addresses table (type = billing|shipping) and dropped the legacy JSON columns
BillingCustomer now exposes addresses() / billingAddress() / shippingAddress() relations backed by App\Models\Address instead of JSON blobs
Customer display name now resolves as company_name, then contact_name, then the linked user's name, fixing stale names copied at customer-creation time
Standardised inconsistent legacy address keys (address_line1 / line1 / street, country / country_code) onto the core address columns, fixing previously broken invoice / credit-note PDF address blocks
Made billing_customers.contact_name / contact_email nullable; when empty they fall back to the linked user's name / email / phone
Changed billing_invoices.issue_date from DATE to DATETIME so invoices capture the exact time of issue (existing rows default to 00:00:00); the create/edit forms now use a datetime-local picker normalized from the admin display timezone, and invoice lists show a relative issue date with the full datetime on hover
Auto-generate a paid invoice and email a PDF receipt whenever any payable add-on processes a successful payment
Added source_type / source_id columns and a (source_type, source_id) unique index to billing_invoices for webhook idempotency
Made billing_invoices.created_by nullable so invoices generated from webhooks (no authenticated user) can be persisted
Listens to App\Events\PaymentSucceeded dispatched by every Payable model and auto-generates a paid BillingInvoice with line items via the new BillableForInvoice contract
Added InvoicePaidReceiptNotification that emails the customer the invoice as a PDF attachment plus a link to the public invoice URL
Added two admin toggles on the billing settings page: 'Auto-Generate Invoices' (billing_auto_invoice_enabled) and 'Email PDF Receipt' (billing_auto_send_paid_invoice_pdf)
Re-seeded the billing permission set and granted it to the admin role to cover installs that may be missing entries
Sign In
We're happy to see you again! Access your account, profile, and preferences.