PHPackages                             upgradelabs/invoicexpress - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. upgradelabs/invoicexpress

ActiveLibrary[API Development](/categories/api)

upgradelabs/invoicexpress
=========================

Laravel package for InvoiceXpress API v2

1.0.0(1y ago)00MITPHPPHP &gt;=8.3

Since May 28Pushed 1y agoCompare

[ Source](https://github.com/upgradelabs/invoicexpress)[ Packagist](https://packagist.org/packages/upgradelabs/invoicexpress)[ RSS](/packages/upgradelabs-invoicexpress/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

Upgradelabs InvoiceXpress Laravel Package
=========================================

[](#upgradelabs-invoicexpress-laravel-package)

A first‑class Laravel wrapper around the InvoiceXpress API v2. Provides simple methods for all API endpoints, from Invoices and Estimates to SAF‑T exports and Treasury movements.

- **Supports** Laravel 10 &amp; above
- **Automatically registers** a `InvoiceXpress` façade and service provider
- **Fully tested** with PHPUnit and Orchestra Testbench

---

Installation
------------

[](#installation)

Install via Composer:

```
composer require upgradelabs/invoicexpress
```

Publish the configuration file:

```
php artisan vendor:publish \
    --provider="Upgradelabs\InvoiceXpress\InvoiceXpressServiceProvider" \
    --tag="config"
```

Configuration
-------------

[](#configuration)

In your `.env`, set:

```
INVOICEXPRESS_ACCOUNT=your_account_name
INVOICEXPRESS_API_KEY=your_api_key
```

The published `config/invoicexpress.php` uses these to build:

```
return [
    'account_name' => env('INVOICEXPRESS_ACCOUNT'),
    'api_key'      => env('INVOICEXPRESS_API_KEY'),
    'base_uri'     => 'https://' . env('INVOICEXPRESS_ACCOUNT') . '.app.invoicexpress.com/',
];
```

---

Usage
-----

[](#usage)

Import the façade anywhere:

```
use Upgradelabs\InvoiceXpress\Facades\InvoiceXpress;
```

Or inject the client:

```
public function __construct(\Upgradelabs\InvoiceXpress\InvoiceXpressClient $ix) { … }
```

All methods return the decoded JSON response (as an array). HTTP errors throw an exception.

---

Invoices
--------

[](#invoices)

```
// List invoices with optional filters
$invoices = InvoiceXpress::listInvoices(['status' => 'final']);

// Get a single invoice
$invoice = InvoiceXpress::getInvoice(123);

// Create a new invoice
$new = InvoiceXpress::createInvoice([
    'client_id' => 5,
    'items'     => [
        ['name' => 'Widget', 'quantity' => 2, 'unit_price' => 9.50],
    ],
]);

// Update an existing invoice
$updated = InvoiceXpress::updateInvoice(123, ['status' => 'draft']);

// Change state (e.g. to “canceled”)
InvoiceXpress::changeInvoiceState(123, ['state' => 'canceled']);

// Send by email
InvoiceXpress::sendInvoiceByEmail(123, [
    'to'      => 'client@example.com',
    'subject' => 'Your Invoice',
]);

// Generate PDF (returns a URL)
$pdfUrl = InvoiceXpress::generateInvoicePdf(123)['url'];

// Fetch related documents
$docs = InvoiceXpress::relatedDocuments(123);

// Generate & cancel payment
$payment = InvoiceXpress::generatePayment(123);
InvoiceXpress::cancelPayment(123);

// Get QR code data
$qrcode = InvoiceXpress::getInvoiceQrCode(123)['qr_code'];
```

---

Estimates
---------

[](#estimates)

```
InvoiceXpress::listEstimates(['status' => 'opened']);
InvoiceXpress::getEstimate(10);
InvoiceXpress::createEstimate([...]);
InvoiceXpress::updateEstimate(10, [...]);
InvoiceXpress::changeEstimateState(10, ['state' => 'accepted']);
InvoiceXpress::sendEstimateByEmail(10, ['to' => 'a@b.com']);
InvoiceXpress::generateEstimatePdf(10);
```

---

Guides
------

[](#guides)

```
InvoiceXpress::listGuides();
InvoiceXpress::getGuide(7);
InvoiceXpress::createGuide([...]);
InvoiceXpress::updateGuide(7, [...]);
InvoiceXpress::changeGuideState(7, ['state' => 'canceled']);
InvoiceXpress::sendGuideByEmail(7, ['to' => 'x@y.com']);
InvoiceXpress::generateGuidePdf(7);
InvoiceXpress::getGuideQrCode(7);
```

---

Purchase Orders
---------------

[](#purchase-orders)

```
InvoiceXpress::listPurchaseOrders(['status'=>'sent']);
InvoiceXpress::getPurchaseOrder(5);
InvoiceXpress::createPurchaseOrder([...]);
InvoiceXpress::updatePurchaseOrder(5, [...]);
InvoiceXpress::changePurchaseOrderState(5, ['state'=>'approved']);
InvoiceXpress::sendPurchaseOrderByEmail(5, ['to'=>'z@z.com']);
InvoiceXpress::generatePurchaseOrderPdf(5);
```

---

Clients
-------

[](#clients)

```
InvoiceXpress::listClients(['page'=>1]);
InvoiceXpress::getClient(3);
InvoiceXpress::createClient(['name'=>'Acme Corp']);
InvoiceXpress::updateClient(3, ['email'=>'info@acme.com']);
InvoiceXpress::findClientsByName('Acme');
InvoiceXpress::findClientsByCode('ACM123');
InvoiceXpress::listClientInvoices(3, ['status'=>'final']);
```

---

Items
-----

[](#items)

```
InvoiceXpress::listItems();
InvoiceXpress::getItem(12);
InvoiceXpress::createItem(['name'=>'Service','unit_price'=>50]);
InvoiceXpress::updateItem(12, ['unit_price'=>60]);
InvoiceXpress::deleteItem(12);
```

---

Sequences
---------

[](#sequences)

```
InvoiceXpress::registerSequence(['prefix'=>'INV-', 'type'=>'invoice']);
InvoiceXpress::listSequences();
InvoiceXpress::getSequence(2);
InvoiceXpress::createSequence(['prefix'=>'QTE-']);
InvoiceXpress::updateSequence(2, ['enabled'=>true]);
```

---

Taxes
-----

[](#taxes)

```
InvoiceXpress::listTaxes();
InvoiceXpress::getTax(4);
InvoiceXpress::createTax(['name'=>'VAT','rate'=>23]);
InvoiceXpress::updateTax(4, ['rate'=>19]);
InvoiceXpress::deleteTax(4);
```

---

Accounts
--------

[](#accounts)

```
InvoiceXpress::getAccount(1);
InvoiceXpress::updateAccount(1, ['name'=>'New']);
InvoiceXpress::createAccount(['name'=>'Acct','email'=>'a@b.com']);
InvoiceXpress::createAccountForExistingUser(['user_id'=>5]);
InvoiceXpress::atCommunication(['event'=>'invoice_sent']);
```

---

SAF‑T Export
------------

[](#saft-export)

```
// Export your SAF‑T for auditing purposes
$saftXml = InvoiceXpress::exportSaft([
    'year'    => 2024,
    'report'  => 'complete',
]);
```

---

Treasury
--------

[](#treasury)

```
// Client balances & movements
$balance = InvoiceXpress::getClientBalance(3);
InvoiceXpress::updateInitialBalance(3, ['amount'=>1000]);
$regs    = InvoiceXpress::getRegularizations(3);
InvoiceXpress::createRegularization(3, ['date'=>'2025-05-01','amount'=>200]);
InvoiceXpress::deleteRegularization(3, 7);
InvoiceXpress::createTreasuryMovement(3, ['type'=>'receipt','amount'=>500]);
InvoiceXpress::deleteTreasuryMovement(3, 8);
```

---

Running Tests
-------------

[](#running-tests)

```
vendor/bin/phpunit
```

All HTTP interactions in tests are faked via Laravel’s `Http::fake()`, so you can run the suite offline.

---

Contributing &amp; Support
--------------------------

[](#contributing--support)

Feel free to open issues or pull requests—PRs should include tests. For commercial support or custom features, contact Upgradelabs.

---

License
-------

[](#license)

MIT License. See the [LICENSE](LICENSE) file for details.

###  Health Score

28

—

LowBetter than 52% of packages

Maintenance46

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

402d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b20557c62a96fca9a58d80b11dffbaf4e3debd77d9358c66ed06d413c1e884a7?d=identicon)[rpsimao](/maintainers/rpsimao)

---

Top Contributors

[![rpsimao](https://avatars.githubusercontent.com/u/205846?v=4)](https://github.com/rpsimao "rpsimao (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/upgradelabs-invoicexpress/health.svg)

```
[![Health](https://phpackages.com/badges/upgradelabs-invoicexpress/health.svg)](https://phpackages.com/packages/upgradelabs-invoicexpress)
```

###  Alternatives

[defstudio/telegraph

A laravel facade to interact with Telegram Bots

816333.8k3](/packages/defstudio-telegraph)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5021.9k](/packages/simplestats-io-laravel-client)[rapidez/core

Rapidez Core

1823.5k72](/packages/rapidez-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
