API reference · Rentals

Rental bookings

Price a trip, book it, manage it, check the customer in, cancel it.

post/rentals/quotes

Price a trip

The exact price for a car, dates and extras, before anything is created. Adds a one-way fee when the drop-off is a different airport.

Request body · application/json

  • vehicleIdintegerrequired
  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • extrasarray of string
  • dropoffLocationstring

    Airport code. Default: the car’s own airport.

Response 200

In data:

  • currencystring

    Always NGN.

  • daysintegerrequired

    Billable days: 24-hour blocks from pick-up, with 60 minutes’ grace.

  • dailyRateinteger

    Amount in kobo (₦1 = 100 kobo).

  • linesarray of QuoteLinerequired
    Show 6 fields
    • codestringrequired

      rental, an extra’s code, one_way or discount.

    • labelstringrequired
    • quantityinteger
    • unitAmountinteger

      Amount in kobo (₦1 = 100 kobo).

    • amountintegerrequired

      Negative for a discount.

    • pricingenum

      per_dayflatdiscount

  • listSubtotalinteger

    Before any discount.

  • discountobject · nullable
    Show 3 fields
    • codestring
    • labelstring
    • amountinteger

      Amount in kobo (₦1 = 100 kobo).

  • subtotalintegerrequired

    What the rental costs (car + extras). Revenue is split from this.

  • depositintegerrequired

    Refundable hold, never revenue.

  • totalintegerrequired

    subtotal + deposit: what is charged up front.

Errors

  • 400invalid: something in the request is wrong. The message says what.
  • 401unauthorized: the API key is missing, wrong or revoked.
  • 404not_found: no such thing, or it is not yours.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/rentals/quotes" \
  -H "Authorization: Bearer wc_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "vehicleId": 12,
  "from": "2026-11-20T10:00:00+01:00",
  "to": "2026-11-23T10:00:00+01:00",
  "extras": [
    "gps"
  ],
  "dropoffLocation": "ABV"
}'
Response · 200
{
  "data": {
    "currency": "NGN",
    "days": 3,
    "dailyRate": 4500000,
    "lines": [
      {
        "code": "rental",
        "label": "Car rental",
        "quantity": 3,
        "unitAmount": 4500000,
        "amount": 13500000
      },
      {
        "code": "gps",
        "label": "GPS navigation",
        "quantity": 3,
        "unitAmount": 150000,
        "amount": 450000
      }
    ],
    "listSubtotal": 13950000,
    "discount": null,
    "subtotal": 13950000,
    "deposit": 8000000,
    "total": 21950000
  }
}
post/rentals/bookings

Create a booking

Idempotent: send an Idempotency-Key

Holds the car for about 20 minutes and returns a checkoutUrl to send the customer to. The booking becomes confirmed by itself when the payment succeeds: you do not call anything. Two customers can never hold the same car for overlapping dates; the loser gets 409.

Headers

  • Idempotency-Keystring

    A unique value you choose (a UUID). Repeat the request with the same key and you get the same result, not a second booking.

    Example: 6b2f7c3e-6f0a-4a3e-9d1c-1c2b6f1a9e55

Request body · application/json

  • vehicleIdintegerrequired
  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • pickupLocationstring

    Airport code. Default: the car’s own.

  • dropoffLocationstring
  • extrasarray of string
  • customerCustomerInputrequired
    Show 6 fields
    • namestringrequired

      Full name as on the driver’s licence.

    • emailstringrequired
    • phonestringrequired
    • licenseNumberstringrequired

      The driver’s licence number.

    • licenseExpirydate-time

      Must be after the rental ends.

    • licenseCountrystring

      ISO country code. Default NG.

  • flightNumberstring

    Arrival flight, e.g. W3123.

  • metadataobject

    Up to 10 pairs, keys up to 40 characters, values up to 500.

  • returnUrlstring

    Where the customer lands after paying. We add ?booking=WC-…

Response 201

