curl --request POST \
--url http://localhost:8081/inject \
--header 'Content-Type: application/json' \
--data '
{
"amount": 5000,
"currency": "USD",
"source": "balance_123",
"destination": "balance_456",
"reference": "txn_ref_001",
"description": "High-value transfer",
"meta_data": {
"merchant_category": "finance",
"country": "US"
}
}
'import requests
url = "http://localhost:8081/inject"
payload = {
"amount": 5000,
"currency": "USD",
"source": "balance_123",
"destination": "balance_456",
"reference": "txn_ref_001",
"description": "High-value transfer",
"meta_data": {
"merchant_category": "finance",
"country": "US"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 5000,
currency: 'USD',
source: 'balance_123',
destination: 'balance_456',
reference: 'txn_ref_001',
description: 'High-value transfer',
meta_data: {merchant_category: 'finance', country: 'US'}
})
};
fetch('http://localhost:8081/inject', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8081",
CURLOPT_URL => "http://localhost:8081/inject",
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' => 5000,
'currency' => 'USD',
'source' => 'balance_123',
'destination' => 'balance_456',
'reference' => 'txn_ref_001',
'description' => 'High-value transfer',
'meta_data' => [
'merchant_category' => 'finance',
'country' => 'US'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8081/inject"
payload := strings.NewReader("{\n \"amount\": 5000,\n \"currency\": \"USD\",\n \"source\": \"balance_123\",\n \"destination\": \"balance_456\",\n \"reference\": \"txn_ref_001\",\n \"description\": \"High-value transfer\",\n \"meta_data\": {\n \"merchant_category\": \"finance\",\n \"country\": \"US\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:8081/inject")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 5000,\n \"currency\": \"USD\",\n \"source\": \"balance_123\",\n \"destination\": \"balance_456\",\n \"reference\": \"txn_ref_001\",\n \"description\": \"High-value transfer\",\n \"meta_data\": {\n \"merchant_category\": \"finance\",\n \"country\": \"US\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8081/inject")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 5000,\n \"currency\": \"USD\",\n \"source\": \"balance_123\",\n \"destination\": \"balance_456\",\n \"reference\": \"txn_ref_001\",\n \"description\": \"High-value transfer\",\n \"meta_data\": {\n \"merchant_category\": \"finance\",\n \"country\": \"US\"\n }\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Inject Transaction
Injects a transaction into FinWatch for real-time risk evaluation. When you send a transaction, FinWatch evaluates it against all active rules and returns a verdict — whether to approve, review, block, or alert.
curl --request POST \
--url http://localhost:8081/inject \
--header 'Content-Type: application/json' \
--data '
{
"amount": 5000,
"currency": "USD",
"source": "balance_123",
"destination": "balance_456",
"reference": "txn_ref_001",
"description": "High-value transfer",
"meta_data": {
"merchant_category": "finance",
"country": "US"
}
}
'import requests
url = "http://localhost:8081/inject"
payload = {
"amount": 5000,
"currency": "USD",
"source": "balance_123",
"destination": "balance_456",
"reference": "txn_ref_001",
"description": "High-value transfer",
"meta_data": {
"merchant_category": "finance",
"country": "US"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 5000,
currency: 'USD',
source: 'balance_123',
destination: 'balance_456',
reference: 'txn_ref_001',
description: 'High-value transfer',
meta_data: {merchant_category: 'finance', country: 'US'}
})
};
fetch('http://localhost:8081/inject', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8081",
CURLOPT_URL => "http://localhost:8081/inject",
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' => 5000,
'currency' => 'USD',
'source' => 'balance_123',
'destination' => 'balance_456',
'reference' => 'txn_ref_001',
'description' => 'High-value transfer',
'meta_data' => [
'merchant_category' => 'finance',
'country' => 'US'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8081/inject"
payload := strings.NewReader("{\n \"amount\": 5000,\n \"currency\": \"USD\",\n \"source\": \"balance_123\",\n \"destination\": \"balance_456\",\n \"reference\": \"txn_ref_001\",\n \"description\": \"High-value transfer\",\n \"meta_data\": {\n \"merchant_category\": \"finance\",\n \"country\": \"US\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:8081/inject")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 5000,\n \"currency\": \"USD\",\n \"source\": \"balance_123\",\n \"destination\": \"balance_456\",\n \"reference\": \"txn_ref_001\",\n \"description\": \"High-value transfer\",\n \"meta_data\": {\n \"merchant_category\": \"finance\",\n \"country\": \"US\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8081/inject")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 5000,\n \"currency\": \"USD\",\n \"source\": \"balance_123\",\n \"destination\": \"balance_456\",\n \"reference\": \"txn_ref_001\",\n \"description\": \"High-value transfer\",\n \"meta_data\": {\n \"merchant_category\": \"finance\",\n \"country\": \"US\"\n }\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Body
Transaction amount
Currency code (e.g., USD, EUR, GBP)
Unique reference identifier for the transaction
Unique transaction identifier. Auto-generated UUID if not provided.
Source balance identifier
Destination balance identifier
Human-readable transaction description
Transaction status (e.g., pending, applied, failed)
Transaction hash for deduplication
Whether to allow overdraft on the source balance
Whether this is an inflight transaction
Whether to skip the processing queue
Whether the transaction should be atomic
Transaction creation timestamp. Defaults to current time if not provided.
Effective date of the transaction
Scheduled execution date
Expiry date for inflight transactions
Additional metadata as key-value pairs. Supports nested objects.
Response
Transaction processed successfully
.png?fit=max&auto=format&n=0JF6z69u57hmqsWm&q=85&s=531373acedba0eb783b669f6d558dfd8)