Cash visibility across every bank
Balances and transactions from every account, refreshed through direct bank APIs every fifteen minutes. Converted to your reporting currency at the live rate.
Keel connects every bank account, currency and payment rail your company uses. Finance gets a live cash position, global payouts with real controls, and reconciliation that closes itself.
Keel sits on top of your existing banks. Nothing moves until you say so, and every action is recorded.
Balances and transactions from every account, refreshed through direct bank APIs every fifteen minutes. Converted to your reporting currency at the live rate.
Pay suppliers over ACH, wire, SEPA, Faster Payments and Zengin from one screen, with the FX rate locked before you send.
Keel matches bank lines to ERP entries as they post. Your team reviews the exceptions, not the whole statement.
Write payment policies the way your board wrote them. Dual control, limits by entity and rail, and an audit trail that exports in one click.
Keel builds a rolling forecast from your receivables, payables and payroll calendar. Change an assumption and the whole quarter redraws.
Scenario
We had nineteen bank portals and a spreadsheet nobody trusted. Now the cash position is the first tab I open, and close went from nine days to four.
Our auditors asked for every payment over $250,000 and who approved it. That used to be a week of emails. With Keel it was one export.
Keel is software, not a bank. Your funds stay at your banks, and we hold ourselves to the standards they audit us against.
Audited annually by an independent firm. Reports available under NDA.
SAML with Okta, Entra ID and Google. Payment approval can require a FIDO2 key.
AES-256 at rest, TLS 1.3 in transit. Data stays in the US or the EU, your choice.
Every login, policy change and payment, signed and retained for seven years.
Two-way sync with your ERP, so payments and matched transactions post themselves. Everything in the app is also in the API.
import Keel from "@keel/node";
const keel = new Keel(process.env.KEEL_API_KEY);
const payment = await keel.payments.create({
from_account: "acct_9f2KxQ4021",
amount: 61240000, // $612,400.00, in cents
currency: "USD",
rail: "wire",
counterparty: "cp_arcadia_steel",
approval_policy: "treasury_dual_control",
});
console.log(payment.status); // "awaiting_approval"
import os
import keel
client = keel.Client(api_key=os.environ["KEEL_API_KEY"])
payment = client.payments.create(
from_account="acct_9f2KxQ4021",
amount=61_240_000, # $612,400.00, in cents
currency="USD",
rail="wire",
counterparty="cp_arcadia_steel",
approval_policy="treasury_dual_control",
)
print(payment.status) # awaiting_approval
curl https://api.keel.com/v2/payments \
-H "Authorization: Bearer $KEEL_API_KEY" \
-H "Idempotency-Key: 6c1f0a9e-2b7d-4e58" \
-d from_account=acct_9f2KxQ4021 \
-d amount=61240000 \
-d currency=USD \
-d rail=wire \
-d counterparty=cp_arcadia_steel \
-d approval_policy=treasury_dual_control
No per-transaction fees on ACH or SEPA. Wires at your bank's cost. FX at 0.15% over mid-market.
For companies with one entity and up to 25 accounts.
$990/ month
Billed annually, $11,880
Start a 30-day pilotFor multi-entity finance teams moving money across borders.
$2,820/ month
Billed annually, $33,840
Book a demoFor groups with complex banking, regulators and auditors.
Custom
Annual agreement
Talk to salesSomething else? Talk to our team.
No. Keel is software. Your money stays in the accounts you already have. When you make a payment, Keel instructs your bank directly through its API, over SWIFT, or with a host-to-host file, after your approval policy is met.
More than 14,000 institutions in 38 countries. We use direct bank APIs where they exist, SWIFT MT940 and MT942 statements for global banks, and secure aggregators for smaller regional banks.
The median is three weeks from signature to first payment. Read-only visibility usually comes first, often within days, while your banks enable payment permissions.
Yes. Many teams connect read-only, run Keel alongside their current process for a month, and turn on payments once they trust the numbers.
Keel syncs both ways with NetSuite, SAP S/4HANA, Dynamics 365 and Sage Intacct. Bills flow in for payment, and matched bank transactions post back with the right GL codes.
Nothing on top of your plan for ACH and SEPA. Wires cost whatever your bank charges. Cross-currency payments carry 0.15% over the mid-market rate, shown before you send.
Only the people your policies allow. Roles are scoped by entity, account and action, and no one can approve a payment they created.
Connect your banks read-only in an afternoon. A treasury specialist will walk your team through it.