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

# Update

POST https://api.mercoa.com/paymentMethod/schema/{schemaId}
Content-Type: application/json

Update custom payment method schema

Reference: https://docs.mercoa.com/embedded-ap-ar/api-reference/custom-payment-method-schema/update

## Authentication

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

## Request

### Path parameters

- `schemaId` (string, required)

### Body (application/json)

This endpoint expects an object.

- `name` (string, required)
- `isSource` (boolean, required) — This payment method can be used as a payment source for an invoice
- `isDestination` (boolean, required) — This payment method can be used as a payment destination for an invoice
- `fields` (list of object, required)
  - `name` (string, required)
  - `type` (enum, required)
    - Allowed values: `text`, `number`, `select`, `date`, `phone`, `email`, `url`, `dynamicUrl`, `embeddedUrl`, `address`, `usBankRoutingNumber`, `usBankAccountNumber`
  - `optional` (boolean, required) — Indicates whether this field is optional
  - `displayName` (string, optional)
  - `useAsAccountName` (boolean, optional) — Indicates whether this field should be used as the name of the payment method. Only one field can be used as the name. Will set the accountName field of the payment method to the value of this field.
  - `useAsAccountNumber` (boolean, optional) — Indicates whether this field should be used as the account number of the payment method. Only one field can be used as the account number. Will set the accountNumber field of the payment method to the value of this field.
  - `options` (list of string, optional) — When type is 'select', provide options that can be selected
- `supportedCurrencies` (list of enum, optional) — List of currencies that this payment method supports. If not provided, the payment method will support only USD.
  - Allowed values: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BOV`, `BRL`, `BSD`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHE`, `CHF`, `CHW`, `CLF`, `CLP`, `COP`, `COU`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HTG`, `HUF`, `IDR`, `ILS`, `INR`, `IQD`, `IRR`, `ISK`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MXV`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `CNY`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLE`, `SLL`, `SOS`, `SRD`, `SSP`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `USN`, `UYI`, `UYU`, `UYW`, `UZS`, `VED`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XBA`, `XBB`, `XBC`, `XBD`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `XSU`, `XTS`, `XUA`, `XXX`, `YER`, `ZAR`, `ZMW`, `ZWL`
- `estimatedProcessingTime` (integer, optional) — Estimated time in days for this payment method to process a payments. Set as 0 for same-day payment methods, -1 for unknown processing time.
- `maxAmount` (double, optional) — The maximum amount that can be transferred from this payment method in a single transaction.
- `minAmount` (double, optional) — The minimum amount that can be transferred from this payment method in a single transaction. Default is 1.

## Response

### 200

- `id` (string, required)
- `name` (string, required)
- `isSource` (boolean, required) — This payment method can be used as a payment source for an invoice
- `isDestination` (boolean, required) — This payment method can be used as a payment destination for an invoice
- `supportedCurrencies` (list of enum, required) — List of currencies that this payment method supports.
  - Allowed values: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BOV`, `BRL`, `BSD`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHE`, `CHF`, `CHW`, `CLF`, `CLP`, `COP`, `COU`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HTG`, `HUF`, `IDR`, `ILS`, `INR`, `IQD`, `IRR`, `ISK`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MXV`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `CNY`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLE`, `SLL`, `SOS`, `SRD`, `SSP`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `USN`, `UYI`, `UYU`, `UYW`, `UZS`, `VED`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XBA`, `XBB`, `XBC`, `XBD`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `XSU`, `XTS`, `XUA`, `XXX`, `YER`, `ZAR`, `ZMW`, `ZWL`
- `fields` (list of object, required)
  - `name` (string, required)
  - `type` (enum, required)
    - Allowed values: `text`, `number`, `select`, `date`, `phone`, `email`, `url`, `dynamicUrl`, `embeddedUrl`, `address`, `usBankRoutingNumber`, `usBankAccountNumber`
  - `optional` (boolean, required) — Indicates whether this field is optional
  - `displayName` (string, optional)
  - `useAsAccountName` (boolean, optional) — Indicates whether this field should be used as the name of the payment method. Only one field can be used as the name. Will set the accountName field of the payment method to the value of this field.
  - `useAsAccountNumber` (boolean, optional) — Indicates whether this field should be used as the account number of the payment method. Only one field can be used as the account number. Will set the accountNumber field of the payment method to the value of this field.
  - `options` (list of string, optional) — When type is 'select', provide options that can be selected
- `estimatedProcessingTime` (integer, required) — Estimated time in days for this payment method to process a payments. 0 is an same-day payment methods, -1 is unknown processing time.
- `createdAt` (datetime, required)
- `updatedAt` (datetime, required)
- `maxAmount` (double, optional) — The maximum amount that can be transferred from this payment method in a single transaction.
- `minAmount` (double, optional) — The minimum amount that can be transferred from this payment method in a single transaction. Default is 1.

