# Paymentmethodparams

> The per-connector settings of a payment method. The shape is decided by the chosen connector, not by the property definition.

Source: CBX documentation, version 4.0 preview (unreleased). Canonical page: https://docs.configbox.at/docs/4.0-preview/technical/property-types/paymentmethodparams. Last updated 2026-08-03.

---
The per-connector settings of a payment method. The shape is decided by the chosen connector, not by
the property definition.

**Storage kind:** `column` · **Column:** `varchar(255)` inherited — give it an explicit `dataType`

This is the legacy PSP mechanism. New provider work belongs on `commerce2providersettings`;
this type stays for the connectors already on it.

## Settings

It takes the shared settings only. What it renders comes from the selected PSP connector: each
connector declares the setting keys it needs
(`ConfigboxPspHelper::getPspConnectorSettingKeys()`), and this property draws that form section and
harvests those keys back out of the request.

## The stored format

Not JSON — a newline-separated list of `key="value"` pairs, built by concatenation:

```
merchant_id="12345"
secret_key="abc…"
```

One line per key the connector declares, in the connector's order, whether or not the operator filled
it in. Only declared keys are read from the request, so a crafted POST cannot inject settings the
connector does not know about.

There is no escaping of a `"` inside a value. Treat the values as opaque credentials and do not
expect the format to survive a value containing quotes or newlines.

Note the write is conditional on `$data->connector_name` being present: if the connector is not part
of the submitted data, the property writes **nothing** and the previous value stands.

## Notes

This is why a payment method's edit form changes after you pick a connector and save — the connector
selection (`connector_name`, a [`pseudojoin`](https://docs.configbox.at/docs/4.0-preview/technical/property-types/pseudojoin)) decides what this property then shows.
Before the first save there is no connector, so there is nothing to render.

Because the shape is dynamic, generated artifacts describe the column, not the settings inside it.
There is no static schema for the contents, and an assistant writing through the API cannot discover
the keys from the schema — it has to ask the connector.

The type declares no `getDefaultDataType()`, so it inherits `varchar(255)`. A connector with more
than a couple of settings will outgrow that; declare a wider `dataType`.

@see commerce2providersettings.md — the modern equivalent
@see pseudojoin.md
@see ../../customization/com_configbox_payment_connectors.md — writing a connector and its setting keys
