# List all payment methods

`GET /api/financial/payment-methods`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`)
- **Features:** Front of House Generic Access (`FOHGENERIC`)

HTML version: [List all payment methods](https://support.gladstonesoftware.cloud/reference/payments/list-all-payment-methods)

## Overview

Lists every payment method configured for the operator, active and inactive alike. A payment
method is a tender type — cash, a card scheme, a direct debit arrangement, loyalty points — and
it is what a sale is recorded against. There is no filter or paging: you always get the whole
set and filter client-side on `isActive`.

Note that an operator with no payment methods at all returns `404` with `No payment methods
found`, not an empty array. Treat that status as "none configured" rather than as a failure.

When a payment method is created, updated or deleted through this API, the change is visible on
the next read.

Almost every boolean below is decided by the payment method's **collection interface** — the
underlying tender mechanism — rather than being freely chosen. Fetch
[List all collection interfaces](list-all-collection-interfaces.md) alongside
this list: its `canModify…` flags tell you which of these values could have been set at all, and
which were forced by the platform.

## Endpoint

`GET {base_url}/api/financial/payment-methods`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/financial/payment-methods' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `[].id` | string | The code the payment method is known by, chosen by whoever created it rather than generated by the platform. Maximum 15 characters. This is the value you pass in the path to [Retrieve](retrieve-a-payment-method.md), [Update](update-a-payment-method.md) and [Delete](delete-a-payment-method.md). |
| `[].description` | string | The display name shown to staff against this tender type, for example on the point-of-sale tender list. Maximum 255 characters. Free text — it carries no behaviour. |
| `[].collectionInterface` | object | The tender mechanism this payment method is built on. It determines which of the flags below the platform will let you set, whether an `eftSystem` is required, and whether more than one payment method of this kind may exist. |
| `[].collectionInterface.id` | integer (int32) | The collection interface type. The recognised values are `0` Manual, `3` External, `5` Cashless, `6` Loyalty, `7` Chip and PIN, `8` Invoicing and `9` Electronic Funds Transfer (EFT). Only `9` carries an `eftSystem`. |
| `[].collectionInterface.description` | string | The name of the collection interface, taken from the collection interface itself rather than set on the payment method. |
| `[].collectionInterface.isActive` | boolean | Whether the underlying collection interface is still available. Existing payment methods keep working, but while this is `false` no new payment method can be created against this interface and updates to ones that already use it are rejected with `400`. |
| `[].giveChange` | boolean | Whether change is given from this tender — meaningful for cash-like methods. The platform sets `false` whenever the collection interface's `canModifyGiveChange` is `false`, so a `false` here does not always mean somebody chose it. |
| `[].useAtPOS` | boolean | Whether the payment method is offered as a tender option at the point of sale. It can only be `true` where the collection interface's `canModifyUseAtPos` is `true`. |
| `[].openCashDrawer` | boolean | Whether taking this payment pops the till drawer. Derived by the platform from `collectionInterface.id`, not from anything a caller sent: it is `true` for Manual (`0`) and Chip and PIN (`7`) and `false` for every other type. |
| `[].nonBankedIncome` | boolean | Whether takings on this method are treated as non-banked income — money that never reaches a bank account, such as loyalty points redeemed against a sale — and so are excluded from banking figures. Where the collection interface's `canModifyNonBankedIncome` is `false` the platform forces this to `true`. |
| `[].allowCountedTotal` | boolean | Whether takings on this method count towards the counted daily totals at till reconciliation. Saved exactly as supplied; the collection interface places no restriction on it. |
| `[].avsWhenCustomerPresent` | boolean | Whether Address Verification is required when the cardholder is at the till. This and the three flags below are only ever `true` where the collection interface's `canModifyAVSCVSSettings` is `true`; otherwise the platform sets `false`. |
| `[].avsWhenCustomerNotPresent` | boolean | Whether Address Verification is required for a cardholder-not-present sale, such as a telephone or online payment. Gated by `canModifyAVSCVSSettings` in the same way. |
| `[].cvsWhenCustomerPresent` | boolean | Whether card number verification is required when the cardholder is at the till. Gated by `canModifyAVSCVSSettings`. |
| `[].cvsWhenCustomerNotPresent` | boolean | Whether card number verification is required for a cardholder-not-present sale. Gated by `canModifyAVSCVSSettings`. |
| `[].eftSystem` | object | The direct-debit or bank-collection scheme the money is collected through. Always present, but only populated when `collectionInterface.id` is `9` (EFT); for every other collection interface you get `id: 0` with a null `description`. |
| `[].eftSystem.id` | integer (int32) | The EFT scheme, matching an `id` from [Get all EFT systems](get-all-eft-systems.md). `0` means no EFT system is attached, which is the normal state for every non-EFT collection interface. |
| `[].eftSystem.description` | string | The scheme name, taken from the EFT system. `null` when no EFT system is attached. |
| `[].produceDuplicateReceipt` | boolean | Whether a second copy of the receipt is printed for this tender. Only ever `true` where the collection interface's `canModifyDuplicateReceipt` is `true`. |
| `[].printSignatureOnReceipt` | boolean | Whether a signature line is printed on the receipt. Only ever `true` where the collection interface's `canModifySignatureOnReceipt` is `true`. |
| `[].isActive` | boolean | Whether the payment method may still be used. `false` means retired rather than deleted, and history against it survives. Filter on this before offering the list to a user — the endpoint returns retired methods too. |

## Sample response

```json title="200 OK"
[
  {
    "id": "string",
    "description": "string",
    "collectionInterface": {
      "id": 12345,
      "description": "string",
      "isActive": true
    },
    "giveChange": true,
    "useAtPOS": true,
    "openCashDrawer": true,
    "nonBankedIncome": true,
    "allowCountedTotal": true,
    "avsWhenCustomerPresent": true,
    "avsWhenCustomerNotPresent": true,
    "cvsWhenCustomerPresent": true,
    "cvsWhenCustomerNotPresent": true,
    "eftSystem": {
      "id": 12345,
      "description": "string"
    },
    "produceDuplicateReceipt": true,
    "printSignatureOnReceipt": true,
    "isActive": true
  }
]
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `404` | Not found | No payment methods found. |
| `500` | Internal server error | |
