---
title: "Find donor payment methods"
description: "List all payment methods for a donor."
canonical: https://www.charitips.com/docs/api-reference/find-donor-payment-methods
---

# Find donor payment methods

`GET /v1/donors/{donorId}/payment-methods`

List all payment methods for a donor. Requires B2C or Donor Platform entitlement.

**Authentication**: Bearer access token.

## Parameters

- `donorId` (string, required)

## Response 200

- `paymentMethodId` (string, required)
- `status` (PaymentMethodStatus, required) One of `ENABLED`, `FAILED`, `DISABLED`.
- `type` (PaymentMethodType, required) One of `PAYMENT_CARD`, `SEPA_DIRECT_DEBIT`, `BANK_TRANSFER`.
- `externalPaymentMethodId` (string)
- `accountId` (string, required)
- `createdAt` (string (date-time), required)
- `updatedAt` (string (date-time), required)
- `token` (string)
- `expiryDate` (string)
- `externalRecurringPayinRegistrationId` (string)

## Errors

- 401 `Unauthorized`: The access token is missing, expired or invalid. Create a new one with your client id and secret, send it as `Authorization: Bearer <accessToken>`, then retry once. Sandbox tokens only work on api.sandbox.charitips.com. See https://www.charitips.com/docs/get-started/authentication.md.
- 402 `Plan upgrade required`: Your plan does not include this feature. Upgrade the plan from the dashboard, then retry. See https://www.charitips.com/docs/overview/plans.md.
- 403 `Account closed`: The account behind these credentials is closed: no token is issued and every call is refused, reads included. Contact Charitips to reopen it. See https://www.charitips.com/docs/api-reference/troubleshooting.md#calls-answer-403-account-not-active-account-not-validated-or-account-closed.

## Example

```bash
curl -X GET https://api.sandbox.charitips.com/v1/donors/<donorId>/payment-methods \
  -H "Authorization: Bearer $CHARITIPS_TOKEN"
```

```javascript
const response = await fetch('https://api.sandbox.charitips.com/v1/donors/<donorId>/payment-methods', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.CHARITIPS_TOKEN}`,
  },
});
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
const data = await response.json();
```

```python
import os, requests

response = requests.get(
    "https://api.sandbox.charitips.com/v1/donors/<donorId>/payment-methods",
    headers={"Authorization": f"Bearer {os.environ['CHARITIPS_TOKEN']}"},
)
response.raise_for_status()
data = response.json()
```

## Response example (200, placeholder values)

```json
[
  {
    "paymentMethodId": "<paymentMethodId>",
    "status": "ENABLED",
    "type": "PAYMENT_CARD",
    "externalPaymentMethodId": "<externalPaymentMethodId>",
    "accountId": "<accountId>",
    "createdAt": "<createdAt>",
    "updatedAt": "<updatedAt>",
    "token": "<token>"
  }
]
```
