Cross-border finance for SMEs
Only the net crosses the border.
Crossnetting gives export-oriented SMEs multi-currency accounts, one API for SEPA and cross-border payments, and EU compliance that runs itself. Payables offset receivables in the same currency — what’s left converts once.
Virtual IBANs · nine currenciesInteger minor-unit accountingDORA · MiCA · CSRD built in
This week · Nordwind Atelier AS
Sample data- Berlin Komponente GmbH
- +€ 48,500.00
- EUR
- Stord Atelier AS
- +NOK 180,000.00
- NOK
- Zürich Präzision AG
- −€ 26,750.00
- EUR
- Bergen Logistikk AS
- −NOK 312,000.00
- NOK
Netted position
EUR +21,750.00 · NOK −132,000.00
The euro surplus stays in euros. The krone shortfall is funded by €11,379.31 → NOK 132,000.00 @ 11.6000 — one conversion, one spread.
4 flows → 2 net positions → 1 conversion
Platform
Accounts, payments and treasury behind one API
The whole money layer of a border-crossing business, usable from day one in the dashboard or purely through the API.
Multi-currency accounts
Virtual IBANs across nine currencies — EUR, GBP, NOK, SEK, DKK, USD, CHF, PLN and CZK. Balances are integer minor units end to end — no float drift, ever.
Netted payments
SEPA and cross-border transfers, single or batch. Payables meet receivables in the same currency; only the shortfall converts.
Treasury that plans ahead
30/60/90-day liquidity forecasts built from your actual cash flows, with scenario bands you can hand a bank.
Quote, then execute
Every cross-border payment is created against a firm FX quote with an expiry. Your system decides when the rate is right; execution settles at exactly that rate. No silent conversions in the background.
- Settlement happens at the quoted rate, never a surprise one.
- Status moves are webhooked the moment they happen.
- Batch files accept partial results per item.
// 1 · quote — firm FX at creation
POST /v1/payments/cross-border
{
"fromAccountId": "acct_01",
"sourceAmountMinor": 31000000,
"sourceCurrency": "NOK",
"targetCurrency": "EUR",
"creditorIban": "CH56048350123B2E39508"
}
// 200 → status fx_quoted
{ "fxQuote": { "id": "q_9d2c", "rate": 0.0968 } }
// 2 · execute — settle at the quoted rate
POST /v1/payments/pay_7f3a/execute
{ "quoteId": "q_9d2c" }
// 200 → settled · €29,995.00 paidCompliance
Compliance you can hand an auditor
EU rulebooks are a cost of doing business across borders. Crossnetting turns them into dashboards and API reads instead of spreadsheet campaigns.
DORA
An ICT risk-control register your auditor can work from: status, last assessment and evidence per control.
MiCA
Classify any crypto asset against EU market rules — e-money, asset-referenced, utility or other — with the reasoning shown.
CSRD / ESG
Purchase transactions are auto-classified and scored against the EU taxonomy each quarter. No spreadsheet campaign.
Sample outputs from the demo dashboard.
Developers
Start with a curl. Ship with the SDK.
The API is the product. A zero-dependency TypeScript client, an OpenAPI spec for every other language, and tenant-scoped Bearer auth.
- Typed client with the same minor-unit money rules as the wire format.
- Webhooks for payment, compliance and account state changes.
- Errors carry stable codes — never parse a message for logic.
import { CrossnettingClient } from "@crossnetting/sdk";
const cx = new CrossnettingClient({
baseUrl: "https://api.crossnetting.test",
apiKey: process.env.CX_API_KEY,
tenantId: "nordwind-atelier",
});
// quote — firm FX at creation
const q = await cx.payments.crossBorder({
fromAccountId: "acct_01",
sourceAmount: { currency: "NOK", minor: 31000000 },
targetCurrency: "EUR",
});
// execute at the quoted rate
await cx.payments.execute(q.id, q.fxQuote.id);FAQ
Questions, answered
The same answers, machine-readable, live at /llms.txt for search and AI assistants.
- What is Crossnetting?
- An API-first cross-border treasury, payments and compliance platform for European SMEs: multi-currency accounts, netted SEPA and cross-border payments, FX and EU compliance (DORA, MiCA, CSRD) behind one gateway.
- Which currencies are supported?
- Nine: EUR, GBP, NOK, SEK, DKK, USD, CHF, PLN and CZK, each with a virtual IBAN. Common corridors like NOK to EUR settle through the same API as every other pair.
- How is money represented?
- As integers in each currency's minor unit — øre, cents — end to end, never floats. FX runs through firm, expiring quotes, and settlement happens at exactly the quoted rate.
- How do webhooks get verified?
- Every delivery carries an x-crossnetting-signature: v1=<hex> header — HMAC-SHA256 over the event id plus the raw JSON body, keyed by the shared secret configured on the gateway. Compare it against the raw bytes you received in constant time.
- Is it safe to retry a payment request?
- Yes. POST /v1/payments/cross-border and POST /v1/payments/batch accept an Idempotency-Key header, and replaying the identical request returns the stored response. Every response also carries an x-request-id header for log correlation.
See the ledger move.
The demo dashboard runs the full platform on deterministic sample data — accounts, payments, FX, compliance and ESG.