curl -sS -X POST "$FLUIDE_BASE_URL/api/v1/payments/ecobank/account/Create" \
-H "Authorization: Bearer $FLUIDE_ACCESS_TOKEN" \
-H "X-Fluide-Api-Key: $FLUIDE_API_KEY" \
-H "X-Fluide-Client-Id: fluide-developer" \
-H "X-Workspace-Id: $FLUIDE_WORKSPACE_ID" \
-H "X-Acting-Company-Id: $FLUIDE_COMPANY_ID" \
-H "Content-Type: application/json" \
-d '{}'const baseUrl = process.env.FLUIDE_BASE_URL;
const response = await fetch(`${baseUrl}/api/v1/payments/ecobank/account/Create`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.FLUIDE_ACCESS_TOKEN}`,
'X-Fluide-Api-Key': process.env.FLUIDE_API_KEY,
'X-Fluide-Client-Id': 'fluide-developer',
'X-Workspace-Id': process.env.FLUIDE_WORKSPACE_ID,
'X-Acting-Company-Id': process.env.FLUIDE_COMPANY_ID,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());import os
import requests
base_url = os.environ["FLUIDE_BASE_URL"]
headers = {
"Authorization": f"Bearer {os.environ['FLUIDE_ACCESS_TOKEN']}",
"X-Fluide-Api-Key": os.environ["FLUIDE_API_KEY"],
"X-Fluide-Client-Id": "fluide-developer",
"X-Workspace-Id": os.environ["FLUIDE_WORKSPACE_ID"],
"X-Acting-Company-Id": os.environ["FLUIDE_COMPANY_ID"],
}
response = requests.post(
f"{base_url}/api/v1/payments/ecobank/account/Create",
headers=headers,
json={},
timeout=30,
)
response.raise_for_status()
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String baseUrl = System.getenv("FLUIDE_BASE_URL");
HttpClient client = HttpClient.newHttpClient();
HttpRequest.Builder builder = HttpRequest.newBuilder()
.uri(URI.create(baseUrl + "/api/v1/payments/ecobank/account/Create"))
.header("Authorization", "Bearer " + System.getenv("FLUIDE_ACCESS_TOKEN"))
.header("X-Fluide-Api-Key", System.getenv("FLUIDE_API_KEY"))
.header("X-Fluide-Client-Id", "fluide-developer")
.header("X-Workspace-Id", System.getenv("FLUIDE_WORKSPACE_ID"))
.header("X-Acting-Company-Id", System.getenv("FLUIDE_COMPANY_ID"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{}"))
.build();
HttpResponse<String> response = client.send(builder.build(), HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) throw new RuntimeException("HTTP " + response.statusCode() + ": " + response.body());
System.out.println(response.body());<?php
$baseUrl = getenv("FLUIDE_BASE_URL");
$ch = curl_init($baseUrl . "/api/v1/payments/ecobank/account/Create");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('FLUIDE_ACCESS_TOKEN'),
'X-Fluide-Api-Key: ' . getenv('FLUIDE_API_KEY'),
'X-Fluide-Client-Id: fluide-developer',
'X-Workspace-Id: ' . getenv('FLUIDE_WORKSPACE_ID'),
'X-Acting-Company-Id: ' . getenv('FLUIDE_COMPANY_ID'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => "{}",
]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException(curl_error($ch));
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status >= 400) throw new RuntimeException("HTTP $status: $response");
echo $response;{
"success": true,
"message": "Operation completed successfully",
"data": {}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}Open Ecobank account
curl -sS -X POST "$FLUIDE_BASE_URL/api/v1/payments/ecobank/account/Create" \
-H "Authorization: Bearer $FLUIDE_ACCESS_TOKEN" \
-H "X-Fluide-Api-Key: $FLUIDE_API_KEY" \
-H "X-Fluide-Client-Id: fluide-developer" \
-H "X-Workspace-Id: $FLUIDE_WORKSPACE_ID" \
-H "X-Acting-Company-Id: $FLUIDE_COMPANY_ID" \
-H "Content-Type: application/json" \
-d '{}'const baseUrl = process.env.FLUIDE_BASE_URL;
const response = await fetch(`${baseUrl}/api/v1/payments/ecobank/account/Create`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.FLUIDE_ACCESS_TOKEN}`,
'X-Fluide-Api-Key': process.env.FLUIDE_API_KEY,
'X-Fluide-Client-Id': 'fluide-developer',
'X-Workspace-Id': process.env.FLUIDE_WORKSPACE_ID,
'X-Acting-Company-Id': process.env.FLUIDE_COMPANY_ID,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());import os
import requests
base_url = os.environ["FLUIDE_BASE_URL"]
headers = {
"Authorization": f"Bearer {os.environ['FLUIDE_ACCESS_TOKEN']}",
"X-Fluide-Api-Key": os.environ["FLUIDE_API_KEY"],
"X-Fluide-Client-Id": "fluide-developer",
"X-Workspace-Id": os.environ["FLUIDE_WORKSPACE_ID"],
"X-Acting-Company-Id": os.environ["FLUIDE_COMPANY_ID"],
}
response = requests.post(
f"{base_url}/api/v1/payments/ecobank/account/Create",
headers=headers,
json={},
timeout=30,
)
response.raise_for_status()
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String baseUrl = System.getenv("FLUIDE_BASE_URL");
HttpClient client = HttpClient.newHttpClient();
HttpRequest.Builder builder = HttpRequest.newBuilder()
.uri(URI.create(baseUrl + "/api/v1/payments/ecobank/account/Create"))
.header("Authorization", "Bearer " + System.getenv("FLUIDE_ACCESS_TOKEN"))
.header("X-Fluide-Api-Key", System.getenv("FLUIDE_API_KEY"))
.header("X-Fluide-Client-Id", "fluide-developer")
.header("X-Workspace-Id", System.getenv("FLUIDE_WORKSPACE_ID"))
.header("X-Acting-Company-Id", System.getenv("FLUIDE_COMPANY_ID"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{}"))
.build();
HttpResponse<String> response = client.send(builder.build(), HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) throw new RuntimeException("HTTP " + response.statusCode() + ": " + response.body());
System.out.println(response.body());<?php
$baseUrl = getenv("FLUIDE_BASE_URL");
$ch = curl_init($baseUrl . "/api/v1/payments/ecobank/account/Create");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('FLUIDE_ACCESS_TOKEN'),
'X-Fluide-Api-Key: ' . getenv('FLUIDE_API_KEY'),
'X-Fluide-Client-Id: fluide-developer',
'X-Workspace-Id: ' . getenv('FLUIDE_WORKSPACE_ID'),
'X-Acting-Company-Id: ' . getenv('FLUIDE_COMPANY_ID'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => "{}",
]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException(curl_error($ch));
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status >= 400) throw new RuntimeException("HTTP $status: $response");
echo $response;{
"success": true,
"message": "Operation completed successfully",
"data": {}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_FAILED",
"statusCode": 400,
"timestamp": "2026-06-03T12:00:00.000Z",
"errors": {
"from": [
"from must be a valid date"
]
}
}Authorizations
Access token JWT. Use as Authorization: Bearer . In the API playground, paste the JWT only.
Developer API key (fl_dev_...). Required on every API call with a machine access token.
First-party client audience. Must match the fluide_client_id claim on the JWT. Use fluide-developer for Connect.
Headers
Partner / ISV only: UUID of the workspace that owns the client company. Required together with X-Acting-Company-Id when scoping product APIs to a merchant. See /getting-started/multi-tenancy.
Partner / ISV only: UUID of the client company to act on. Must belong to the workspace in X-Workspace-Id.
Body
First name of the account holder
"Mercy"
Middle name of the account holder
"Ioo"
Last name of the account holder
"Kasumu"
Mobile number of the account holder
"237674999999"
email address of the account holder
"mercy@gmail.com"
gender of the account holder
MALE, FEMALE, M, F "F"
Date of birth in date-time format
"1990-01-01"
ID type of the account holder
"NATIONAL_ID"
ID number of the account holder
"A1234567890"
ID issue date in date-time format
"2020-01-01"
ID card expiration date in date-time format
"2030-01-01"
Country of residence
"CAMEROON"
city of residence
"Buea"
state of residence
"South West"
street address of the account holder
"123 Main Street"
Currency code for the account
"XAF"