## Errors

### 400 Bad Request

- `errorName` ("BadRequest", required)
- `content` (string, required)

### 401 Unauthorized

- `errorName` ("Unauthorized", required)
- `content` (string, required)

### 403 Forbidden

- `errorName` ("Forbidden", required)
- `content` (string, required)

### 404 Not Found

- `errorName` ("NotFound", required)
- `content` (string, required)

### 409 Conflict

- `errorName` ("Conflict", required)
- `content` (string, required)

### 500 Internal Server Error

- `errorName` ("InternalServerError", required)
- `content` (string, required)

### 501 Unimplemented

- `errorName` ("Unimplemented", required)
- `content` (string, required)

## Examples

### Check

**Request**

```json
{
  "name": "Check",
  "isSource": false,
  "isDestination": true,
  "fields": [
    {
      "name": "payToTheOrderOf",
      "type": "text",
      "optional": false,
      "displayName": "Pay To The Order Of"
    },
    {
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    },
    {
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    },
    {
      "name": "address",
      "type": "address",
      "optional": false,
      "displayName": "Address"
    }
  ],
  "supportedCurrencies": [
    "USD"
  ],
  "estimatedProcessingTime": 7,
  "maxAmount": 50000,
  "minAmount": 1
}
```

**Response**

```json
{
  "id": "cpms_14f78dcd-4614-426e-a37a-7af262431d41",
  "name": "Check",
  "isSource": false,
  "isDestination": true,
  "supportedCurrencies": [
    "USD"
  ],
  "fields": [
    {
      "name": "payToTheOrderOf",
      "type": "text",
      "optional": false,
      "displayName": "Pay To The Order Of"
    },
    {
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    },
    {
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    },
    {
      "name": "address",
      "type": "address",
      "optional": false,
      "displayName": "Address"
    }
  ],
  "estimatedProcessingTime": 7,
  "createdAt": "2021-01-01T00:00:00Z",
  "updatedAt": "2021-01-01T00:00:00Z",
  "maxAmount": 50000,
  "minAmount": 1
}
```

**SDK Code**

```python Check
import requests

url = "https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41"

payload = {
    "name": "Check",
    "isSource": False,
    "isDestination": True,
    "fields": [
        {
            "name": "payToTheOrderOf",
            "type": "text",
            "optional": False,
            "displayName": "Pay To The Order Of"
        },
        {
            "name": "accountNumber",
            "type": "usBankAccountNumber",
            "optional": False,
            "displayName": "Account Number",
            "useAsAccountNumber": True
        },
        {
            "name": "routingNumber",
            "type": "usBankRoutingNumber",
            "optional": False,
            "displayName": "Routing Number"
        },
        {
            "name": "address",
            "type": "address",
            "optional": False,
            "displayName": "Address"
        }
    ],
    "supportedCurrencies": ["USD"],
    "estimatedProcessingTime": 7,
    "maxAmount": 50000,
    "minAmount": 1
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```typescript Check
import { MercoaClient } from "@mercoa/javascript";

const client = new MercoaClient({ token: "YOUR_TOKEN" });
await client.customPaymentMethodSchema.update("cpms_14f78dcd-4614-426e-a37a-7af262431d41", {
    name: "Check",
    isSource: false,
    isDestination: true,
    supportedCurrencies: ["USD"],
    fields: [{
            name: "payToTheOrderOf",
            displayName: "Pay To The Order Of",
            type: "text",
            optional: false
        }, {
            name: "accountNumber",
            displayName: "Account Number",
            type: "usBankAccountNumber",
            optional: false,
            useAsAccountNumber: true
        }, {
            name: "routingNumber",
            displayName: "Routing Number",
            type: "usBankRoutingNumber",
            optional: false
        }, {
            name: "address",
            displayName: "Address",
            type: "address",
            optional: false
        }],
    estimatedProcessingTime: 7,
    maxAmount: 50000,
    minAmount: 1
});

```

```go Check
package main

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

