---
title: "Retrieve contact channels"
method: GET
path: "/contacts/{contactId}/capabilities"
tags: ["contacts"]
---

# Retrieve contact channels

`GET /contacts/{contactId}/capabilities`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/hevn-inc/apis/hevn-api/docs/contacts/:contactId/capabilities/get.ts> (a function with typed inputs; its response is checked against the schema)

Return currently available payment methods, limits, fees and blockers. Capabilities are a point-in-time eligibility read, not a transfer quote.

## Path parameters

- `contactId` string, required

## Query parameters

- `amount` string, nullable

## Headers

- `X-Hevn-Account` string, nullable: The client account to act for, as a `cl_…` id. Omit it to act as yourself.

## Response `200`

Successful Response

- ContactCapabilitiesResponse
  - `contactId` string, required: Saved contact associated with these capabilities.
  - `available` boolean, required: Whether at least one payout option is currently available.
  - `options` ContactCapabilityOption[]: Available transfer options.
    - `bankId` string, nullable: Receiving-account route identifier, when applicable.
    - `method` string, required: Payment method used to reach the contact.
    - `currency` string, required: Currency delivered to the contact.
    - `available` boolean, required: Whether this option is currently available.
    - `minAmount` string, required: Minimum supported source amount.
    - `maxAmount` string, nullable: Maximum supported source amount.
    - `feeBps` integer: Variable fee in basis points; 100 basis points equals 1 percent.
    - `fixedFee` string, nullable: Fixed fee component, when charged.
    - `purposeRequired` boolean: Whether a transfer purpose must be supplied.
    - `memoRequired` boolean: Whether a payment reference or memo must be supplied.
    - `documentsRequired` boolean: Whether supporting documents must be supplied.
    - `blockers` ContactBlockerView[]: Reasons this option is unavailable.
      - `code` 'contact_details_missing' | 'contact_address_incomplete' | 'contact_country_restricted' | 'contact_holder_type_unsupported' | 'account_type_unsupported' | 'routing_unresolved' | 'receiving_account_unavailable' | 'payment_method_unavailable' | 'currency_mismatch' | 'transfer_feature_disabled' | 'transfer_feature_on_request' | 'channel_not_configured' | 'sender_residency_ineligible' | 'sender_category_restricted' | 'endorsement_required' | 'channel_unavailable' | 'amount_below_minimum' | 'amount_above_maximum', required
      - `message` string, required: Human-readable explanation safe to show to an end user.
      - `field` string, nullable: Contact field associated with this blocker.
  - `blockers` ContactBlockerView[]: Contact-wide blockers.
    - `code` 'contact_details_missing' | 'contact_address_incomplete' | 'contact_country_restricted' | 'contact_holder_type_unsupported' | 'account_type_unsupported' | 'routing_unresolved' | 'receiving_account_unavailable' | 'payment_method_unavailable' | 'currency_mismatch' | 'transfer_feature_disabled' | 'transfer_feature_on_request' | 'channel_not_configured' | 'sender_residency_ineligible' | 'sender_category_restricted' | 'endorsement_required' | 'channel_unavailable' | 'amount_below_minimum' | 'amount_above_maximum', required
    - `message` string, required: Human-readable explanation safe to show to an end user.
    - `field` string, nullable: Contact field associated with this blocker.

## Other responses

- `422`: Request validation failed

## Changes

- **2026-11-12** `299a3aa6f521`: 1 warning, 2 info
  - added the new `verification_not_applicable` enum value to the `error/code` response property for the response status `422`
  - removed the `phone_required` enum value from the `error/code` response property for the response status `422`
  - removed the `rail_requirements_unmet` enum value from the `error/code` response property for the response status `422`
- **2026-10-23** `a02795de2d2b`: 9 warning, 5 info
  - deleted the `header` request parameter `x-api-key`
  - added the new `client_already_linked` enum value to the `error/code` response property for the response status `422`
  - added the new `kyb_documents_processing` enum value to the `error/code` response property for the response status `422`
  - added the new `link_code_expired` enum value to the `error/code` response property for the response status `422`
  - …10 more
- **2026-10-20** `19eb00e9f258`: 1 info
  - removed the `phone_in_use` enum value from the `error/code` response property for the response status `422`
- **2026-10-20** `bd6c9d69540e`: 1 warning
  - added the new `phone_in_use` enum value to the `error/code` response property for the response status `422`
- **2026-10-20** `19eb00e9f258`: 1 info
  - removed the `document_fields_missing` enum value from the `error/code` response property for the response status `422`

[Operation history](https://skmtc.dev/hevn-inc/apis/hevn-api/changes/contacts/:contactId/capabilities/get.md)

---

[API](https://skmtc.dev/hevn-inc/apis/hevn-api.md) - [All operations](https://skmtc.dev/hevn-inc/apis/hevn-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hevn-inc/apis/hevn-api/revisions/299a3aa6f521?raw)
