neo-pays

Auszahlungen

Geld von Ihrem Guthaben an eine Mobile-Wallet oder ein Bankkonto senden.

Eine Auszahlung anlegen

POST /v1/payouts

Senden Sie einen Idempotency-Key — hier zählt er noch mehr als beim Einzug: eine ohne Idempotenz wiederholte Auszahlung würde zweimal zahlen.

Feld Pflicht Beschreibung
asset_id ja Das Asset, über seine Kennung
amount_minor ja Zeichenkette, in kleinsten Einheiten
country ja Land der Operation (ISO 3166-1 alpha-2)
platform_id ja Die Auszahlungsplattform (GET /v1/corridors)
recipient ja Der Empfänger — siehe unten
platform_account_handle Das belastete Unterkonto. Leer = das primäre des Korridors
rail Erzwingt ein bestimmtes Rail
client_ref Ihre Referenz
description Freitext

Der Empfänger ist typisiert

"recipient": {
  "name": "Mouhamadou Sy",
  "identifier_type": "msisdn",
  "identifier": "+221771234567"
}

identifier_type sagt, welche Art von Adresse Sie haben (msisdn, iban, ein Alias …), und identifier trägt sie. Das erlaubt einer Plattform mit mehreren Rails aufzulösen, ohne dass Sie eines benennen müssen.

phone allein bleibt vollständig akzeptiert und wird als (msisdn, phone) gelesen. Beide Formen anzugeben, oder einen Typ ohne Wert, wird abgelehnt — nie erraten.

Zuerst das Guthaben

Eine Auszahlung wird Ihrem verfügbaren Guthaben belastet:

GET /v1/balances

Guthaben werden je Asset und je (Plattform, Land) zurückgegeben, mit verfügbar, ausstehend und reserviert. Das Reservierte deckt bereits zugesagte Abgänge: es ist nicht ausgebbar.

Guthaben werden nie über Assets hinweg addiert. Auf dieser Plattform gibt es keine Währungsumrechnung, eine Summe über alle Assets hätte also keine Bedeutung.

Eine Auszahlung, die das Verfügbare überschreiten würde, wird sofort abgelehnt, in der Antwort selbst: 422 mit dem Code insufficient_funds. Sie wartet nie auf Deckung — eine Überziehung gibt es nicht.

Eine Abhebung von Ihrem Guthaben beantragen

POST /v1/payout-requests
GET  /v1/payout-requests
GET  /v1/payout-requests/{id}

Das ist ein Antrag, keine Auszahlung. Es bewegt sich kein Geld und nichts wird reserviert: die Operation öffnet im Status requested, und ein Mensch entscheidet sie im Dashboard. Das ist die Maker-Checker-Trennung — der API-Schlüssel beantragt, ein Kontoinhaber entscheidet. Eine Stornierung gibt es bewusst nicht: ein offener Antrag hält nichts fest, also wird er auf der Entscheiderseite abgelehnt.

Der Betrag ist BRUTTO: die Abhebungsgebühren werden davon abgezogen, nicht aufgeschlagen. Ohne hinterlegte Gebührentabelle für das Asset wird der Antrag mit 409 abgelehnt — eine kostenlose Abhebung ist eine bewusst erfasste Null-Zeile, nie eine Abwesenheit.

Verfolgung

payout.success, payout.failed und payout.cancelled kommen per Webhook; GET /v1/payouts/{id} gibt den Stand auf Anfrage.