Pennylane
Status: Available. The current plugin ships a Pennylane Company API V2 connector for the capabilities below. Features not listed here must not be inferred from Pennylane's wider API surface.
Implemented capabilities
| Capability | Status | Behavior |
|---|---|---|
| Connection test | Available | validates token, company identity and sandbox/production consistency |
| Factur-X submission | Available | imports the frozen Factur-X as a customer e-invoice |
| PA forwarding | Available, opt-in | adds send_to_pa=true only when explicitly enabled |
| Lifecycle tracking | Available | polls the customer-invoice changelog and current invoice resource |
| Pennylane webhooks | Not supported by this connector | use the implemented polling command instead |
The generic webhook infrastructure in the plugin does not make Pennylane webhooks available: no Pennylane-specific webhook authenticator/decoder is registered in the current connector.
Safe configuration
Start with a dedicated sandbox company/token, PA forwarding disabled and manual transmission:
sylius_invoice:
platform:
active: pennylane
environment: SANDBOX
organization_id: '%env(PENNYLANE_COMPANY_ID)%'
credentials:
api_token: PENNYLANE_API_TOKEN
options:
send_to_pa: false
transmission:
mode: MANUAL
api_token is a secret reference. The real token must remain in the deployment secret store. The implemented connector requires the provider permissions documented by the plugin, including customer_invoices:all for its customer-invoice operations.
Validate the connection before enabling transmission:
bin/console sylius-invoice:platform:test-connection
Status synchronization uses:
bin/console sylius-invoice:pennylane:sync-statuses
Operational boundary
Provider-side processing is asynchronous. A successful import is not equivalent to final acceptance. The plugin tracks only the Pennylane states it explicitly maps and keeps unknown provider values from being coerced into a misleading core status.
The connector does not currently implement OAuth2 lifecycle, supplier-invoice submission, standalone UBL/CII upload or Pennylane-specific webhook ingestion.
The canonical implementation guide is invoice-plugin/docs/connectors/pennylane.md; it is the source to review when provider behavior or the connector is upgraded.