EVENT-DRIVEN RENTAL INFRASTRUCTURE

Know when something changes.

Net Rentals webhooks can notify your systems when bookings, payments, deposits, rentals, returns, charges, disputes, messages, and fleet state change.

Proposed specification Event names and endpoint behavior shown here map the intended public developer platform and should not be treated as generally available until released.
DELIVERY MODEL HTTPS POST
SIGNING HMAC-SHA256
DUPLICATE SAFETY EVENT ID
FAILURE HANDLING RETRIES
01 / DELIVERY

Your system reacts. Net Rentals keeps moving.

Webhooks let external systems respond to the rental lifecycle without repeatedly polling Net Rentals for changes.

01 NET RENTALS State changes

A booking, payment, rental, return, or another supported resource changes.

02 EVENT Event created

Net Rentals creates an event representing what happened.

03 DELIVERY HTTP request

The event is delivered to your registered HTTPS endpoint.

04 YOUR SYSTEM Process async

Return a 2xx quickly, then process the event within your own infrastructure.

02 / ENDPOINTS

Tell us where to send events.

Register an HTTPS endpoint and subscribe only to the event types your integration needs.

REQUIREMENT

Production webhook endpoints should use HTTPS and validate the Net Rentals signature before trusting the payload.

POST /v1/developers/webhooks
application/json
{
  "url": "https://example.com/net-rentals/webhook",
  "events": [
    "booking.created",
    "payment.succeeded",
    "rental.started",
    "return.completed"
  ]
}
03 / PAYLOADS

One event envelope. Different rental objects.

A consistent outer envelope gives integrations stable event metadata while the resource that changed stays inside data.object.

id
Unique event identifier

Use it to deduplicate deliveries.

type
Event type

Describes the lifecycle change that occurred.

created_at
Creation time

UTC timestamp for the event.

livemode
Environment indicator

Separates live events from sandbox activity.

business_id
Tenant context

Identifies the rental business associated with the event.

data.object
Changed resource

Contains the object associated with the event.

EVENT booking.created
JSON
{
  "id": "evt_01JXYZ",
  "type": "booking.created",
  "created_at": "2026-08-08T22:14:03Z",
  "livemode": true,
  "business_id": "biz_123",
  "api_version": "2026-08-01",
  "data": {
    "object": {
      "id": "booking_123"
    }
  }
}
04 / SIGNATURES

Verify before you trust.

Webhook deliveries should be signed so your application can verify that a request came from Net Rentals and that its body was not modified.

SIGNATURE MODEL HMAC-SHA256
HMAC-SHA256(timestamp + "." + raw_request_body)
Header Example
Net-Rentals-Event-Id evt_01JXYZ
Net-Rentals-Signature t=1786227243,v1=abcdef123456
Net-Rentals-Api-Version 2026-08-01
01 Verify the signature.
02 Reject stale timestamps.
03 Deduplicate event IDs.
04 Return a 2xx quickly.
05 Process asynchronously.
05 / DELIVERIES

See what happened after we sent it.

Delivery history should make failed integrations debuggable without requiring access to Net Rentals internal logs.

Webhook deliveries wh_7f21
Status Event Attempt Response Time
Delivered booking.created 1 200
Delivered payment.succeeded 1 204
Retrying return.completed 3 503
Failed charge.failed 7 500
06 / RETRIES

Temporary failure should not lose an event.

Failed deliveries can be retried on an increasing schedule before the delivery is finally marked failed.

01 Immediately Initial retry
02 1 minute Retry
03 5 minutes Retry
04 30 minutes Retry
05 2 hours Retry
06 8 hours Retry
07 24 hours Final retry
07 / EVENT CATALOG

Subscribe to the parts of the rental lifecycle you care about.

Booking
10 events
booking.created booking.updated booking.approved booking.rejected booking.canceled booking.refunded booking.extended booking.ready_for_pickup booking.completed booking.problem
Payment
7 events
payment.created payment.pending payment.succeeded payment.failed payment.retrying payment.refunded payment.partially_refunded
Security deposit
12 events
deposit.required deposit.created deposit.authorized deposit.secured deposit.capture_required deposit.captured deposit.partially_captured deposit.released deposit.canceled deposit.refunded deposit.failed
Identity
7 events
identity.started identity.pending identity.verified identity.rejected identity.failed identity.expired
Agreement
7 events
agreement.created agreement.sent agreement.viewed agreement.signed agreement.completed agreement.expired agreement.voided
Insurance
5 events
insurance.required insurance.submitted insurance.approved insurance.rejected insurance.expired
Pickup
6 events
pickup.ready pickup.access_opened pickup.started pickup.photo_uploaded pickup.mileage_recorded pickup.completed
Vehicle access
5 events
vehicle_access.configured vehicle_access.scheduled vehicle_access.released vehicle_access.opened vehicle_access.revoked
Rental lifecycle
7 events
rental.started rental.extended rental.due_soon rental.late rental.return_window_open rental.returned rental.completed
Return
6 events
return.started return.photo_uploaded return.mileage_recorded return.submitted return.in_review return.completed
Mileage
4 events
mileage.out_recorded mileage.in_recorded mileage.overage_detected mileage.fee_created
Post-trip charges
10 events
charge.created charge.updated charge.evidence_added charge.collection_started charge.succeeded charge.failed charge.retry_scheduled charge.retrying charge.waived charge.refunded
Disputes
7 events
dispute.created dispute.updated dispute.evidence_added dispute.message_created dispute.approved dispute.denied dispute.closed
Customers
4 events
customer.created customer.updated customer.identity_updated customer.payment_method_updated
Messages
5 events
message.received message.sent message.delivered message.failed message.read
Fleet
10 events
vehicle.created vehicle.updated vehicle.archived vehicle.available vehicle.unavailable vehicle.blackout_created vehicle.blackout_removed maintenance.created maintenance.started maintenance.completed
Website & domain
8 events
website.updated website.published domain.added domain.verification_required domain.verified domain.ssl_provisioning domain.ssl_active domain.failed
Team
4 events
team.invitation_created team.member_joined team.member_updated team.member_removed
08 / FIRST RELEASE

Start with the events integrations actually need.

The full rental architecture can support a broad event catalog, but a first public release should stay focused.

booking.created booking.approved booking.canceled payment.succeeded payment.failed deposit.secured deposit.released identity.verified agreement.signed rental.started rental.late return.completed charge.created charge.succeeded charge.failed dispute.created dispute.closed message.received
09 / TESTING

Fire events without touching a live rental.

Use the sandbox to create lifecycle conditions and send test webhook deliveries while building an integration.

Explore the developer sandbox →
POST /v1/test/webhooks/{endpoint_id}/send
SANDBOX
{
  "event": "rental.started",
  "business_id": "biz_test_123"
}
NET RENTALS / WEBHOOKS

Build around what happens next.

Connect your own infrastructure to the rental lifecycle without rebuilding the rental engine.