بنقرة واحدة
flutterwave-bulk-virtual-accounts
Orchestrate batch dedicated-account creation and assignment workflows.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Orchestrate batch dedicated-account creation and assignment workflows.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Collect funds through bank transfer with account validation and asynchronous confirmation.
Maintain reusable payout recipients and senders for clean transfer orchestration.
Integrate airtime, data, and utility payments with validation and reconciliation checks.
Handle direct card charges including PIN, OTP, and 3DS continuations in a deterministic flow.
Track and respond to dispute and chargeback cases with audit-ready evidence timelines.
Run mobile money collections with operator-aware routing and delayed status handling.
| name | flutterwave-bulk-virtual-accounts |
| description | Orchestrate batch dedicated-account creation and assignment workflows. |
Orchestrate batch dedicated-account creation and assignment workflows.
const FLW_V3_BASE_URL = process.env.FLW_V3_BASE_URL ?? "https://api.flutterwave.com/v3";
const FLW_V4_BASE_URL = process.env.FLW_V4_BASE_URL ?? "https://developersandbox-api.flutterwave.com";
const FLW_SECRET_KEY = process.env.FLW_SECRET_KEY;
type FlwResponse<T> = {
status: "success" | "error";
message: string;
data: T;
};
class FlutterwaveApiError extends Error {
constructor(
message: string,
public readonly statusCode: number,
public readonly payload?: unknown,
) {
super(message);
this.name = "FlutterwaveApiError";
}
}
function getBaseUrl(version: "v3" | "v4") {
return version === "v3" ? FLW_V3_BASE_URL : FLW_V4_BASE_URL;
}
async function flwRequest<T>(
version: "v3" | "v4",
path: string,
init: RequestInit = {},
): Promise<FlwResponse<T>> {
if (!FLW_SECRET_KEY) {
throw new Error("Missing FLW_SECRET_KEY");
}
const response = await fetch(`${getBaseUrl(version)}${path}`, {
...init,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${FLW_SECRET_KEY}`,
...(init.headers ?? {}),
},
});
const body = (await response.json()) as FlwResponse<T>;
if (!response.ok || body.status === "error") {
throw new FlutterwaveApiError(
body.message || "Flutterwave API request failed",
response.status,
body,
);
}
return body;
}
| Version | Method | Route / Operation | Use Case | Reference |
|---|---|---|---|---|
| v3 | POST | /bulk-virtual-account-numbers | Create bulk dedicated accounts | https://developer.flutterwave.com/docs/pay-with-bank-transfer |
| v4 | POST | /virtual-accounts | Create account (loop/batch job) | https://developer.flutterwave.com/reference/virtual_accounts_post |
| v4 | GET | /virtual-accounts | Audit batch outcomes | https://developer.flutterwave.com/reference/virtual_accounts_list |
| Market | Rail | Integration Notes |
|---|---|---|
| NG | Bulk VA issuance | Common for invoice or wallet products. |
| KE/GH | Regional rollout | Gate by capability flags before provisioning. |
| All | Async job control | Track per-record success/failure states. |
export async function runBulkVirtualAccountsExample() {
return flwRequest<unknown>("v4", "/virtual-accounts", {
method: "GET",
});
}
v4 is resource-centric in the public reference. Keep route maps and payload types versioned in code so agent-generated integrations remain accurate.