WP Manifestindependent plugin directory
manifest / ecommerce / backspacex-invoice-manager

BackspaceX Invoice Manager

Professional invoice management for BackspaceX with a finance dashboard, structured invoice builder, polished A4 invoice output and local QR verification.

by BackspaceX · github.com/thebackspacex/backspacex-invoice-manager

★ 0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/thebackspacex/backspacex-invoice-manager/archive/refs/heads/main.zip

A lightweight, self-hosted WordPress invoice and payment manager with native PDF generation, client management, email delivery, QR verification, payment ledger, multi-currency reporting, and SSLCOMMERZ online payments.

Current release: v0.7.3.2

Requirements

  • WordPress 6.5+
  • PHP 8.1+

Core Features

  • Structured invoice creation and client management
  • Searchable client selector
  • Multiple invoice line items
  • Discount and Tax/VAT
  • Draft, Unpaid, Partially Paid, Paid, Overdue and Cancelled states
  • Manual Paid Date support
  • Browser Preview / Print
  • Lightweight self-hosted PHP PDF generation
  • PDF core Helvetica / Helvetica-Bold
  • Company identity and logo
  • PAID seal
  • Amount in Words
  • Local/self-hosted QR generation
  • Short /i/XXXXXXXX/ verification URLs
  • Branded public invoice verification
  • Email delivery with PDF attachment
  • Separate invoice and Paid Invoice email templates
  • Independent From Email and Reply-To Email settings
  • Multiple bank/payment instruction profiles
  • Email logs

Payment Ledger & Partial Payments

Payments are stored as ledger entries instead of a single Paid/Unpaid flag.

Each invoice can have multiple payments. Manual entries can include:

  • Amount
  • Payment date
  • Cash / Bank Transfer / Manual / Other method
  • Receiving bank account
  • Transaction/reference
  • Note

The plugin automatically calculates:

Invoice Total
- Total Paid
= Balance Due

Status is derived from the ledger:

Paid = 0                    -> Unpaid
Paid > 0 and Balance > 0    -> Partially Paid
Balance = 0                 -> Paid

Preview, generated PDF and QR verification reflect partial-payment totals. Payment History is shown compactly on invoice output.

Existing fully Paid invoices created before Payment Ledger are migrated automatically to a historical full-payment ledger entry so old records remain financially consistent.

SSLCOMMERZ Online Payments

SSLCOMMERZ can be configured under Invoice Manager → Settings with:

  • Enable/Disable Online Payment
  • Sandbox/Live mode
  • Store ID
  • Store Password
  • Customer-facing payment button text
  • Automatic Paid Invoice email option

The client email can contain a one-click payment button:

Invoice Email -> Pay Online -> SSLCOMMERZ Checkout
-> Success/IPN -> Server Validation -> Payment Ledger

The client does not have to re-enter the invoice amount or invoice identity before reaching the checkout.

Remaining-Balance Payments

SSLCOMMERZ charges only the current Balance Due.

For a foreign-currency invoice, the manual exchange rate saved on the invoice converts the remaining invoice balance to BDT for the gateway. The original invoice remains in its original currency.

SSLCOMMERZ Validation & IPN

A browser success return alone does not mark an invoice Paid.

The plugin performs server-side validation and checks the gateway transaction ID, amount, BDT currency and validation status. IPN is processed independently, and transaction IDs are used to prevent duplicate ledger insertion.

Gateway events are available under Invoice Manager → Gateway Logs. Store passwords and card numbers are excluded from logs.

Risk Review Workflow

A validated SSLCOMMERZ transaction may be marked by the gateway with a non-zero risk level.

Such a transaction is not treated as failed and is not automatically added to the paid balance. Instead, it becomes:

Payment Received — Under Review

The invoice edit screen shows the transaction ID, BDT amount and risk information.

The administrator then has two explicit actions:

Approve & Add to Ledger

Use this after confirming the transaction in the SSLCOMMERZ dashboard/bank settlement.

The existing gateway transaction is promoted into the Payment Ledger with the same SSLCOMMERZ transaction reference. This is not a second/manual payment.

