Classify and Connect Bank Transactions to Invoices and Receipts
Bring every transaction into one place: synced from your bank, imported from a file, or entered by hand. Then tie each one to the invoice, receipt, or payslip it belongs to, so your records are always connected and reconciled.
Start Today
WHY IT MATTERS
Always Know Where Your Money Went
One place for every transaction, no matter how the data arrives.
No more disconnected tools or scattered data. Every payment, transfer, and expense is brought together and linked with context, whether it is synced from your bank, imported from a file, or entered by hand.
Most tools stop at documents. Enlivy connects the dots, so you stop guessing and start seeing the full financial picture, clearly and instantly.
-
Effortless financial visibility:
track all your accounts, currencies, and payment sources in real time.
-
One place for every transaction:
from connected bank feeds to internal transfers, everything is organized and searchable.
-
Everything connected
Every transaction is classified, traceable, and linked to the invoices, receipts, and payslips it settles.
-
What is paid, and what is not
Know exactly what has been settled and what is still outstanding.
-
Where your money goes
See where money flows each month, and why.
-
Every invoice accounted for
Match payments to the invoices they settle, so nothing slips through.
-
Payroll and taxes, confirmed
Check that a salary payout went through, and that your taxes are covered.
THREE WAYS TO ADD
3 Ways to Add Transactions
Sync it, import it, or enter it by hand. However the data arrives, it lands in the same organized place, ready to classify and reconcile.
- Live Bank Sync
(Recommended) Connect your bank securely. Enlivy fetches your latest transactions automatically.
- Supports Wise, ING, PayPal, Revolut and more
- Works via PSD2-compliant providers
- No credentials stored, and access is read-only
- Updates daily or on demand
Ideal for teams who want ongoing visibility without manual work.
- CSV Import
Have an export from your bank or another tool? Drop it in, and we will help you map the data in minutes.
- Works with files from any bank or accounting software
- No formatting stress, we guide you step by step
- Preview everything before confirming
- Manual Entry
Quickly log one-off transactions like internal payments, reimbursements, or corrections.
- Takes seconds
- Great for edge cases or cash handling
- Easily connect to people, documents, or notes
Perfect when you need to track something that is not in your bank yet.
Transactions That Talk to Your Business
Every transaction is sorted two ways: what it is, and what it settles. So your statement stops being a list of mystery line items and turns into books you can trust.
- Client payment via Stripe + $256.33
- Type
- Standard, sale
- Links to
- Invoice INV-0042
- Monthly payroll run -8,600.00 RON
- Type
- Wage
- Links to
- Employee payslip
- Payroll and VAT to the tax authority -4,090.00 RON
- Type
- Wage Taxes / VAT
- Links to
- Filed by type
- Anthropic Claude subscription -180.00 EUR
- Type
- Software / SaaS
- Links to
- Filed by type
- Transfer between your own accounts 1,500.00 RON
- Type
- Internal transfer
- Links to
- Matching transaction
Type says what a transaction is. Link says which record it settles. Enlivy tracks whether each one is fully accounted for, and flags the moment the numbers do not add up, so tax season stays calm.
HOW IT WORKS
It's Really Simple
-
Add Transactions
Sync your bank, upload a file, or enter them manually.
-
Review and Connect
Categorize and link them to invoices, payslips, or internal transfers.
-
Track and Report
Monitor cash flow, spot anomalies, and prep clean reports with zero drama.
All in real time. All in one place.
Is my data secure with Enlivy?
Yes. Enlivy uses industry-grade encryption, secure authentication, and PSD2-compliant bank connections. Your login credentials are never stored or visible to us. All data syncs are read-only and fully under your control.
Which banks and services can I connect?
You can connect accounts from a wide range of supported banks and fintech providers including Revolut, ING, Wise, PayPal, Raiffeisen, Banca Transilvania, and many others. If your bank isn’t on the list, you can still upload your transactions using a CSV file.
Can I manage multiple bank accounts or companies?
Yes. You can connect and manage as many bank accounts as you need, across different banks, currencies, or legal entities. Whether you operate one company or several, Enlivy gives you a unified dashboard with clear filters and account tags to keep everything organized.
How often is my bank data updated?
Synced accounts refresh automatically. Most providers allow near real-time updates, while others sync several times per day. Enlivy handles the syncing behind the scenes, so your dashboard always stays current.
Can I categorize or tag transactions?
Absolutely. You can assign each transaction a cost type, such as “software,” “rent,” “salary,” , "subscription, "supplier invoice", "tax payment" or any custom label (cost type) you define.
Can I link transactions to invoices or other records?
Yes. Every transaction can be linked to invoices, receipts, contracts, payslips, or other relevant documents within Enlivy. This helps you track who paid what, match income and expenses to clients or projects, and keep your accounting audit-ready.
Can I edit transactions or fix mistakes after syncing?
Yes. Transactions can be edited to correct labels, add notes, or change categorizations. You can also override amounts or descriptions if needed (e.g. to fix formatting errors from CSV imports).
API Reference
Bank Transactions from the API
Bring every movement through your accounts into one ledger, then make sense of it. Bank transactions land in Enlivy from bank sync, Stripe payouts, or manual entry, and the API lets you classify them by cost type and reconcile them against the invoices, receipts, and payslips they settle. Each transaction tracks its own state, from backlog to fully connected.
Two resources work together: cost types (your reusable classification vocabulary like “Payroll”, “Client Payment”, “Software”, each declaring what it may be linked to) and bank transactions, the movements themselves. The examples below cover both, plus listing, filtering, reconciling, and analytics.
List the cost types you classify transactions with. Each carries a localized label, whether a link to a business entity is required, and which entity types it may connect to.
const organizationId = "your_org_id";
const token = "YOUR_TOKEN_HERE";
fetch(
`https://api.enlivy.com/organizations/${organizationId}/bank-transaction-cost-types?page=1&limit=50`,
{
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
}
}
); Define a classification category. Set whether transactions of this type must be reconciled, and, if so, which entity types they may be connected to. Cost types can be nested under a parent for a hierarchy.
const organizationId = "your_org_id";
const token = "YOUR_TOKEN_HERE";
fetch(`https://api.enlivy.com/organizations/${organizationId}/bank-transaction-cost-types`, {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
title_lang_map: { en: "Client Payment", ro: "Încasare client" }, // per-locale map
// does a transaction of this type have to be linked to a business entity?
connection_required: true,
// which entity types it may be connected to (required when connection_required = true)
// options: invoice | receipt | payslip | bank_transaction | user
connection_types: ["invoice", "receipt"],
// optional: parent cost type for a nested / hierarchical category
organization_bank_transaction_cost_type_id: null
})
}); Query transactions with pagination, search, and filters. Filter by classification state, direction, or by a specific connected entity, and bound by date. Expand the assigned cost type and the connected entities inline.
const organizationId = "your_org_id";
const token = "YOUR_TOKEN_HERE";
fetch(
`https://api.enlivy.com/organizations/${organizationId}/bank-transactions?page=1&limit=20` +
// state: backlog | classified | connected | connected_partially | danger | trashed
`&state=backlog&direction=inbound` +
// find transactions connected to a specific entity, send BOTH params together:
// `&connection_entity_type=invoice&connection_entity_id=invoice_id` +
// free-text search with q=... (min 3 chars) instead of ids
`&include=cost_type,connection_entities,bank_account`,
{
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
}
}
); Retrieve a single transaction: its amount and currency, direction, the assigned cost type, the entities it’s connected to, and any Stripe payout / reporting metadata for synced transactions.
const organizationId = "your_org_id";
const transactionId = "your_transaction_id";
const token = "YOUR_TOKEN_HERE";
fetch(
`https://api.enlivy.com/organizations/${organizationId}/bank-transactions/${transactionId}` +
// includes: organization, bank_account, cost_type, connection_entities, deleted_by_user, tag_ids
`?include=cost_type,connection_entities,bank_account`,
{
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
}
}
); Record a transaction manually (most transactions arrive automatically via bank sync or Stripe). You can classify it in the same call by passing a cost type and its connections.
const organizationId = "your_org_id";
const token = "YOUR_TOKEN_HERE";
fetch(`https://api.enlivy.com/organizations/${organizationId}/bank-transactions`, {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
hash: "unique-dedupe-key", // required; unique within a bank account (import de-dup key)
title: "Incoming transfer from Acme Studio",
amount: 1200.00, // money: signed decimal in MAJOR units (not cents)
// direction is DERIVED from the sign (positive = inbound, negative = outbound)
currency: "EUR",
organization_bank_account_id: "bank_account_id",
sender_label: "ACME STUDIO SRL", // free-text counterpart name from the bank feed
note: "Invoice #2026-0142 settlement"
// state is managed by classification (defaults to "backlog"), no need to set it.
// optionally classify inline with organization_bank_transaction_cost_type_id + connection_entities (see below).
})
}); The heart of the workflow. Assign a cost type to classify the transaction, then connect it to the entities it settles. Enlivy advances the transaction’s state as you go: assigning a cost type marks it classified; connecting entities marks it connected (or connected_partially if the linked amounts don’t cover the full transaction).
const organizationId = "your_org_id";
const transactionId = "your_transaction_id";
const token = "YOUR_TOKEN_HERE";
fetch(`https://api.enlivy.com/organizations/${organizationId}/bank-transactions/${transactionId}`, {
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
// 1. Classify, assign a cost type. Moves state: backlog -> classified.
organization_bank_transaction_cost_type_id: "cost_type_id",
// 2. Reconcile, link the transaction to what it pays for.
// connection_entity_type must be one of the cost type's allowed connection_types.
// The array is an UPSERT:
// { connection_entity_type, connection_entity_id, amount } -> create a link
// { id } -> keep an existing link
// { id, _deleted: true } -> remove a link
// (omitting an existing link does NOT delete it)
// Amounts covering the full transaction -> "connected"; partial -> "connected_partially".
connection_entities: [
{ connection_entity_type: "invoice", connection_entity_id: "invoice_id", amount: 1000.00 },
{ connection_entity_type: "receipt", connection_entity_id: "receipt_id", amount: 200.00 }
]
})
}); Read aggregate cash-flow analytics across your transactions: a point-in-time summary or a history_monthly breakdown, scoped by account, direction, state, and date range, and convertible to a single reporting currency.
const organizationId = "your_org_id";
const token = "YOUR_TOKEN_HERE";
fetch(
`https://api.enlivy.com/organizations/${organizationId}/bank-transactions/analytics/summary` +
// analyticsType: summary | history_monthly
`?start_date=2026-01-01&end_date=2026-12-31` +
`&direction=outbound&entity_state=connected&convert_to_currency=EUR`,
{
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
}
}
); Soft-delete a transaction (its state becomes trashed). It can be restored later.
const organizationId = "your_org_id";
const transactionId = "your_transaction_id";
const token = "YOUR_TOKEN_HERE";
// soft delete, restore via POST /bank-transactions/restore/{transactionId}
fetch(`https://api.enlivy.com/organizations/${organizationId}/bank-transactions/${transactionId}`, {
method: "DELETE",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
}
}); Works together with
- Bank Account Data See every connected account, balance, and transaction in one dashboard. Synced securely, kept current, and linked to the rest of your records.
- Data Export Export your invoices, receipts, payslips, contracts, and transactions in the format and folder structure your accountant expects, for any date range. Built in, no extra cost, ready in seconds.
- Invoices Create a compliant invoice in seconds, send it, and watch it link itself to the contract, payment, and bank transaction it belongs to. EU e-invoicing is built in, so the work between issuing and getting paid happens in one place.
- Payslips Build a payslip template once with the fields your business needs, then generate payslips for every employee in minutes. Each one links to its contract, payment, and bank transaction, so the whole record stays connected and traceable.
- Receipts Receipts gives you a structured record of every payment, money in and money out: linked to your invoices and contracts, with your cashflow always up to date.
- MCP Connect Enlivy to Claude, ChatGPT, Cursor, or any AI assistant through MCP. Ask about your invoices, contracts, and pipeline, and get real work done, safely scoped to exactly what your own account can already do.