Create Transaction
curl --request POST \
--url https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction \
--header 'Content-Type: application/json' \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--header 'ipAddress: <ipaddress>' \
--header 'password: <password>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>' \
--data '
{
"amount": "<string>",
"sendAmount": "<string>",
"inclussive": true,
"receivingCurrency": "NGN",
"sendCurrency": "GBP",
"type": "ACCOUNTPAYMENT",
"preExistingSenderCustomerCode": "<string>",
"preExistingRecipientCustomerCode": "<string>",
"creditParty": [
{}
],
"internationalTransferInformation": {},
"transactionProcessingMode": "NONE_AGGREGATION",
"descriptionText": "<string>",
"transactionModule": "REMITTANCE"
}
'import requests
url = "https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction"
payload = {
"amount": "<string>",
"sendAmount": "<string>",
"inclussive": True,
"receivingCurrency": "NGN",
"sendCurrency": "GBP",
"type": "ACCOUNTPAYMENT",
"preExistingSenderCustomerCode": "<string>",
"preExistingRecipientCustomerCode": "<string>",
"creditParty": [{}],
"internationalTransferInformation": {},
"transactionProcessingMode": "NONE_AGGREGATION",
"descriptionText": "<string>",
"transactionModule": "REMITTANCE"
}
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>",
"password": "<password>",
"ipAddress": "<ipaddress>",
"X-Idempotency-Key": "<x-idempotency-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
platform: '<platform>',
uuid: '<uuid>',
'X-Auth-Token': '<x-auth-token>',
password: '<password>',
ipAddress: '<ipaddress>',
'X-Idempotency-Key': '<x-idempotency-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: '<string>',
sendAmount: '<string>',
inclussive: true,
receivingCurrency: 'NGN',
sendCurrency: 'GBP',
type: 'ACCOUNTPAYMENT',
preExistingSenderCustomerCode: '<string>',
preExistingRecipientCustomerCode: '<string>',
creditParty: [{}],
internationalTransferInformation: {},
transactionProcessingMode: 'NONE_AGGREGATION',
descriptionText: '<string>',
transactionModule: 'REMITTANCE'
})
};
fetch('https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-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://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-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([
'amount' => '<string>',
'sendAmount' => '<string>',
'inclussive' => true,
'receivingCurrency' => 'NGN',
'sendCurrency' => 'GBP',
'type' => 'ACCOUNTPAYMENT',
'preExistingSenderCustomerCode' => '<string>',
'preExistingRecipientCustomerCode' => '<string>',
'creditParty' => [
[
]
],
'internationalTransferInformation' => [
],
'transactionProcessingMode' => 'NONE_AGGREGATION',
'descriptionText' => '<string>',
'transactionModule' => 'REMITTANCE'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Auth-Token: <x-auth-token>",
"X-Idempotency-Key: <x-idempotency-key>",
"ipAddress: <ipaddress>",
"password: <password>",
"platform: <platform>",
"uuid: <uuid>"
],
]);
$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://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction"
payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"sendAmount\": \"<string>\",\n \"inclussive\": true,\n \"receivingCurrency\": \"NGN\",\n \"sendCurrency\": \"GBP\",\n \"type\": \"ACCOUNTPAYMENT\",\n \"preExistingSenderCustomerCode\": \"<string>\",\n \"preExistingRecipientCustomerCode\": \"<string>\",\n \"creditParty\": [\n {}\n ],\n \"internationalTransferInformation\": {},\n \"transactionProcessingMode\": \"NONE_AGGREGATION\",\n \"descriptionText\": \"<string>\",\n \"transactionModule\": \"REMITTANCE\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
req.Header.Add("password", "<password>")
req.Header.Add("ipAddress", "<ipaddress>")
req.Header.Add("X-Idempotency-Key", "<x-idempotency-key>")
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://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.header("password", "<password>")
.header("ipAddress", "<ipaddress>")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"sendAmount\": \"<string>\",\n \"inclussive\": true,\n \"receivingCurrency\": \"NGN\",\n \"sendCurrency\": \"GBP\",\n \"type\": \"ACCOUNTPAYMENT\",\n \"preExistingSenderCustomerCode\": \"<string>\",\n \"preExistingRecipientCustomerCode\": \"<string>\",\n \"creditParty\": [\n {}\n ],\n \"internationalTransferInformation\": {},\n \"transactionProcessingMode\": \"NONE_AGGREGATION\",\n \"descriptionText\": \"<string>\",\n \"transactionModule\": \"REMITTANCE\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
request["password"] = '<password>'
request["ipAddress"] = '<ipaddress>'
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"<string>\",\n \"sendAmount\": \"<string>\",\n \"inclussive\": true,\n \"receivingCurrency\": \"NGN\",\n \"sendCurrency\": \"GBP\",\n \"type\": \"ACCOUNTPAYMENT\",\n \"preExistingSenderCustomerCode\": \"<string>\",\n \"preExistingRecipientCustomerCode\": \"<string>\",\n \"creditParty\": [\n {}\n ],\n \"internationalTransferInformation\": {},\n \"transactionProcessingMode\": \"NONE_AGGREGATION\",\n \"descriptionText\": \"<string>\",\n \"transactionModule\": \"REMITTANCE\"\n}"
response = http.request(request)
puts response.read_bodyAPI Endpoints
Create Transaction
Initiate a new remittance transaction using existing customer profiles.
POST
/
transactionmanagement
/
create-transaction
Create Transaction
curl --request POST \
--url https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction \
--header 'Content-Type: application/json' \
--header 'X-Auth-Token: <x-auth-token>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--header 'ipAddress: <ipaddress>' \
--header 'password: <password>' \
--header 'platform: <platform>' \
--header 'uuid: <uuid>' \
--data '
{
"amount": "<string>",
"sendAmount": "<string>",
"inclussive": true,
"receivingCurrency": "NGN",
"sendCurrency": "GBP",
"type": "ACCOUNTPAYMENT",
"preExistingSenderCustomerCode": "<string>",
"preExistingRecipientCustomerCode": "<string>",
"creditParty": [
{}
],
"internationalTransferInformation": {},
"transactionProcessingMode": "NONE_AGGREGATION",
"descriptionText": "<string>",
"transactionModule": "REMITTANCE"
}
'import requests
url = "https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction"
payload = {
"amount": "<string>",
"sendAmount": "<string>",
"inclussive": True,
"receivingCurrency": "NGN",
"sendCurrency": "GBP",
"type": "ACCOUNTPAYMENT",
"preExistingSenderCustomerCode": "<string>",
"preExistingRecipientCustomerCode": "<string>",
"creditParty": [{}],
"internationalTransferInformation": {},
"transactionProcessingMode": "NONE_AGGREGATION",
"descriptionText": "<string>",
"transactionModule": "REMITTANCE"
}
headers = {
"platform": "<platform>",
"uuid": "<uuid>",
"X-Auth-Token": "<x-auth-token>",
"password": "<password>",
"ipAddress": "<ipaddress>",
"X-Idempotency-Key": "<x-idempotency-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
platform: '<platform>',
uuid: '<uuid>',
'X-Auth-Token': '<x-auth-token>',
password: '<password>',
ipAddress: '<ipaddress>',
'X-Idempotency-Key': '<x-idempotency-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: '<string>',
sendAmount: '<string>',
inclussive: true,
receivingCurrency: 'NGN',
sendCurrency: 'GBP',
type: 'ACCOUNTPAYMENT',
preExistingSenderCustomerCode: '<string>',
preExistingRecipientCustomerCode: '<string>',
creditParty: [{}],
internationalTransferInformation: {},
transactionProcessingMode: 'NONE_AGGREGATION',
descriptionText: '<string>',
transactionModule: 'REMITTANCE'
})
};
fetch('https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-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://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-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([
'amount' => '<string>',
'sendAmount' => '<string>',
'inclussive' => true,
'receivingCurrency' => 'NGN',
'sendCurrency' => 'GBP',
'type' => 'ACCOUNTPAYMENT',
'preExistingSenderCustomerCode' => '<string>',
'preExistingRecipientCustomerCode' => '<string>',
'creditParty' => [
[
]
],
'internationalTransferInformation' => [
],
'transactionProcessingMode' => 'NONE_AGGREGATION',
'descriptionText' => '<string>',
'transactionModule' => 'REMITTANCE'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Auth-Token: <x-auth-token>",
"X-Idempotency-Key: <x-idempotency-key>",
"ipAddress: <ipaddress>",
"password: <password>",
"platform: <platform>",
"uuid: <uuid>"
],
]);
$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://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction"
payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"sendAmount\": \"<string>\",\n \"inclussive\": true,\n \"receivingCurrency\": \"NGN\",\n \"sendCurrency\": \"GBP\",\n \"type\": \"ACCOUNTPAYMENT\",\n \"preExistingSenderCustomerCode\": \"<string>\",\n \"preExistingRecipientCustomerCode\": \"<string>\",\n \"creditParty\": [\n {}\n ],\n \"internationalTransferInformation\": {},\n \"transactionProcessingMode\": \"NONE_AGGREGATION\",\n \"descriptionText\": \"<string>\",\n \"transactionModule\": \"REMITTANCE\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("platform", "<platform>")
req.Header.Add("uuid", "<uuid>")
req.Header.Add("X-Auth-Token", "<x-auth-token>")
req.Header.Add("password", "<password>")
req.Header.Add("ipAddress", "<ipaddress>")
req.Header.Add("X-Idempotency-Key", "<x-idempotency-key>")
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://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction")
.header("platform", "<platform>")
.header("uuid", "<uuid>")
.header("X-Auth-Token", "<x-auth-token>")
.header("password", "<password>")
.header("ipAddress", "<ipaddress>")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"sendAmount\": \"<string>\",\n \"inclussive\": true,\n \"receivingCurrency\": \"NGN\",\n \"sendCurrency\": \"GBP\",\n \"type\": \"ACCOUNTPAYMENT\",\n \"preExistingSenderCustomerCode\": \"<string>\",\n \"preExistingRecipientCustomerCode\": \"<string>\",\n \"creditParty\": [\n {}\n ],\n \"internationalTransferInformation\": {},\n \"transactionProcessingMode\": \"NONE_AGGREGATION\",\n \"descriptionText\": \"<string>\",\n \"transactionModule\": \"REMITTANCE\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["platform"] = '<platform>'
request["uuid"] = '<uuid>'
request["X-Auth-Token"] = '<x-auth-token>'
request["password"] = '<password>'
request["ipAddress"] = '<ipaddress>'
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"<string>\",\n \"sendAmount\": \"<string>\",\n \"inclussive\": true,\n \"receivingCurrency\": \"NGN\",\n \"sendCurrency\": \"GBP\",\n \"type\": \"ACCOUNTPAYMENT\",\n \"preExistingSenderCustomerCode\": \"<string>\",\n \"preExistingRecipientCustomerCode\": \"<string>\",\n \"creditParty\": [\n {}\n ],\n \"internationalTransferInformation\": {},\n \"transactionProcessingMode\": \"NONE_AGGREGATION\",\n \"descriptionText\": \"<string>\",\n \"transactionModule\": \"REMITTANCE\"\n}"
response = http.request(request)
puts response.read_bodyInitiates a new transaction where the sender and recipient have already been onboarded. Both must have active customer profiles.
Request Headers
string
required
JWT Access Token of the authenticated user.
string
required
A unique key for this transaction submission. If the same key is sent twice, the second request returns the result of the first rather than creating a duplicate transaction. Use a UUID or a unique reference from your system.
string
required
IP address of the device initiating the transaction.
string
default:"fincode"
required
Platform identifier. Use
fincode.string
default:"200"
required
Unique request identifier.
string
Customer’s transaction password (if required by your pay centre configuration).
Request Body
number
required
The amount the recipient will receive, in the receiving currency.
number
required
The amount the sender pays, in the sending currency.
boolean
required
Whether fees are included in
sendAmount. Set to true if the sender pays a fixed amount inclusive of all fees; false if fees are added on top.string
required
ISO 4217 currency code the sender is paying in (e.g.
GBP).string
required
ISO 4217 currency code the recipient will receive (e.g.
NGN).string
required
Transaction / delivery method. Common values:
| Value | Description |
|---|---|
ACCOUNTPAYMENT | Bank account transfer |
MOBILE_MONEY | Mobile money (e.g. M-Pesa) |
CASH_PICKUP | Cash pickup at agent location |
WALLET | Wallet transfer |
string
required
Processing mode. Use
REAL_TIME for immediate processing or BATCH for scheduled processing.string
required
Customer code of the sender (returned from
find-customer-by-name-or-phone-no or register-customer).string
required
Customer code of the recipient/beneficiary (returned from
new-beneficiary).array
required
Key-value pairs for the recipient’s bank/account details. See the Add Bank Details key reference for the full list of valid keys. All keys must be lowercase.
object
required
Regulatory and routing information for the transfer.
Show internationalTransferInformation fields
Show internationalTransferInformation fields
string
required
ISO 3166-1 alpha-3 code of the sender’s country (e.g.
GBR)string
required
ISO 3166-1 alpha-3 code of the recipient’s country (e.g.
NGA)string
required
Purpose of the transfer (e.g.
FAMILY_SUPPORT, GIFT, EDUCATION)string
required
Declared source of funds (e.g.
SALARY, SAVINGS, BUSINESS)string
Sender’s relationship to the recipient (e.g.
PARENT, SPOUSE, FRIEND)string
Security question for cash pickup transactions. Required when
type is CASH_PICKUP.string
Answer to the security question. Required when
type is CASH_PICKUP.string
Your own reference for this transaction. Optional — the platform generates one if not provided.
object
Additional dynamic fields specific to your configuration. Pass an empty object
{} if not applicable.array
List of documents attached to this transaction (for transactions requiring document verification). Pass an empty array
[] if none.Code Example
cURL
curl -X POST 'https://{your-domain}.fincode.software/api/v6/services/transactionmanagement/create-transaction' \
--header 'X-Auth-Token: YOUR_TOKEN' \
--header 'X-Idempotency-Key: a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
--header 'ipAddress: 192.168.1.100' \
--header 'Content-Type: application/json' \
--header 'platform: fincode' \
--header 'uuid: 200' \
--data '{
"amount": 150000,
"sendAmount": 100,
"inclussive": false,
"sendCurrency": "GBP",
"receivingCurrency": "NGN",
"type": "ACCOUNTPAYMENT",
"transactionProcessingMode": "REAL_TIME",
"preExistingSenderCustomerCode": "VJJGVE",
"preExistingRecipientCustomerCode": "BNADKO",
"creditParty": [
{"key": "bankname", "value": "GTBank"},
{"key": "bankaccountno", "value": "0123456789"},
{"key": "accountholdername", "value": "Ada Okonkwo"},
{"key": "bankcode", "value": "058"},
{"key": "swiftbic", "value": "GTBINGLA"}
],
"internationalTransferInformation": {
"originCountry": "GBR",
"receivingCountry": "NGA",
"remittancePurpose": "FAMILY_SUPPORT",
"sourceOfFunds": "SALARY",
"relationshipSender": "PARENT"
},
"dynamicFields": {},
"eligibleDocumentList": []
}'
Headers
Body
application/json
Response
200
Transaction created
