# Payment Methods (Bulk Update)

Manage the payment methods available for a restaurant on a specific sales channel. Payment methods define how customers can pay (e.g. cash, credit card, e-wallet, luncheon voucher) and can be created, updated, or deleted in bulk for a given restaurant and channel combination.

### `PUT /payment_methods` - Bulk update payment methods

Create, update, and delete payment methods for a restaurant on a given channel in a single request. Each operation is provided as an array: "creates" for new methods, "updates" for modifications to existing ones, and "deletes" to remove methods. When channelId corresponds to POS, a posDeviceId is required.

#### Request Body

```json
{
  "restaurantId": 101,
  "channelId": 1,
  "creates": [
    {
      "code": "EWallet",
      "label": "E-Wallet",
      "position": 5,
      "changeNotAllowed": false,
      "creditNoteAllowed": true,
      "directCollectionAllowed": false,
      "openCashDrawer": false,
      "ewalletReloadAllowed": true,
      "ewalletRefundAllowed": true,
      "defaultPayment": false,
      "consumptionMode": 1,
      "externalId": ""
    }
  ],
  "updates": [
    {
      "paymentMethodId": 312,
      "label": "Credit Card",
      "position": 1,
      "changeNotAllowed": true,
      "defaultPayment": true,
      "externalId": "ext_cc_001"
    }
  ],
  "deletes": [
    {
      "paymentMethodId": 315
    }
  ]
}
```

##### Request Body Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| restaurantId | integer | 101 | Identifier of the restaurant. |
| channelId | integer | 1 | Identifier of the associated channel. |
| creates | array | \[…\] | List of creates entries. |
| creates\[\] | object | {…} | Object containing creates fields. |
| creates\[\].code | string | "EWallet" | Machine-readable application code for the result. |
| creates\[\].label | string | "E-Wallet" | The label value. |
| creates\[\].position | integer | 5 | The position value. |
| creates\[\].changeNotAllowed | boolean | false | The change not allowed value. |
| creates\[\].creditNoteAllowed | boolean | true | The credit note allowed value. |
| creates\[\].directCollectionAllowed | boolean | false | The direct collection allowed value. |
| creates\[\].openCashDrawer | boolean | false | The open cash drawer value. |
| creates\[\].ewalletReloadAllowed | boolean | true | The ewallet reload allowed value. |
| creates\[\].ewalletRefundAllowed | boolean | true | The ewallet refund allowed value. |
| creates\[\].defaultPayment | boolean | false | The default payment value. |
| creates\[\].consumptionMode | integer | 1 | The consumption mode value. |
| creates\[\].externalId | string | "" | Identifier in the connected external system. |
| updates | array | \[…\] | List of updates entries. |
| updates\[\] | object | {…} | Object containing updates fields. |
| updates\[\].paymentMethodId | integer | 312 | Identifier of the associated payment method. |
| updates\[\].label | string | "Credit Card" | The label value. |
| updates\[\].position | integer | 1 | The position value. |
| updates\[\].changeNotAllowed | boolean | true | The change not allowed value. |
| updates\[\].defaultPayment | boolean | true | The default payment value. |
| updates\[\].externalId | string | "ext\_cc\_001" | Identifier in the connected external system. |
| deletes | array | \[…\] | List of deletes entries. |
| deletes\[\] | object | {…} | Object containing deletes fields. |
| deletes\[\].paymentMethodId | integer | 315 | Identifier of the associated payment method. |

#### Response

```json
{
  "status": 200,
  "code": "payment_method_success",
  "message": "You have successfuly retrieved this payment method.",
  "data": [
    {
      "paymentMethodId": 316,
      "restaurantId": 101,
      "channelId": 1,
      "code": "EWallet",
      "label": "E-Wallet",
      "position": 5,
      "changeNotAllowed": false,
      "creditNoteAllowed": true,
      "directCollectionAllowed": false,
      "openCashDrawer": false,
      "ewalletReloadAllowed": true,
      "ewalletRefundAllowed": true,
      "defaultPayment": false,
      "consumptionMode": 1,
      "externalId": ""
    },
    {
      "paymentMethodId": 312,
      "restaurantId": 101,
      "channelId": 1,
      "code": "CreditCard",
      "label": "Credit Card",
      "position": 1,
      "changeNotAllowed": true,
      "creditNoteAllowed": false,
      "directCollectionAllowed": false,
      "openCashDrawer": false,
      "ewalletReloadAllowed": false,
      "ewalletRefundAllowed": false,
      "defaultPayment": true,
      "consumptionMode": 0,
      "externalId": "ext_cc_001"
    }
  ]
}
```

##### Response Properties

Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.

| Property | Type | Example | Description |
| --- | --- | --- | --- |
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "payment\_method\_success" | Machine-readable application code for the result. |
| message | string | "You have successfuly retrieved this payment method." | Human-readable result message. Do not use this value for program logic. |
| data | array | \[…\] | Endpoint-specific response payload. |
| data\[\] | object | {…} | Endpoint-specific response payload. |
| data\[\].paymentMethodId | integer | 316 | Identifier of the associated payment method. |
| data\[\].restaurantId | integer | 101 | Identifier of the restaurant. |
| data\[\].channelId | integer | 1 | Identifier of the associated channel. |
| data\[\].code | string | "EWallet" | Machine-readable application code for the result. |
| data\[\].label | string | "E-Wallet" | The label value. |
| data\[\].position | integer | 5 | The position value. |
| data\[\].changeNotAllowed | boolean | false | The change not allowed value. |
| data\[\].creditNoteAllowed | boolean | true | The credit note allowed value. |
| data\[\].directCollectionAllowed | boolean | false | The direct collection allowed value. |
| data\[\].openCashDrawer | boolean | false | The open cash drawer value. |
| data\[\].ewalletReloadAllowed | boolean | true | The ewallet reload allowed value. |
| data\[\].ewalletRefundAllowed | boolean | true | The ewallet refund allowed value. |
| data\[\].defaultPayment | boolean | false | The default payment value. |
| data\[\].consumptionMode | integer | 1 | The consumption mode value. |
| data\[\].externalId | string | "" | Identifier in the connected external system. |
