Turn Transaction
Data Into Valuable Insights

Trusted by the region’s leading banks & fintechs

See Lune in Action
Key Features
Transaction Categorization
Make sense of your user's 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 user's spending preferences.
Brand Logo
Enhance transactions with visuals. We add high-quality logos to transactions, making it easier and quicker to identify brands visually.
Explore More
Explore More
Explore More
Explore More
Gain insights on:
  • Information about your users
  • Spend per transaction type
  • Categories
  • Cashflow

Backed by

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 3d5t2s73ff05dc02e4102a442891c11aew364gr3',
  '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 3d5t2s73ff05dc02e4102a442891c11aew364gr3', 
    '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 3d5t2s73ff05dc02e4102a442891c11aew364gr3")
  .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 3d5t2s73ff05dc02e4102a442891c11aew364gr3");
  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 3d5t2s73ff05dc02e4102a442891c11aew364gr3")
  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