# Rechnungs- und Einzahlungsstatus

Prüfen Sie eine Rechnung oder Einzahlung über die API, mit oder ohne Webhooks.

Source: https://docs.invoise.me/de/payments/status/

Lesen Sie den Status einer Rechnung oder Einzahlung über GET-Anfragen. Webhooks benachrichtigen Sie automatisch über Änderungen.

## Eine Rechnung oder Einzahlung abrufen

Verwenden Sie die `id`, die beim Erstellen der Rechnung oder Einzahlung zurückgegeben wurde:

```bash
curl 'https://platform.invoise.me/api/v1/shops/{shop_id}/issuances/{issuance_id}' \
  -H 'Authorization: Bearer ivk_...'
```

Relevante Felder aus einer Beispielantwort (andere Felder weggelassen):

```json
{
  "id": "f06b8a31-19c7-4687-ade3-1c09466d2751",
  "kind": "invoice",
  "status": "funded",
  "amount": "10000000",
  "received": "10000000",
  "token_decimals": 6,
  "expires_at": "2026-10-19T10:00:00Z",
  "cancelled_at": null,
  "disabled_at": null,
  "payout_tx_hash": null
}
```

Beide Beträge sind ganzzahlige Strings in Basiseinheiten. Dieses Beispiel bedeutet, dass 10 Token eingegangen sind, aber noch keine bestätigte Auszahlungstransaktion angezeigt wird.

## Eine Rechnung interpretieren

| `status` | Was zu tun ist |
| --- | --- |
| `registering` | Warten Sie auf eine nicht leere `address`. Leiten Sie keine selbst ab. |
| `open` | Weiter warten. `received` kann eine Teilzahlung anzeigen. |
| `funded` | Genügend bestätigte Mittel sind für die Abrechnung verfügbar. |
| `settled` | Die Rechnung wurde on-chain abgeschlossen. |
| `reconciling` | Auf den Abgleich warten; nicht als erfolgreiche Zahlung behandeln. |

Prüfen Sie außerdem `cancelled_at`. Es ist ein Zeitstempel oder `null`, kein Statuswert. Es wird gesetzt, wenn Sie die Rechnung stornieren, wenn eine unbezahlte Rechnung ihr `expires_at` überschreitet oder wenn das Invoise-Team den Händler sperrt; der Webhook `invoice.cancelled` unterscheidet diese Fälle anhand von [`data.reason`](https://docs.invoise.me/de/integration/webhooks/#2-die-benötigten-ereignisse-auswählen). Eine Stornierung verbirgt die Zahlungsseite, stoppt aber nicht eingehende Mittel oder die Abrechnung. Entscheiden Sie ausdrücklich, wie Ihr Unternehmen mit einer bezahlten, stornierten Rechnung umgeht.

`funded` bedeutet Zahlung erhalten, nicht Auszahlung abgeschlossen. `settled` erfasst den Abschluss der Rechnung. Für eine vollständige Auszahlungsabrechnung verwenden Sie `payout.confirmed`; `payout_tx_hash` identifiziert die zuletzt bestätigte ausgehende Überweisung an den Empfänger, sofern verfügbar.

Wenn Sie `transfer.reverted` erhalten, meldet Invoise die Rückabwicklung eines bestimmten eingehenden Transfers im Netzwerk. Identifizieren Sie ihn über `chain_event.reference_event_id`, lesen Sie den aktuellen Zustand der Rechnung und passen Sie Ihren Datensatz zu diesem Transfer einmalig an. Siehe [Webhooks](https://docs.invoise.me/de/integration/webhooks/) für das Ereignisformat.

## Einzahlungen verfolgen

Eine Einzahlungsadresse ist wiederverwendbar. Sie kann nach einer Auszahlung zu `open` zurückkehren, warten Sie also nicht darauf, dass sie dauerhaft `settled` wird.

`received` ist die **kumulierte bestätigte eingehende Summe**, nicht der verbleibende Saldo. Eine Auszahlung wird nicht davon abgezogen. Sie kann sinken, wenn ein Transfer zurückgenommen wird. Schreiben Sie jede eingehende Zahlung nur einmal gut; Webhooks sind dafür nützlich, da jedes Ereignis eine stabile ID hat.

`disabled_at` steuert die Verfügbarkeit der Zahlungsseite. Das Deaktivieren einer Einzahlung stoppt nicht die Überwachung ihrer Adresse.

## Rechnungen und Einzahlungen auflisten

```bash
curl 'https://platform.invoise.me/api/v1/shops/{shop_id}/payments?limit=50' \
  -H 'Authorization: Bearer ivk_...'
```

Mit `limit` (1–100) lautet die Antwort `{"items":[...],"next_cursor":"..."}`. Senden Sie `cursor` für die nächste Seite, bis `next_cursor` leer ist. Ohne Paginierungsparameter gibt der Endpunkt ein begrenztes Array zurück; es ist nicht der gesamte Verlauf.

Die Liste unterstützt die Filter `kind`, `status` und `q`. Ihr Filter `status=paid` wählt `funded` und `settled` aus; `paid` ist kein vom Detail-Endpunkt zurückgegebener Issuance-Status.

Das Feld `transfers` des Detail-Endpunkts enthält nur die zehn neuesten bestätigten eingehenden/Auszahlungseinträge. Verwenden Sie es nicht als vollständiges Hauptbuch.

## Öffentlicher Checkout-Status

`GET /api/v1/checkout/{public_id}` benötigt keine Zugangsdaten. Er liefert den Zustand der Zahlungsseite, einschließlich `status`, `received`, `amount` und `expires_at`. Verwenden Sie den authentifizierten Issuance-Endpunkt für die Shop-Datensätze Ihres Backends.

Für gepushte Updates und die Signaturprüfung siehe [Webhooks](https://docs.invoise.me/de/integration/webhooks/).
