Payment Links-API
Die Payment Links-API hilft Unternehmen dabei, Zahlungslinks mit spezifischen Details wie Zahlungsbetrag, Währung, Beschreibung und Kundeninformationen zu generieren und anzupassen.
Sobald der Zahlungslink generiert wurde, können Unternehmen ihn per E-Mail, über soziale Medien oder andere Kommunikationskanäle mit ihren Kunden teilen. Wenn der Kunde auf den Link klickt, wird er auf eine Zahlungsverarbeitungsseite weitergeleitet, auf der er seine Zahlungsdaten eingeben und die Transaktion abschließen kann.
Einen neuen Zahlungslink erstellen¶
Endpunkt
POST /v1/payment-links/
Dieser Endpunkt ermöglicht es Ihnen, einen oder mehrere Zahlungslinks für bestimmte Kunden oder ohne Kundendetails zu erstellen.
Query-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| test | Gibt an, ob sich der Zahlungslink im Testmodus befindet | boolean | nein |
Felder im Request-Body:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| description | Beschreibung der Zahlung | string | ja |
| amount | Zahlungsbetrag (Minimum USD $1,00 Gegenwert) | decimal | ja |
| currency | Währungscode (Standard: USD) | string | nein |
| customers | Array von Kundenobjekten oder Kunden-IDs | array | nein |
Felder im Kundenobjekt (falls neue Kunden angegeben werden):
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| id | Vorhandene Kunden-UUID | string | nein |
| customer | Alternative Kunden-ID | string | nein |
| first_name | Vorname des Kunden | string | nein* |
| last_name | Nachname des Kunden | string | nein* |
| E-Mail-Adresse des Kunden | string | nein* |
*Zusammen erforderlich, wenn id oder customer nicht angegeben werden
Anfrage (Einzelnen Zahlungslink erstellen):
curl -X POST 'https://api.4geeks.io/v1/payment-links/?test=false' \
-u 'sk_test_51O62xYzAbcDef123:' \
-H 'Content-Type: application/json' \
-d '{
"description": "Premium Subscription 1 Year",
"amount": 99.99,
"currency": "USD",
"customers": []
}'
Anfrage (Zahlungslink für mehrere Kunden erstellen):
curl -X POST 'https://api.4geeks.io/v1/payment-links/?test=false' \
-u 'sk_test_51O62xYzAbcDef123:' \
-H 'Content-Type: application/json' \
-d '{
"description": "Product License",
"amount": 49.99,
"currency": "USD",
"customers": [
{
"id": "550e8400-e29b-41d4-a716-446655440000"
},
{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com"
}
]
}'
Antwort (201 Created - Einzelner Link):
{
"code": 201,
"title": "Zahlungslink erstellt",
"content": "Der Zahlungslink wurde korrekt erstellt.",
"type": "success",
"data": {
"id": "b3196f0b-bcba-46bc-b833-0bc845007c89",
"link": "http://localhost:4200/pl/b3196f0b-bcba-46bc-b833-0bc845007c89"
}
}
Antwort (201 Created - Mehrere Links):
{
"code": 201,
"title": "Zahlungslink erstellt",
"content": "Die Zahlungslinks wurden korrekt erstellt.",
"type": "success",
"data": [
{
"id": "987f6543-b21c-43d8-a567-123456789abc",
"customer": "550e8400-e29b-41d4-a716-446655440000",
"customer_name": "Alex Miller",
"link": "http://localhost:3000/pl/987f6543-b21c-43d8-a567-123456789abc"
},
{
"id": "aabbccdd-1122-3344-5566-77889900aabb",
"customer": "650f9501-f40c-52e5-c827-557766551111",
"customer_name": "John Doe",
"link": "http://localhost:3000/pl/aabbccdd-1122-3344-5566-77889900aabb"
}
]
}
Alle Zahlungslinks abrufen¶
Endpunkt
GET /v1/payment-links/
Dieser Endpunkt ruft alle Zahlungslinks für Ihr Konto mit Unterstützung für Pagination ab.
Query-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| page | Seitennummer für die Pagination | integer | nein |
| test | Nach Testmodus filtern (true/false) | boolean | nein |
Anfrage:
Anfrage (Mit Pagination):
Antwort (200 OK):
{
"count": 15,
"next": "https://api.4geeks.io/v1/payment-links/?page=2",
"previous": null,
"results": [
{
"id": "aabbccdd-1122-3344-5566-77889900aabb",
"description": "Premium Subscription 1 Year",
"amount": "99.99",
"currency": "USD",
"payment_link": true,
"active": true,
"recurring": false,
"next_date_of_payment": null,
"status": "pending",
"test": false,
"created_on": "2025-12-04T10:30:00Z"
},
{
"id": "ccddee11-2233-4455-6677-88990011aabb",
"description": "Product License",
"amount": "49.99",
"currency": "USD",
"payment_link": true,
"active": true,
"recurring": false,
"next_date_of_payment": null,
"status": "pending",
"test": false,
"created_on": "2025-12-03T15:45:00Z"
}
]
}
Einen bestimmten Zahlungslink abrufen¶
Endpunkt
GET /v1/payment-links/{id}/
Dieser Endpunkt ruft die vollständigen Details eines bestimmten Zahlungslinks anhand seiner ID ab.
Pfad-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| id | Die eindeutige Kennung eines Zahlungslinks | string | ja |
Anfrage:
curl -X GET 'https://api.4geeks.io/v1/payment-links/aabbccdd-1122-3344-5566-77889900aabb/' \
-u 'sk_test_51O62xYzAbcDef123:'
Antwort (200 OK):
{
"id": "b3196f0b-bcba-46bc-b833-0bc845007c89",
"description": "Premium Subscription 1 Year",
"amount": 99.99,
"currency": "USD",
"payment_link": true,
"active": true,
"recurring": false,
"next_date_of_payment": null,
"status": "pending",
"test": false,
"created_on": "2025-12-04T22:56:39.903352Z",
"payment_logs": []
}
Einen Zahlungslink aktualisieren¶
Endpunkt
PUT /v1/payment-links/{id}/
Aktualisiert einen bestehenden Zahlungslink mit neuen Details.
Pfad-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| id | Die eindeutige Kennung eines Zahlungslinks | string | ja |
Felder im Request-Body (alle optional):
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| product | Die ID des zugehörigen Produkts | string | nein |
| customer | Die ID des Kunden (oder null zum Entfernen) | string | nein |
| active | Ob der Zahlungslink aktiv ist | boolean | nein |
| recurring | Bestimmt, ob der Zahlungslink wiederkehrend ist | boolean | nein |
| next_date_of_payment | Nächstes geplantes Zahlungsdatum (YYYY-MM-DD HH:MM:SS) | string | nein |
| status | Der aktuelle Status des Links | string | nein |
| test | Wenn true, ist der Link im Testmodus; false für Produktion | boolean | nein |
Gültige Statuswerte:
pending- Wartet auf Zahlungpaid- Zahlung abgeschlossenpaid_period- Zeitraumzahlung abgeschlossenpending_period- Zeitraumzahlung ausstehendcancelled/canceled- Link storniertdefaulter- Zahlung überfälligactive- Link ist aktivinactive- Link ist inaktiv
Anfrage:
curl -X PUT 'https://api.4geeks.io/v1/payment-links/aabbccdd-1122-3344-5566-77889900aabb/' \
-u 'sk_test_51O62xYzAbcDef123:' \
-H 'Content-Type: application/json' \
-d '{
"active": true,
"status": "pending",
"recurring": false,
"customer": null
}'
Antwort (200 OK):
{
"code": 200,
"title": "Zahlungslink aktualisiert",
"content": "Der Zahlungslink wurde erfolgreich aktualisiert.",
"type": "success"
}
Antwort (400 Bad Request - Ungültiger Status):
{
"code": 400,
"title": "Ungültiger Status",
"content": "Der angegebene Zustand ist ungültig.",
"type": "error"
}
Einen Zahlungslink löschen¶
Endpunkt
DELETE /v1/payment-links/{id}/
Löscht einen bestimmten Zahlungslink.
Pfad-Parameter:
| Parameter | Beschreibung | Typ | Erforderlich |
|---|---|---|---|
| id | Die eindeutige Kennung eines Zahlungslinks | string | ja |
Anfrage:
curl -X DELETE 'https://api.4geeks.io/v1/payment-links/aabbccdd-1122-3344-5566-77889900aabb/' \
-u 'sk_test_51O62xYzAbcDef123:'
Antwort (200 OK):
{
"code": 200,
"title": "Gelöscht",
"content": "Der Zahlungslink wurde erfolgreich entfernt.",
"type": "success"
}
Fehlerbehandlung¶
Die API gibt Standard-HTTP-Statuscodes zurück, um den Erfolg oder Misserfolg einer Anfrage anzuzeigen. Nachfolgend sind häufige Fehler aufgeführt, die spezifisch für Zahlungslinks sind:
400 Bad Request¶
Tritt auf, wenn die Anfrage fehlerhaft ist oder erforderliche Felder fehlen.
Szenarien:
| Szenario | Fehlermeldung | Lösung |
|---|---|---|
| Fehlende Beschreibung | "Sie haben keine Beschreibung für die Zahlung angegeben." | Fügen Sie das Feld description hinzu |
| Fehlender Betrag | "Sie haben keinen Preis für die Zahlung angegeben." | Fügen Sie das Feld amount hinzu |
| Betrag unter Minimum | "Der Betrag entspricht $X USD, was unter dem Minimum von $1,00 USD liegt" | Erhöhen Sie den Betrag auf mindestens $1,00 USD Gegenwert |
| Ungültige Kundendaten | "Sie haben weder Vorname, Nachname und E-Mail noch eine Kunden-ID angegeben." | Geben Sie entweder eine vorhandene Kunden-ID oder vollständige Kundendetails an |
| Ungültiges Datumsformat | "Das Datumsformat muss YYYY-MM-DD HH:MM:SS sein" | Verwenden Sie das Format: 2025-12-25 14:30:00 |
| Ungültiger Status | "Der angegebene Zustand ist ungültig." | Verwenden Sie einen gültigen Status: pending, paid, cancelled, etc. |
Beispiel für eine Fehlerantwort:
{
"code": 406,
"title": "Fehlende Daten",
"content": "Sie haben keine Beschreibung für die Zahlung angegeben.",
"type": "danger"
}
401 Unauthorized¶
Authentifizierung fehlgeschlagen. Der API-Key ist ungültig, fehlt oder ist fehlerhaft.
Beispiel:
Lösung:
- Überprüfen Sie, ob Sie den Parameter
-u 'sk_test_...:oder den HeaderAuthorization: Basichinzugefügt haben - Stellen Sie sicher, dass Ihr API-Key korrekt und aktiv ist
- Testen Sie mit Postman unter Verwendung von Basic Auth
404 Not Found¶
Der angeforderte Zahlungslink existiert nicht.
Beispiel:
{
"code": 404,
"title": "Zahlungslink nicht gefunden",
"content": "Der Zahlungslink konnte nicht gefunden werden, bitte überprüfen Sie die ID.",
"type": "danger"
}
Lösung:
- Überprüfen Sie, ob die Zahlungslink-ID existiert
- Verwenden Sie den List-Endpunkt, um die korrekte Zahlungslink-ID zu finden
- Stellen Sie sicher, dass der Zahlungslink zu Ihrem Entwicklerkonto gehört
Wichtige Hinweise¶
Validierung des Zahlungslinks
- Der Betrag muss mindestens dem Gegenwert von USD $1,00 entsprechen
- Eine Beschreibung ist obligatorisch
- Links können nach der Bezahlung nicht mehr geändert werden
Kundeninformationen
- Zahlungslinks können mit oder ohne Kundeninformationen erstellt werden
- Wenn Sie Links für bestehende Kunden erstellen, geben Sie deren UUID an
- Wenn Sie Links für neue Kunden erstellen, geben Sie
first_name,last_nameundemailan
Zahlungsstatus
- Zahlungslinks beginnen im Status
pending - Der Status wird automatisch basierend auf der Zahlungsaktivität aktualisiert
- Wiederkehrende Links wechseln nach der Zahlung in den Status
paid_period
Test vs. Produktion
- Verwenden Sie Ihren Test-Key (
sk_test_...) für die Entwicklung und zum Testen - Verwenden Sie Ihren Live-Key (
sk_live_...) für echte Transaktionen - Der Query-Parameter
?test=trueoder?test=falsesteuert den Modus - Das System erkennt den Modus automatisch anhand des verwendeten API-Keys
Best Practices¶
- Klare Beschreibungen hinzufügen – Helfen Sie Kunden zu verstehen, wofür sie bezahlen
- Richtige Währung verwenden – Passen Sie diese an Ihre Geschäftsregion und die Kundenerwartungen an
- Mindestbeträge festlegen – Stellen Sie sicher, dass die Beträge mindestens dem Gegenwert von $1,00 USD entsprechen
- Kunden zuweisen – Verknüpfen Sie Zahlungen mit Kundendatensätzen für eine bessere Nachverfolgung
- Zahlungsprotokolle überwachen – Verwenden Sie Zahlungsprotokolle, um Transaktionen abzugleichen
- Status angemessen aktualisieren – Halten Sie den Status des Zahlungslinks mit dem tatsächlichen Zahlungszustand synchron
- Vor der Produktion testen – Verwenden Sie den Testmodus mit Test-API-Keys zur Validierung
Fehlerbehebung¶
Problem: „Der Betrag liegt unter dem Minimum“¶
Ursache: Der Zahlungsbetrag ist geringer als der Gegenwert von USD $1,00
Lösung:
- Erhöhen Sie das Feld
amountauf mindestens 1.00 - Überprüfen Sie die Währungsumrechnung, wenn Sie eine andere Währung als USD verwenden
Problem: „Sie haben keine Beschreibung angegeben“¶
Ursache: Erforderliches Feld description fehlt
Lösung:
- Geben Sie einen klaren, beschreibenden Titel für die Zahlung an
- Beispiel: “Premium-Abonnement”, “Produktlizenz”, “Servicegebühr”
Problem: „Sie haben weder Vorname, Nachname und E-Mail noch eine Kunden-ID angegeben“¶
Ursache: Unvollständige Kundeninformationen
Lösung:
- Geben Sie entweder eine bestehende Kunden-ID im Array
customersan - Oder geben Sie vollständige Kundendetails an:
first_name,last_nameundemail
Problem: „Der angegebene Zustand ist ungültig“¶
Ursache: Ungültiger Statuswert angegeben
Lösung:
- Verwenden Sie nur gültige Statuswerte: pending, paid, paid_period, pending_period, cancelled, canceled, defaulter, active, inactive
- Lesen Sie in der Dokumentation nach, wie Status definiert sind
Problem: „Zahlungslink nicht gefunden“¶
Ursache: Die Zahlungslink-ID existiert nicht oder gehört zu einem anderen Entwicklerkonto
Lösung:
- Überprüfen Sie die Zahlungslink-ID über den List-Endpunkt
- Stellen Sie sicher, dass Sie den richtigen API-Key verwenden
- Überprüfen Sie, ob der Zahlungslink nicht gelöscht wurde
- Noch Fragen? Get support.
- Check out the changelog.