Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Efatura Laravel Package

furkankadioglu/efatura

Laravel package for Turkish e-Fatura integration. Create, sign, and send UBL-TR electronic invoices to the GİB portal through a simple, fluent API, with easy configuration and XML output for PHP applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package presents as a Laravel-style integration layer (service provider + config + facade) for Turkish e-invoice/e-archive workflows, with the 1.9.4 notes confirming two distinct capability areas: an SMS-based approval/verification flow and invoice querying for documents issued in the taxpayer's name ("adımıza düzenlenen faturalar," i.e. incoming e-Fatura). That makes it a fit for conventional Laravel monoliths where a single application both issues and reconciles invoices. It is a poor fit for polyglot or event-driven estates unless the core is framework-agnostic and can be wrapped behind our own anti-corruption layer — nothing in the release notes indicates that.

Integration feasibility. High for Laravel 8–11 applications already holding GİB/provider credentials. The 1.9.4 changes are additive or corrective, not structural: an SMS approval fix, a manual test-account override, and a new invoice query method. The last two are the meaningful ones — the query capability turns a write-only integration into a read path, which is where most ERP/finance reconciliation value sits, but also where data-handling scope expands.

Technical risk. Semver risk is low (patch release, no breaking-change or deprecation markers). The residual risks are environmental, not code-level:

  • The SMS approval fix implies a stateful, multi-step challenge (generate → send OTP → verify → issue). Bugs here are silent until a real invoice fails to be approved; there is no indication of whether the fix changed exception types, return shapes, or timeout handling.
  • The manual test-account override is a genuine footgun. If it is a plain config flag with no environment guard, a copy-pasted .env can route production invoicing to a test account or vice versa — a legal/regulatory problem in Turkey, not merely a bug.
  • Invoice querying puts financial documents and counterparty PII in the application's scope, raising KVKK (Turkish data protection) obligations around retention, logging, and PDF/XML storage.
  • The package depends on a third-party Turkish provider and SMS gateway; both are single points of failure outside our control.

Key questions. Which provider/GİB integration does this wrap, and what is its stated support and deprecation policy? What Laravel/PHP versions are in the composer constraint matrix? Is the test-account override env-gated, and can it be made environment-derived rather than manually settable? Does the invoice query support date ranges, pagination, and incremental cursors, or is it a full-scan call? Are inbound SMS callbacks signature-verified? What is the license, and is there a published test suite and changelog beyond these three lines?

Integration Approach

Stack fit. Requires PHP 8.x, outbound HTTPS to the provider and SMS gateway, queue workers for OTP dispatch and verification retries, and the scheduler for invoice polling. No exotic runtime dependencies are implied. Storage should be provisioned for retrieved invoice XML/PDF if the query feature returns document artefacts.

Migration path. Treat 1.9.4 as a drop-in composer update from any 1.9.x. Validate whether the SMS fix alters any public method signatures or exception classes before merging — patch releases sometimes ship behavioural changes without calling them out. Confirm no new migrations are required (none are signalled). Adopt the two new features deliberately rather than by default: gate the test-account override behind an explicit non-production check in our own config layer, and land invoice querying behind a feature flag with read-only credentials first.

Compatibility. Verify the composer constraints against our Laravel and Guzzle versions, and confirm the SMS fix is compatible with whichever gateway account we already hold. If we run multi-tenant, confirm the package supports per-tenant credentials rather than a single global config; the notes are silent, and this is often the blocker in Turkish ERP integrations.

Sequencing. (1) Update in staging and run an end-to-end SMS approval against the provider sandbox, including timeout, wrong-code, and gateway-down paths. (2) Add a hard environment assertion so the test-account override cannot activate in production. (3) Enable invoice querying in read-only mode as a scheduled job with an incremental cursor, and reconcile a sample against the GİB portal manually. (4) Only then expose the query results in any user-facing finance view. (5) Production rollout with alerting on approval failure rate and query job staleness.

Operational Impact

Maintenance. The package itself should be low-touch, but the surrounding surface is not: Turkish e-invoicing is a regulated, moving target (GİB schema revisions, e-Fatura/e-Arşiv threshold changes, UBL-TR updates), and provider API contracts drift independently of this package's release cadence. Budget a standing allocation for quarterly compatibility review regardless of whether the package ships.

Support. Release notes are Turkish-only, which suggests a Turkish-speaking maintainer and likely a consultancy-backed or community support model. There is no evidence of an SLA. We should own the provider relationship directly and treat the package as a thin adapter, not as our support channel. Identify an internal owner who reads Turkish and understands GİB terminology.

Scaling. Cost scales with OTP volume, not with compute — SMS is a per-message operating expense that grows linearly with invoice volume and must be modelled in unit economics. Invoice querying scales with polling frequency and page size; unbounded polling against a provider API will hit rate limits and inflate latency. Use incremental cursors, off-peak scheduling, and backoff.

Failure modes. Provider outage blocks issuance and querying; SMS gateway outage blocks approval entirely, so a documented manual-approval fallback is mandatory. Misconfigured test-account override is the highest-severity failure — it can file or suppress documents under the wrong taxpayer identity. Missing idempotency keys risk duplicate invoice submission on retry. Unverified callbacks risk forged approval events. All four should have explicit detection and runbook entries.

Ramp-up. Moderate. A competent Laravel developer can wire the package in days, but productive ownership requires domain grounding in Turkish e-invoicing (e-Fatura vs e-Arşiv, UBL-TR, GİB portal reconciliation) plus SMS flow semantics. Plan one to two sprints for the engineer and a half-day of finance/SME time for reconciliation sign-off before the query feature is trusted.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource