- How do I install picqer/moneybird-php-client in Laravel?
- Install it with Composer using composer require picqer/moneybird-php-client; it is PSR-4 autoloaded and framework-agnostic. There is no documented Laravel auto-discovery service provider, so register your own singleton in a service provider and inject credentials from config. Keep the client behind an adapter so controllers and jobs never depend on Moneybird-shaped objects directly.
- How does authentication work with the Moneybird API client?
- The client uses token-based authentication, so you register an OAuth app in Moneybird, implement the authorization-code redirect and callback, and persist the access and refresh tokens. You pass the access token to the client when constructing it. Token storage, encryption at rest, refresh scheduling, and per-administration scoping are application responsibilities, not handled by the package.
- Can I create invoices and manage contacts with picqer/moneybird-php-client?
- Yes. The client exposes Moneybird administrations, contacts, sales invoices, products, and payments as fluent model objects with save(), delete(), filtering, and pagination. That covers common invoicing workflows, but the documented surface may not include every endpoint you need, such as journals, ledger accounts, receipts, or time entries. Verify coverage against a test administration before committing to it.
- Does picqer/moneybird-php-client support Laravel 9, 10, and 11?
- The package is framework-agnostic PHP rather than a Laravel-specific package, so Laravel version support depends mainly on your PHP version and Composer dependency constraints. It can be used in Laravel 9, 10, 11, or other PHP frameworks as long as those constraints resolve. Check the composer.json requirements for the PHP and Guzzle versions your application runs.
- How do I test a Moneybird integration without touching real accounting data?
- Use a Moneybird test or sandbox administration if one is available to your OAuth app, and run contract tests against it to catch field drops and validation quirks. Because the client does not ship test doubles, wrap it behind an AccountingGateway interface and fake that in unit tests. Reserve a small number of integration tests for the real HTTP client and keep them out of the default suite.
- Does the client handle Moneybird API rate limits, retries, and backoff?
- No. The assessment notes there is no built-in retry, backoff, or rate-limit governance, so throttling, idempotency, and failure handling are yours to implement. Run all writes on queued jobs rather than inside synchronous requests, and add your own retry policy with idempotency keys where the API supports them. Monitor for 429 responses and back off accordingly.
- Is picqer/moneybird-php-client actively maintained and production-ready?
- It is a small, single-vendor convenience wrapper maintained by Picqer with a modest contributor base and no SLA. It is usable in production, but treat it as a thin client rather than a batteries-included SDK. Mitigate the bus-factor risk by isolating it behind an adapter so you can swap to direct HTTP calls against the Moneybird API if maintenance stalls.
- What is the best way to structure Moneybird in a Laravel application?
- Place the client behind a domain-level port, such as an AccountingGateway interface, and implement a Moneybird adapter that maps client models to your own DTOs. Add a config file for client credentials and scopes plus a service provider that binds the client as a singleton. Keep application code free of Moneybird-shaped objects and run all writes through queued jobs.
- Does picqer/moneybird-php-client support webhooks for inbound Moneybird changes?
- The package description does not document webhook subscription management, so assume you will need to create and verify webhook endpoints yourself or fall back to scheduled polling. If Moneybird sends change notifications, receive them in a controller, verify authenticity, and then use the client to fetch the updated resource. For reconciliation-heavy workloads, scheduled polling is often simpler and easier to make idempotent.
- What alternatives are there to picqer/moneybird-php-client?
- The main alternative is calling the Moneybird REST API directly with Guzzle or Laravel's HTTP client, which gives you full endpoint coverage and control over retries and rate limits. Other community PHP clients exist, but evaluate their maintenance cadence and resource coverage the same way. Because the Picqer client is thin and framework-agnostic, swapping it out later is relatively cheap if you have kept it behind an adapter.