# Payment Methods

Retrieve supported payment methods for the specified transaction type as part of the configuration data required to build onboarding and transaction flows.
**Use Cases**:
- Populate payment method selectors for on-ramp and off-ramp journeys
- Determine which fiat currencies are available for each payment method
- Pre-configure transaction forms before requesting quotes or creating ramps
- Show only valid payment options for the customer's selected transaction direction

**Transaction Types**:
- `onramp` - Payment methods available for buying cryptocurrency with fiat
- `offramp` - Payment methods available for selling cryptocurrency to fiat

**Response Structure**:
Each payment method includes:
- `method`: Unique code used in API requests
- `name`: Human-readable payment method name
- `supportedFiats`: Fiat currencies supported by that payment method

Endpoint: GET /eapi/v0/payment-methods/{transactionType}
Version: 0 BETA
Security: HMACAuth

## Security:

  - `HMACAuth` (unknown)
    apiKey in header Authorization

## Path parameters:

  - `transactionType` (string, required)
    The transaction direction used to retrieve available payment methods.

**Values**:
- `onramp` - Buy cryptocurrency using fiat
- `offramp` - Sell cryptocurrency and receive fiat

## Response 200:

  - `200` (unknown)
    Successful response with supported payment methods for the selected transaction type.

## Response 200 fields (application/json):

  - `data` (array, required)
    Array of available payment method objects

  - `data.method` (string, required)
    Unique identifier code for the payment method. Use this value when specifying the payment method in other API calls.
    Example: payid-bank-transfer

  - `data.name` (string, required)
    Human-readable display name for the payment method.
    Example: PayID Bank Transfer

  - `data.supportedFiats` (array, required)
    Array of ISO 4217 fiat currency codes supported by this payment method.
    Example: ["AUD","USD","EUR"]

## Response 400:

  - `400` (unknown)
    Bad request due to invalid input.
**Common Causes**:
- Malformed JSON in request body
- Invalid data types
- Missing required fields
- Invalid request structure

## Response 400 fields (application/json):

  - `message` (string)
    Human-readable error message
    Example: Bad Request

  - `code` (integer)
    HTTP status code
    Example: 400

  - `traceId` (string)
    Unique identifier for this error instance. Use this when contacting support.
    Example: 2b6fc5d0-57e4-4b5a-9e3c-6cfbb6d8023f

## Response 401:

  - `401` (unknown)
    Authentication failed or missing credentials.
**Common Causes**:
- Missing Authorization header
- Invalid API key
- Expired or invalid HMAC signature
- Incorrect timestamp (must be within 5 minutes of server time)

## Response 401 fields (application/json):

  - `message` (string)
    Human-readable error message
    Example: Unauthenticated.

  - `code` (integer)
    HTTP status code
    Example: 401

  - `traceId` (string)
    Unique identifier for this error instance
    Example: 2b6fc5d0-57e4-4b5a-9e3c-6cfbb6d8023f

## Response 422:

  - `422` (unknown)
    Validation error - the transactionType path parameter is invalid.
**Common Causes**:
- Supplied value is not `onramp` or `offramp`
- Parameter is missing or empty

## Response 422 fields (application/json):

  - `status` (integer)
    HTTP status code
    Example: 422

  - `message` (string)
    Validation error message
    Example: Invalid transaction type. Must be one of onramp and offramp

  - `errors` (object)
    Map of field names to error messages.
    Example: {"transactionType":["Invalid transaction type. Must be one of onramp and offramp"]}

## Response 500:

  - `500` (unknown)
    Unexpected server error.
**Action**:
- Retry with exponential backoff (up to 3 attempts)
- If error persists, contact support with the traceId

**Note**: This is a temporary issue on our side, not a problem with your request.

## Response 500 fields (application/json):

  - `message` (string)
    Human-readable error message
    Example: Server Error

  - `code` (integer)
    HTTP status code
    Example: 500

  - `traceId` (string)
    Unique identifier for this error instance. **Important**: Include this when contacting support.
    Example: 2b6fc5d0-57e4-4b5a-9e3c-6cfbb6d8023f

## Response 200 examples:

  - `On-ramp payment methods` (unknown)
    Available payment methods for buying cryptocurrency

  - `Off-ramp payment methods` (unknown)
    Available payment methods for selling cryptocurrency

