# Delete payment method

Delete a catalog payment method.

Permanently deletes the catalog instrument. Default instruments and instruments with linked transactions cannot be deleted. Bank-connection rows cannot be deleted here. Counterparties and issued invoices are kept: this instrument is unlinked from them rather than deleted or moved to Default System. Shared associations for this instrument are removed. Existing matches are unchanged.


- HTTP method: `DELETE`
- Path: `/api/v1/payment-methods/:code`
- URL: `https://api.invunion.com/api/v1/payment-methods/:code`
- Required scope: `payment_methods:write`
- HTML docs: https://www.invunion.com/knowledge-base/api/delete-payment-method/
- Markdown docs: https://www.invunion.com/knowledge-base/api/delete-payment-method.md

## Path parameters

| Name | Type | Required | Description | Allowed values | Example |
| --- | --- | --- | --- | --- | --- |
| `code` | string, max 50 | required | Payment method code (`code`). |  | `PM-001` |



## Errors

| Error | HTTP code | Description |
| --- | --- | --- |
| `Missing Bearer token` | `401` | The Authorization header is missing or is not a Bearer token. |
| `Invalid or revoked API key` | `401` | The API key is unknown, malformed, expired, or has been revoked. |
| `API key is missing scope payment_methods:write` | `403` | The key does not include payment_methods:write. A write scope does not imply the matching read scope. |
| `Too many requests, please try again later` | `429` | Wait and retry. The Retry-After header is the number of seconds to wait. |
| `Payment method not found` | `404` | No catalog payment method with this code exists in the authenticated tenant. |
| `Enable Banking accounts are managed from Bank connections, not from payment methods.` | `403` | The row is a bank-connection account, not a catalog instrument. |
| `Cannot delete a default payment method. Reassign it first.` | `403` | The instrument is the counterparty Default and is not deletable. |
| `Cannot delete payment method with linked transactions. Unlink them first.` | `409` | Transactions still point at this instrument. |
| `Internal server error` | `500` | Unexpected server error. The JSON body includes correlationId. Retry with backoff. |

## Request (curl)

```bash
curl --request DELETE \
  --url https://api.invunion.com/api/v1/payment-methods/PM-001 \
  --header 'accept: application/json' \
  --header 'authorization: Bearer uk_live_YOUR_API_KEY'
```

## Request (Python)

```python
import requests

url = "https://api.invunion.com/api/v1/payment-methods/PM-001"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer uk_live_YOUR_API_KEY",
}
response = requests.delete(url, headers=headers)
print(response.json())
```

## Request (Ruby)

```ruby
require 'net/http'
require 'json'
require 'uri'

uri = URI("https://api.invunion.com/api/v1/payment-methods/PM-001")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri)
request['Accept'] = 'application/json'
request['Authorization'] = 'Bearer uk_live_YOUR_API_KEY'
response = http.request(request)
puts response.body
```

## Request (JavaScript)

```javascript
const response = await fetch("https://api.invunion.com/api/v1/payment-methods/PM-001", {
  method: "DELETE",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer uk_live_YOUR_API_KEY"
  },
});
const data = await response.json();
```

## Request (Go)

```go
package main

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

func main() {
	req, err := http.NewRequest("DELETE", "https://api.invunion.com/api/v1/payment-methods/PM-001", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer uk_live_YOUR_API_KEY")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
```

## Request (Node)

```javascript
const response = await fetch("https://api.invunion.com/api/v1/payment-methods/PM-001", {
  method: "DELETE",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer uk_live_YOUR_API_KEY"
  },
});
console.log(await response.json());
```

## Success (200)

```json
{
  "success": true,
  "message": "Payment method deleted successfully"
}
```
