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

# List member ICHRA payment accounts

GET https://api.vitablehealth.com/v1/members/{member_id}/ichra-payment-accounts

Lists a member's CHOICE payment accounts, one for each active employment visible to the caller that has an account. Each row carries the deposit account number and routing number, the current balance, the most recent transaction amount and its date, and whether a debit card has been provisioned. Card credentials are never included; they are revealed only through a card session. A member not visible to the caller returns a 404.

Reference: https://developer.vitablehealth.com/api/members/list-member-ichra-payment-accounts

## Authentication

- `Authorization` header (bearer token, required) — API Key or Access Token authentication using Bearer token in Authorization header. API keys use the vit_apk_ prefix, access tokens use the vit_at_ prefix.

## Servers

- `https://api.vitablehealth.com` (Production, default)
- `https://api.uat.vitablehealth.com` (UAT)

## Request

### Path parameters

- `member_id` (string, required) — Unique member identifier (mbr_*)

### Headers

- `X-Vitable-Organization` (string, optional) — Organization to act as for this request (e.g. `org_SGVsbG8gV29ybGQ`). Optional when your credentials reach a single organization. Required when they reach several — omitting it then returns 400 `organization_required`. A malformed value returns 400 `invalid_organization_header`, and naming an organization you do not have access to returns 403 `organization_access_denied`.

## Response

### 200

- `data` (list of MemberIchraPaymentAccount, required)

## Errors

### 400 Bad Request Error

Bad Request - Invalid input or validation error

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 401 Unauthorized Error

Unauthorized - Invalid or missing API key

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 403 Forbidden Error

Forbidden - Insufficient permissions for this resource

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 404 Not Found Error

Resource not found.

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 409 Conflict Error

Conflict - Resource already exists or conflicts with current state

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 429 Too Many Requests Error

Too Many Requests - Rate limit exceeded

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 500 Internal Server Error

Internal Server Error - An unexpected error occurred

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

### 502 Bad Gateway Error

Bad Gateway - External service error

- `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred
- `message` (string, required) — Human-readable error message
- `error` (string, required) — Error message (same as message, for backwards compatibility)
- `trace_id` (string, required) — Unique trace ID for debugging and support requests
- `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling

## Types

### MemberIchraPaymentAccount

- `id` (string, required) — The payment account identifier with 'pyac_' prefix
- `employer_id` (string, required, nullable) — The employer's identifier with 'empr_' prefix
- `employer_name` (string, required, nullable) — Name of the employer this payment account belongs to
- `account_number` (string, required, nullable) — The member's deposit account number
- `routing_number` (string, required, nullable) — The member's deposit account routing number
- `card_provisioned_in` (boolean, required) — Whether a debit card has been provisioned, and so whether a card reveal can be requested
- `current_balance_in_cents` (integer, required, nullable) — Current balance held for the member, in cents
- `latest_payment_in_cents` (integer, required, nullable) — Amount of the most recent transaction on the member's account in the last 180 days, in cents
- `last_payment_date` (date, required, nullable) — Date of the most recent transaction on the member's account in the last 180 days (YYYY-MM-DD)
- `as_of` (datetime, required) — When these values were read from the payment provider

## Examples

**Response**

```json
{
  "data": [
    {
      "id": "pyac_AAAAAAAAAAAAAAAAAAAAAQ",
      "employer_id": "empr_AAAAAAAAAAAAAAAAAAAAAQ",
      "employer_name": "Acme Corp",
      "account_number": "76650000001821",
      "routing_number": "183981212",
      "card_provisioned_in": true,
      "current_balance_in_cents": 2500,
      "latest_payment_in_cents": 51100,
      "last_payment_date": "2026-05-14",
      "as_of": "2026-05-18T14:03:00Z"
    }
  ]
}
```

**SDK Code**

```python Member ICHRA Payment Accounts
import requests

url = "https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts"

headers = {"Authorization": "Bearer <apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Member ICHRA Payment Accounts
const url = 'https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts';
const options = {method: 'GET', headers: {Authorization: 'Bearer <apiKey>'}};

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

```go Member ICHRA Payment Accounts
package main

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

func main() {

	url := "https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <apiKey>")

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

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

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

}
```

```ruby Member ICHRA Payment Accounts
require 'uri'
require 'net/http'

url = URI("https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <apiKey>'

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

```java Member ICHRA Payment Accounts
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts")
  .header("Authorization", "Bearer <apiKey>")
  .asString();
```

```php Member ICHRA Payment Accounts
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts', [
  'headers' => [
    'Authorization' => 'Bearer <apiKey>',
  ],
]);

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

```csharp Member ICHRA Payment Accounts
using RestSharp;

var client = new RestClient("https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <apiKey>");
IRestResponse response = client.Execute(request);
```

```swift Member ICHRA Payment Accounts
import Foundation

let headers = ["Authorization": "Bearer <apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.vitablehealth.com/v1/members/mbr_abc123def456/ichra-payment-accounts")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

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()
```