Skip to content

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
Flows
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.
POST /v1/payments/cross-border
// 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 paid

Compliance

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.

compliantpartialgap

MiCA

Classify any crypto asset against EU market rules — e-money, asset-referenced, utility or other — with the reasoning shown.

E-money token (EMT)

CSRD / ESG

Purchase transactions are auto-classified and scored against the EU taxonomy each quarter. No spreadsheet campaign.

2026-Q3EU taxonomy 64%

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.

Getting started guide → · API reference →

payments.ts
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.

Open the demo dashboard