Skip to main content
OwnPay uses a capability system to declare what a plugin does and what platform features it interacts with. Capabilities are expressed as string values in manifest.json and mapped to the OwnPay\Plugin\Capability backed PHP enum.
Full-trust model: Installed plugins are owner-uploaded and run with full application trust. Capabilities are declarative metadata and an intent contract. They document what a plugin does and drive UI presentation; they are not a runtime enforcement sandbox.

Declaring capabilities

Capabilities are declared in the capabilities array inside manifest.json:
The PluginInterface::capabilities() method on the entrypoint class should return the matching Capability enum cases:

Full capability reference

Common capability combinations

Payment gateway

Communication addon (SMS/Email/Telegram)

Analytics dashboard widget

Checkout theme

Security-relevant notes

db_read / db_write - SQL isolation

Queries to any op_* table not prefixed with op_plugin_ are blocked by PluginSandbox::validateSql().

file_read / file_write - Path containment

PluginSandbox::validateFilePath() uses realpath() to resolve the target path and checks that it begins with the plugin directory path.

Blocked PHP functions

Regardless of capabilities, the following functions cause an immediate load failure:
Last modified on July 15, 2026