Autopay · AsyncAPI Specification
Autopay Webhooks
Version
View Spec
View on GitHub
ParkingParking PaymentsFleet ManagementPermitsParking OperatorsNorwayAsyncAPIEvents
AsyncAPI Specification
generated: '2026-09-06'
method: searched
source: https://developer.autopay.io/parking_api/, /payment_api/, /fleet-api/, /customer_club_api/
type: Webhooks
asyncapi_published: false
description: >-
Autopay ships a real outbound event surface — four documented HTTP callbacks that Autopay
POSTs to an endpoint the integrator hosts — but publishes no AsyncAPI, no event catalog
endpoint and no subscription API. Every webhook is configured out-of-band by an Autopay
representative during onboarding; there is no self-serve registration. The catalog below is
transcribed from the provider's own reference pages.
subscription_model:
self_serve: false
mechanism: >-
The integrator supplies the callback URL, the authentication credential Autopay should
present, and the facility/zone/landlord scoping to their Autopay representative at
onboarding. Autopay configures the delivery.
transport: HTTPS POST, application/json
https_required: true
authentication_to_subscriber:
note: Autopay authenticates ITSELF to the integrator's endpoint. Supported methods differ per surface.
methods:
- surface: Parking API entry webhook
methods: [basic, bearer]
- surface: Fleet API service webhook
methods: [bearer]
- surface: Payment API callbacks
methods:
- basic
- bearer
- 'api-key: presented in the X-API-Key header'
- 'oauth2: Autopay is given a client id, secret and token URL, and reuses access tokens for as long as they are valid'
credential_handling: >-
Payment API: "All credentials you provide are encrypted and stored securely."
delivery:
guarantee: at-least-once
duplicate_delivery: >-
Explicitly possible. The Payment API tells integrators to make their endpoint safe for
duplicate deliveries, "typically by treating the parking_id as an idempotency key".
signature_verification: none documented (no HMAC signature header)
ordering: not documented
retry:
- surface: Payment API callbacks
success_criteria: A 2xx — or a 404 — response. A 404 stops retries.
policy: >-
Exponential backoff starting at 1 second and doubling (1s, 2s, 4s, 8s, ...) to a maximum
interval of 1 hour, then once per hour until one week has passed, after which the
callback is abandoned.
max_age: 1 week
- surface: Parking API entry webhook
success_criteria: A 2xx response.
policy: Retried up to 50 times if no 2xx is received.
max_attempts: 50
- surface: Fleet API service webhook
policy: not documented
events:
- name: parking.vehicle_entered_zone
api: Parking API
direction: outbound
trigger: A vehicle enters a zone in the integrator's facility.
docs: https://developer.autopay.io/parking_api/
payload_fields:
- {name: event_id, type: string, description: Unique id for the entry event. Updates to the same event (e.g. a corrected licence plate) reuse this id.}
- {name: parking_id, type: string, description: Unique id for the parking; stable while the vehicle remains in the zone.}
- {name: parking_session_id, type: string, description: 'Handle used to change the product for this session via PUT /parking/product/{parkingSessionId}.'}
- {name: time_in_utc, type: date-time, description: Entry time in UTC (ISO 8601).}
- {name: operator_id, type: string}
- {name: landlord.landlord_id, type: string}
- {name: landlord.name, type: string}
- {name: zone.code, type: string}
- {name: zone.name, type: string}
- {name: facility.code, type: string}
- {name: facility.name, type: string}
- {name: facility.time_zone, type: string, description: IANA tz name, e.g. "Europe/Oslo".}
- {name: plate.plate_number, type: string}
- {name: plate.country_alpha2_code, type: string, description: ISO 3166-1 alpha-2 plate country code.}
- {name: plate.subdivision, type: string, required: false}
drives: The autostart path of the Payment API — a payment provider listening for entry events can call POST /payment/v1/connect_parking automatically for a known vehicle.
correction_semantics: An updated event is redelivered with the SAME event_id, so consumers must upsert on event_id rather than append.
- name: payment.parking_ended
api: Payment API
direction: outbound
trigger: A parking session ends successfully — a normal exit, or the completion of a manual stop.
docs: https://developer.autopay.io/payment_api/
endpoint_owner: Integrator-hosted "success callback URL" supplied at onboarding.
payload_fields:
- {name: parking_id, type: string}
- {name: reference, type: string, description: The integrator's own identifier echoed back from connect_parking.}
- {name: end_time, type: date-time}
- {name: cost.currency, type: string, description: Local currency of the country the parking took place in.}
- {name: cost.vat_percent, type: decimal}
- {name: cost.net_amount, type: decimal}
- {name: cost.vat_amount, type: decimal}
- {name: cost.gross_amount, type: decimal}
consumer_action: Charge the customer with the amount Autopay calculated. The integrator never calculates the parking fee.
- name: payment.parking_cancelled
api: Payment API
direction: outbound
trigger: The session went into an error state in Autopay and must not be charged.
docs: https://developer.autopay.io/payment_api/
endpoint_owner: Integrator-hosted "cancel callback URL" supplied at onboarding.
consumer_action: Do not charge; release any authorisation held against the customer.
- name: fleet.service_started
api: Fleet API
direction: outbound
trigger: >-
A fleet vehicle parks, passes through a toll road, or has been parked longer than a
preconfigured period (a separate periodical-notification webhook, which may use its own
URL and access token).
docs: https://developer.autopay.io/fleet-api/
requires: A fleet company profile at the Enterprise level.
payload_fields:
- {name: id, type: string, description: Unique id of the service.}
- {name: vehicle.license_plate_number, type: string}
- {name: vehicle.country_code, type: string, description: ISO 3166-1 alpha-2.}
- {name: vehicle.subdivision, type: string, required: false}
- {name: vehicle.created_at, type: date-time}
- {name: facility.code, type: string}
- {name: facility.name, type: string}
- {name: zone.code, type: string}
- {name: zone.name, type: string}
- {name: start_time, type: date-time, description: Start time of the service in UTC.}
- {name: operator_id, type: string}
- {name: type, type: string, enum: [PARKING, TOLL_ROAD]}
- {name: notification_period, type: string, required: false, description: Seconds between the entry event and this notification; present only on the periodical notification webhook.}
- {name: service_data, type: map, required: false}
inbound_lookups:
note: >-
One surface inverts the direction — Autopay calls the integrator to ASK a question rather
than to notify. It is a synchronous lookup, not an event.
surfaces:
- name: customer_club.membership_lookup
api: Customer Club API — "External (Webhook)" integration type
description: >-
Autopay requests a predefined URL with an ID (a licence plate or a loyalty membership id)
and expects a response saying whether the ID is a valid membership.
docs: https://developer.autopay.io/customer_club_api/
gaps:
asyncapi_spec: >-
None published. This catalog is transcribed from HTML reference pages; it is not an
AsyncAPI document and no AsyncAPI document was authored for Autopay, because authoring one
would assert a channel contract the provider has not published.
event_replay: No endpoint to replay or list missed events is documented.
signature: No payload signing scheme is documented; authenticity rests entirely on the credential Autopay presents to the integrator's endpoint.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/autopay-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.