In data:

  • referencestringrequired

    e.g. WC-7KQ2M9XA. Show it to your customer.

  • statusenumrequired

    pending_paymentconfirmedactivecompletedcancelledexpired

  • testboolean

    True for a sandbox booking.

  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • vehicleVehiclerequired
    Show 15 fields
    • idintegerrequired
    • titlestringrequired

      e.g. “2021 Toyota Camry”.

    • makestring
    • modelstring
    • yearinteger
    • classenumrequired

      economysedansuvvanluxury

    • transmissionenum

      automaticmanual

    • fuelenum

      petroldieselhybridelectric

    • seatsinteger
    • colourstring · nullable
    • photosarray of string
    • dailyRateintegerrequired

      Price per 24 hours.

    • depositinteger

      Refundable deposit.

    • locationobjectrequired
      Show 4 fields
      • idinteger
      • codestringrequired
      • namestring
      • citystring
    • ratingobject · nullable
      Show 2 fields
      • averagenumber

        Average of 1 to 5 stars, one decimal.

      • countinteger

        Published reviews of this car.

  • pickupobject
    Show 3 fields
    • codestring
    • namestring
    • instructionsstring · nullable
  • dropoffobject
    Show 2 fields
    • codestring
    • namestring
  • customerCustomer
    Show 3 fields
    • namestringrequired
    • emailstringrequired
    • phonestringrequired

      International format preferred, e.g. +2348031234567.

  • priceobjectrequired
    Show 9 fields
    • currencystring
    • daysinteger
    • linesarray of QuoteLine
      Show 6 fields
      • codestringrequired

        rental, an extra’s code, one_way or discount.

      • labelstringrequired
      • quantityinteger
      • unitAmountinteger

        Amount in kobo (₦1 = 100 kobo).

      • amountintegerrequired

        Negative for a discount.

      • pricingenum

        per_dayflatdiscount

    • listSubtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • discountobject · nullable
      Show 2 fields
      • codestring · nullable
      • amountinteger

        Amount in kobo (₦1 = 100 kobo).

    • subtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • depositinteger

      Amount in kobo (₦1 = 100 kobo).

    • totalinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundedinteger

      Amount in kobo (₦1 = 100 kobo).

  • commissioninteger

    Your commission on this booking (businesses only).

  • flightNumberstring · nullable
  • checkedInAtdate-time · nullable

    ISO 8601 date-time.

  • arrivalNotestring · nullable
  • metadataobject

    Your own key/value pairs.

  • createdAtdate-time

    ISO 8601 date-time.

  • holdExpiresAtdate-time · nullable

    While unpaid: when the car is released.

  • checkoutUrlstring

    Send the customer here to pay (only while unpaid).

  • cancellationobject
    Show 8 fields
    • allowedboolean

      False once it is cancelled, collected or finished.

    • refundPercentinteger

      Share of the rental price refunded if cancelled right now: 100 (12 h or more before pick-up), 95 (6 to 12 h), 90 (under 6 h). The deposit always comes back in full.

    • rentalRefundinteger

      Amount in kobo (₦1 = 100 kobo).

    • feeinteger

      The cancellation fee that would be kept.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundTotalinteger

      What goes back to the customer in all.

    • changesAtdate-time · nullable

      When the refund drops to the next level.

    • nextPercentinteger · nullable

      The refund percent from then on.

  • earlyReturnobject · nullable
    Show 7 fields
    • requestedAtdate-time · nullable

      When the customer asked to return early (the clock stops there if the car arrives within the grace period).

    • timeBasedPaidinteger

      The part of the rental price that is for time (spread evenly over the booked period).

    • bookedSecondsinteger
    • usedSecondsinteger
    • unusedSecondsinteger
    • rentalRefundinteger

      Refund for the unused time if the car is returned now.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

  • overstayobject · nullable
    Show 5 fields
    • lateSecondsinteger

      Seconds past the return time.

    • graceSecondsinteger

      Free seconds after the return time.

    • billedSecondsinteger

      Late seconds that are charged (after the grace period).

    • ratePerHourinteger

      The late rate per hour, frozen when the booking was made.

    • chargeSoFarinteger

      The late charge if the car were handed back now (it runs to the second).

  • lateTermsobject
    Show 2 fields
    • ratePerHourinteger

      What a late return costs per hour (to the second) once the grace period has passed. Frozen when the booking was made.

    • graceMinutesinteger

      Free minutes after the return time.

  • tripUpdatesobject · nullable
    Show 2 fields
    • whatsappboolean

      True when the customer opted in to WhatsApp updates.

    • schedulearray of object
      Show 4 fields
      • stagestring
      • labelstring
      • atdate-time

        ISO 8601 date-time.

      • doneboolean
  • reviewobject
    Show 2 fields
    • allowedboolean

      True once the car is returned and no review has been left yet.

    • submittedAtdate-time · nullable

      ISO 8601 date-time.

  • returnedAtdate-time · nullable

    When the car was handed back.

  • balanceobject · nullable
    Show 2 fields
    • dueinteger

      What the customer still owes after the car came back (a late charge larger than the deposit).

    • paidAtdate-time · nullable

      ISO 8601 date-time.

  • settlementSettlement | null

    The closing statement, once the booking is cancelled or the car is back.

Errors

  • 400invalid: something in the request is wrong. The message says what.
  • 401unauthorized: the API key is missing, wrong or revoked.
  • 404not_found: no such thing, or it is not yours.
  • 409conflict or unavailable: not possible in the current state, or the car was just taken.
  • 429rate_limited: more than 120 requests a minute. Wait for RateLimit-Reset seconds.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings" \
  -H "Authorization: Bearer wc_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6b2f7c3e-6f0a-4a3e-9d1c-1c2b6f1a9e55" \
  -d '{
  "vehicleId": 12,
  "from": "2026-11-20T10:00:00+01:00",
  "to": "2026-11-23T10:00:00+01:00",
  "pickupLocation": "ABV",
  "dropoffLocation": "ABV",
  "extras": [
    "gps"
  ],
  "customer": {
    "name": "Chidi Obi",
    "email": "chidi@example.com",
    "phone": "+2348031234567",
    "licenseNumber": "ABC12345",
    "licenseExpiry": "2029-05-01T00:00:00+01:00"
  },
  "flightNumber": "W3123",
  "metadata": {
    "order_id": "A-1001"
  },
  "returnUrl": "https://shop.example/booking"
}'
Response · 201
{
  "data": {
    "reference": "WC-7KQ2M9XA",
    "status": "pending_payment",
    "test": false,
    "from": "2026-11-20T09:00:00.000Z",
    "to": "2026-11-23T09:00:00.000Z",
    "vehicle": {
      "id": 12,
      "title": "2021 Toyota Camry",
      "make": "Toyota",
      "model": "Camry",
      "year": 2021,
      "class": "sedan",
      "transmission": "automatic",
      "fuel": "petrol",
      "seats": 5,
      "colour": "Silver",
      "photos": [
        "https://api.waca.com.ng/api/media/file/camry-1.jpg"
      ],
      "dailyRate": 4500000,
      "deposit": 8000000,
      "location": {
        "id": 1,
        "code": "ABV",
        "name": "Nnamdi Azikiwe International Airport, Abuja",
        "city": "abuja"
      }
    },
    "pickup": {
      "code": "ABV",
      "name": "Nnamdi Azikiwe International Airport, Abuja",
      "instructions": "Meet our agent at the arrivals hall, next to the information desk."
    },
    "dropoff": {
      "code": "ABV",
      "name": "Nnamdi Azikiwe International Airport, Abuja"
    },
    "customer": {
      "name": "Chidi Obi",
      "email": "chidi@example.com",
      "phone": "+2348031234567"
    },
    "price": {
      "currency": "NGN",
      "days": 3,
      "lines": [
        {
          "code": "rental",
          "label": "Car rental",
          "quantity": 3,
          "unitAmount": 4500000,
          "amount": 13500000
        },
        {
          "code": "gps",
          "label": "GPS navigation",
          "quantity": 3,
          "unitAmount": 150000,
          "amount": 450000
        }
      ],
      "listSubtotal": 13950000,
      "discount": null,
      "subtotal": 13950000,
      "deposit": 8000000,
      "total": 21950000,
      "refunded": 0
    },
    "commission": 2092500,
    "flightNumber": "W3123",
    "checkedInAt": null,
    "arrivalNote": null,
    "metadata": {
      "order_id": "A-1001"
    },
    "createdAt": "2026-11-01T12:00:00.000Z",
    "holdExpiresAt": "2026-11-01T12:20:00.000Z",
    "checkoutUrl": "https://checkout.paystack.com/abc123"
  }
}
get/rentals/bookings

