- What is supplycart/xero used for in Laravel applications?
- It is a Laravel integration for the Xero accounting API that provides a framework-friendly way to connect your application to Xero and sync invoices, contacts, payments, and other accounting data. It fits applications that need a managed registry of external connections with credential refresh, such as tenant-scoped integrations or accounting sync pipelines. The package assumes Laravel conventions like the container, config, Eloquent persistence, and queue or scheduler workers for token refresh.
- How do I install supplycart/xero in a Laravel project?
- Install it through Composer with composer require supplycart/xero. After that, publish any package configuration and migrations, configure your Xero credentials, and make sure a queue worker or scheduler is available for token refresh. Check the README and composer.json for the exact publish commands, required environment variables, and migration steps.
- Which Xero data can I sync with the supplycart/xero package?
- The package overview mentions syncing invoices, contacts, payments, and other accounting data through the Xero API. Exact endpoint coverage should be verified against the package documentation and source before you rely on a specific resource. It is best suited to standard accounting sync workflows rather than every possible Xero API feature.
- What changed in supplycart/xero version 0.3.23 for token refresh?
- Version 0.3.23 is a one-line behavioral fix: when a token refresh fails, the package now resets the connection's enabled status. That turns a transient auth failure into a persisted state transition rather than a cosmetic patch. It means the package owns a connection lifecycle where a failed refresh can disable a connection.
- Does supplycart/xero retry a failed token refresh before disabling the connection?
- The 0.3.23 release note does not document any retry or backoff before the connection is disabled. That means a single transient provider outage or clock skew could disable a connection that might have succeeded on retry. Treat this as a high-risk unknown until the maintainer confirms the intended retry behavior, and add monitoring around disabled connections.
- Is supplycart/xero safe for multi-worker Laravel queue deployments?
- Concurrency handling for token refresh is not specified in the provided release information. With multiple queue workers refreshing the same connection, a losing worker's failure could disable a connection that another worker just refreshed successfully. Before production use, confirm whether the package uses locks, withoutOverlapping, or optimistic version checks, or wrap refresh jobs with your own coordination.
- Which Laravel and PHP versions does supplycart/xero support?
- The supported Laravel and PHP versions are not stated in the provided excerpt. Check the package's composer.json require constraints and the README for tested Laravel, PHP, and queue driver combinations. Confirm support for your target versions before adopting the package.
- Is the 0.3.x release of supplycart/xero stable enough for production?
- Version 0.3.x is pre-1.0 semver, so there is no stability guarantee and patch releases may carry behavior changes like the refresh-failure reset in 0.3.23. Pin the version, review release notes carefully, and cover your integration with tests before upgrading. Treat the connection schema and lifecycle as potentially changing until a 1.0 timeline is confirmed.
- How do I re-enable a Xero connection after supplycart/xero disables it?
- The re-enablement path is not specified in the 0.3.23 release note. It may require an explicit re-auth or re-enable call, or a fresh OAuth consent from the user, which affects whether this is self-healing or support-generating. Confirm the intended workflow with the maintainer and plan an operator process for disabled connections.
- Does supplycart/xero log or dispatch events when a connection is disabled?
- The release note does not indicate that an event, log entry, or notification is emitted when a connection is disabled after a failed refresh. If none exists, disabling can be invisible until a downstream job fails. Ask the maintainer whether a disable event is dispatched, and consider adding your own observability wrapper around refresh failures and connection status changes.