curl --request POST \
--url https://api.example.com/compliance/transaction \
--header 'ApiKey: <apikey>' \
--header 'Content-Type: application/json' \
--header 'Environment: <environment>' \
--header 'MerchantId: <merchantid>' \
--data '
{
"name": "Example merchant",
"reference": "<REPLACE_BY_YOUR_REFERENCE>",
"amount": 100,
"currency": "XOF",
"iban": "FR7630006000011234567890189"
}
'import requests
url = "https://api.example.com/compliance/transaction"
payload = {
"name": "Example merchant",
"reference": "<REPLACE_BY_YOUR_REFERENCE>",
"amount": 100,
"currency": "XOF",
"iban": "FR7630006000011234567890189"
}
headers = {
"ApiKey": "<apikey>",
"MerchantId": "<merchantid>",
"Environment": "<environment>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
ApiKey: '<apikey>',
MerchantId: '<merchantid>',
Environment: '<environment>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Example merchant',
reference: '<REPLACE_BY_YOUR_REFERENCE>',
amount: 100,
currency: 'XOF',
iban: 'FR7630006000011234567890189'
})
};
fetch('https://api.example.com/compliance/transaction', 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.example.com/compliance/transaction",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Example merchant',
'reference' => '<REPLACE_BY_YOUR_REFERENCE>',
'amount' => 100,
'currency' => 'XOF',
'iban' => 'FR7630006000011234567890189'
]),
CURLOPT_HTTPHEADER => [
"ApiKey: <apikey>",
"Content-Type: application/json",
"Environment: <environment>",
"MerchantId: <merchantid>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/compliance/transaction"
payload := strings.NewReader("{\n \"name\": \"Example merchant\",\n \"reference\": \"<REPLACE_BY_YOUR_REFERENCE>\",\n \"amount\": 100,\n \"currency\": \"XOF\",\n \"iban\": \"FR7630006000011234567890189\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("ApiKey", "<apikey>")
req.Header.Add("MerchantId", "<merchantid>")
req.Header.Add("Environment", "<environment>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/compliance/transaction")
.header("ApiKey", "<apikey>")
.header("MerchantId", "<merchantid>")
.header("Environment", "<environment>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Example merchant\",\n \"reference\": \"<REPLACE_BY_YOUR_REFERENCE>\",\n \"amount\": 100,\n \"currency\": \"XOF\",\n \"iban\": \"FR7630006000011234567890189\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/compliance/transaction")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["ApiKey"] = '<apikey>'
request["MerchantId"] = '<merchantid>'
request["Environment"] = '<environment>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Example merchant\",\n \"reference\": \"<REPLACE_BY_YOUR_REFERENCE>\",\n \"amount\": 100,\n \"currency\": \"XOF\",\n \"iban\": \"FR7630006000011234567890189\"\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"kyb": {
"merchantId": "156",
"name": "Example merchant",
"businessType": "Fintech",
"businessRegistrationId": "<string>",
"taxNumber": "<string>",
"directorName": "<string>",
"websiteUrl": "<string>",
"country": "CI",
"headquarterAddress": "<string>",
"id": 1,
"createdAt": "2020-10-15T12:09:49.355Z",
"deletedAt": null
},
"reference": "<REPLACE_BY_YOUR_REFERENCE>",
"amount": 100,
"currency": "XOF",
"createdAt": "2020-10-15T12:09:49.355Z",
"status": "created",
"iban": "CI93CI0080111301134291200589",
"rejectionReason": "Your request is not compliant with our policies for the following reason: ..."
}{
"status": 400,
"error": {
"statusCode": 400,
"message": [
"destination.provider must be a string"
],
"error": "Bad Request"
}
}{
"status": 401,
"error": {
"type": "authorization_error",
"code": "wrong_credentials",
"message": "L'ID marchand et/ou la clé d'API sont incorrects."
}
}{
"httpStatus": 404,
"message": "X not found",
"error": "Not found"
}{
"httpStatus": 409,
"type": "invalid_request",
"code": "unsupported_action",
"message": "This action is not supported"
}{
"type": "internal_error",
"code": [
"internal_error",
"wrong_credentials",
"not_granted",
"live_mode_not_granted",
"invalid_sandbox_msisdn",
"invalid_url",
"orange_invalid_url",
"wrong_provider",
"override_business_name",
"do_not_override_business_name"
],
"message": "An error occurred on our system. Please try again later."
}Create a kyb transaction
curl --request POST \
--url https://api.example.com/compliance/transaction \
--header 'ApiKey: <apikey>' \
--header 'Content-Type: application/json' \
--header 'Environment: <environment>' \
--header 'MerchantId: <merchantid>' \
--data '
{
"name": "Example merchant",
"reference": "<REPLACE_BY_YOUR_REFERENCE>",
"amount": 100,
"currency": "XOF",
"iban": "FR7630006000011234567890189"
}
'import requests
url = "https://api.example.com/compliance/transaction"
payload = {
"name": "Example merchant",
"reference": "<REPLACE_BY_YOUR_REFERENCE>",
"amount": 100,
"currency": "XOF",
"iban": "FR7630006000011234567890189"
}
headers = {
"ApiKey": "<apikey>",
"MerchantId": "<merchantid>",
"Environment": "<environment>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
ApiKey: '<apikey>',
MerchantId: '<merchantid>',
Environment: '<environment>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Example merchant',
reference: '<REPLACE_BY_YOUR_REFERENCE>',
amount: 100,
currency: 'XOF',
iban: 'FR7630006000011234567890189'
})
};
fetch('https://api.example.com/compliance/transaction', 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.example.com/compliance/transaction",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Example merchant',
'reference' => '<REPLACE_BY_YOUR_REFERENCE>',
'amount' => 100,
'currency' => 'XOF',
'iban' => 'FR7630006000011234567890189'
]),
CURLOPT_HTTPHEADER => [
"ApiKey: <apikey>",
"Content-Type: application/json",
"Environment: <environment>",
"MerchantId: <merchantid>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/compliance/transaction"
payload := strings.NewReader("{\n \"name\": \"Example merchant\",\n \"reference\": \"<REPLACE_BY_YOUR_REFERENCE>\",\n \"amount\": 100,\n \"currency\": \"XOF\",\n \"iban\": \"FR7630006000011234567890189\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("ApiKey", "<apikey>")
req.Header.Add("MerchantId", "<merchantid>")
req.Header.Add("Environment", "<environment>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/compliance/transaction")
.header("ApiKey", "<apikey>")
.header("MerchantId", "<merchantid>")
.header("Environment", "<environment>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Example merchant\",\n \"reference\": \"<REPLACE_BY_YOUR_REFERENCE>\",\n \"amount\": 100,\n \"currency\": \"XOF\",\n \"iban\": \"FR7630006000011234567890189\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/compliance/transaction")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["ApiKey"] = '<apikey>'
request["MerchantId"] = '<merchantid>'
request["Environment"] = '<environment>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Example merchant\",\n \"reference\": \"<REPLACE_BY_YOUR_REFERENCE>\",\n \"amount\": 100,\n \"currency\": \"XOF\",\n \"iban\": \"FR7630006000011234567890189\"\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"kyb": {
"merchantId": "156",
"name": "Example merchant",
"businessType": "Fintech",
"businessRegistrationId": "<string>",
"taxNumber": "<string>",
"directorName": "<string>",
"websiteUrl": "<string>",
"country": "CI",
"headquarterAddress": "<string>",
"id": 1,
"createdAt": "2020-10-15T12:09:49.355Z",
"deletedAt": null
},
"reference": "<REPLACE_BY_YOUR_REFERENCE>",
"amount": 100,
"currency": "XOF",
"createdAt": "2020-10-15T12:09:49.355Z",
"status": "created",
"iban": "CI93CI0080111301134291200589",
"rejectionReason": "Your request is not compliant with our policies for the following reason: ..."
}{
"status": 400,
"error": {
"statusCode": 400,
"message": [
"destination.provider must be a string"
],
"error": "Bad Request"
}
}{
"status": 401,
"error": {
"type": "authorization_error",
"code": "wrong_credentials",
"message": "L'ID marchand et/ou la clé d'API sont incorrects."
}
}{
"httpStatus": 404,
"message": "X not found",
"error": "Not found"
}{
"httpStatus": 409,
"type": "invalid_request",
"code": "unsupported_action",
"message": "This action is not supported"
}{
"type": "internal_error",
"code": [
"internal_error",
"wrong_credentials",
"not_granted",
"live_mode_not_granted",
"invalid_sandbox_msisdn",
"invalid_url",
"orange_invalid_url",
"wrong_provider",
"override_business_name",
"do_not_override_business_name"
],
"message": "An error occurred on our system. Please try again later."
}Headers
Your api key. To create a key, please get into our dashboard. If you don't have access to it, please reach the Support team.
Your merchant ID. This information is available in our dashboard. If you don't have access to it, please reach the Support team.
Allow you to choose between the sandbox mode to perform some tests or the live mode for real world transactions.
live, sandbox Body
The name of the aggregated merchant
"Example merchant"
Reference of the transaction
"<REPLACE_BY_YOUR_REFERENCE>"
Amount of the transaction
100
Currency in which the transaction has been done
"XOF"
International Bank Account Number (IBAN)
"FR7630006000011234567890189"
Response
The id identifying the transaction
1
The kyb related to the transaction
Show child attributes
Show child attributes
Reference of the transaction. Should be unique for a given merchantId
"<REPLACE_BY_YOUR_REFERENCE>"
Amount of the transaction
100
Currency in which the transaction has been done
"XOF"
Datetime in UTC timezone at which this object was created. Follows the Datetime ISO.
"2020-10-15T12:09:49.355Z"
Enum indicating the status of the kyb transaction
created, pending, rejected, validated "created"
Iban of the bank account on which funds have been transferred
"CI93CI0080111301134291200589"
The reason why a kyb transaction has been rejected by Hub2 teams (i.e, the deposit hasn't been done)
"Your request is not compliant with our policies for the following reason: ..."