List bookings

Your own bookings, newest first. A business sees everything any of its keys made.

Query parameters

  • statusstring

    pending_payment, confirmed, active, completed, cancelled or expired.

    pending_paymentconfirmedactivecompletedcancelledexpired

  • fromstring

    Pick-up on or after.

  • tostring

    Pick-up before.

  • emailstring

    The customer’s email (any case).

  • vehicle_idinteger

    Only this car.

  • created_fromstring

    Made on or after.

  • created_tostring

    Made before.

  • pageinteger

    Page number, from 1.

    Example: 1

  • limitinteger

    Items per page (1–100). Default 20.

    Example: 20

Response 200

A page: { data: [ … ], page, totalPages, total }. Each item in data:

  • referencestringrequired

    e.g. WC-7KQ2M9XA. Show it to your customer.

  • statusenumrequired

    pending_paymentconfirmedactivecompletedcancelledexpired

  • testboolean

    True for a sandbox booking.

  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • vehicleVehiclerequired
    Show 15 fields
    • idintegerrequired
    • titlestringrequired

      e.g. “2021 Toyota Camry”.

    • makestring
    • modelstring
    • yearinteger
    • classenumrequired

      economysedansuvvanluxury

    • transmissionenum

      automaticmanual

    • fuelenum

      petroldieselhybridelectric

    • seatsinteger
    • colourstring · nullable
    • photosarray of string
    • dailyRateintegerrequired

      Price per 24 hours.

    • depositinteger

      Refundable deposit.

    • locationobjectrequired
      Show 4 fields
      • idinteger
      • codestringrequired
      • namestring
      • citystring
    • ratingobject · nullable
      Show 2 fields
      • averagenumber

        Average of 1 to 5 stars, one decimal.

      • countinteger

        Published reviews of this car.

  • pickupobject
    Show 3 fields
    • codestring
    • namestring
    • instructionsstring · nullable
  • dropoffobject
    Show 2 fields
    • codestring
    • namestring
  • customerCustomer
    Show 3 fields
    • namestringrequired
    • emailstringrequired
    • phonestringrequired

      International format preferred, e.g. +2348031234567.

  • priceobjectrequired
    Show 9 fields
    • currencystring
    • daysinteger
    • linesarray of QuoteLine
      Show 6 fields
      • codestringrequired

        rental, an extra’s code, one_way or discount.

      • labelstringrequired
      • quantityinteger
      • unitAmountinteger

        Amount in kobo (₦1 = 100 kobo).

      • amountintegerrequired

        Negative for a discount.

      • pricingenum

        per_dayflatdiscount

    • listSubtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • discountobject · nullable
      Show 2 fields
      • codestring · nullable
      • amountinteger

        Amount in kobo (₦1 = 100 kobo).

    • subtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • depositinteger

      Amount in kobo (₦1 = 100 kobo).

    • totalinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundedinteger

      Amount in kobo (₦1 = 100 kobo).

  • commissioninteger

    Your commission on this booking (businesses only).

  • flightNumberstring · nullable
  • checkedInAtdate-time · nullable

    ISO 8601 date-time.

  • arrivalNotestring · nullable
  • metadataobject

    Your own key/value pairs.

  • createdAtdate-time

    ISO 8601 date-time.

  • holdExpiresAtdate-time · nullable

    While unpaid: when the car is released.

  • checkoutUrlstring

    Send the customer here to pay (only while unpaid).

  • cancellationobject
    Show 8 fields
    • allowedboolean

      False once it is cancelled, collected or finished.

    • refundPercentinteger

      Share of the rental price refunded if cancelled right now: 100 (12 h or more before pick-up), 95 (6 to 12 h), 90 (under 6 h). The deposit always comes back in full.

    • rentalRefundinteger

      Amount in kobo (₦1 = 100 kobo).

    • feeinteger

      The cancellation fee that would be kept.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundTotalinteger

      What goes back to the customer in all.

    • changesAtdate-time · nullable

      When the refund drops to the next level.

    • nextPercentinteger · nullable

      The refund percent from then on.

  • earlyReturnobject · nullable
    Show 7 fields
    • requestedAtdate-time · nullable

      When the customer asked to return early (the clock stops there if the car arrives within the grace period).

    • timeBasedPaidinteger

      The part of the rental price that is for time (spread evenly over the booked period).

    • bookedSecondsinteger
    • usedSecondsinteger
    • unusedSecondsinteger
    • rentalRefundinteger

      Refund for the unused time if the car is returned now.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

  • overstayobject · nullable
    Show 5 fields
    • lateSecondsinteger

      Seconds past the return time.

    • graceSecondsinteger

      Free seconds after the return time.

    • billedSecondsinteger

      Late seconds that are charged (after the grace period).

    • ratePerHourinteger

      The late rate per hour, frozen when the booking was made.

    • chargeSoFarinteger

      The late charge if the car were handed back now (it runs to the second).

  • lateTermsobject
    Show 2 fields
    • ratePerHourinteger

      What a late return costs per hour (to the second) once the grace period has passed. Frozen when the booking was made.

    • graceMinutesinteger

      Free minutes after the return time.

  • tripUpdatesobject · nullable
    Show 2 fields
    • whatsappboolean

      True when the customer opted in to WhatsApp updates.

    • schedulearray of object
      Show 4 fields
      • stagestring
      • labelstring
      • atdate-time

        ISO 8601 date-time.

      • doneboolean
  • reviewobject
    Show 2 fields
    • allowedboolean

      True once the car is returned and no review has been left yet.

    • submittedAtdate-time · nullable

      ISO 8601 date-time.

  • returnedAtdate-time · nullable

    When the car was handed back.

  • balanceobject · nullable
    Show 2 fields
    • dueinteger

      What the customer still owes after the car came back (a late charge larger than the deposit).

    • paidAtdate-time · nullable

      ISO 8601 date-time.

  • settlementSettlement | null

    The closing statement, once the booking is cancelled or the car is back.