After approval:

  • Total Paid and Balance Due update
  • Invoice becomes Partially Paid or Paid as appropriate
  • The decision is written to Gateway Logs
  • A fully paid invoice regenerates its PDF
  • Automatic Paid Invoice email can run when enabled

Reject / Keep Unpaid

Use this if the risky transaction should not be accepted.

No Payment Ledger entry is created. The invoice balance remains due, and the rejection decision is retained in Gateway Logs.

A resolved Under Review transaction cannot be approved/rejected a second time.

Multi-Currency

Supported invoice currencies:

  • BDT
  • USD
  • EUR
  • GBP
  • AED

BDT is the consolidated dashboard reporting currency.

Foreign-currency invoices use a manually entered exchange rate to BDT, saved as an invoice-level snapshot.

Example:

100 USD x 124 BDT = 12,400 BDT dashboard value

The client-facing invoice remains 100 USD; conversion is used for reporting and SSLCOMMERZ BDT charging.

Dashboard

The dashboard uses Payment Ledger values for financial totals:

  • Total Invoiced
  • Total Paid
  • Total Due
  • Overdue
  • Paid invoice count
  • Partially Paid count
  • Unpaid count
  • Overdue count
  • Original-currency breakdown

Partial payments contribute only the amount actually received to Total Paid; only the remaining balance contributes to Total Due.

PDF System

The plugin uses its own lightweight native PHP PDF writer and does not require an external PDF-generation API.

Generated PDF output intentionally uses core Helvetica fonts for compatibility. Browser Preview / Print font settings are separate.

Generated PDFs are stored in the WordPress uploads directory under:

/backspacex-invoices/

When invoice/payment data changes, an existing PDF is marked stale and regenerated when required.

QR Verification

QR generation is local/self-hosted.

The public verification page identifies the configured issuing company and shows invoice information and current status. For Partially Paid invoices it also shows:

  • Invoice Amount
  • Paid
  • Balance Due
  • Partially Paid status

For fully Paid invoices it shows the Paid Date.

  1. Configure company identity, email, bank accounts and SSLCOMMERZ.
  2. Add a client.
  3. Create the invoice.
  4. Add manual payments when Cash/Bank payments are received, or send the invoice email for online payment.
  5. Let the Payment Ledger calculate Paid and Balance Due.
  6. Generate/send the updated invoice when partial payment exists.
  7. SSLCOMMERZ payments are validated and inserted automatically when normal.
  8. Resolve risky gateway payments explicitly from the invoice edit screen.
  9. When Balance Due reaches zero, the invoice becomes Paid.

Privacy & External Services

Core invoice, PDF and QR generation is self-hosted.

SSLCOMMERZ is contacted only when online payment functionality is used.

Google Fonts may optionally be requested by the browser for Preview / Print and can be disabled. Generated PDFs do not depend on Google Fonts.

Email uses the WordPress mail system and any SMTP/provider configured for the WordPress installation.

Duplicate Invoice

The WordPress Invoices list includes a Duplicate row action next to Edit.

Duplicating an invoice copies reusable business content:

  • Client
  • Line items
  • Currency and saved exchange rate
  • Discount and Tax/VAT
  • Payment instructions / selected bank profile
  • Notes / terms
  • Online Payment preference

A duplicate is always created as a fresh draft. It receives a new invoice number, today's invoice date, a recalculated due date based on the source invoice's payment-term length, and a new QR verification identity.

Financial and identity state is never copied, including Payment Ledger, Paid Date, SSLCOMMERZ transactions, risk-review state, QR SVG, generated PDF, or previous payment status.

After duplication, the administrator is taken directly to the new invoice edit screen for review.

Current Roadmap

The next planned functional release is:

v0.8.0 — Reports + CSV Export

License

GPL-2.0-or-later

v0.7.3.1 PDF Pagination Fix

Ordinary paid and partially paid invoices use tighter A4 pagination. Fully paid invoices show Total and Paid without the redundant Balance Due 0.00 row. Partial invoices continue to show Total, Paid, and Balance Due.

v0.7.3.2 Amount in Words Layout Fix

The PDF renderer measures and reserves the complete Amount in Words area before positioning Payment Instructions, Notes / Terms, Payment History and QR Verification. One-page rendering remains preferred, but the bottom section is never allowed to overlap the Amount in Words block.