Turn Transaction
Data Into Valuable Insights

Top Brand

Trusted by the region’s leading banks & fintechs

nbf
D360
BEYON MONEY
ALAAN
Mod5r
simplifi
Fintech Galaxy
D360
BEYON Money
See Lune in Action
Key Features
Transaction Categorization
Make sense of your users’ spending effortlessly. We classify transactions into intuitive, easy-to-understand categories.
Sub-Categorization
We go a step further with sub-categories, giving users a closer look at the specifics of each transaction.
Brand Name
No more guesswork. We directly link transactions to the correct brand names, providing an additional layer of understanding about your users’ spending preferences.
Brand Logo
Enhance transactions with visuals. We add high-quality logos to transactions, making it easier and quicker to identify brands visually.
Carbon footprint
Explore More
Explore More
Explore More
Explore More
Gain insights on:
  • Information about your users
  • Spend per transaction type
  • Categories
  • Cashflow

Backed by

DIFC Logo
AREA 2071
Logo
FLAT6LABS
Microsoft for Startups
Disrupt
Build Future-Proof Fintechs & Digital Banks, with Lune
High Accuracy
Experience unparalleled precision in transaction data enrichment and merchant categorization.
Works in Real-Time
See transaction data enriched within seconds of a transaction occurring. No waiting, just real-time insights.
Build Customer Loyalty
Enhance user trust and loyalty by providing full control and transparency over their transaction data.
User-Centric
Leverage essential insights and tools to create a product that is centered around your user’s specific needs.
Easy Integration
Leverage our easy-to-use plug & play API, and gain access to enriched data within days, not weeks.
Bank-Grade Security
Secure all transaction insights with bank-grade TLS encryption technology, ensuring security and privacy.
High Accuracy
Experience unparalleled precision in transaction data enrichment and merchant categorization.
Works in Real-Time
See transaction data enriched within seconds of a transaction occurring. No waiting, just real-time insights.
Build Customer Loyalty
Enhance user trust and loyalty by providing full control and transparency over their transaction data.
User-Centric
Leverage essential insights and tools to create a product that is centered around your user’s specific needs.
Easy Integration
Leverage our easy-to-use plug & play API, and gain access to enriched data within days, not weeks.
Bank-Grade Security
Secure all transaction insights with bank-grade TLS encryption technology, ensuring security and privacy.

import requests
import json

url = "https://api.lunedata.io/api/v1/transaction/enrich/"

payload = json.dumps({
  "raw_description": "ENOC SZR, 2231 ld4",
  "amount": 120
})
headers = {
  'Authorization': 'Token --YOUR Token--',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

var axios = require('axios');
var data = JSON.stringify({
  "raw_description": "ENOC SZR, 2231 ld4",
  "amount": 120
});

var config = {
  method: 'post',
  url: 'https://api.lunedata.io/api/v1/transaction/enrich/',
  headers: { 
    'Authorization': 'Token --YOUR Token--', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
  
MediaType mediaType = MediaType.parse("application/json");

RequestBody body = RequestBody.create(mediaType,"{\n  \"raw_description\": \"ENOC SZR, 2231 ld4\",\n  \"amount\": 120\n}");

Request request = new Request.Builder()
  .url("https://api.lunedata.io/api/v1/transaction/enrich/")
  .method("POST", body)
  .addHeader("Authorization", "Token --YOUR Token--")
  .addHeader("Content-Type", "application/json")
  .build();
  
Response response = client.newCall(request).execute();


CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(curl, CURLOPT_URL, "https://api.lunedata.io/api/v1/transaction/enrich/");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "Authorization: Token --YOUR Token--");
  headers = curl_slist_append(headers, "Content-Type: application/json");
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  const char *data = "{\n  \"raw_description\": \"ENOC SZR, 2231 ld4\",\n  \"amount\": 120\n}";
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);

package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.lunedata.io/api/v1/transaction/enrich/"
  method := "POST"

  payload := strings.NewReader(`{
  "raw_description": "ENOC SZR, 2231 ld4",
  "amount": 120
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Token --YOUR Token--")
  req.Header.Add("Content-Type", "application/json")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
See Documentation