Errors

  • 400invalid: something in the request is wrong. The message says what.
  • 401unauthorized: the API key is missing, wrong or revoked.
curl "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings?page=1&limit=20" \
  -H "Authorization: Bearer wc_test_YOUR_KEY"
get/rentals/bookings/{reference}

Get a booking

An unpaid booking carries its checkoutUrl, so a customer can come back and pay.

Path parameters

  • referencestringrequired

    The booking reference.

    Example: WC-7KQ2M9XA

Response 200

In data:

  • referencestringrequired

    e.g. WC-7KQ2M9XA. Show it to your customer.

  • statusenumrequired

    pending_paymentconfirmedactivecompletedcancelledexpired

  • testboolean

    True for a sandbox booking.

  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • vehicleVehiclerequired
    Show 15 fields
    • idintegerrequired
    • titlestringrequired

      e.g. “2021 Toyota Camry”.

    • makestring
    • modelstring
    • yearinteger
    • classenumrequired

      economysedansuvvanluxury

    • transmissionenum

      automaticmanual

    • fuelenum

      petroldieselhybridelectric

    • seatsinteger
    • colourstring · nullable
    • photosarray of string
    • dailyRateintegerrequired

      Price per 24 hours.

    • depositinteger

      Refundable deposit.

    • locationobjectrequired
      Show 4 fields
      • idinteger
      • codestringrequired
      • namestring
      • citystring
    • ratingobject · nullable
      Show 2 fields
      • averagenumber

        Average of 1 to 5 stars, one decimal.

      • countinteger

        Published reviews of this car.

  • pickupobject
    Show 3 fields
    • codestring
    • namestring
    • instructionsstring · nullable
  • dropoffobject
    Show 2 fields
    • codestring
    • namestring
  • customerCustomer
    Show 3 fields
    • namestringrequired
    • emailstringrequired
    • phonestringrequired

      International format preferred, e.g. +2348031234567.

  • priceobjectrequired
    Show 9 fields
    • currencystring
    • daysinteger
    • linesarray of QuoteLine
      Show 6 fields
      • codestringrequired

        rental, an extra’s code, one_way or discount.

      • labelstringrequired
      • quantityinteger
      • unitAmountinteger

        Amount in kobo (₦1 = 100 kobo).

      • amountintegerrequired

        Negative for a discount.

      • pricingenum

        per_dayflatdiscount

    • listSubtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • discountobject · nullable
      Show 2 fields
      • codestring · nullable
      • amountinteger

        Amount in kobo (₦1 = 100 kobo).

    • subtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • depositinteger

      Amount in kobo (₦1 = 100 kobo).

    • totalinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundedinteger

      Amount in kobo (₦1 = 100 kobo).

  • commissioninteger

    Your commission on this booking (businesses only).

  • flightNumberstring · nullable
  • checkedInAtdate-time · nullable

    ISO 8601 date-time.

  • arrivalNotestring · nullable
  • metadataobject

    Your own key/value pairs.

  • createdAtdate-time

    ISO 8601 date-time.

  • holdExpiresAtdate-time · nullable

    While unpaid: when the car is released.

  • checkoutUrlstring

    Send the customer here to pay (only while unpaid).

  • cancellationobject
    Show 8 fields
    • allowedboolean

      False once it is cancelled, collected or finished.

    • refundPercentinteger

      Share of the rental price refunded if cancelled right now: 100 (12 h or more before pick-up), 95 (6 to 12 h), 90 (under 6 h). The deposit always comes back in full.

    • rentalRefundinteger

      Amount in kobo (₦1 = 100 kobo).

    • feeinteger

      The cancellation fee that would be kept.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundTotalinteger

      What goes back to the customer in all.

    • changesAtdate-time · nullable

      When the refund drops to the next level.

    • nextPercentinteger · nullable

      The refund percent from then on.

  • earlyReturnobject · nullable
    Show 7 fields
    • requestedAtdate-time · nullable

      When the customer asked to return early (the clock stops there if the car arrives within the grace period).

    • timeBasedPaidinteger

      The part of the rental price that is for time (spread evenly over the booked period).

    • bookedSecondsinteger
    • usedSecondsinteger
    • unusedSecondsinteger
    • rentalRefundinteger

      Refund for the unused time if the car is returned now.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

  • overstayobject · nullable
    Show 5 fields
    • lateSecondsinteger

      Seconds past the return time.

    • graceSecondsinteger

      Free seconds after the return time.

    • billedSecondsinteger

      Late seconds that are charged (after the grace period).

    • ratePerHourinteger

      The late rate per hour, frozen when the booking was made.

    • chargeSoFarinteger

      The late charge if the car were handed back now (it runs to the second).

  • lateTermsobject
    Show 2 fields
    • ratePerHourinteger

      What a late return costs per hour (to the second) once the grace period has passed. Frozen when the booking was made.

    • graceMinutesinteger

      Free minutes after the return time.

  • tripUpdatesobject · nullable
    Show 2 fields
    • whatsappboolean

      True when the customer opted in to WhatsApp updates.

    • schedulearray of object
      Show 4 fields
      • stagestring
      • labelstring
      • atdate-time

        ISO 8601 date-time.

      • doneboolean
  • reviewobject
    Show 2 fields
    • allowedboolean

      True once the car is returned and no review has been left yet.

    • submittedAtdate-time · nullable

      ISO 8601 date-time.

  • returnedAtdate-time · nullable

    When the car was handed back.

  • balanceobject · nullable
    Show 2 fields
    • dueinteger

      What the customer still owes after the car came back (a late charge larger than the deposit).

    • paidAtdate-time · nullable

      ISO 8601 date-time.

  • settlementSettlement | null

    The closing statement, once the booking is cancelled or the car is back.

