Merchant enrichment for developers

Make sense
of the spend.

Messy transaction descriptions in. Structured merchant data out. One simple API for your app, with open source at its core.

ultrafinance.app   /   Explore merchants ↗

01 / Example request
curl 'https://ultrafinance.app/v1/enrich' \
  -H 'Content-Type: application/json' \
  -d '{
  "description": "STARBUCKS",
  "amount": "6.50",
  "currency": "CAD",
  "country": "CA"
}'
02 / Example response200 OK
{
  "merchant": {
    "status": "matched",
    "data": {
      "id": "mer_7ef5fd20e86f4237b039766ea9968b86",
      "name": "Starbucks",
      "markets": ["CA", "GB", "MX", "US"],
      "website": "https://www.starbucks.ca/",
      "categories": [
        {
          "id": "4bf58dd8d48988d128941735",
          "name": "Cafeteria",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {"id": "4bf58dd8d48988d128941735", "name": "Cafeteria"}
          ]
        },
        {
          "id": "4bf58dd8d48988d16d941735",
          "name": "Café",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {
              "id": "63be6904847c3692a84b9bb6",
              "name": "Cafe, Coffee, and Tea House"
            },
            {"id": "4bf58dd8d48988d16d941735", "name": "Café"}
          ]
        },
        {
          "id": "4bf58dd8d48988d1e0931735",
          "name": "Coffee Shop",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {
              "id": "63be6904847c3692a84b9bb6",
              "name": "Cafe, Coffee, and Tea House"
            },
            {"id": "4bf58dd8d48988d1e0931735", "name": "Coffee Shop"}
          ]
        },
        {
          "id": "4d4b7105d754a06374d81259",
          "name": "Restaurant",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {"id": "4d4b7105d754a06374d81259", "name": "Restaurant"}
          ]
        }
      ]
    }
  },
  "location": {"status": "unresolved", "data": null},
  "counterparties": [
    {
      "id": "mer_7ef5fd20e86f4237b039766ea9968b86",
      "name": "Starbucks",
      "markets": ["CA", "GB", "MX", "US"],
      "website": "https://www.starbucks.ca/",
      "categories": [
        {
          "id": "4bf58dd8d48988d128941735",
          "name": "Cafeteria",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {"id": "4bf58dd8d48988d128941735", "name": "Cafeteria"}
          ]
        },
        {
          "id": "4bf58dd8d48988d16d941735",
          "name": "Café",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {
              "id": "63be6904847c3692a84b9bb6",
              "name": "Cafe, Coffee, and Tea House"
            },
            {"id": "4bf58dd8d48988d16d941735", "name": "Café"}
          ]
        },
        {
          "id": "4bf58dd8d48988d1e0931735",
          "name": "Coffee Shop",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {
              "id": "63be6904847c3692a84b9bb6",
              "name": "Cafe, Coffee, and Tea House"
            },
            {"id": "4bf58dd8d48988d1e0931735", "name": "Coffee Shop"}
          ]
        },
        {
          "id": "4d4b7105d754a06374d81259",
          "name": "Restaurant",
          "path": [
            {
              "id": "63be6904847c3692a84b9bb5",
              "name": "Dining and Drinking"
            },
            {"id": "4d4b7105d754a06374d81259", "name": "Restaurant"}
          ]
        }
      ],
      "type": "merchant"
    }
  ],
  "kind": "purchase"
}
Actual API response
Try a real lookup

What’s behind the transaction?

Enter a transaction description. Add a little context, and see what the API returns.

Lookups are saved with no automatic expiry and may be sent to TypeSafe’s Jev AI service. Use a made-up description without personal details. Read our privacy policy and terms before submitting.

Live API response

Ready when you are.

Your lookup result will appear here. Uncertain matches can stay unresolved.

Explore the catalog

Meet the merchants.

Browse the catalog, or search names and aliases for the closest matches. Pick a merchant to try a lookup.

Browse or search to load merchants.

01 / INPUT

Start with what you have.

Only a description is required. Add amount, currency, country, or extra context when you have it.

02 / EVALUATE

Clear results. Honest uncertainty.

Get a merchant match when the evidence supports it. Ambiguous transactions can stay unresolved.

03 / BUILD

Hosted convenience. Open source.

Build against the hosted API, or run the Rust service yourself. The code is yours to explore.