func main() {

	url := "https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41"

	payload := strings.NewReader("{\n  \"name\": \"Check\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"payToTheOrderOf\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Pay To The Order Of\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    },\n    {\n      \"name\": \"address\",\n      \"type\": \"address\",\n      \"optional\": false,\n      \"displayName\": \"Address\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\"\n  ],\n  \"estimatedProcessingTime\": 7,\n  \"maxAmount\": 50000,\n  \"minAmount\": 1\n}")

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

	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 Check
require 'uri'
require 'net/http'

url = URI("https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Check\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"payToTheOrderOf\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Pay To The Order Of\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    },\n    {\n      \"name\": \"address\",\n      \"type\": \"address\",\n      \"optional\": false,\n      \"displayName\": \"Address\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\"\n  ],\n  \"estimatedProcessingTime\": 7,\n  \"maxAmount\": 50000,\n  \"minAmount\": 1\n}"

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

```java Check
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Check\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"payToTheOrderOf\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Pay To The Order Of\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    },\n    {\n      \"name\": \"address\",\n      \"type\": \"address\",\n      \"optional\": false,\n      \"displayName\": \"Address\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\"\n  ],\n  \"estimatedProcessingTime\": 7,\n  \"maxAmount\": 50000,\n  \"minAmount\": 1\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41', [
  'body' => '{
  "name": "Check",
  "isSource": false,
  "isDestination": true,
  "fields": [
    {
      "name": "payToTheOrderOf",
      "type": "text",
      "optional": false,
      "displayName": "Pay To The Order Of"
    },
    {
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    },
    {
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    },
    {
      "name": "address",
      "type": "address",
      "optional": false,
      "displayName": "Address"
    }
  ],
  "supportedCurrencies": [
    "USD"
  ],
  "estimatedProcessingTime": 7,
  "maxAmount": 50000,
  "minAmount": 1
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp Check
using RestSharp;

var client = new RestClient("https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Check\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"payToTheOrderOf\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Pay To The Order Of\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    },\n    {\n      \"name\": \"address\",\n      \"type\": \"address\",\n      \"optional\": false,\n      \"displayName\": \"Address\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\"\n  ],\n  \"estimatedProcessingTime\": 7,\n  \"maxAmount\": 50000,\n  \"minAmount\": 1\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Check
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Check",
  "isSource": false,
  "isDestination": true,
  "fields": [
    [
      "name": "payToTheOrderOf",
      "type": "text",
      "optional": false,
      "displayName": "Pay To The Order Of"
    ],
    [
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    ],
    [
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    ],
    [
      "name": "address",
      "type": "address",
      "optional": false,
      "displayName": "Address"
    ]
  ],
  "supportedCurrencies": ["USD"],
  "estimatedProcessingTime": 7,
  "maxAmount": 50000,
  "minAmount": 1
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
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()
```

### Wire

**Request**

```json
{
  "name": "Wire",
  "isSource": false,
  "isDestination": true,
  "fields": [
    {
      "name": "bankName",
      "type": "text",
      "optional": false,
      "displayName": "Bank Name"
    },
    {
      "name": "recipientName",
      "type": "text",
      "optional": false,
      "displayName": "Recipient Name"
    },
    {
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    },
    {
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    }
  ],
  "supportedCurrencies": [
    "USD",
    "EUR"
  ],
  "estimatedProcessingTime": 0,
  "maxAmount": 100000,
  "minAmount": 1
}
```

**Response**

```json
{
  "id": "cpms_4794d597-70dc-4fec-b6ec-c5988e759769",
  "name": "Wire",
  "isSource": false,
  "isDestination": true,
  "supportedCurrencies": [
    "USD",
    "EUR"
  ],
  "fields": [
    {
      "name": "bankName",
      "type": "text",
      "optional": false,
      "displayName": "Bank Name"
    },
    {
      "name": "recipientName",
      "type": "text",
      "optional": false,
      "displayName": "Recipient Name"
    },
    {
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    },
    {
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    }
  ],
  "estimatedProcessingTime": 0,
  "createdAt": "2021-01-01T00:00:00Z",
  "updatedAt": "2021-01-01T00:00:00Z",
  "maxAmount": 100000,
  "minAmount": 1
}
```

**SDK Code**

```python Wire
import requests

url = "https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41"

payload = {
    "name": "Wire",
    "isSource": False,
    "isDestination": True,
    "fields": [
        {
            "name": "bankName",
            "type": "text",
            "optional": False,
            "displayName": "Bank Name"
        },
        {
            "name": "recipientName",
            "type": "text",
            "optional": False,
            "displayName": "Recipient Name"
        },
        {
            "name": "accountNumber",
            "type": "usBankAccountNumber",
            "optional": False,
            "displayName": "Account Number",
            "useAsAccountNumber": True
        },
        {
            "name": "routingNumber",
            "type": "usBankRoutingNumber",
            "optional": False,
            "displayName": "Routing Number"
        }
    ],
    "supportedCurrencies": ["USD", "EUR"],
    "estimatedProcessingTime": 0,
    "maxAmount": 100000,
    "minAmount": 1
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```typescript Wire
import { MercoaClient } from "@mercoa/javascript";

const client = new MercoaClient({ token: "YOUR_TOKEN" });
await client.customPaymentMethodSchema.update("cpms_14f78dcd-4614-426e-a37a-7af262431d41", {
    name: "Wire",
    isSource: false,
    isDestination: true,
    supportedCurrencies: ["USD", "EUR"],
    fields: [{
            name: "bankName",
            displayName: "Bank Name",
            type: "text",
            optional: false
        }, {
            name: "recipientName",
            displayName: "Recipient Name",
            type: "text",
            optional: false
        }, {
            name: "accountNumber",
            displayName: "Account Number",
            type: "usBankAccountNumber",
            optional: false,
            useAsAccountNumber: true
        }, {
            name: "routingNumber",
            displayName: "Routing Number",
            type: "usBankRoutingNumber",
            optional: false
        }],
    estimatedProcessingTime: 0,
    maxAmount: 100000,
    minAmount: 1
});

```

```go Wire
package main

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

func main() {

	url := "https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41"

	payload := strings.NewReader("{\n  \"name\": \"Wire\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"bankName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Bank Name\"\n    },\n    {\n      \"name\": \"recipientName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Recipient Name\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\",\n    \"EUR\"\n  ],\n  \"estimatedProcessingTime\": 0,\n  \"maxAmount\": 100000,\n  \"minAmount\": 1\n}")

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

	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 Wire
require 'uri'
require 'net/http'

url = URI("https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Wire\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"bankName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Bank Name\"\n    },\n    {\n      \"name\": \"recipientName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Recipient Name\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\",\n    \"EUR\"\n  ],\n  \"estimatedProcessingTime\": 0,\n  \"maxAmount\": 100000,\n  \"minAmount\": 1\n}"

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

```java Wire
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Wire\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"bankName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Bank Name\"\n    },\n    {\n      \"name\": \"recipientName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Recipient Name\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\",\n    \"EUR\"\n  ],\n  \"estimatedProcessingTime\": 0,\n  \"maxAmount\": 100000,\n  \"minAmount\": 1\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41', [
  'body' => '{
  "name": "Wire",
  "isSource": false,
  "isDestination": true,
  "fields": [
    {
      "name": "bankName",
      "type": "text",
      "optional": false,
      "displayName": "Bank Name"
    },
    {
      "name": "recipientName",
      "type": "text",
      "optional": false,
      "displayName": "Recipient Name"
    },
    {
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    },
    {
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    }
  ],
  "supportedCurrencies": [
    "USD",
    "EUR"
  ],
  "estimatedProcessingTime": 0,
  "maxAmount": 100000,
  "minAmount": 1
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp Wire
using RestSharp;

var client = new RestClient("https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Wire\",\n  \"isSource\": false,\n  \"isDestination\": true,\n  \"fields\": [\n    {\n      \"name\": \"bankName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Bank Name\"\n    },\n    {\n      \"name\": \"recipientName\",\n      \"type\": \"text\",\n      \"optional\": false,\n      \"displayName\": \"Recipient Name\"\n    },\n    {\n      \"name\": \"accountNumber\",\n      \"type\": \"usBankAccountNumber\",\n      \"optional\": false,\n      \"displayName\": \"Account Number\",\n      \"useAsAccountNumber\": true\n    },\n    {\n      \"name\": \"routingNumber\",\n      \"type\": \"usBankRoutingNumber\",\n      \"optional\": false,\n      \"displayName\": \"Routing Number\"\n    }\n  ],\n  \"supportedCurrencies\": [\n    \"USD\",\n    \"EUR\"\n  ],\n  \"estimatedProcessingTime\": 0,\n  \"maxAmount\": 100000,\n  \"minAmount\": 1\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Wire
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Wire",
  "isSource": false,
  "isDestination": true,
  "fields": [
    [
      "name": "bankName",
      "type": "text",
      "optional": false,
      "displayName": "Bank Name"
    ],
    [
      "name": "recipientName",
      "type": "text",
      "optional": false,
      "displayName": "Recipient Name"
    ],
    [
      "name": "accountNumber",
      "type": "usBankAccountNumber",
      "optional": false,
      "displayName": "Account Number",
      "useAsAccountNumber": true
    ],
    [
      "name": "routingNumber",
      "type": "usBankRoutingNumber",
      "optional": false,
      "displayName": "Routing Number"
    ]
  ],
  "supportedCurrencies": ["USD", "EUR"],
  "estimatedProcessingTime": 0,
  "maxAmount": 100000,
  "minAmount": 1
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.mercoa.com/paymentMethod/schema/cpms_14f78dcd-4614-426e-a37a-7af262431d41")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
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()
```