Errors

  • 401unauthorized: the API key is missing, wrong or revoked.
  • 404not_found: no such thing, or it is not yours.
curl "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings/WC-7KQ2M9XA" \
  -H "Authorization: Bearer wc_test_YOUR_KEY"
Response · 200
{
  "data": {
    "reference": "WC-7KQ2M9XA",
    "status": "pending_payment",
    "test": false,
    "from": "2026-11-20T09:00:00.000Z",
    "to": "2026-11-23T09:00:00.000Z",
    "vehicle": {
      "id": 12,
      "title": "2021 Toyota Camry",
      "make": "Toyota",
      "model": "Camry",
      "year": 2021,
      "class": "sedan",
      "transmission": "automatic",
      "fuel": "petrol",
      "seats": 5,
      "colour": "Silver",
      "photos": [
        "https://api.waca.com.ng/api/media/file/camry-1.jpg"
      ],
      "dailyRate": 4500000,
      "deposit": 8000000,
      "location": {
        "id": 1,
        "code": "ABV",
        "name": "Nnamdi Azikiwe International Airport, Abuja",
        "city": "abuja"
      }
    },
    "pickup": {
      "code": "ABV",
      "name": "Nnamdi Azikiwe International Airport, Abuja",
      "instructions": "Meet our agent at the arrivals hall, next to the information desk."
    },
    "dropoff": {
      "code": "ABV",
      "name": "Nnamdi Azikiwe International Airport, Abuja"
    },
    "customer": {
      "name": "Chidi Obi",
      "email": "chidi@example.com",
      "phone": "+2348031234567"
    },
    "price": {
      "currency": "NGN",
      "days": 3,
      "lines": [
        {
          "code": "rental",
          "label": "Car rental",
          "quantity": 3,
          "unitAmount": 4500000,
          "amount": 13500000
        },
        {
          "code": "gps",
          "label": "GPS navigation",
          "quantity": 3,
          "unitAmount": 150000,
          "amount": 450000
        }
      ],
      "listSubtotal": 13950000,
      "discount": null,
      "subtotal": 13950000,
      "deposit": 8000000,
      "total": 21950000,
      "refunded": 0
    },
    "commission": 2092500,
    "flightNumber": "W3123",
    "checkedInAt": null,
    "arrivalNote": null,
    "metadata": {
      "order_id": "A-1001"
    },
    "createdAt": "2026-11-01T12:00:00.000Z",
    "holdExpiresAt": "2026-11-01T12:20:00.000Z",
    "checkoutUrl": "https://checkout.paystack.com/abc123"
  }
}
patch/rentals/bookings/{reference}

Update a booking

Change the customer’s contact details, the arrival flight, or your own metadata, until the rental is over. Dates, car and price cannot be changed: cancel and book again. In metadata, a value of null removes that key.

Path parameters

  • referencestringrequired

    The booking reference.

    Example: WC-7KQ2M9XA

Request body · application/json

  • customerobject
    Show 3 fields
    • namestring
    • emailstring
    • phonestring
  • flightNumberstring · nullable
  • metadataobject

    Merged into the existing metadata.

Response 200

In data:

  • referencestringrequired

    e.g. WC-7KQ2M9XA. Show it to your customer.

  • statusenumrequired

    pending_paymentconfirmedactivecompletedcancelledexpired

  • testboolean

    True for a sandbox booking.

  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • vehicleVehiclerequired
    Show 15 fields
    • idintegerrequired
    • titlestringrequired

      e.g. “2021 Toyota Camry”.

    • makestring
    • modelstring
    • yearinteger
    • classenumrequired

      economysedansuvvanluxury

    • transmissionenum

      automaticmanual

    • fuelenum

      petroldieselhybridelectric

    • seatsinteger
    • colourstring · nullable
    • photosarray of string
    • dailyRateintegerrequired

      Price per 24 hours.

    • depositinteger

      Refundable deposit.

    • locationobjectrequired
      Show 4 fields
      • idinteger
      • codestringrequired
      • namestring
      • citystring
    • ratingobject · nullable
      Show 2 fields
      • averagenumber

        Average of 1 to 5 stars, one decimal.

      • countinteger

        Published reviews of this car.

  • pickupobject
    Show 3 fields
    • codestring
    • namestring
    • instructionsstring · nullable
  • dropoffobject
    Show 2 fields
    • codestring
    • namestring
  • customerCustomer
    Show 3 fields
    • namestringrequired
    • emailstringrequired
    • phonestringrequired

      International format preferred, e.g. +2348031234567.

  • priceobjectrequired
    Show 9 fields
    • currencystring
    • daysinteger
    • linesarray of QuoteLine
      Show 6 fields
      • codestringrequired

        rental, an extra’s code, one_way or discount.

      • labelstringrequired
      • quantityinteger
      • unitAmountinteger

        Amount in kobo (₦1 = 100 kobo).

      • amountintegerrequired

        Negative for a discount.

      • pricingenum

        per_dayflatdiscount

    • listSubtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • discountobject · nullable
      Show 2 fields
      • codestring · nullable
      • amountinteger

        Amount in kobo (₦1 = 100 kobo).

    • subtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • depositinteger

      Amount in kobo (₦1 = 100 kobo).

    • totalinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundedinteger

      Amount in kobo (₦1 = 100 kobo).

  • commissioninteger

    Your commission on this booking (businesses only).

  • flightNumberstring · nullable
  • checkedInAtdate-time · nullable

    ISO 8601 date-time.

  • arrivalNotestring · nullable
  • metadataobject

    Your own key/value pairs.

  • createdAtdate-time

    ISO 8601 date-time.

  • holdExpiresAtdate-time · nullable

    While unpaid: when the car is released.

  • checkoutUrlstring

    Send the customer here to pay (only while unpaid).

  • cancellationobject
    Show 8 fields
    • allowedboolean

      False once it is cancelled, collected or finished.

    • refundPercentinteger

      Share of the rental price refunded if cancelled right now: 100 (12 h or more before pick-up), 95 (6 to 12 h), 90 (under 6 h). The deposit always comes back in full.

    • rentalRefundinteger

      Amount in kobo (₦1 = 100 kobo).

    • feeinteger

      The cancellation fee that would be kept.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundTotalinteger

      What goes back to the customer in all.

    • changesAtdate-time · nullable

      When the refund drops to the next level.

    • nextPercentinteger · nullable

      The refund percent from then on.

  • earlyReturnobject · nullable
    Show 7 fields
    • requestedAtdate-time · nullable

      When the customer asked to return early (the clock stops there if the car arrives within the grace period).

    • timeBasedPaidinteger

      The part of the rental price that is for time (spread evenly over the booked period).

    • bookedSecondsinteger
    • usedSecondsinteger
    • unusedSecondsinteger
    • rentalRefundinteger

      Refund for the unused time if the car is returned now.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

  • overstayobject · nullable
    Show 5 fields
    • lateSecondsinteger

      Seconds past the return time.

    • graceSecondsinteger

      Free seconds after the return time.

    • billedSecondsinteger

      Late seconds that are charged (after the grace period).

    • ratePerHourinteger

      The late rate per hour, frozen when the booking was made.

    • chargeSoFarinteger

      The late charge if the car were handed back now (it runs to the second).

  • lateTermsobject
    Show 2 fields
    • ratePerHourinteger

      What a late return costs per hour (to the second) once the grace period has passed. Frozen when the booking was made.

    • graceMinutesinteger

      Free minutes after the return time.

  • tripUpdatesobject · nullable
    Show 2 fields
    • whatsappboolean

      True when the customer opted in to WhatsApp updates.

    • schedulearray of object
      Show 4 fields
      • stagestring
      • labelstring
      • atdate-time

        ISO 8601 date-time.

      • doneboolean
  • reviewobject
    Show 2 fields
    • allowedboolean

      True once the car is returned and no review has been left yet.

    • submittedAtdate-time · nullable

      ISO 8601 date-time.

  • returnedAtdate-time · nullable

    When the car was handed back.

  • balanceobject · nullable
    Show 2 fields
    • dueinteger

      What the customer still owes after the car came back (a late charge larger than the deposit).

    • paidAtdate-time · nullable

      ISO 8601 date-time.

  • settlementSettlement | null

    The closing statement, once the booking is cancelled or the car is back.

