## Afriex SDK

### TypeScript

```typescript
const response = await afriex.paymentMethods.list({
  page: 1,
  limit: 20,
});
```

```curl
curl --request GET \
  --url 'https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending' \
  --header 'x-api-key: <api-key>'
```

```python
import requests

url = "https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending"

headers = {"x-api-key": "<api-key>"}

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

print(response.text)
```

```javascript
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
```

```php
<?php

$curl = curl_init();

curl_setopt_array($curl, [\
  CURLOPT_URL => "https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending",\\
  CURLOPT_RETURNTRANSFER => true,\
  CURLOPT_ENCODING => "",\
  CURLOPT_MAXREDIRS => 10,\
  CURLOPT_TIMEOUT => 30,\
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\
  CURLOPT_CUSTOMREQUEST => "GET",\
  CURLOPT_HTTPHEADER => [\
    "x-api-key: <api-key>"\
  ],\\
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
?>
```

```go
package main

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

func main() {

url := "https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending"

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

req.Header.Add("x-api-key", "<api-key>")

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

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

fmt.Println(string(body))
}
```

```java
HttpResponse<String> response = Unirest.get("https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending")
  .header("x-api-key", "<api-key>")
  .asString();
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://sandbox.api.afriex.com/api/v1/payment-method?limit=10&capabilities=WITHDRAW&status=active%2Cpending")

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

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'

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

### Response

```json
{
  "data": [
    {
      "paymentMethodId": "6936b8774f987b2994865b73",
      "channel": "BANK_ACCOUNT",
      "customerId": "6922e4520a53e858ab42efa8",
      "institution": {
        "institutionCode": "000013",
        "institutionName": "GTBank"
      },
      "accountName": "John Doe",
      "accountNumber": "1234567890",
      "countryCode": "NG"
    },
    {
      "paymentMethodId": "6936b8e54f987b2994865b8b",
      "channel": "BANK_ACCOUNT",
      "customerId": "6928515c6befd180bc451622",
      "institution": {
        "institutionCode": "000017",
        "institutionName": "WEMA BANK"
      },
      "accountName": "Test Account",
      "accountNumber": "1213131313",
      "countryCode": "NG"
    }
  ],
  "total": 1006,
  "page": 0
}
```

### Authorizations

x-api-key

- **Type:** string  
- **Location:** header  
- **Required:**

Static business API key issued from the dashboard. A business can provision multiple API keys, each scoped to a configurable set of permissions (e.g. read transactions, create deposits, etc). Permissions are chosen per key at creation time in the dashboard and may be revoked by deleting the key. Requests made with a key that does not include the permission required by the target endpoint will be rejected with a `403 Forbidden` response; an unrecognized, malformed or revoked key returns `401 Unauthorized`. Manage your keys and their permissions under Developer → API keys in the dashboard.

### Headers

**x-api-signature**

- **Type:** string  
- **Description:** Signature of the request payload, used for request authentication where payload signing is enabled for your business.

**x-api-version**

- **Type:** string  
- **Description:** API version in ISO 8601 format (e.g. 2025-12-28). Defaults to latest stable.

### Query Parameters

- **page**: integer (default: 0)
  - Page number for pagination (starting from 0)
  - Required range: `x >= 0`  
- **limit**: integer (default: 10)
  - Number of items per page  
  - Required range: `1 <= x <= 100`  
- **channel**: enum<string>[]
  - Filter by one or more payment channels. Use a comma-separated list for multiple values (e.g. `?channel=BANK_ACCOUNT,MOBILE_MONEY`).  
  - Available options:
    - `BANK_ACCOUNT`,
    - `MOBILE_MONEY`,
    - `INTERAC`,
    - `UPI`,
    - `WE_CHAT`,
    - `VIRTUAL_BANK_ACCOUNT`,
    - `RFP`,
    - `SWIFT`
- **currencies**: string[]
  - Filter by one or more 3-letter ISO 4217 currency codes. Use a comma-separated list for multiple values (e.g., `?currencies=USD,NGN`).  
- **capabilities**: enum<string>[]
  - Filter by payment method capability. Only `WITHDRAW` is currently supported. Defaults to `WITHDRAW` when omitted.  
  - Available options: `WITHDRAW`
- **status**: enum<string>[]
  - Filter by one or more payment method statuses. Defaults to `active,pending` when omitted.  
  - Available options:
    - `active`,
    - `pending`

### Response

**Success Response**
- **Code**: 200
- **Content:** application/json
  - List of payment methods retrieved successfully.

#### data
- **Type:** object[]

#### page
- **Type:** integer
- Current page number

#### total
- **Type:** integer
- Total number of payment methods matching the query
