Buchung von Anfang bis Ende
Dieser Leitfaden durchläuft den vollständigen Ablauf zur Integration einer Buchung mit der Rently API:
Verfügbarkeit suchen → Preis berechnen → Zusatzleistungen wählen → erstellen → bezahlen. Jeder
Schritt nennt den echten Endpunkt (Methode + Pfad), die Schlüsselfelder und ein anpassbares
curl-Beispiel.
Es ist ratsam, den Kontext geladen zu haben (Sprachen, Währungen, Orte und Öffnungszeiten), um zu wissen, welche Buchungen erstellt werden können. Siehe Den Kontext vorbereiten.
Alle Endpunkte erfordern ein Bearer-Token (OAuth2): Senden Sie den Header
Authorization: Bearer {token} bei jeder Anfrage. Die Details jeder Operation finden Sie in der
API Reference →.
Sequenzdiagramm
Client Rently API
│ │
│ 1. GET /api/search ─────────────────────► │ sucht Verfügbarkeit + Preis
│ ◄──────────── List<Availability> ──────────┤
│ │
│ 2. GET /api/booking/price ──────────────► │ kalkuliert die gewählte Option
│ ◄──────────────── Booking ─────────────────┤
│ │
│ 3. GET /api/booking/additionals-price ──► │ verfügbare Zusatzleistungen + Preis
│ ◄──────────── List<AdditionalPriceItem> ───┤
│ │
│ 4. POST /api/booking/book ──────────────► │ erstellt die Buchung (mit Zusatzleistungen)
│ ◄────────── BookingId / Booking ───────────┤ → Reserved
│ │
│ 5. POST /api/booking/pay ───────────────► │ erfasst die Zahlung
│ ◄──────────────── Booking ─────────────────┤ Reserved → Confirmed
│ │
Zusammenfassung des Ablaufs:
- Verfügbarkeit suchen —
GET /api/search - Preis berechnen —
GET /api/booking/price - Zusatzleistungen wählen —
GET /api/booking/additionals-price - Die Buchung erstellen —
POST /api/booking/book - Bezahlen —
POST /api/booking/pay
Erstellen Sie mit IsQuotation=false (der Regelfall), bleibt die Buchung im Zustand Reserved und
geht beim Bezahlen nach Confirmed über. Sie können auch ein Angebot erstellen
(IsQuotation=true, Zustand Quoted), wenn Sie nur einen Kostenvoranschlag persistieren möchten; sehen
Sie in diesem Fall die API Reference für die Schritte zur Umwandlung ein.
Schritt 1 — Verfügbarkeit suchen
GET /api/search sucht verfügbare Fahrzeuge für einen Datumsbereich sowie Übergabe- und
Rückgabeorte und liefert jede Option mit ihrem bereits berechneten Preis pro Modell
(List<Availability>). Es funktioniert auch als anfängliche Preisberechnung.
Schlüsselfelder (gehen per Query-String):
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
From | date-time | Ja | Datum und Uhrzeit der Abholung. |
To | date-time | Ja | Datum und Uhrzeit der Rückgabe. |
FromPlace | int | Ja | ID des Übergabeorts (aus GET /api/places). |
ToPlace | int | Nein | ID des Rückgabeorts. Wird er weggelassen, wird FromPlace verwendet. |
CurrencyCode | string | Nein | Währung der Berechnung (aus GET /api/currencies). |
CommercialAgreementCode | string | Nein | Code der Geschäftsvereinbarung. |
PromotionCode | string | Nein | Anzuwendender Promotionscode. |
DriverAge | int | Nein | Alter des Fahrers (wird gegen die Grenzwerte des Mandanten validiert). |
IlimitedKm | bool | Nein | Wird es weggelassen, werden zwei Varianten pro Modell zurückgegeben (mit und ohne unbegrenzte km). |
curl -G "https://{tenant}.rently.com.ar/api/search?language=es-AR" \
-H "Authorization: Bearer {token}" \
--data-urlencode "From=2026-07-01T10:00:00" \
--data-urlencode "To=2026-07-05T10:00:00" \
--data-urlencode "FromPlace=1" \
--data-urlencode "ToPlace=1" \
--data-urlencode "CurrencyCode=USD" \
--data-urlencode "DriverAge=30"
Je nach Konfiguration des Mandanten kann die Verfügbarkeit nach Modell oder
nach Kategorie erfolgen. Das bestimmt, welche Kennung beim Kalkulieren und beim Erstellen der
Buchung zu verwenden ist (ModelId/Car.Model vs. CategoryId/Category). GET /api/search löst
dies intern auf.
Schritt 2 — Die gewählte Option kalkulieren
GET /api/booking/price berechnet den Gesamtpreis einer konkreten Konfiguration neu (Modell +
Daten + Orte). Es liefert ein Objekt Booking mit den aufgeschlüsselten Preisen, Selbstbeteiligungen
und verfügbaren Promotionen. Übernehmen Sie von hier den Price, um ihn (optional) im Schritt zur
Erstellung zu senden.
Schlüsselfelder (per Query-String):
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
ModelId | int | Ja | Zu kalkulierendes Modell (aus einem Ergebnis von GET /api/search). |
From / To | date-time | Ja | Dieselben Daten wie bei der Suche. |
FromPlace / ToPlace | int | Ja / Nein | Übergabe- und Rückgabeorte. |
Additionals | array | Nein | In die Berechnung einzubeziehende Zusatzleistungen (ID + Menge). |
Promotion | int | Nein | ID der anzuwendenden Promotion. |
CurrencyCode | string | Nein | Währung der Berechnung. |
DriverAge | int | Nein | Alter des Fahrers. |
curl -G "https://{tenant}.rently.com.ar/api/booking/price?language=es-AR" \
-H "Authorization: Bearer {token}" \
--data-urlencode "ModelId=1" \
--data-urlencode "From=2026-07-01T10:00:00" \
--data-urlencode "To=2026-07-05T10:00:00" \
--data-urlencode "FromPlace=1" \
--data-urlencode "ToPlace=1" \
--data-urlencode "CurrencyCode=USD" \
--data-urlencode "DriverAge=30"
Schritt 3 — Zusatzleistungen wählen
Bevor Sie die Buchung erstellen, fragen Sie ab, welche Zusatzleistungen zu dieser Konfiguration
hinzugefügt werden können (Versicherung, GPS, Kindersitz, Zusatzfahrer usw.) mit ihrem bereits für die
gewählten Daten berechneten Preis. GET /api/booking/additionals-price liefert die Liste
(List<AdditionalPriceItem>).
Schlüsselfelder (per Query-String):
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
FromDate / ToDate | date-time | Ja | Dieselben Daten der Buchung. |
ModelId | int | Nein* | Gewähltes Modell (wenn die Verfügbarkeit nach Modell erfolgt). |
CategoryId | int | Nein* | Gewählte Kategorie (wenn nach Kategorie). |
DeliveryPlaceId / ReturnPlaceId | int | Nein | Übergabe- und Rückgabeorte. |
CurrencyCode | string | Nein | Währung der Berechnung. |
Promotion | int | Nein | Angewandte Promotion. |
ModelId oder CategoryId an, je nachdem, wie der Mandant arbeitet.
curl -G "https://{tenant}.rently.com.ar/api/booking/additionals-price?language=es-AR" \
-H "Authorization: Bearer {token}" \
--data-urlencode "ModelId=1" \
--data-urlencode "FromDate=2026-07-01T10:00:00" \
--data-urlencode "ToDate=2026-07-05T10:00:00" \
--data-urlencode "DeliveryPlaceId=1" \
--data-urlencode "ReturnPlaceId=1" \
--data-urlencode "CurrencyCode=USD"
Jedes Element der Antwort beschreibt eine verfügbare Zusatzleistung:
[
{
"Id": 1,
"Name": "Seguro full",
"Description": "Cobertura todo riesgo con franquicia reducida",
"Price": 80.0,
"DailyPrice": 20.0,
"IsPriceByDay": true,
"MaxQuantityPerBooking": 1,
"AvailableStock": 999,
"IsRequired": false,
"Currency": "USD"
}
]
| Feld | Beschreibung |
|---|---|
Id | Kennung der Zusatzleistung. Sie wird beim Erstellen der Buchung gesendet. |
Name / Description | Name und Detail zur Anzeige. |
Price / DailyPrice / IsPriceByDay | Gesamtpreis und Preis pro Tag; IsPriceByDay gibt an, welcher gilt. |
MaxQuantityPerBooking | Maximale Menge, die von dieser Zusatzleistung hinzugefügt werden kann. |
AvailableStock | Für diese Daten verfügbarer Bestand. |
IsRequired | Ist es true, ist die Zusatzleistung verpflichtend und muss zwingend in der Buchung enthalten sein. |
Übergeben Sie im Body des POST /api/booking/book (Schritt 4) die gewählten Zusatzleistungen im Array
Additionals. Jedes Element verweist auf die Id der Zusatzleistung und die Menge:
"Additionals": [
{ "Additional": { "Id": 1 }, "Quantity": 1 },
{ "Additional": { "Id": 5 }, "Quantity": 2 }
]
Regeln: Die Quantity darf MaxQuantityPerBooking nicht überschreiten, und Zusatzleistungen mit
IsRequired=true müssen einbezogen werden. Damit der Gesamt-Price bei der Validierung
übereinstimmt (siehe Schritt 4), beziehen Sie dieselben Zusatzleistungen auch beim Kalkulieren ein
(Schritt 2).
Schritt 4 — Die Buchung erstellen
POST /api/booking/book erstellt die Buchung. Der Body ist ein SaveBookingModel (die Daten der
Buchung plus einige Flags). Es liefert BookingCreationResponse mit BookingId und CustomerId
oder das vollständige Objekt Booking, wenn Sie FullResponse=true senden. Mit IsQuotation=false
bleibt die Buchung im Zustand Reserved.
Schlüsselfelder des Body:
| Feld | Pflicht | Beschreibung |
|---|---|---|
FromDate / ToDate | Ja | Zeitraum der Vermietung. |
Customer | Ja | Kundendaten (Name oder Firstname/Lastname, DocumentId, DocumentTypeId, Age, EmailAddress). |
DeliveryPlace.Id | Ja | Übergabeort. |
ReturnPlace.Id | Nein | Rückgabeort (standardmäßig der Übergabeort). |
Car.Model oder Category | Ja (eines) | Car.Model (Id oder SIPP), wenn die Verfügbarkeit nach Modell erfolgt; Category (Id oder Name), wenn nach Kategorie. |
Currency | Ja | ISO-Währung (z. B. USD). |
Additionals | Nein | In Schritt 3 gewählte Zusatzleistungen (Additional.Id + Quantity). |
Price | Nein | Erwarteter Preis; wird mit 1 % Toleranz gegen den berechneten validiert. |
IsQuotation | Nein | true erstellt ein Angebot im Zustand Quoted. |
PromotionCode | Nein | Promotionscode. |
FullResponse | Nein | true liefert das vollständige Booking statt nur der IDs. |
curl -X POST "https://{tenant}.rently.com.ar/api/booking/book?language=es-AR" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"FullResponse": true,
"IsQuotation": false,
"Customer": {
"Name": "John Doe",
"DocumentId": "12345678",
"DocumentTypeId": 2,
"EmailAddress": "john.doe@example.com",
"Age": 30
},
"FromDate": "2026-07-01T10:00:00",
"ToDate": "2026-07-05T10:00:00",
"DeliveryPlace": { "Id": 1 },
"ReturnPlace": { "Id": 1 },
"Car": { "Model": { "Id": 1 } },
"Currency": "USD",
"Additionals": [
{ "Additional": { "Id": 1 }, "Quantity": 1 }
]
}'
Senden Sie Price und weicht er um mehr als 1 % vom durch den Tarif berechneten Preis ab, schlägt die
Operation mit PriceMismatch (ErrorCode 4) fehl. Kalkulieren Sie mit den gleichen
Zusatzleistungen (Schritt 2) und verwenden Sie diesen Preis, oder senden Sie kein Price und lassen
die API ihn berechnen.
Arbeitet der Mandant nach Kategorie, ersetzen Sie den Block Car durch
"Category": { "Id": 1 } (oder "Category": { "Name": "..." }).
Schritt 5 — Bezahlen
POST /api/booking/pay erfasst und stimmt die Zahlung je nach Gateway ab. Da die Buchung
Reserved ist, geht sie beim Bezahlen nach Confirmed über. Der Body ist ein PayBookingModel.
Schlüsselfelder des Body:
| Feld | Pflicht | Beschreibung |
|---|---|---|
BookingId | Ja | ID der Buchung (aus Schritt 4). |
GatewayId | Ja | Code des Gateways (z. B. STRIPE, ML, PL, TBANKCL, VOUCHER, BANKTRANSFER, CREDITCARD). |
Amount | Ja | Zu zahlender Betrag (> 0). |
CurrencyCode | Nein | ISO-Währung. |
TransactionId | Nein | ID der Transaktion im Gateway. |
BillingInformation | Nein | Rechnungsdaten (je nach Gateway). |
curl -X POST "https://{tenant}.rently.com.ar/api/booking/pay?language=es-AR" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"BookingId": 12345,
"GatewayId": "STRIPE",
"Amount": 199.99,
"CurrencyCode": "USD",
"TransactionId": "TXN123",
"BillingInformation": {
"FirstName": "John",
"LastName": "Doe",
"DocumentTypeId": 1,
"DocumentId": "123456789",
"EmailAddress": "john.doe@example.com"
}
}'
Die Buchung abfragen
Sie können jederzeit den Status, den Saldo und die Preise der Buchung mit
GET /api/booking/{bookingId} abfragen.
curl -G "https://{tenant}.rently.com.ar/api/booking/12345?language=es-AR" \
-H "Authorization: Bearer {token}"
Um die erfassten Zahlungen einer Buchung aufzulisten, verwenden Sie GET /api/bookingPayments/{bookingId}.
Nächste Schritte
- API Reference → — alle Endpunkte mit ihren Schemas, Beispielen und der Schaltfläche Try it.
- Sobald die Buchung bestätigt ist, folgen die operativen Abläufe: Self-Check-in
(
PUT /api/selfcheckin), Übergabe und Rückgabe sowie Vorfälle und Verstöße.