Errors

  • 400invalid: something in the request is wrong. The message says what.
  • 401unauthorized: the API key is missing, wrong or revoked.
  • 404not_found: no such thing, or it is not yours.
  • 409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X PATCH "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings/WC-7KQ2M9XA" \
  -H "Authorization: Bearer wc_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "customer": {
    "phone": "+2348099990000"
  },
  "flightNumber": "BA75",
  "metadata": {
    "note": "vip",
    "order_id": null
  }
}'
post/rentals/bookings/{reference}/cancel

Cancel a booking

Releases an unpaid booking, or refunds a paid one by this policy: 100% of the rental price back if the pick-up is 12 hours or more away, 95% from 6 to 12 hours, 90% under 6 hours (or if the car was never collected). The deposit always comes back in full. What is not refunded is a cancellation fee that stays with the platform: the car owner and any selling business earn nothing from a cancelled booking. The refund is sent through the payment provider and recorded; GET /rentals/bookings/{reference} carries the statement in settlement. A booking whose car was collected cannot be cancelled: it ends when the car is returned.

Path parameters

  • referencestringrequired

    The booking reference.

    Example: WC-7KQ2M9XA

Response 200

In data:

  • referencestringrequired

    e.g. WC-7KQ2M9XA. Show it to your customer.

  • statusenumrequired

    pending_paymentconfirmedactivecompletedcancelledexpired

  • testboolean

    True for a sandbox booking.

  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • vehicleVehiclerequired
    Show 15 fields
    • idintegerrequired
    • titlestringrequired

      e.g. “2021 Toyota Camry”.

    • makestring
    • modelstring
    • yearinteger
    • classenumrequired

      economysedansuvvanluxury

    • transmissionenum

      automaticmanual

    • fuelenum

      petroldieselhybridelectric

    • seatsinteger
    • colourstring · nullable
    • photosarray of string
    • dailyRateintegerrequired

      Price per 24 hours.

    • depositinteger

      Refundable deposit.

    • locationobjectrequired
      Show 4 fields
      • idinteger
      • codestringrequired
      • namestring
      • citystring
    • ratingobject · nullable
      Show 2 fields
      • averagenumber

        Average of 1 to 5 stars, one decimal.

      • countinteger

        Published reviews of this car.

  • pickupobject
    Show 3 fields
    • codestring
    • namestring
    • instructionsstring · nullable
  • dropoffobject
    Show 2 fields
    • codestring
    • namestring
  • customerCustomer
    Show 3 fields
    • namestringrequired
    • emailstringrequired
    • phonestringrequired

      International format preferred, e.g. +2348031234567.

  • priceobjectrequired
    Show 9 fields
    • currencystring
    • daysinteger
    • linesarray of QuoteLine
      Show 6 fields
      • codestringrequired

        rental, an extra’s code, one_way or discount.

      • labelstringrequired
      • quantityinteger
      • unitAmountinteger

        Amount in kobo (₦1 = 100 kobo).

      • amountintegerrequired

        Negative for a discount.

      • pricingenum

        per_dayflatdiscount

    • listSubtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • discountobject · nullable
      Show 2 fields
      • codestring · nullable
      • amountinteger

        Amount in kobo (₦1 = 100 kobo).

    • subtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • depositinteger

      Amount in kobo (₦1 = 100 kobo).

    • totalinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundedinteger

      Amount in kobo (₦1 = 100 kobo).

  • commissioninteger

    Your commission on this booking (businesses only).

  • flightNumberstring · nullable
  • checkedInAtdate-time · nullable

    ISO 8601 date-time.

  • arrivalNotestring · nullable
  • metadataobject

    Your own key/value pairs.

  • createdAtdate-time

    ISO 8601 date-time.

  • holdExpiresAtdate-time · nullable

    While unpaid: when the car is released.

  • checkoutUrlstring

    Send the customer here to pay (only while unpaid).

  • cancellationobject
    Show 8 fields
    • allowedboolean

      False once it is cancelled, collected or finished.

    • refundPercentinteger

      Share of the rental price refunded if cancelled right now: 100 (12 h or more before pick-up), 95 (6 to 12 h), 90 (under 6 h). The deposit always comes back in full.

    • rentalRefundinteger

      Amount in kobo (₦1 = 100 kobo).

    • feeinteger

      The cancellation fee that would be kept.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundTotalinteger

      What goes back to the customer in all.

    • changesAtdate-time · nullable

      When the refund drops to the next level.

    • nextPercentinteger · nullable

      The refund percent from then on.

  • earlyReturnobject · nullable
    Show 7 fields
    • requestedAtdate-time · nullable

      When the customer asked to return early (the clock stops there if the car arrives within the grace period).

    • timeBasedPaidinteger

      The part of the rental price that is for time (spread evenly over the booked period).

    • bookedSecondsinteger
    • usedSecondsinteger
    • unusedSecondsinteger
    • rentalRefundinteger

      Refund for the unused time if the car is returned now.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

  • overstayobject · nullable
    Show 5 fields
    • lateSecondsinteger

      Seconds past the return time.

    • graceSecondsinteger

      Free seconds after the return time.

    • billedSecondsinteger

      Late seconds that are charged (after the grace period).

    • ratePerHourinteger

      The late rate per hour, frozen when the booking was made.

    • chargeSoFarinteger

      The late charge if the car were handed back now (it runs to the second).

  • lateTermsobject
    Show 2 fields
    • ratePerHourinteger

      What a late return costs per hour (to the second) once the grace period has passed. Frozen when the booking was made.

    • graceMinutesinteger

      Free minutes after the return time.

  • tripUpdatesobject · nullable
    Show 2 fields
    • whatsappboolean

      True when the customer opted in to WhatsApp updates.

    • schedulearray of object
      Show 4 fields
      • stagestring
      • labelstring
      • atdate-time

        ISO 8601 date-time.

      • doneboolean
  • reviewobject
    Show 2 fields
    • allowedboolean

      True once the car is returned and no review has been left yet.

    • submittedAtdate-time · nullable

      ISO 8601 date-time.

  • returnedAtdate-time · nullable

    When the car was handed back.

  • balanceobject · nullable
    Show 2 fields
    • dueinteger

      What the customer still owes after the car came back (a late charge larger than the deposit).

    • paidAtdate-time · nullable

      ISO 8601 date-time.

  • settlementSettlement | null

    The closing statement, once the booking is cancelled or the car is back.

  • refundPercentinteger

    Share of the rental price refunded: 100, 50 or 0.

  • refundobject · nullable
    Show 2 fields
    • requestedinteger

      Amount in kobo (₦1 = 100 kobo).

    • okboolean

