Autopay · AsyncAPI Specification

Autopay Webhooks

Version

View Spec View on GitHub ParkingParking PaymentsFleet ManagementPermitsParking OperatorsNorwayAsyncAPIEvents

AsyncAPI Specification

Raw ↑
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.
All 92 tools →

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.