Retrieve up to 24 months of customers’ transaction history effortlessly. Gain valuable insights into your customers financial patterns and behaviours.

With the Okra app, you can pull up to 24 months of historical and transactional statements across all banks in Nigeria, in real-time.

You can do this programmatically via our API, or manually, directly through the Okra dashboard without time-consuming OTP activities with your customer, which tend to fail.

Transactions data can be useful for different applications, including personal finance management, expense reporting, cash flow modeling, risk analysis, and more.

Okra transaction solves 3 main issues;

  1. Businesses need access to financial data: Okra helps companies pull up to 24 months of historical and transactional statements across all banks in Nigeria, in real-time.

  2. Financial data is raw and badly structured: Okra utilizes machine learning algorithms to clean, and analyze this raw data, so it can become useful for businesses.

  3. Integrating financial data into your products is usually cumbersome: At Okra our plug-and-play solution via the Okra app and various developer-friendly SDKs eliminates integration stress and accelerates time-to-market.

How it works

The Okra app is a front-end SDK that allows integrating with Okra as simple as writing a few lines of code. End-users will be prompted to link their account(s) and log in with their bank if Transactions are included in your product flows. If the developer receives permission, he or she will be able to view all of the account's transactions.

Data availability

  • Account types: Corporate accounts, savings accounts
  • Account information: Account number, identifier, balance, account type
  • Basic information: Amount, date, description
  • User information: Merchant name, Biodata

We have standardized the data across all financial institutions to allow you to pull one standard format across all banks in Nigeria via internet banking or USSD. We use machine learning technology to take the traditional non-descriptive narrative and break it down into: channel, benefactor, category, date, balance at the time of the transaction, geolocation data, flagging, and more — allowing us to give you the context and content behind transactions.

For Institutions that provide limited transactions and for non-programmatic needs we provide access to the customer's bank generated account statement, checkout PDF Statements for more info. You can also checkout Enhanced Transactions for a more detailed transaction view.

Transaction model

Transaction data includes the transaction date, amount, and more.

id ObjectIDUnique Auth ID (Unique Okra Identifier)
debit NumberThe amount deducted from an account
credit NumberThe amount credited to an account
account ObjectIDUnique account ID (Unique Okra Identifier)
connected BooleanCustomer connection status (Did they choose to connect this account to you?)
customer ObjectIDUnique Customer ID (Unique Okra Identifier) See Manage Customers
record ObjectIDUnique Record ID(Unique Okra Identifier) See Records
owner ObjectIDUnique Company ID(Unique Okra Identifier) ( Your Client Token)
env StringOkra API env the Auth was pulled from production or production-sandbox
created_at DateDate transaction was fetched
last_updated DateLast date transaction fetched
trans_date DateThe date a transaction occurred
cleared_date DateThe date a transaction was cleared at the bank
unformatted_trans_date StringThe date transaction occurred (from the bank)
unformatted_cleared_date StringThe date transaction cleared (from the bank)
branch StringThe branch transactions occurred
ref StringThe bank reference ID (from the bank)
env StringOkra API env the transaction was pulled from production or production-sandbox
code StringBank Code (from the bank)
benefactor ObjectIDCustomer ID of the sender (within Okra)
location StringThe location or channel the transaction took place
notes ObjectBreakdown of Narrative from bank
bank ObjectIDUnique Bank ID (Unique Okra Identifier)
balance NumberBalance after transaction line
mean IntegerMean Average Error: Average ‘naira’ the statement is off by

Download transactions statement

For Institutions that provide limited transactions and for non-programmatic needs we provide access to the customer's bank-generated account statement for the limit set in within your app integration or link.

Statements can be fetched via the API and also can be viewed and downloaded directly on our dashboard.

Via the dashboard

To get statements via the dashboard, the following are the steps you must follow,

  • Log into the Okra dashboard here
  • After you log in, navigate to Records and click on Transactions.
  • Next, click on any of the transactions you like to get a statement, click the export button and select a download format.

Via the API

You can download transactions within a particular date range using by making a POST request to /products/transactions/download directly from the API Reference.

Via the Okra app

You can pull the transaction of a user on the client-side of your application by using the buildWithOptions method.

The buildWithOptions method requires the following parameters;

NameThe name of your company
envIt refers to the production or sandbox environment.
Sandbox env - production-sandbox
Production env - production
app_idIt refers to the app_id from the app builder.
keyA secure code that enables you to make requests to our API and prove the ownership of their account.
tokenYour access control token that is used to share information between a client and a server.
productsThe array takes in the product types, in our case, it's auth and transactions.

Note: We pass in auth in the products array because it's responsible for linking the user's bank account.

import Okra from "okra-js";
import logo from "./logo.svg";
import "./App.css";

function App() {
  const widgetOkra = () => {
      name: "Peter the Builder",
      env: "production-sandbox",
      app_id: "", // app_id from your app builder
      products: ["auth", "transactions"], //others are ['auth','identity','balance','transactions'](in lowercase)
      onSuccess: function (data) {
        console.log("options success", data);
      onClose: function () {
        console.log("options close");
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>Okra test application</p>
        <button onClick={() => widgetOkra()}>Run Okra app</button>

export default App;

Now that you understand how the transaction works, check out the API Reference page to try out other transactions related endpoints in real-time.

Was this page helpful?