Errors

  • 401unauthorized: the API key is missing, wrong or revoked.
  • 404not_found: no such thing, or it is not yours.
  • 409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings/WC-7KQ2M9XA/cancel" \
  -H "Authorization: Bearer wc_test_YOUR_KEY"
Response · 200
{
  "data": {
    "reference": "WC-7KQ2M9XA",
    "status": "cancelled",
    "test": false,
    "from": "2026-11-20T09:00:00.000Z",
    "to": "2026-11-23T09:00:00.000Z",
    "vehicle": {
      "id": 12,
      "title": "2021 Toyota Camry",
      "make": "Toyota",
      "model": "Camry",
      "year": 2021,
      "class": "sedan",
      "transmission": "automatic",
      "fuel": "petrol",
      "seats": 5,
      "colour": "Silver",
      "photos": [
        "https://api.waca.com.ng/api/media/file/camry-1.jpg"
      ],
      "dailyRate": 4500000,
      "deposit": 8000000,
      "location": {
        "id": 1,
        "code": "ABV",
        "name": "Nnamdi Azikiwe International Airport, Abuja",
        "city": "abuja"
      }
    },
    "pickup": {
      "code": "ABV",
      "name": "Nnamdi Azikiwe International Airport, Abuja",
      "instructions": "Meet our agent at the arrivals hall, next to the information desk."
    },
    "dropoff": {
      "code": "ABV",
      "name": "Nnamdi Azikiwe International Airport, Abuja"
    },
    "customer": {
      "name": "Chidi Obi",
      "email": "chidi@example.com",
      "phone": "+2348031234567"
    },
    "price": {
      "currency": "NGN",
      "days": 3,
      "lines": [
        {
          "code": "rental",
          "label": "Car rental",
          "quantity": 3,
          "unitAmount": 4500000,
          "amount": 13500000
        },
        {
          "code": "gps",
          "label": "GPS navigation",
          "quantity": 3,
          "unitAmount": 150000,
          "amount": 450000
        }
      ],
      "listSubtotal": 13950000,
      "discount": null,
      "subtotal": 13950000,
      "deposit": 8000000,
      "total": 21950000,
      "refunded": 0
    },
    "commission": 2092500,
    "flightNumber": "W3123",
    "checkedInAt": null,
    "arrivalNote": null,
    "metadata": {
      "order_id": "A-1001"
    },
    "createdAt": "2026-11-01T12:00:00.000Z",
    "holdExpiresAt": "2026-11-01T12:20:00.000Z",
    "checkoutUrl": "https://checkout.paystack.com/abc123",
    "refundPercent": 100,
    "refund": {
      "requested": 21950000,
      "ok": true
    }
  }
}
post/rentals/bookings/{reference}/checkin

Online check-in

Once a booking is paid the customer can check in: arrival flight and time, a note for our agent, and the licence details if they were not known yet. Our agent sees it at hand-over.

Path parameters

  • referencestringrequired

    The booking reference.

    Example: WC-7KQ2M9XA

Request body · application/json

  • flightNumberstring
  • expectedArrivaldate-time

    ISO 8601 date-time.

  • notesstring

    Up to 300 characters.

  • licenseNumberstring
  • licenseExpirydate-time

    ISO 8601 date-time.

