# Get Payment Options

Retrieve available payment options for a given fiat amount and currency. The API converts the amount to USD internally and returns payment options based on the USD value.

**Method:** `GET`\
**Endpoint:** `https://malum.co/api/v3/reseller/payment_options`\
**Response format:** JSON

***

### Required query parameters

| Parameter       | Type   | Example | Notes                                            |
| --------------- | ------ | ------- | ------------------------------------------------ |
| `fiat_amount`   | number | `49.99` | Must be `> 0` and `<= 10000`                     |
| `fiat_currency` | string | `EUR`   | Must be exactly 3 letters, uppercased internally |

***

### Validation rules

* **Only GET parameters are processed.**
* `fiat_currency` must be **exactly 3 letters** (for example `EUR`, `USD`).
* `fiat_amount` must be greater than 0 and not greater than 10000.
* Fiat currency must be supported by the reseller system.
* If `fiat_currency` is not `USD`, an exchange rate is fetched and the amount is converted to USD.
* Payment options are calculated using the USD base amount.

***

### Example request

```http
GET https://malum.co/api/v3/reseller/payment_options?fiat_amount=49.99&fiat_currency=EUR
```

***

### Success response

```json
{
   "status":"success",
   "message":"Payment options retrieved successfully.",
   "data":{
      "fiat_amount":20,
      "fiat_currency":"EUR",
      "base_in_usd":"23.69",
      "payment_options":[
         {
            "name":"EasyPay",
            "show_name":"EasyPay",
            "alt":"Credit Card, Debit Card (NO KYC)",
            "processor_fee_fixed":"0.9",
            "processor_fee_percent":"9",
            "processor_min_fee":"0.99"
         },
         {
            "name":"EasyPayEUR",
            "show_name":"EasyPay (EUR)",
            "alt":"Credit Card, Debit Card (No KYC)",
            "processor_fee_fixed":"0.9",
            "processor_fee_percent":"9",
            "processor_min_fee":"0.99"
         },
         ....
      ]
   },
   "timestamp":1770079387
}
```

**Field notes**

* `base_in_usd` is the computed USD amount used for option selection.
* `payment_options` is returned as an array (the backend converts internal objects into arrays before responding).

***

### Error responses

Errors return JSON with:

* `status`: `failed`
* `message`: a human-readable error message
* `data`: usually an empty object/array

Common messages include:

* `Invalid fiat currency.`
* `Invalid fiat amount.`
* `The requested fiat currency is not supported.`
* `Could not retrieve exchange rate for the requested fiat currency.`
* `An error occurred, please try again later.`
