Skip to main content
Accounts is the money-holding pillar. Wallets hold EUR balances, transfers move them between Ovra wallets or out to external IBANs via SEPA, and beneficiaries are saved external recipients. Multi-wallet per organization is supported, and wallets can be hierarchical (parent → child) for cost-center splits.
Sandbox-only today. SEPA-out is simulated end-to-end with deterministic IBANs (DE89370400440{N}). v1.3+ wires real SEPA settlement through the banking partner.

The wallet model

Operations

The same surface is mirrored under /accounts/* for clients that prefer the business term.

Create a wallet

Beneficiaries — saved external recipients

IBANs are validated by format check (full mod-97 happens server-side at the banking partner). Bank URLs are SSRF-checked.

Transfers

Split transfers

Atomic 1-to-N split with mixed percentage and fixed-amount legs (sum of percentages ≤ 100):

Funding

POST /fund tops up a wallet. In sandbox, use simulate: true for instant balance:
v1.3+ adds real SEPA inbound via the dedicated wallet IBAN.

Ledger

Every money movement appends one or more rows to ledger_entries: Append-only — never updated, never deleted.

Plan-tier volume

Overage is a soft cap with a 0.3–0.5% fee on volume above the limit. No hard block.

Webhooks

  • wallet.created
  • wallet.funded
  • wallet.credited
  • transfer.completed
  • transfer.failed
  • transfer.split.completed

Surfaces

Next

Collect

Inbound payment requests against your wallets.

Funding

How EUR enters Ovra in sandbox vs live.

Compliance

Where the funds live — partner posture.