Immutable, open-source ledger for developers who move money • • •

You're halfway done with Blnk. Let Blnk handle the complex ledger and accounting infrastructure under the hood, so your team can stay focused on shipping your product.
PLAY
Developer-first

Build with tools you already use

Blnk is API-first, with SDKs that let you integrate quickly in the languages you already use.
Explore documentation

You can use Blnk with any programming language, framework or stack.

Plug Blnk into your existing apps and systems without rebuilding your core logic.

Get started in 5 minutes with our comprehensive docs or get answers from our Discord community.

cURL
Node.js
Go
Python
PHP
Java

1

2

3

4

5

6

7

8

9

10

11

curl -X POST http://localhost:5001/transactions \
    -H 'Content-Type: application/json' \
    -d '{
          "amount": 1230.12,
          "precision": 100,
          "currency": "USD",
          "source": "@FundingPool",
          "destination": "@Frederick-Bates",
          "reference": "ref_funding_001",
          "description": "Wallet funding"
        }'

1

2

3

4

5

6

7

8

9

10

11

async function createTransaction() {
 const tx = await blnk.transactions.create({
   amount: 1230.12,
   precision: 100,
   currency: "USD",
   source: "@FundingPool",
   destination: "@Frederick-Bates",
   reference: "ref_funding_001",
   description: "Wallet funding"
 });
}

1

2

3

4

5

6

7

8

9

10

11

12

13

func main() {
    client := blnk.NewClient("http://localhost:5001")

    client.Transactions.Create(context.TODO(), blnk.Transaction{
       Amount:      1230.12,
       Precision:   100,
       Currency:    "USD",
       Source:      "@FundingPool",
       Destination: "@Frederick-Bates",
       Reference:   "ref_funding_001",
       Description: "Wallet funding",
   })
}

1

2

3

4

5

6

7

8

9

10

11

import requests

requests.post("http://localhost:5001/transactions", json={
   "amount":1230.12,
   "precision":100,
   "currency":"USD",
   "source":"@FundingPool",
   "destination":"@Frederick-Bates",
   "reference":"ref_funding_001",
   "description":"Wallet funding"
})

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

$ch = curl_init("http://localhost:5001/transactions");

curl_setopt_array($ch, [
   CURLOPT_POST => true,
   CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
   CURLOPT_POSTFIELDS => json_encode([
      "amount" => 1230.12,
      "precision" => 100,
      "currency" => "USD",
      "source" => "@FundingPool",
      "destination" => "@Frederick-Bates",
      "reference" => "ref_funding_001",
      "description" => "Wallet funding"
   ]),
]);

curl_exec($ch);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

HttpRequest request = HttpRequest.newBuilder()
   .uri(URI.create("http://localhost:5001/transactions"))
   .header("Content-Type","application/json")
   .POST(HttpRequest.BodyPublishers.ofString("""
      {   "amount":1230.12,
           "precision":100,
           "currency":"USD",
           "source":"@FundingPool",
           "destination":"@Frederick-Bates",
           "reference":"ref_funding_001",
           "description":"Wallet funding"
      }
   """
))
   .build();

HttpClient.newHttpClient()
   .send(request, HttpResponse.BodyHandlers.discarding());
HTTP 200 OK
{
   "id": "txn_6164573b-6cc8-45a4-ad2e-7b4ba6a60f7d",
   "status": "APPLIED",
   "created_at": "2025-10-12T01:36:46.997063436Z",
   "amount": 1230.12,
   "precision": 100,
   "precise_amount": 123012,
   "currency": "USD",
   "source": "@FundingPool",
   "destination": "@Frederick-Bates",
   "reference": "ref_funding_001",
   "description": "Wallet funding"
}
Manage balances across multiple currencies
Read docs
Multi-currency support
out-of-the-box

Track fiat, crypto or custom currencies side by side without losing a cent.

Multi-currency support out of the box
Balance monitoring

Define thresholds and get alerted when balances cross set limits.

Balance monitors
Organize your balances into ledgers

Group balances into ledgers for cleaner structure, reporting, and reconciliation.

Group balances into ledgers
Balance snapshots

Capture point-in-time states of balances for reporting, audits, or analytics.

Balance snapshots
Historical balances

