Build traceable transaction workflowson an open-source ledger
Model each money movement as an immutable double-entry transaction. Run Blnk Core yourself or deploy and operate it with Blnk Cloud.
git clone https://github.com/blnkfinance/blnk && cd blnk && docker compose up Transaction details
Transaction workflows
const response = await blnk.Transactions.create({ precise_amount: 125034, precision: 100, currency: 'USD', source: '@WorldUSD', destination: '@MyBalance', reference: 'ref_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94', description: 'Customer payment', skip_queue: true,}); Blnk Core
Built-in correctnessand reliability
-
Double-entry accounting
Every transaction has a source and a destination. Debits always equal credits, so the books cannot silently drift.
-
Immutable records
Recorded transactions cannot be edited or deleted. History is only appended.
-
Reliable at scale
Concurrent transactions are ordered and applied safely, preventing conflicting writes from corrupting balances under high traffic.
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.
Blnk Core
Model multicurrency workflowswith precise money movement
-
Balances in any currency
Store multiple currencies in the same ledger and organize balances in ledger folders.
-
Currency exchange workflows
Model FX conversions and move value between currencies with a complete transaction audit trail.
-
Exact amounts, any asset
Record BTC, ETH, and other digital assets down to their smallest supported unit.
Blnk Core
Reserve funds with inflight. Release or clear only whenyour conditions are met.
For four years we billed on bare Postgres: one transaction in, another out, no balances. It wasn't a ledger. On Blnk, everything is accounted for and auditable. There hasn't been a case where money went missing. We can add new features easily, and expand into more currencies without rebuilding.
Blnk Core
Integrate your ledger transactions withyour existing stack, provider or payment rail
-
Your ledger is the source of truth
Put it in front of any payment provider or rail and integrate the third parties you already use.
-
Post from the stack you already have
Use our REST API and SDKs with the languages and infrastructure you already use.
const response = await blnk.Transactions.create({ precise_amount: 123012, precision: 100, currency: 'USD', source: '@WorldUSD', destination: '@MyBalance', reference: 'ref_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94', description: 'Wallet top-up for Ada Okonkwo', inflight: true, allow_overdraft: true, skip_queue: true,});if (checksComplete) { await blnk.Transactions.updateStatus( response.data.transaction_id, { status: 'commit' }, );} else { await blnk.Transactions.updateStatus( response.data.transaction_id, { status: 'void' }, );}curl -X POST "http://YOUR_BLNK_INSTANCE_URL/transactions" \ -H "X-blnk-key: $BLNK_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "precise_amount": 123012, "precision": 100, "currency": "USD", "source": "@WorldUSD", "destination": "@MyBalance", "reference": "ref_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94", "description": "Wallet top-up for Ada Okonkwo", "inflight": true, "allow_overdraft": true, "skip_queue": true }'if [ "$CHECKS_COMPLETE" = true ]; then curl -X PUT "http://YOUR_BLNK_INSTANCE_URL/transactions/inflight/$TRANSACTION_ID" \ -H "X-blnk-key: $BLNK_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "status": "commit" }'else curl -X PUT "http://YOUR_BLNK_INSTANCE_URL/transactions/inflight/$TRANSACTION_ID" \ -H "X-blnk-key: $BLNK_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "status": "void" }'fitransaction, resp, err := client.Transaction.Create( blnkgo.CreateTransactionRequest{ ParentTransaction: blnkgo.ParentTransaction{ PreciseAmount: big.NewInt(123012), Precision: 100, Currency: "USD", Source: "@WorldUSD", Destination: "@MyBalance", Reference: "ref_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94", Description: "Wallet top-up for Ada Okonkwo", }, Inflight: true, AllowOverdraft: true, SkipQueue: true, },)if checksComplete { transaction, resp, err = client.Transaction.Update( transaction.TransactionID, blnkgo.UpdateStatus{ Status: blnkgo.InflightStatusCommit }, )} else { transaction, resp, err = client.Transaction.Update( transaction.TransactionID, blnkgo.UpdateStatus{ Status: blnkgo.InflightStatusVoid }, )}response = blnk.transactions.create({ "precise_amount": 123012, "precision": 100, "currency": "USD", "source": "@WorldUSD", "destination": "@MyBalance", "reference": "ref_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94", "description": "Wallet top-up for Ada Okonkwo", "inflight": True, "allow_overdraft": True, "skip_queue": True,})if checks_complete: blnk.transactions.update_status( response["transaction_id"], {"status": "commit"}, )else: blnk.transactions.update_status( response["transaction_id"], {"status": "void"}, )ApiResponse<JsonNode> response = blnk.transactions().create( CreateTransactions.create() .preciseAmount(123012) .precision(100) .currency("USD") .source("@WorldUSD") .destination("@MyBalance") .reference("ref_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94") .description("Wallet top-up for Ada Okonkwo") .inflight(true) .allowOverdraft(true) .skipQueue(true));if (checksComplete) { blnk.transactions().updateStatus( response.data().get("transaction_id").asText(), UpdateTransactionStatus.create().status("commit"));} else { blnk.transactions().updateStatus( response.data().get("transaction_id").asText(), UpdateTransactionStatus.create().status("void"));} -
Automate reconciliation
Match ledger transactions against external records and quickly identify discrepancies across payment rails.
Blnk Cloud
Deploy production-grade ledgers on our Cloud
We provision the infrastructure, tune the hardware, and manage the boring ops. You ship and enjoy the performance.
Dedicated infrastructure
Single-tenant hardware. Isolated environment, isolated resources. No noisy neighbours.
99.9% uptime SLA
Under 44 minutes of allowed downtime per month. We aim for zero. Read full SLA.
Zero-downtime backups
Automated backups on the live instance. Restore without taking the ledger offline.
High availability
Automated failover. If a node goes offline, our systems bring the deployment back automatically.
Faster speed & throughput
Throughput up to 100,000 TPM. Higher limits on request.
30-min SEV 1 response
When your instance is unavailable, first response within 30 minutes. We keep you updated until it’s resolved.
We had just secured our license and planned for about a year of build time to build something audit-ready and compliant. Using Blnk cut that to six months. All of our features were tracked accurately with complete audit trail.
Support
Dedicated support, in Slack, all year
Pro Support puts your team in a Slack Connect channel with ours. We design the ledger with you, help you ship, and stay on-call after launch.
The support from the team was incredible. They not only guided us through their product but also helped us implement it within our system. The level of attention and dedication was truly exceptional. We couldn’t ask for better partners.
Ledger design
Pro Support Tell us the product. We design the ledger architecture that will hold at your scale.
Private Slack channel
Pro Support Your team and ours in one Slack Connect channel. We work the issue with you there until it's resolved.
PoC development
Pro Support We help you build your use case in Blnk so you can see the flows before you commit the full integration.
Dedicated integration docs
Pro Support A guide written for your product: the ledgers to create, each money flow, and the API calls to implement it.
24/7 availability
Pro Support On-call across timezones. Someone on the team picks up within the hour, nights and weekends included.
30-min SEV-1 response
Production If the ledger is unavailable, our engineers are on it in 30 minutes. Also included with Production.
Security
Open-source ledger infrastructure you can trust
Blnk is ISO/IEC 27001-certified and GDPR-compliant. Built with security features and best practices auditors ask for.
How we handle securityISO/IEC 27001 and GDPR
Blnk’s ISMS is certified to ISO/IEC 27001. Personal data is processed under GDPR.
Encryption in transit and at rest
Sensitive data at rest is encrypted with AES-256-GCM. Data in transit uses TLS 1.2 or higher.
Role-based access control
Give every team member the access they need, and nothing more.
Built for security reviews
We support vendor and security reviews with clear policies around incident response and business continuity.
FAQs
Have other questions? Email us at [email protected].
What is Blnk Core?
Blnk Core is an open-source ledger for transaction workflows. You post the movement. Core keeps the balances, conversions, rails, and matches around it.
What can I build with Blnk Core?
You can build products that need to track money and balances, including wallets, lending products, marketplaces, savings, insurance, trading, and payment applications.
Is Blnk a payment provider or payment rail?
No. Blnk is the ledger. You continue to use providers and rails such as Stripe, Unit, bank transfers, or card networks to move money. Blnk records those movements and keeps your financial state in one place.
Can Blnk work alongside my existing ledger?
Yes. You can run Blnk as a shadow ledger alongside your existing system. This gives you a way to validate balances and transaction records before making it the primary ledger.
How does Blnk keep balances accurate?
Every transaction has a source and a destination. Debits always equal credits, so the books cannot silently drift. Concurrent transactions are applied in order, and configurable precision prevents unwanted rounding.
How do I integrate Blnk with my application?
Blnk provides REST APIs that you can use from any language or framework. You can integrate it into your existing application stack without adopting a specific programming language or infrastructure.
Can I try Blnk before using it in production?
Yes. You can create a Blnk Cloud sandbox , create balances, post transactions, connect a payment rail, and test your workflows before moving to production.
Is Blnk Core free?
The open-source Core engine is free to run. Paid offerings are available for teams that need managed infrastructure, a back office, support, production guarantees, or commercial licensing.
Can Blnk handle production workloads?
Yes. Blnk is designed to handle production financial workloads, from startup applications to systems processing high transaction volumes. Your deployment architecture and infrastructure determine the capacity of a specific installation.