{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"fac418ad-789e-4774-ba19-d88b073b4df0","name":"Udara360 - Documentation","description":"The Udara360 openAPI specification\n\nBase URL:\n\n`Test: https://openapi.test.udara360.io`\n\n`Live : https://openapi.udara360.io`\n\n# Authentication\n\nPlace your JWT token gotten after successful authentication with clientID and clientSecret in the Authorization header of each request you send to the API.\n\n`Authorization: bearer {token}`\n\n# Idempotency\n\nEvery Request that creates/modifies data must pass a unique request reference in the header. Maximum string length is 100.\n\n`Request-reference: {unique_reference}`\n\n# HTTP Response Codes\n\n| **Description** | **Code** |\n| --- | --- |\n| Successful | 2XX |\n| Bad request from client | 4XX |\n| System error | 5XX |\n\n# Bank List\n\nBank list API is found within the **\\\\Transfer** API folder.\n\nPS: When carrying out a transfer, the value of the destination bank code should be the **Identifier** returned from the bank list.\n\nSee table below for test bank information\n\n| Bank | Test Bank |\n| --- | --- |\n| **Identifier** | **TSTBNK** |\n| Destination Account | 0000014575 |\n\n# Posting Response Codes\n\n| **Description** | **Code** |\n| --- | --- |\n| Successful | 00 |\n| General Error | 06 |\n| Model Validation Error | 09 |\n| Invalid Amount | 13 |\n| No Record Found | 25 |\n| Duplicate Record | 26 |\n| Force Debit Not Allowed | 28 |\n| Database Update Not Executed | 29 |\n| Format Error | 30 |\n| Insufficient Balance | 51 |\n| No Check Account | 52 |\n| Transaction Permission | 57 |\n| Security Violation | 63 |\n| Cut Off In Progress | 90 |\n| Exceeds Cash Limit | 93 |\n| Fatal Error | 96 |\n\n# Amount Format\n\nAll amounts supplied must be in their base currency. E.g. NGN 5000.50 should be passed as 500050 kobo\n\n# Optional Fields\n\nFor optional fields, null should be passed as value or the field excluded from the payload.\n\n# Rate Limiting\n\nAPI rate limits assure that a single client can't overload the system for other clients. This makes the platform stable and secure.\n\nError responses with HTTP status code **429** indicate that rate limits have been temporarily exceeded.\n\nAPI rate limits are set at the API user level. If you regularly receive HTTP 429 responses, do your best to limit the rate of requests, spread them out across minute intervals, or spread them out across multiple API users.\n\nSome **common mistakes** that can result in receiving many API rate limit errors are:\n\n- Not monitoring 429 errors on the client\n    \n- Retry API calls whenever they fail without noticing the error type - causing an escalation in rate limits\n    \n- Using too many parallel processes for batch operations\n    \n- Monitoring many transactions via polling instead of using webhooks\n    \n- Excessively generating token for every call instead of reuse\n    \n\n### Rate limit error response\n\nIf you reach your rate limit, you'll see a 429 error response to let you know your rate limit has been exceeded.\n\n# IP Whitelisting (Production access)\n\nIP Whitelisting is required for production access. An email should be sent to [support.](https://support@fintellia.com)\n\n# Webhook\n\nWebhook allows your system to be aware of events as they happen.\n\nTo create a Webhook, go to your Portal. On the Main Menu, Go to Operations > Webhook > Add Webhook.\n\n**Webhook Request Payload Structure**\n\n{  \n\"notificationType\": 0, //See **NotificationType / Event Type** below  \n\"payload\": null, //See **Payload Structure** table below  \n\"requestReference\": //A reference that identifies the webhook sent  \n}\n\n_**PLEASE BE SURE TO TEST THE WEBHOOK DELIVERY DURING YOUR INTEGRATION PROCESS SO AS TO ENSURE YOU CAN READ AND PROCESS THE DATA CORRECTLY ON YOUR END.**_\n\n**NotificationType / Event Type**\n\n| **Event Type** | **Event ID** | **Description** |\n| --- | --- | --- |\n| CREATE ACCOUNT | 1 | A notification to alert you when a customer account (Savings or Current) is created. |\n| UPDATE ACCOUNT | 2 | A notification to alert you when a customer account (Savings or Current) is updated. |\n| CREATE CUSTOMER | 3 | A notification to alert you when a customer (Individual, Group or Organisation) is created. |\n| UPDATE CUSTOMER | 4 | A notification to alert you when a customer (Individual, Group or Organisation) is updated. |\n| TRANSACTION SUCCESSFUL | 5 | A notification to alert you when a transaction is successful. |\n| TRANSACTION REVERSED | 6 | A notification to alert you when a transaction is reversed. |\n\n**Webhook Fault Tolerance**\n\nIf we do not receive a 2XX response code from the POST request to your webhook URL, we will attempt to retry it 5 times with an exponential back off of 2^2 times. If we reach the maximum number of attempts, the failed request will be logged and can be retried manually on the portal.\n\nWe recommend that you use ID of the entity to check for duplicates on your system to ensure you are handling the events properly.\n\nWe highly recommend using HTTPS for all communications.\n\nAuthenticated calls are supported, we accept a Basic Authentication Type where you supply a Username and Password for Authorisation.\n\n---\n\n**To know if a transaction is Inward or Outward:**\n\n_\"ChannelTransactionIdentifier\":\"{\"TransactionType\":\"Inward\",\"BankIdentifier\":\"ABP\"}_\n\n_There is a field in the webhook payload: ChannelTransactionIdentifier, if it is not null, check if is has this field: TransactionType_\n\n_The value will be_ _**Inward**_ _if it is coming from other banks__The value will be_ _**Transfer**_ _if is is an outward transfer._\n\n---\n\nThe **recordType** field under PostingsCompleted / Transaction successful event tells if the record is a **Credit** or a **Debit** entry on the account contained in the notification record\n\n---\n\n**Payload Structure:**\n\n| PostingsCompleted/ Transaction Successful | AccountCreated | CustomerInfoCreated |\n| --- | --- | --- |\n| {  <br>\"Identifier\": 0,  <br>\"ReferenceNumber\": null,  <br>\"AccountNumber\": null,  <br>\"AccountName\": null,  <br>\"LinkedAccountNumber\": null,  <br>\"FinancialDate\": \"0001-01-01T00:00:00\",  <br>\"RealDate\": \"0001-01-01T00:00:00\",  <br>\"Amount\": 0.0,  <br>\"RealAmount\": 0.0,  <br>\"OpeningBalance\": 0.0,  <br>\"BalanceAfter\": 0.0,  <br>\"BackdateAmount\": 0.0,  <br>\"Narration\": null,  <br>\"EntryCode\": null,  <br>\"InstrumentNumber\": null,  <br>\"ChannelTransactionIdentifier\":\"{\"transactionType\":\"null,\"bankIdentifier\":null}\",  <br>\"RecordType\":null,  <br>\"BranchCode\": null,  <br>\"PostingType\": null,  <br>\"CustomerID\": null,  <br>\"ReversalReferenceNumber\": null,  <br>\"Username\": null,  <br>\"ApprovedBy\": null,  <br>\"ForceDebit\": false,  <br>\"IsOverdraftPosting\": false,  <br>\"Charge\": 0.0,  <br>\"Merchant\": null,  <br>\"RecipientName\": null,  <br>\"RecipientAccountNumber\": null,  <br>\"SenderName\": null,  <br>\"SenderAccountNumber\": null,  <br>\"RecipientBank\": null,  <br>\"SenderBank\": null,  <br>\"TransactionIconUrl\": null,  <br>\"TransactionTag\": null,  <br>\"ProductCode\": null,  <br>\"ProductName\": null,  <br>\"BranchName\": null,  <br>\"AccountType\": null,  <br>\"CustomerAccountType\": null,  <br>\"Email\": null,  <br>\"PhoneNumber\": null,  <br>\"WaiveSMSChargeForStaffAccount\": null,  <br>\"SMSChargePerNotification\": 0,  <br>\"WithdrawableBalance\": 0,  <br>\"TransactionChannel\": null,  <br>\"AdditionalMetadata\": null,  <br>\"ID\": null,  <br>\"DateCreated\": \"0001-01-01T00:00:00\",  <br>\"DateLastModified\": null  <br>} | {  <br>\"AccountNumber\": null,  <br>\"CustomerID\": null,  <br>\"AccountName\": null,  <br>\"AccountType\": null,  <br>\"CustomerType\": null,  <br>\"CurrencyCode\": null,  <br>\"ReferenceNumber\": null,  <br>\"BranchCode\": null,  <br>\"ProductCode\": null,  <br>\"ProductCategory\": null,  <br>\"AccountOfficerID\": null,  <br>\"AccountStatus\": null,  <br>\"PreviousAccountStatus\": null,  <br>\"CustomerAccountStatus\": null,  <br>\"AccountTierLevel\": 0,  <br>\"AccessLevel\": 0,  <br>\"EnableEmailNotification\": false,  <br>\"EnableSMSNotification\": false,  <br>\"StatementDeliveryMode\": null,  <br>\"StatementDeliveryFrequency\": null,  <br>\"MinimumBalanceRequired\": 0.0,  <br>\"AccountCreationChannel\": null,  <br>\"OverrideProductApplicableFee\": false,  <br>\"ApplyFee\": null,  <br>\"ChargeCycle\": null,  <br>\"TransactionType\": null,  <br>\"FlatAmount\": 0.0,  <br>\"FlatAmountPerTransaction\": 0.0,  <br>\"PercentageOnTurnover\": null,  <br>\"MinimumAmount\": 0.0,  <br>\"MaximumAmount\": 0.0,  <br>\"OverrideProductApplicableInterest\": false,  <br>\"ApplyCreditInterest\": null,  <br>\"InterestRate\": 0.0,  <br>\"MandateRuleIndex\": null,  <br>\"IsGroupAccount\": false,  <br>\"DateCreatedFinancial\": \"0001-01-01T00:00:00\",  <br>\"CategoryOfAccount\": null,  <br>\"SectorCode\": null,  <br>\"Sector\": null,  <br>\"ClosureDate\": null,  <br>\"ClassificationStatus\": null,  <br>\"DaysPastDue\": 0,  <br>\"LastProvisionedAmount\": null,  <br>\"LastProvisionedDate\": null,  <br>\"LastActivityDate\": \"0001-01-01T00:00:00\",  <br>\"LastCreditAmount\": null,  <br>\"LastCreditDate\": \"0001-01-01T00:00:00\",  <br>\"LastDebitAmount\": null,  <br>\"LastDebitDate\": null,  <br>\"DateOfDormancy\": null,  <br>\"DateOfInactivity\": null,  <br>\"IsMigrated\": null,  <br>\"IntroducerType\": null,  <br>\"IntroducerID\": null,  <br>\"IntroducerName\": null,  <br>\"DocumentIdentifier\": null,  <br>\"MainAccountNumber\": null,  <br>\"MainAccount\": false,  <br>\"SubAccount\": false,  <br>\"CreatedBy\": null,  <br>\"DateCreated\": \"0001-01-01T00:00:00\",  <br>\"DateLastModified\": \"0001-01-01T00:00:00\",  <br>\"ID\": null  <br>} | {  <br>\"CustomerID\": null,  <br>\"Gender\": null,  <br>\"CustomerType\": null,  <br>\"Title\": null,  <br>\"LastName\": null,  <br>\"FirstName\": null,  <br>\"OtherNames\": null,  <br>\"Address\": null,  <br>\"MaritalStatus\": null,  <br>\"MaidenName\": null,  <br>\"Religion\": null,  <br>\"SignatureFileUrl\": null,  <br>\"PassportFileUrl\": null,  <br>\"PhoneNumber\": null,  <br>\"Email\": null,  <br>\"NotificationEmail\": null,  <br>\"NotificationPhoneNumber\": null,  <br>\"Hometown\": null,  <br>\"DateOfBirth\": \"0001-01-01T00:00:00\",  <br>\"Nationality\": null,  <br>\"State\": null,  <br>\"LGA\": null,  <br>\"MeansOfIdentification\": null,  <br>\"IDNumber\": null,  <br>\"MeansOfIdentificationIssueDate\": null,  <br>\"MeansOfIdentificationExpiryDate\": null,  <br>\"MeansOfIdentificationPlaceOfIssue\": null,  <br>\"NOKName\": null,  <br>\"NOKDateOfBirth\": null,  <br>\"NOKAddress\": null,  <br>\"NOKGender\": null,  <br>\"NOKRelationship\": null,  <br>\"NOKPhoneNumber\": null,  <br>\"NOKEmail\": null,  <br>\"NOKOccupation\": null,  <br>\"Occupation\": null,  <br>\"EmployerName\": null,  <br>\"EmployerAddress\": null,  <br>\"OfficePhoneNumber\": null,  <br>\"EmployeeIDType\": null,  <br>\"EmployeeID\": null,  <br>\"EmployeeIDNetIncome\": 0,  <br>\"EmployeeMDA\": null,  <br>\"EmployeePayDate\": null,  <br>\"StateOfEmployment\": null,  <br>\"MinistryOfLGA\": null,  <br>\"EmploymentDate\": null,  <br>\"EmployeeBankName\": null,  <br>\"EmployeeBankAccountName\": null,  <br>\"EmployeeBankAccountNumber\": null,  <br>\"Name\": null,  <br>\"Description\": null,  <br>\"BusinessPhoneNumber\": null,  <br>\"NatureOfBusiness\": null,  <br>\"IndustrialSector\": null,  <br>\"IndustrialSectorCode\": null,  <br>\"RegistrationDate\": null,  <br>\"IncorporationDate\": null,  <br>\"RegistrationNumber\": null,  <br>\"TIN\": null,  <br>\"ContactPersonName\": null,  <br>\"ContactPersonPhoneNumber\": null,  <br>\"CountryOfOperation\": null,  <br>\"StateOfOperation\": null,  <br>\"BVN\": null,  <br>\"OldCustomerID\": null,  <br>\"PEP\": false,  <br>\"DocumentIdentifier\": null,  <br>\"Alias\": null,  <br>\"NIN\": null,  <br>\"UserID\": null,  <br>\"DateCreated\": \"0001-01-01T00:00:00\",  <br>\"DateLastModified\": null,  <br>\"ID\": null ,  <br>\"OriginalRecipientAccount\":\"\",  <br>\"OriginalTransactionAmount\":\"\"  <br>} |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"23664397","collectionId":"fac418ad-789e-4774-ba19-d88b073b4df0","publishedId":"2s83zdw6dE","public":true,"publicUrl":"https://postman.udara360.io","privateUrl":"https://go.postman.co/documentation/23664397-fac418ad-789e-4774-ba19-d88b073b4df0","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2024-09-22T11:20:32.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/299134b38b9be837b2cdaed8743bf47d1cde87f8e58650e17be5f977ddc08a0c","favicon":"https://res.cloudinary.com/postman/image/upload/v1664995267/team/rvb3juvgdwkfybvoqjyw.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://postman.udara360.io/view/metadata/2s83zdw6dE"}