Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://docs.getovra.com/llms.txt

Use this file to discover all available pages before exploring further.

Konten ist die geldhaltende Säule. Wallets halten EUR-Balances, Transfers bewegen sie zwischen Ovra-Wallets oder per SEPA an externe IBANs, Beneficiaries sind gespeicherte externe Empfänger. Multi-Wallet pro Org wird unterstützt; Wallets können hierarchisch (Parent → Child) sein für Cost-Center-Splits.
Heute Sandbox-only. SEPA-Out wird End-to-End simuliert mit deterministischen IBANs (DE89370400440{N}). v1.3+ verdrahtet echtes SEPA-Settlement durch den Banking-Partner.

Das Wallet-Modell

FeldBeschreibung
idwal_*
name / purposeFreitext
currencyImmer EUR
balanceEurosNumerisch, EUR
iban / bicDedizierte IBAN pro Wallet (Sandbox: deterministisch pro Index)
parentWalletIdOptional — unterstützt hierarchische Wallets
isDefaultGenau ein Wallet pro Org ist Default
statusactive · frozen · closed
metadataBeliebiges JSON

Operationen

EndpointZweck
GET /wallets, GET /wallets/:idListe + Detail
POST /walletsErstellen (mehrere pro Org möglich)
PATCH /wallets/:idName / Purpose / Default updaten
DELETE /wallets/:idSchließen (terminal)
Dieselbe Surface gespiegelt unter /accounts/* für Clients die den Business-Begriff bevorzugen.

Wallet erstellen

curl -X POST https://api.getovra.com/wallets \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "name": "Marketing-Budget",
    "purpose": "Q2-Werbeausgaben",
    "currency": "EUR"
  }'

Beneficiaries — gespeicherte externe Empfänger

FeldBeschreibung
idben_*
name, iban, bic, country, emailEmpfänger-Detail
ibanMaskedDisplay-safe maskierte Form
statusactive etc.
curl -X POST https://api.getovra.com/beneficiaries \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme GmbH",
    "iban": "DE89370400440000001234",
    "country": "DE"
  }'
IBANs werden per Format-Check validiert (volle Mod-97 läuft server-seitig beim Banking-Partner). Bank-URLs sind SSRF-checked.

Transfers

FeldBeschreibung
sourceWalletIdOrigin
destinationTypewallet oder beneficiary (Discriminated Union)
destinationWalletId / destinationBeneficiaryIdTarget
amountEurosEUR
transferMethodSEPA oder SEPAINST (SEPA Instant)
purposeFreitext
groupIdFür Split-Transfers
curl -X POST https://api.getovra.com/transfers \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "sourceWalletId": "wal_...",
    "destinationType": "beneficiary",
    "destinationBeneficiaryId": "ben_...",
    "amountEuros": 199.00,
    "transferMethod": "SEPAINST",
    "purpose": "Rechnung 2026-042"
  }'

Split-Transfers

Atomarer 1-zu-N-Split mit gemischten Prozent- und Fixed-Amount-Legs (Summe Prozent ≤ 100):
curl -X POST https://api.getovra.com/transfers/split \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "sourceWalletId": "wal_...",
    "totalAmountEuros": 1000,
    "purpose": "Q2-Royalties",
    "legs": [
      { "destinationType": "wallet", "destinationWalletId": "wal_a", "percentage": 60 },
      { "destinationType": "wallet", "destinationWalletId": "wal_b", "percentage": 30 },
      { "destinationType": "beneficiary", "destinationBeneficiaryId": "ben_x", "percentage": 10 }
    ]
  }'

Funding

POST /fund lädt ein Wallet auf. In Sandbox simulate: true für instant Balance:
curl -X POST https://api.getovra.com/fund \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ "walletId": "wal_...", "amountEuros": 500, "simulate": true }'
v1.3+ ergänzt echten SEPA-Inbound via dedizierter Wallet-IBAN.

Ledger

Jede Geldbewegung append-tet eine oder mehrere Rows in ledger_entries:
FeldBeschreibung
accountTypewallet · card · overdraft
accountIdWallet, Card oder Owner
amountEurosSigned (Debit negativ, Credit positiv)
typepayment, transfer, mpp_payment etc.
referenceCross-Link zu Transaktion oder Transfer
correlationIdWorkflow-Korrelation
Append-only — niemals updated, niemals gelöscht.

Plan-Tier-Volume

PlanVolume €/mo
Free150
Starter2.000
Business5.000
EnterpriseUnbegrenzt
Overage ist Soft-Cap mit 0,3–0,5 % Fee auf Volume über Limit. Kein Hard-Block.

Webhooks

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

Surfaces

SurfaceCapability
REST/wallets, /accounts, /transfers, /beneficiaries, /fund
SDKovra.wallets, ovra.transfers, ovra.beneficiaries
MCPovra_account, ovra_payment, ovra_vendor
Dashboard/dashboard/accounts (Wallets, Transfers, Beneficiaries in einer Tab-View)

Weiter

Einzug

Eingehende Payment-Requests gegen deine Wallets.

Funding

Wie EUR in Sandbox vs Live in Ovra eintritt.

Compliance

Wo die Funds liegen — Partner-Posture.