Skip to main content

Submitting Transactions

Submitting a Transaction

To submit a transaction for screening, use the following endpoint:

Endpoint

POST {BASEURL}/client/fibonacci/check-transaction

Authentication

Each request must include a Bearer token in the Authorization header. The API key will always start with sk_. Below is an example of how to format the header:

Request Examples

curl -X POST {BASEURL}/client/fibonacci/check-transaction \
-H "Authorization: Bearer sk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"transactionData": { /* ... */ },
"device": { /* ... */ },
"anonymizedUserData": { /* ... */ },
"location": { /* ... */ },
"thirdPartyUserData": { /* ... */ }
}'

Data Tables

To create a robust anomaly detection model tailored to your needs, we require the following data fields. These fields help us capture the full scope of transactional, customer, and other relevant activities.

note

Required variables are marked with an asterisk (*). Variables without an asterisk are optional, subject to different use cases.

Transaction Data

Variable NameDescriptionType
transactionId*The unique identifier of the transacationString (e.g. 'a1b2c34de5')
timestamp*The date and time of the transactionISO 8601 (e.g. '2024-10-21T10:30:45Z')
amount*The amount of the transactionNumber (e.g. '100000')
currency*The currency the transaction was done inString (e.g. 'USD')
status*The status of the transactionString enum (e.g. 'completed', 'declined', 'pending')
paymentMethod*The payment channel used in this transactionString (e.g 'bank transfer', 'credit card')
isInternationalTransactionAre payee and payer in different countries?Boolean (e.g. true / false)
narrationThe transaction narration or descriptionString (e.g. 'Payment for electronics')
transactionType*The type of transaction: credit or debitString (e.g. 'credit')
balanceBeforeTransactionThe balance of the account before the transactionString (e.g. '5000.00')
vasReceiverThe value-added service receiverString (e.g. 'Service123')
isExternalPayment*If the payment is going to or coming from an account not managed by the same payment institutionBoolean (e.g. true / false)
organizationWhich financial institution the data is fromString (e.g. 'Access Bank')
transactionCategoryTransaction/Product CategoryString (e.g. 'Airtime', 'Data')
isCardPresentIndicates if the transaction was card-present or card-not-presentBoolean (e.g. true / false)
hasCrossBorderActivityIndicates if the merchant’s country and the card issuing country differBoolean (e.g. true / false)

Customer Data

Variable NameDescriptionType
customerId*The unique identifier of the customerString (e.g. '67b12d7')
locationCustomer's location/country, including city, latitude, longitude, and state.JSON Object
isPhoneNumberVerifiedIndicates if the customer's phone number is verified.Boolean (e.g. true / false)
isEmailVerifiedIndicates if the customer's email is verified.Boolean (e.g. true / false)
accountAgeThe day and time the customer was createdDatetime (e.g. 2024-10-21T10:15:32)
accountType*Individual or business accountString (e.g. 'Individual')
isBanned*Whether the customer is bannedBoolean (e.g. true / false)
ageThe age of the customerNumber (e.g. 35)
updatedLastThe last time the customer updated their dataISO 8601 (e.g. '2024-10-21T10:30:45Z')
lastLoginDate and time customer last logged inISO 8601 (e.g. '2024-10-21T10:30:45Z')
isCustomerIdVerifiedIndicates if the customer's ID is verifiedBoolean (e.g. true / false)
idTypeThe type of user ID that was verifiedString enum (e.g. Passport, NIN, Driver’s license)
transactionHistoryLengthTotal number of transactions processed by customerNumber (e.g. 240)
averageTransactionFrequencyPerMonthNumber of transactions processed by customer per monthNumber (e.g. 5)
averageTransactionAmountThe average transaction amount of the customerNumber (e.g. 2000)
numberOfLinkedAccountsNumber of accounts linked to the customer’s ID
firstNamefirst name of the customerString (e.g John)
lastNamelast name of the customerString (e.g doe)
dobdate of birth of the customerString (e.g 1908-01-01)
gendercustomer's genderString(male or female)

Merchant Data

Variable NameDescriptionType
merchantIdThe unique identifier of the merchantString (e.g. '67b12d7')
locationMerchant's location/country, including city, latitude, longitude, and state.JSON Object

Payment Information

Variable NameDescriptionType
paymentMethodThe payment channel used in this transactionString (e.g 'bank transfer', 'credit card')
cardIssuerBankThe bank that issued the cardString (e.g. 'Access Bank')
receiverAccountThe account that received the paymentString (e.g. '1234567890')
senderAccountThe account that sent the paymentString (e.g. '0987654321')
cardSchemeThe card type used in the transactionString (e.g. Visa, Mastercard, Amex)
cardExpiryDateThe expiry date of the cardString (e.g. '12/25')
maskedCardPanMasked PAN of the cardString (e.g. 'abc124')
PANPAN of the cardString (e.g. 'abc124')
senderBankCodeBank code of the sender’s bankString (e.g. '066')
receiverBankCodeBank code of the receiver's bankString (e.g. '566')

Device Information

Variable NameDescriptionType
ipAddressThe IP address of the device accessed the platformString (e.g. '192.168.1.1')
deviceIdThe anonymized ID of the deviceString (e.g. 'a88b11796-64d6-4524-a2f6-35f84d5cd652')
manufacturerThe manufacturer of the deviceString (e.g. 'Google')
modelThe model of the deviceString (e.g. 'Pixel 8 Pro')
osNameThe operating system of the deviceString (e.g. 'Android 14')
osVersionThe version of the operating systemString (e.g. '11.07.13')
deviceTypeThe type of device usedString (e.g. 'mobile', 'desktop', 'tablet')

Labels

Variable NameDescriptionType
isAnomalyIf a customer or a transaction is anomalousBoolean (e.g. true / false)

Providing these data fields will ensure that our models are built to provide the highest level of accuracy in detecting anomalies and minimizing false positives.


Sample Request Data

{
"transactionData": {
"reference": "2303pee2fc",
"amount": 100.5,
"receiverAccount": "93829392233",
"isExternalPayment": false,
"status": "new",
"senderAccount": "01929393923",
"balanceBefore": 1000,
"type": "debit",
"channel": "pos",
"transactionDate": "2022-04-28 10:30:00",
"vasReceiver": "08124668857",
"currency": "ngn",
"narration": "some payment",
"issuer": "city bank"
},
"device": {
"deviceId": "J020D23020D03300303203D3232DDD",
"manufacturer": "Apple",
"model": "iPhone 14 Pro",
"name": "iPhone 14 Pro",
"osName": "iOS",
"osVersion": "17.1.0"
},
"anonymizedUserData": {
"uniqueId": "e8baeb9c-e563-11ed-b5ea-0242ac120002",
"accountType": "individual",
"businessCategory": "retail",
"isPhoneNumberVerified": true,
"isBanned": false,
"dateJoined": "2022-01-01 23:58:00",
"age": 29,
"isIdentityVerified": true,
"state": "lagos",
"city": "ikeja",
"country": "Nigeria"
},
"location": {
"latitude": 1.039303034,
"longitude": -1.423243444
},
"thirdPartyUserData": {
"uniqueId": "e2300-e563-11ed-b5ea-0242ac120002",
"cardPan": "33899******3329"
}
}