List programs
curl --request GET \
--url https://api.fyatu.com/api/v3.20/programs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fyatu.com/api/v3.20/programs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fyatu.com/api/v3.20/programs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fyatu.com/api/v3.20/programs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fyatu.com/api/v3.20/programs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fyatu.com/api/v3.20/programs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fyatu.com/api/v3.20/programs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"status": 200,
"message": "Programs retrieved",
"data": [
{
"programId": "prg_01HXYZ9876ABCDEF0000",
"name": "Fyatu VISA USD",
"description": "Main USD virtual card program",
"cardType": "VIRTUAL",
"cardBrand": "VISA",
"currency": "USD",
"status": "ACTIVE",
"environment": "LIVE",
"limits": {
"spendingLimitPerCard": {
"cents": 500000,
"displayValue": "5000.00"
},
"monthlySpendingLimit": {
"cents": 1000000,
"displayValue": "10000.00"
},
"maxCardLoad": {
"cents": 100000,
"displayValue": "1000.00"
},
"maxCardUnload": {
"cents": 100000,
"displayValue": "1000.00"
}
},
"lowBalanceThreshold": {
"cents": 10000,
"displayValue": "100.00"
},
"stats": {
"totalCards": 142,
"totalCardholders": 38,
"totalTransactions": 1204,
"totalSpend": {
"cents": 842500,
"displayValue": "8425.00"
}
},
"activatedAt": "2026-01-15T10:00:00Z",
"pausedAt": null,
"closedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-05-22T14:30:00Z"
}
],
"pagination": {
"total": 1,
"limit": 20,
"offset": 0,
"hasMore": false
},
"meta": {
"requestId": "req_a1b2c3d4e5f6a7b8c9d0e1f2",
"platform": "Fyatu CaaS",
"timestamp": "2026-05-22T15:00:00Z"
}
}List Programs
List the card programs associated with your business. GET /programs. Requires programs:read scope.
GET
/
programs
List programs
curl --request GET \
--url https://api.fyatu.com/api/v3.20/programs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fyatu.com/api/v3.20/programs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fyatu.com/api/v3.20/programs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fyatu.com/api/v3.20/programs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fyatu.com/api/v3.20/programs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fyatu.com/api/v3.20/programs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fyatu.com/api/v3.20/programs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"status": 200,
"message": "Programs retrieved",
"data": [
{
"programId": "prg_01HXYZ9876ABCDEF0000",
"name": "Fyatu VISA USD",
"description": "Main USD virtual card program",
"cardType": "VIRTUAL",
"cardBrand": "VISA",
"currency": "USD",
"status": "ACTIVE",
"environment": "LIVE",
"limits": {
"spendingLimitPerCard": {
"cents": 500000,
"displayValue": "5000.00"
},
"monthlySpendingLimit": {
"cents": 1000000,
"displayValue": "10000.00"
},
"maxCardLoad": {
"cents": 100000,
"displayValue": "1000.00"
},
"maxCardUnload": {
"cents": 100000,
"displayValue": "1000.00"
}
},
"lowBalanceThreshold": {
"cents": 10000,
"displayValue": "100.00"
},
"stats": {
"totalCards": 142,
"totalCardholders": 38,
"totalTransactions": 1204,
"totalSpend": {
"cents": 842500,
"displayValue": "8425.00"
}
},
"activatedAt": "2026-01-15T10:00:00Z",
"pausedAt": null,
"closedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-05-22T14:30:00Z"
}
],
"pagination": {
"total": 1,
"limit": 20,
"offset": 0,
"hasMore": false
},
"meta": {
"requestId": "req_a1b2c3d4e5f6a7b8c9d0e1f2",
"platform": "Fyatu CaaS",
"timestamp": "2026-05-22T15:00:00Z"
}
}Overview
Returns all card programs associated with your business in the current environment. A Card Program defines the contractual terms and limits negotiated between your business and FYATU — including supported card brand, currency, spending limits, and balance thresholds. Programs are created and configured by the FYATU team. This endpoint lets you read your program configuration via the API.Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Results per page (max 100) |
offset | integer | 0 | Number of records to skip |
status | string | — | Filter by status: ACTIVE, PAUSED, CLOSED |
Example
curl https://api.fyatu.com/api/v3.20/programs \
-H "Authorization: Bearer $FYATU_API_KEY"
const resp = await fetch('https://api.fyatu.com/api/v3.20/programs', {
headers: { 'Authorization': `Bearer ${process.env.FYATU_API_KEY}` }
});
const body = await resp.json();
for (const prog of body.data) {
console.log(prog.programId, prog.name, prog.status);
console.log('Cards:', prog.stats.totalCards);
}
import os, requests
resp = requests.get(
'https://api.fyatu.com/api/v3.20/programs',
headers={'Authorization': f'Bearer {os.environ["FYATU_API_KEY"]}'}
)
body = resp.json()
for prog in body['data']:
print(prog['programId'], prog['name'], prog['status'])
print('Cards:', prog['stats']['totalCards'])
Success Response (200)
{
"success": true,
"status": 200,
"message": "Programs retrieved",
"data": [
{
"programId": "prg_01HXYZ9876ABCDEF0000",
"name": "Fyatu VISA USD",
"description": "Main USD virtual card program",
"cardType": "VIRTUAL",
"cardBrand": "VISA",
"currency": "USD",
"status": "ACTIVE",
"environment": "LIVE",
"limits": {
"spendingLimitPerCard": {
"cents": 500000,
"displayValue": "5000.00"
},
"monthlySpendingLimit": {
"cents": 1000000,
"displayValue": "10000.00"
},
"maxCardLoad": {
"cents": 100000,
"displayValue": "1000.00"
},
"maxCardUnload": {
"cents": 100000,
"displayValue": "1000.00"
}
},
"lowBalanceThreshold": {
"cents": 10000,
"displayValue": "100.00"
},
"stats": {
"totalCards": 142,
"totalCardholders": 38,
"totalTransactions": 1204,
"totalSpend": {
"cents": 842500,
"displayValue": "8425.00"
}
},
"kycMode": "MANAGED",
"activatedAt": "2026-01-15T10:00:00Z",
"pausedAt": null,
"closedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-05-22T14:30:00Z"
}
],
"pagination": {
"total": 1,
"limit": 20,
"offset": 0,
"hasMore": false
},
"meta": {
"requestId": "req_01HXY123456ABCDEF",
"platform": "Fyatu CaaS",
"timestamp": "2026-05-22T15:00:00Z"
}
}
Field Reference
| Field | Description |
|---|---|
programId | Unique program identifier (prefix prg_) |
cardType | Always VIRTUAL |
cardBrand | VISA or MASTERCARD |
currency | ISO 4217 currency code for cards issued under this program |
status | ACTIVE, PAUSED, or CLOSED |
limits.spendingLimitPerCard | Maximum lifetime spend allowed per card |
limits.monthlySpendingLimit | Maximum spend across all cards in a calendar month |
limits.maxCardLoad | Maximum single load amount per card (null = unlimited) |
limits.maxCardUnload | Maximum single unload amount per card (null = unlimited) |
lowBalanceThreshold | Program ledger balance that triggers a PROGRAM_BALANCE_LOW webhook event |
stats.totalCards | Total number of cards ever issued under this program |
stats.totalCardholders | Total number of unique cardholders |
stats.totalTransactions | Total number of transactions processed |
stats.totalSpend | Cumulative spend across all cards |
kycMode | KYC verification mode for cardholders: MANAGED (Fyatu-managed async KYC), SHARED (your pre-verified docs, instant APPROVED), or MINIMAL (no KYC, instant WAIVED) |
activatedAt | When the program was activated; null if not yet active |
pausedAt | When the program was last paused; null if never paused |
closedAt | When the program was closed; null if not closed |
Most businesses have one active program per environment. Multiple programs may exist if your business has separate agreements for different card brands or currencies.
Error Codes
| Code | HTTP | Cause |
|---|---|---|
INSUFFICIENT_SCOPE | 403 | Key lacks programs:read scope |
Authorizations
API key from the FYATU CaaS portal. Pass as Authorization: Bearer <key>.
Query Parameters
Required range:
1 <= x <= 100Required range:
x >= 0Filter by status
Available options:
ACTIVE, PAUSED, CLOSED ⌘I