Response 200

In data:

  • referencestringrequired

    e.g. WC-7KQ2M9XA. Show it to your customer.

  • statusenumrequired

    pending_paymentconfirmedactivecompletedcancelledexpired

  • testboolean

    True for a sandbox booking.

  • fromdate-timerequired

    ISO 8601 date-time.

  • todate-timerequired

    ISO 8601 date-time.

  • vehicleVehiclerequired
    Show 15 fields
    • idintegerrequired
    • titlestringrequired

      e.g. “2021 Toyota Camry”.

    • makestring
    • modelstring
    • yearinteger
    • classenumrequired

      economysedansuvvanluxury

    • transmissionenum

      automaticmanual

    • fuelenum

      petroldieselhybridelectric

    • seatsinteger
    • colourstring · nullable
    • photosarray of string
    • dailyRateintegerrequired

      Price per 24 hours.

    • depositinteger

      Refundable deposit.

    • locationobjectrequired
      Show 4 fields
      • idinteger
      • codestringrequired
      • namestring
      • citystring
    • ratingobject · nullable
      Show 2 fields
      • averagenumber

        Average of 1 to 5 stars, one decimal.

      • countinteger

        Published reviews of this car.

  • pickupobject
    Show 3 fields
    • codestring
    • namestring
    • instructionsstring · nullable
  • dropoffobject
    Show 2 fields
    • codestring
    • namestring
  • customerCustomer
    Show 3 fields
    • namestringrequired
    • emailstringrequired
    • phonestringrequired

      International format preferred, e.g. +2348031234567.

  • priceobjectrequired
    Show 9 fields
    • currencystring
    • daysinteger
    • linesarray of QuoteLine
      Show 6 fields
      • codestringrequired

        rental, an extra’s code, one_way or discount.

      • labelstringrequired
      • quantityinteger
      • unitAmountinteger

        Amount in kobo (₦1 = 100 kobo).

      • amountintegerrequired

        Negative for a discount.

      • pricingenum

        per_dayflatdiscount

    • listSubtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • discountobject · nullable
      Show 2 fields
      • codestring · nullable
      • amountinteger

        Amount in kobo (₦1 = 100 kobo).

    • subtotalinteger

      Amount in kobo (₦1 = 100 kobo).

    • depositinteger

      Amount in kobo (₦1 = 100 kobo).

    • totalinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundedinteger

      Amount in kobo (₦1 = 100 kobo).

  • commissioninteger

    Your commission on this booking (businesses only).

  • flightNumberstring · nullable
  • checkedInAtdate-time · nullable

    ISO 8601 date-time.

  • arrivalNotestring · nullable
  • metadataobject

    Your own key/value pairs.

  • createdAtdate-time

    ISO 8601 date-time.

  • holdExpiresAtdate-time · nullable

    While unpaid: when the car is released.

  • checkoutUrlstring

    Send the customer here to pay (only while unpaid).

  • cancellationobject
    Show 8 fields
    • allowedboolean

      False once it is cancelled, collected or finished.

    • refundPercentinteger

      Share of the rental price refunded if cancelled right now: 100 (12 h or more before pick-up), 95 (6 to 12 h), 90 (under 6 h). The deposit always comes back in full.

    • rentalRefundinteger

      Amount in kobo (₦1 = 100 kobo).

    • feeinteger

      The cancellation fee that would be kept.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

    • refundTotalinteger

      What goes back to the customer in all.

    • changesAtdate-time · nullable

      When the refund drops to the next level.

    • nextPercentinteger · nullable

      The refund percent from then on.

  • earlyReturnobject · nullable
    Show 7 fields
    • requestedAtdate-time · nullable

      When the customer asked to return early (the clock stops there if the car arrives within the grace period).

    • timeBasedPaidinteger

      The part of the rental price that is for time (spread evenly over the booked period).

    • bookedSecondsinteger
    • usedSecondsinteger
    • unusedSecondsinteger
    • rentalRefundinteger

      Refund for the unused time if the car is returned now.

    • depositReturnedinteger

      Amount in kobo (₦1 = 100 kobo).

  • overstayobject · nullable
    Show 5 fields
    • lateSecondsinteger

      Seconds past the return time.

    • graceSecondsinteger

      Free seconds after the return time.

    • billedSecondsinteger

      Late seconds that are charged (after the grace period).

    • ratePerHourinteger

      The late rate per hour, frozen when the booking was made.

    • chargeSoFarinteger

      The late charge if the car were handed back now (it runs to the second).

  • lateTermsobject
    Show 2 fields
    • ratePerHourinteger

      What a late return costs per hour (to the second) once the grace period has passed. Frozen when the booking was made.

    • graceMinutesinteger

      Free minutes after the return time.

  • tripUpdatesobject · nullable
    Show 2 fields
    • whatsappboolean

      True when the customer opted in to WhatsApp updates.

    • schedulearray of object
      Show 4 fields
      • stagestring
      • labelstring
      • atdate-time

        ISO 8601 date-time.

      • doneboolean
  • reviewobject
    Show 2 fields
    • allowedboolean

      True once the car is returned and no review has been left yet.

    • submittedAtdate-time · nullable

      ISO 8601 date-time.

  • returnedAtdate-time · nullable

    When the car was handed back.

  • balanceobject · nullable
    Show 2 fields
    • dueinteger

      What the customer still owes after the car came back (a late charge larger than the deposit).

    • paidAtdate-time · nullable

      ISO 8601 date-time.

  • settlementSettlement | null

    The closing statement, once the booking is cancelled or the car is back.

Errors

  • 400invalid: something in the request is wrong. The message says what.
  • 401unauthorized: the API key is missing, wrong or revoked.
  • 404not_found: no such thing, or it is not yours.
  • 409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings/WC-7KQ2M9XA/checkin" \
  -H "Authorization: Bearer wc_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "flightNumber": "BA75",
  "expectedArrival": "2026-11-20T14:30:00+01:00",
  "notes": "Two suitcases and a child seat"
}'