Retrieve balances at a particular historical point in time in your ledger.

Historical balances
Yousend
Integration was seamless, and the fact that it's open-source adds flexibility. On top of that, Blnk is incredibly fast, making it a solid choice for high-performance financial systems.
Toni Akinmolayan
Senior Software Engineer
Read story
Building blocks to power any transaction workflow
Read docs
Track transactions through their entire lifecycle

See every state change, from applied, rejected, inflight, or void.

Transaction statues
Record your transactions to the smallest cent

Capture every money movement with precision, down to fractions of a unit.

Precision
Apply overdrafts to transactions

Allow balances to go negative safely, with clear overdraft limits.

Apply overdrafts
Inflight transactions

Hold transactions and commit only after other events clear or decline.

Blnk Core asset
Backdated transactions

Insert transactions into the past to correct balances without breaking accuracy.

Backdated transaction
Bulk transactions

Handle large batches of transactions in one go, with the option to enforce all-or-nothing commits.

Bulk transaction
Reconcile external records with your ledger
Read docs
Set matching rules

Define how records should be matched — by currency, amounts, dates, reference, or description.

Set matching rules
Reconciliation strategies

Choose a strategy that fits your operational workflow — one to one, one to many, or many to one.

Reconciliation strategy
Batch reconciliation

Process large sets of external records (bank statements, provider records, etc.) at once and match them against your ledger.

Bulk reconciliation
Instant reconciliation

Automatically reconcile transactions as they occur.

Instant reconciliation
Morna Tech
From day one, we knew Blnk was the right fit. What should’ve taken a year took us just a few months to finish, allowing us launch faster than we planned.
Kevis Rondon
CTO & Co-founder
Read story
Your users and their financial activities in one place
Read docs
Manage individuals & organizations

Create and manage user or business profiles.

Create identity
Link to balances

Connect identities directly to balances and transactions for a complete financial picture.

Link balances
PII tokenization

Protect sensitive data by tokenizing personally identifiable information (PII) in your ledger.

PII tokenization
Seamless integration with your systems
Search API

Retrieve ledgers, balances, transactions, and identities in your Core for your application.

Search API
Hooks

Register and manage webhooks for transactions in your ledger.

Hooks
Flexible metadata handling

Add or update metadata on any record and make it instantly searchable.

Metadata
Contributors

Built for developers by developers.

Join us on Discord
@jerry-enebeli
@antgspakr
@codehakase
@brenmat
@rafaelcarvalho
caetano
@RyanCarlisle
@RABit85
@artempanko
@asureshotfantasy
@Raene
@anhbaysgalan1
@toniastro
@TechticalRAM
@unix4lyf
Ready to build?

Your financial product starts here

No calls. No long back-and-forths. Choose the setup that fits you best and start right away. Still want a conversation?
Self-host Blnk Core

Self-host your ledger for free in minutes

Pull the Github repo, spin it up and start building with your new ledger.
Costs
$0 forever
Download Blnk Core
Blnk Deploy

… or deploy a managed ledger on our Cloud

Skip the hassle of self-hosting. Instantly deploy a production-ready Core instance on our Cloud, get your credentials, and start building in minutes.
Starts from
$200.00 / mo
Sign up to Blnk Cloud
Frequently
asked questions
Have other questions, send us an email at support@blnkfinance.com
Is Core really free to use?
open faq icon
Yes. Core is open-source under the Apache 2.0 license. You can download, use, inspect, and extend it without any license fees or hidden commitments.
Can Core handle multiple currencies?
open faq icon
Yes. Core is built with multi-currency support. You can maintain balances, perform conversions, and reconcile across different currencies.
Can I connect Core to other systems?
open faq icon
Yes. Core exposes APIs and supports webhooks, making it easy to integrate with payment processors, banking systems, or your custom back-office workflows.
How do I get started with Core?
open faq icon
You can install Core by following the quickstart guide in the docs. Read here.
Do you offer integration support for Core?
open faq icon
Yes, we provide Pro Support for teams that want guided help. With Pro Support, our team assists with ledger design, integration questions, and troubleshooting as you set up and scale Core in production. Reach out to get started.
I have more questions. How do I get answers?
open faq icon