> This page is for version v2024-05-25 (default).
> For other versions, use one of these documentation indexes:
> - v2024-05-25 (default): https://docs.monite.com/v-2024-05-25/llms.txt
> - v2024-01-31: https://docs.monite.com/v2024-01-31/llms.txt
> - v2023-09-01: https://docs.monite.com/v2023-09-01/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.monite.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.monite.com/_mcp/server.

# Enable payment methods for an entity

PUT https://api.sandbox.monite.com/v1/entities/{entity_id}/payment_methods
Content-Type: application/json

Sets or updates the list of payment methods available to an entity to send and receive payments. [Payment links](https://docs.monite.com/docs/payment-links) created by this entity can use only the specified payment methods. Supported payment methods [vary by country](https://docs.monite.com/payments/payment-methods).

Some payment methods require that the entity completes the [onboarding process](https://docs.monite.com/payments/onboarding/index). These payment methods are indicated by the `inactive` status in the response and will become `active` after successful onboarding.

The specified list of payment methods replaces the previous methods chosen by the entity. Removed payment methods become inactive and can no longer be used in payment links.

Reference: https://docs.monite.com/api/payment-methods/put-entities-id-payment-methods

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api.sandbox.monite.com/v1` (sandbox, default)
- `https://api.monite.com/v1` (eu_production)
- `https://us.api.monite.com/v1` (na_production)

## Request

### Path parameters

- `entity_id` (string, required) — ID of the entity to update the payment methods for.

### Headers

- `x-monite-version` (string, required)

### Body (application/json)

This endpoint expects an object.

- `payment_methods_receive` (list of enum, optional) — Payment methods to receive money from customers. Supported payment methods [vary per country](https://docs.monite.com/payments/payment-methods). `card` includes card payments, Apple Pay, and Google Pay. The values `applepay` and `googlepay` are deprecated and unused. `sofort` is deprecated and replaced by `klarna`.
  - Allowed values: `sepa_credit`, `us_ach`, `blik`, `card`, `bacs_direct_debit`, `bancontact`, `eps`, `giropay`, `ideal`, `p24`, `sepa_debit`, `sofort`, `applepay`, `googlepay`, `affirm`, `klarna`
- `payment_methods_send` (list of enum, optional) — Only for entities in the EU and UK. Payment methods used to make payments to vendors. Currently only `sepa_credit` is supported for making payments.
  - Allowed values: `sepa_credit`, `us_ach`, `blik`, `card`, `bacs_direct_debit`, `bancontact`, `eps`, `giropay`, `ideal`, `p24`, `sepa_debit`, `sofort`, `applepay`, `googlepay`, `affirm`, `klarna`
- `payment_methods` (list of enum, optional, deprecated) — Deprecated. Replaced by `payment_methods_receive`.
  - Allowed values: `sepa_credit`, `us_ach`, `blik`, `card`, `bacs_direct_debit`, `bancontact`, `eps`, `giropay`, `ideal`, `p24`, `sepa_debit`, `sofort`, `applepay`, `googlepay`, `affirm`, `klarna`

## Response

### 200

Successful Response

- `data` (list of PaymentMethod, required)

## Errors

### 401 Put Entities ID Payment Methods Request Unauthorized Error

The `Authorization` header is missing or contains an invalid or expired access token. See [Authentication](https://docs.monite.com/api/concepts/authentication) to learn how to authenticate API calls.

- `any`

### 422 Put Entities ID Payment Methods Request Unprocessable Entity Error

Validation Error

- `detail` (list of ValidationError, optional)

### 429 Put Entities ID Payment Methods Request Too Many Requests Error

API rate limit has been exceeded. Check the response headers for the rate limit information.

- `any`

## Types

### PaymentMethod

- `direction` (enum, required)
  - Allowed values: `receive`, `send`
- `name` (enum, required) — The display name of the payment method.
  - Allowed values: `SEPA Payments`, `US ACH Payments`, `BLIK`, `Card payments`, `Bacs Direct Debit`, `Bancontact`, `Electronic Payment Standard`, `Giropay`, `iDEAL`, `Przelewy24`, `SEPA Direct Debit`, `SOFORT`, `Apple Pay`, `Google Pay`, `Affirm`, `Klarna`
- `status` (enum, required) — `active` payment methods can be used immediately. `inactive` status means that the entity must complete the [onboarding process](https://docs.monite.com/payments/onboarding/index) before it can use this payment method.
  - Allowed values: `active`, `inactive`
- `type` (enum, required) — The payment method code. These codes are used, for example, to specify the payment methods when creating [payment links](https://docs.monite.com/docs/payment-links).
  - Allowed values: `sepa_credit`, `us_ach`, `blik`, `card`, `bacs_direct_debit`, `bancontact`, `eps`, `giropay`, `ideal`, `p24`, `sepa_debit`, `sofort`, `applepay`, `googlepay`, `affirm`, `klarna`

### ValidationError

- `loc` (list of ValidationErrorLocItem, required)
- `msg` (string, required)
- `type` (string, required)

### ValidationErrorLocItem

## Examples

### EU payments (minimal)

**Request**

```json
{
  "payment_methods_receive": [
    "card",
    "sepa_credit",
    "sepa_debit"
  ],
  "payment_methods_send": [
    "sepa_credit"
  ]
}
```

**Response**

```json
{
  "data": [
    {
      "direction": "receive",
      "name": "SEPA Payments",
      "status": "active",
      "type": "sepa_credit"
    }
  ]
}
```

**SDK Code**

```python EU payments (minimal)
import requests

url = "https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods"

payload = {
    "payment_methods_receive": ["card", "sepa_credit", "sepa_debit"],
    "payment_methods_send": ["sepa_credit"]
}
headers = {
    "x-monite-version": "2024-05-25",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript EU payments (minimal)
const url = 'https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods';
const options = {
  method: 'PUT',
  headers: {
    'x-monite-version': '2024-05-25',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"payment_methods_receive":["card","sepa_credit","sepa_debit"],"payment_methods_send":["sepa_credit"]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go EU payments (minimal)
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods"

	payload := strings.NewReader("{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"sepa_credit\",\n    \"sepa_debit\"\n  ],\n  \"payment_methods_send\": [\n    \"sepa_credit\"\n  ]\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("x-monite-version", "2024-05-25")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby EU payments (minimal)
require 'uri'
require 'net/http'

url = URI("https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["x-monite-version"] = '2024-05-25'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"sepa_credit\",\n    \"sepa_debit\"\n  ],\n  \"payment_methods_send\": [\n    \"sepa_credit\"\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java EU payments (minimal)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods")
  .header("x-monite-version", "2024-05-25")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"sepa_credit\",\n    \"sepa_debit\"\n  ],\n  \"payment_methods_send\": [\n    \"sepa_credit\"\n  ]\n}")
  .asString();
```

```php EU payments (minimal)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods', [
  'body' => '{
  "payment_methods_receive": [
    "card",
    "sepa_credit",
    "sepa_debit"
  ],
  "payment_methods_send": [
    "sepa_credit"
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'x-monite-version' => '2024-05-25',
  ],
]);

echo $response->getBody();
```

```csharp EU payments (minimal)
using RestSharp;

var client = new RestClient("https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods");
var request = new RestRequest(Method.PUT);
request.AddHeader("x-monite-version", "2024-05-25");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"sepa_credit\",\n    \"sepa_debit\"\n  ],\n  \"payment_methods_send\": [\n    \"sepa_credit\"\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift EU payments (minimal)
import Foundation

let headers = [
  "x-monite-version": "2024-05-25",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "payment_methods_receive": ["card", "sepa_credit", "sepa_debit"],
  "payment_methods_send": ["sepa_credit"]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### US payments

**Request**

```json
{
  "payment_methods_receive": [
    "card",
    "us_ach",
    "affirm",
    "klarna"
  ]
}
```

**Response**

```json
{
  "data": [
    {
      "direction": "receive",
      "name": "SEPA Payments",
      "status": "active",
      "type": "sepa_credit"
    }
  ]
}
```

**SDK Code**

```python US payments
import requests

url = "https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods"

payload = { "payment_methods_receive": ["card", "us_ach", "affirm", "klarna"] }
headers = {
    "x-monite-version": "2024-05-25",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript US payments
const url = 'https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods';
const options = {
  method: 'PUT',
  headers: {
    'x-monite-version': '2024-05-25',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"payment_methods_receive":["card","us_ach","affirm","klarna"]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go US payments
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods"

	payload := strings.NewReader("{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"us_ach\",\n    \"affirm\",\n    \"klarna\"\n  ]\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("x-monite-version", "2024-05-25")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby US payments
require 'uri'
require 'net/http'

url = URI("https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["x-monite-version"] = '2024-05-25'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"us_ach\",\n    \"affirm\",\n    \"klarna\"\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java US payments
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods")
  .header("x-monite-version", "2024-05-25")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"us_ach\",\n    \"affirm\",\n    \"klarna\"\n  ]\n}")
  .asString();
```

```php US payments
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods', [
  'body' => '{
  "payment_methods_receive": [
    "card",
    "us_ach",
    "affirm",
    "klarna"
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'x-monite-version' => '2024-05-25',
  ],
]);

echo $response->getBody();
```

```csharp US payments
using RestSharp;

var client = new RestClient("https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods");
var request = new RestRequest(Method.PUT);
request.AddHeader("x-monite-version", "2024-05-25");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"payment_methods_receive\": [\n    \"card\",\n    \"us_ach\",\n    \"affirm\",\n    \"klarna\"\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift US payments
import Foundation

let headers = [
  "x-monite-version": "2024-05-25",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["payment_methods_receive": ["card", "us_ach", "affirm", "klarna"]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.sandbox.monite.com/v1/entities/entity_id/payment_methods")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```