offline-agency / laravel-fatture-in-cloud-v2
A wrapper plugin with Fatture in Cloud Api V2 written in Laravel PHP
Package info
github.com/offline-agency/laravel-fatture-in-cloud-v2
pkg:composer/offline-agency/laravel-fatture-in-cloud-v2
Fund package maintenance!
Requires
- php: ^8.4
- ext-json: *
- guzzlehttp/guzzle: ^7.9
- illuminate/container: ^11.0|^12.0
- illuminate/http: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
Requires (Dev)
- fakerphp/faker: ^1.23
- larastan/larastan: ^3.1
- laravel/pint: ^1.29
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.7
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2026-04-02 13:11:55 UTC
README
π This is the documentation for the API v2. You can find the package for the API v1 here.
Warning for integrators
- Keep your copy up to date: Check the official laravel-fatture-in-cloud-v2 package and update your local dependency (e.g. run
composer update offline-agency/laravel-fatture-in-cloud-v2or pull the latest from the repository). - Response variables are camelCase: Entity properties use camelCase (e.g.
amountGross,amountNet,amountVat), not snake_case (amount_gross,amount_net,amount_vat). If you have existing code that reads response data, update it to use the new property names. Use the entity classes in this package as the referenceβfor example,IssuedDocumentfor issued documents. Examples:amount_grossβamountGross,amount_netβamountNet,created_atβcreatedAt. - Config: Check the package config
config/fatture-in-cloud-v2.phpand update your projectβs config to match, especiallybaseUrl. Use the root API URL only (no extra path segments).
Requirements
- PHP ^8.4 (includes 8.5)
- Laravel ^11.0|^12.0|^13.0
| PHP | Laravel 11 | Laravel 12 | Laravel 13 |
|---|---|---|---|
| 8.4 | β | β | β |
| 8.5 | β | β | β |
API Granularization (Breaking Changes)
The monolithic Settings and Setting classes have been split into granular resources to improve maintainability and strictly follow the Single Responsibility Principle:
Settings-> Split intoVatType,PaymentAccount, andPaymentMethod.ArchiveDocument-> Renamed toArchive.Cashbooks-> Renamed toCashbook.- New classes added:
Email,Situation,PriceList, andWebhook.
Strictly Typed & Readonly Entities
All entities (e.g., Client, IssuedDocument, PriceList) have been refactored to be readonly classes with strict types.
- Properties are now immutable.
- Usage of
mixedtypes has been minimized in favor of strictstring,int,float,bool, etc. - Constructors ensure safe data mapping from API responses.
Modern testing suite
- Switched from PHPUnit to Pest PHP for a more expressive and modern testing experience.
- Automated code styling with Laravel Pint.
Architecture
- The package now utilizes a central
FattureInCloudconnector for better state management. - API interactions are handled via the native Laravel
Httpclient.
Documentation, Installation, and Usage Instructions
This package provides a simple Laravel integration with Fatture in Cloud APIs v2.
See the documentation for detailed installation and usage instructions.
$issued_documents = new \OfflineAgency\LaravelFattureInCloudV2\Api\IssuedDocument(); $issued_document_list = $issued_document->list('invoice', [ 'per_page' => 50 ]); // return an array of invoices $issued_document_list->getItems(); // return pagination fields like page, per_page... $issued_document_list->getPagination(); // return single product's fields $product = new \OfflineAgency\LaravelFattureInCloudV2\Api\Product(); $product_detail = $product->detail($product_id);
Features
All 
This package provide all() method that allow you to get an array of all results without pagination. It's implemented for all endpoint that provide a list method with pagination. Let's see an example:
$issued_documents = new \OfflineAgency\LaravelFattureInCloudV2\Api\IssuedDocument(); $issued_document_list = $issued_documents->all('invoice');
Pagination
This package provides a pagination system that allow you to move between pages using simple methods:
$issued_documents = new \OfflineAgency\LaravelFattureInCloudV2\Api\IssuedDocument(); $issued_document_list = $issued_documents->list('invoice'); // check if the response has more than one page $issued_document_list->getPagination()->isSinglePage(); // check if the document has a next page $issued_document_list->getPagination()->hasNextPage(); // check if the document has a previous page $issued_document_list->getPagination()->hasPrevPage(); // return documents of the next page $issued_document_list->getPagination()->goToNextPage(); // return documents of the previous page $issued_document_list->getPagination()->goToPrevPage(); // return documents of the first page $issued_document_list->getPagination()->goToFirstPage(); // return documents of the last page $issued_document_list->getPagination()->goToLastPage();
Bin 
This package provides bin() method for deleted issued documents that allow you to get its detail. This is very useful, for example, when you convert a proforma into an invoice (deleting the proforma) and you need old document's detail. Let's see an example:
$issued_documents = new \OfflineAgency\LaravelFattureInCloudV2\Api\IssuedDocument(); $response = $issued_documents->bin($document_id);
Rate limit 
This package provides a method to intercept throttle errors (403, 429) and automatically retry. You can specify limits on your config, remember to use milliseconds to indicate time:
'limits' => [ 'default' => 300000, '403' => 300000, '429' => 3600000, ],
API coverage
We are currently work on this package to implement all endpoints. Enable notifications to be notified when new API are released.
β User
β Companies
β Clients
β Suppliers
β Products
β Issued Documents
β Issued e-invoices
β Received Documents
β Receipts
β Taxes
β Archive
β Cashbook
β Info
β Price Lists
β Webhooks
β Situation
β Emails
β Stock
β Payment Accounts
β Payment Methods
β VAT Types
Testing
composer test
Unit and Feature tests use mocked HTTP. To run integration tests (real HTTP calls to Fatture in Cloud), set in .env:
FCV2_DEFAULT_IDβ company IDFCV2_DEFAULT_BEARERβ API bearer token
Then run:
php vendor/bin/pest tests/Integration
If these env vars are not set, integration tests are skipped.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security-related issues, please email support@offlineagency.com instead of using the issue tracker.
Credits
About us
Offline Agency is a web design agency based in Padua, Italy. You'll find an overview of our projects on our website.
License
The MIT License (MIT). Please see License File for more information.