Revolut Webhooks API

A webhook (also called a web callback) allows your system to receive an event from Ramp immediately after it happens. With the **Webhooks** endpoints, you can create, update, delete, and retrieve webhooks, as well as retrieve webhooks that you have created. For more details, see the guides: [Work with Webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks) and [-> Verify the payload signature](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/verify-the-payload-signature).

Operations 11

GET /webhooks/{webhook_id} Retrieve a webhook #
PATCH /webhooks/{webhook_id} Update a webhook #
DELETE /webhooks/{webhook_id} Delete a webhook #
GET /webhooks Retrieve a list of webhooks #
POST /webhooks Create a webhook #
POST /api/webhooks Create a webhook #
GET /api/webhooks Retrieve a webhook list #
GET /api/webhooks/{webhook_id} Retrieve a webhook #
PATCH /api/webhooks/{webhook_id} Update a webhook #
DELETE /api/webhooks/{webhook_id} Delete a webhook #
POST /api/webhooks/{webhook_id}/rotate-signing-secret Rotate a webhook signing secret #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/revolut-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

revolut-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Revolut Webhooks API
  version: '1.0'
  description: 'Operations tagged Webhooks across 2 of this provider''s published API definitions: revolut-crypto-ramp-openapi.yaml, revolut-merchant-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://ramp-partners.revolut.com/partners/api/2.0
- description: Production server (uses live data)
  url: https://merchant.revolut.com
- description: Sandbox server (uses test data)
  url: https://sandbox-merchant.revolut.com
tags:
- name: Webhooks
  description: 'A webhook (also called a web callback) allows your system to receive an event from Ramp immediately after it happens.

    With the **Webhooks** endpoints, you can create, update, delete, and retrieve webhooks, as well as retrieve webhooks that you have created.


    For more details, see the guides: [Work with Webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks) and [-> Verify the payload signature](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/verify-the-payload-signature).'
paths:
  /webhooks/{webhook_id}:
    servers:
    - url: https://ramp-partners.revolut.com/partners/api/1.0
    get:
      operationId: retrieve-a-webhook
      tags:
      - Webhooks
      summary: Retrieve a webhook
      description: 'Get the details of a specific webhook.


        For more information, see the guides: [Work with webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks).'
      security:
      - AccessToken: []
      parameters:
      - $ref: '#/components/parameters/XApiKey'
      - in: path
        name: webhook_id
        description: The ID of the webhook.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The information about the webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
              example:
                id: c518d8cc-114b-d2ed-a10b-0a32ac1c0e4f
                url: https://crypto.partner.com/revolut
                events:
                - ORDER_PROCESSING
                - ORDER_COMPLETED
                signing_secret: wsk_h1ETWMz2g1bB7gCONjNp84t2KSSIt7rs
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          description: Unauthorized
        '404':
          $ref: '#/components/responses/NotFoundErrorResponse'
        '429':
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/ServerErrorResponse'
        '503':
          $ref: '#/components/responses/DisabledByKillSwitchErrorResponse'
    patch:
      operationId: update-a-webhook
      tags:
      - Webhooks
      summary: Update a webhook
      description: 'Update the details of a specific webhook.


        For more information, see the guides: [Work with webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks).'
      security:
      - AccessToken: []
      parameters:
      - $ref: '#/components/parameters/XApiKey'
      - in: path
        name: webhook_id
        description: The ID of the webhook.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookUpdateRequest'
      responses:
        '200':
          description: The successfully updated webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
              example:
                id: c518d8cc-114b-d2ed-a10b-0a32ac1c0e4f
                url: https://crypto.partner.com/revolut
                events:
                - ORDER_PROCESSING
                - ORDER_COMPLETED
                signing_secret: wsk_h1ETWMz2g1bB7gCONjNp84t2KSSIt7rs
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          description: Unauthorized
        '404':
          $ref: '#/components/responses/NotFoundErrorResponse'
        '429':
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/ServerErrorResponse'
        '503':
          $ref: '#/components/responses/DisabledByKillSwitchErrorResponse'
    delete:
      operationId: delete-a-webhook
      tags:
      - Webhooks
      summary: Delete a webhook
      description: 'Delete a webhook so that events are not sent to the specified URL any more.


        For more information, see the guides: [Work with webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks).'
      security:
      - AccessToken: []
      parameters:
      - $ref: '#/components/parameters/XApiKey'
      - in: path
        name: webhook_id
        description: The ID of the webhook.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: The webhook has been deleted
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          description: Unauthorized
        '404':
          $ref: '#/components/responses/NotFoundErrorResponse'
        '429':
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/ServerErrorResponse'
        '503':
          $ref: '#/components/responses/DisabledByKillSwitchErrorResponse'
  /webhooks:
    servers:
    - url: https://ramp-partners.revolut.com/partners/api/1.0
    get:
      operationId: retrieve-a-list-of-webhooks
      tags:
      - Webhooks
      summary: Retrieve a list of webhooks
      description: 'Get a list of webhooks that the partner is currently subscribed to.


        For more information, see the guides: [Work with webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks).'
      parameters:
      - $ref: '#/components/parameters/XApiKey'
      security:
      - AccessToken: []
      responses:
        '200':
          description: The list of all your existing webhooks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhooks'
              example:
              - $ref: '#/components/schemas/Webhook/example'
              - id: fb39d967-4a73-4483-8e52-5842e1cad7ef
                url: https://crypto.partner.com/revolut
                events:
                - ORDER_PROCESSING
                - ORDER_COMPLETED
                signing_secret: wsk_8fT55z3C5hCr41l6B0b057D85s2043x4
              - id: 894b00c1-da1f-44bb-b887-62af2e0d3bad
                url: https://example.com
                events:
                - ORDER_PROCESSING
                - ORDER_COMPLETED
                - ORDER_CREATED
                - ORDER_FAILED
                signing_secret: wsk_7gH67v2D8jEt52n9M1c068F96t3152y7
        '401':
          description: Unauthorized
        '429':
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/ServerErrorResponse'
        '503':
          $ref: '#/components/responses/DisabledByKillSwitchErrorResponse'
    post:
      operationId: create-a-webhook
      tags:
      - Webhooks
      summary: Create a webhook
      description: 'Create a webhook so that Ramp can push event notifications to the specified URL.


        For more information, see the guides: [Work with webhooks -> Track order and payment lifecycle](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/use-webhooks).'
      parameters:
      - $ref: '#/components/parameters/XApiKey'
      security:
      - AccessToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreateRequest'
      responses:
        '200':
          description: The successfully created webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
              example:
                id: c518d8cc-114b-d2ed-a10b-0a32ac1c0e4f
                url: https://crypto.partner.com/revolut
                events:
                - ORDER_PROCESSING
                - ORDER_COMPLETED
                signing_secret: wsk_h1ETWMz2g1bB7gCONjNp84t2KSSIt7rs
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          description: Unauthorized
        '429':
          description: Too Many Requests
        '500':
          $ref: '#/components/responses/ServerErrorResponse'
        '503':
          $ref: '#/components/responses/DisabledByKillSwitchErrorResponse'
  /api/webhooks:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    post:
      summary: Create a webhook
      operationId: createWebhook
      description: 'Set up a webhook URL so that the Merchant API can push event notifications to the specified URL.

        :::warning

        Merchants can register a **maximum of 10 webhook URLs**. If you attempt to register more than 10, the API will return a `422 - Unprocessable Content` error.


        Ensure your webhook registrations are necessary and within the allowed limit.

        :::'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Webhook-Creation'
            examples:
              example_webhook_request:
                $ref: '#/components/examples/Req-Webhook-Create'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook-v2'
              examples:
                created_webhook:
                  $ref: '#/components/examples/Res-Webhook-v2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      callbacks:
        Send webhook event:
          $ref: '#/components/callbacks/Webhook-Event'
      security:
      - Api-Key: []
      tags:
      - Webhooks
    get:
      summary: Retrieve a webhook list
      operationId: retrieveWebhookList
      description: Get a list of webhooks that you are currently subscribed to.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhooks_2'
              examples:
                list_of_webhooks:
                  $ref: '#/components/examples/Res-Webhooks-List'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Webhooks
    servers:
    - description: Production server (uses live data)
      url: https://merchant.revolut.com
    - description: Sandbox server (uses test data)
      url: https://sandbox-merchant.revolut.com
  /api/webhooks/{webhook_id}:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    - $ref: '#/components/parameters/Webhook-Id'
    get:
      summary: Retrieve a webhook
      operationId: retrieveWebhook
      description: 'Get the details of a specific webhook, including its `signing_secret`.  '
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook-v2'
              examples:
                retrieved_webhook:
                  $ref: '#/components/examples/Res-Webhook-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - Api-Key: []
      tags:
      - Webhooks
    patch:
      summary: Update a webhook
      operationId: updateWebhook
      description: 'Update the URL or events for a specific webhook.


        All request body fields are optional. Only the fields provided will be updated.  '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Webhook-Update'
            examples:
              webhook_update_request:
                $ref: '#/components/examples/Req-Webhook-Update'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook-v2'
              examples:
                updated_webhook:
                  $ref: '#/components/examples/Res-Webhook-v2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Webhooks
    delete:
      summary: Delete a webhook
      operationId: deleteWebhook
      description: Delete a webhook so that events are no longer sent to the specified URL.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Webhooks
    servers:
    - description: Production server (uses live data)
      url: https://merchant.revolut.com
    - description: Sandbox server (uses test data)
      url: https://sandbox-merchant.revolut.com
  /api/webhooks/{webhook_id}/rotate-signing-secret:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version-2024-09-01-Min'
    - $ref: '#/components/parameters/Webhook-Id'
    post:
      summary: Rotate a webhook signing secret
      operationId: rotateWebhookSigningSecret
      description: 'Rotate the `signing_secret` for a specific webhook.


        The updated signing secret is returned in the response as part of the full webhook object.


        :::info

        For more information, see [Tutorials: Verify the payload signature](https://developer.revolut.com/docs/guides/merchant/monitor-and-observe/webhooks/verify-the-payload-signature).

        :::'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                expiration_period:
                  type: string
                  format: duration
                  description: 'The expiration period of the signing secret in the [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601#Durations).


                    If defined, when the signing secret is rotated, it continues to be valid until the expiration period passes.


                    Otherwise, it is invalidated immediately.


                    Maximum expiration period is 7 days.'
                  example: PT5H30M
            examples:
              webhook_signing_secret_rotate_request:
                $ref: '#/components/examples/Req-Webhook-Rotate-Signing-Secret'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook-v2'
              examples:
                updated_webhook:
                  $ref: '#/components/examples/Res-Webhook-v2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Webhooks
    servers:
    - description: Production server (uses live data)
      url: https://merchant.revolut.com
    - description: Sandbox server (uses test data)
      url: https://sandbox-merchant.revolut.com
components:
  responses:
    DisabledByKillSwitchErrorResponse:
      description: The endpoint is disabled by Kill Switch
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DisabledByKillSwitchError'
          example:
            message: Service is not available
    BadRequestErrorResponse:
      description: 'Bad request


        A request parameter is invalid.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestError'
          example:
            message: Invalid field 'FieldName'
    NotFoundErrorResponse:
      description: Resource cannot be found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFoundError'
          example:
            message: Not found
    ServerErrorResponse:
      description: 'Server error


        An unexpected error occurred.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnexpectedError'
          example:
            errorId: 201768bc-7fab-12ed-a1bb-0232ac120902
            timestamp: 1671481582960
  schemas:
    NotFoundError:
      type: object
      description: Thrown when resource can't be found
      required:
      - message
      properties:
        message:
          type: string
          description: The message displayed to the user when resource cannot be found.
      example:
        message: Not found
    DisabledByKillSwitchError:
      type: object
      description: Thrown when endpoint is disabled by Kill Switch.
      required:
      - message
      properties:
        message:
          type: string
          description: The message displayed to the user when endpoint is disabled by Kill Switch.
      example:
        message: Service is not available
    WebhookUpdateRequest:
      type: object
      description: Webhook update parameters
      properties:
        url:
          type: string
          format: uri
          description: 'The webhook''s URL to which event notifications will be sent.

            Must be a valid HTTP or HTTPS URL, capable of receiving POST requests.'
        events:
          type: array
          description: The list of event types that the webhook is configured to listen to.
          items:
            $ref: '#/components/schemas/EventType'
      example:
        url: https://crypto.partner.com/revolut
        events:
        - ORDER_PROCESSING
        - ORDER_COMPLETED
    Webhook:
      type: object
      description: Webhook
      required:
      - id
      - url
      - events
      - signing_secret
      properties:
        id:
          type: string
          format: uuid
          description: The UUID of the webhook.
        url:
          type: string
          format: uri
          description: 'The webhook''s URL to which event notifications will be sent.

            Must be a valid HTTP or HTTPS URL, capable of receiving POST requests.'
        events:
          type: array
          description: The list of event types that the webhook is configured to listen to.
          items:
            $ref: '#/components/schemas/EventType'
        signing_secret:
          type: string
          description: 'The [signing secret](https://developer.revolut.com/docs/guides/crypto-ramp/tutorials/work-with-webhooks/verify-the-payload-signature#webhook-signing-secret) for the webhook.

            Use it to verify the signature for the webhook''s request payload.'
      example:
        id: c518d8cc-114b-d2ed-a10b-0a32ac1c0e4f
        url: https://crypto.partner.com/revolut
        events:
        - ORDER_PROCESSING
        - ORDER_COMPLETED
        signing_secret: wsk_h1ETWMz2g1bB7gCONjNp84t2KSSIt7rs
    UnexpectedError:
      type: object
      description: Thrown when an unexpected error happens.
      required:
      - errorId
      - timestamp
      properties:
        errorId:
          type: string
          format: uuid
          description: The UUID of the unexpected error that has occurred.
        timestamp:
          type: integer
          format: int64
          description: The timestamp of when the error happened.
      example:
        errorId: 201768bc-7fab-12ed-a1bb-0232ac120902
        timestamp: 1671481582960
    WebhookCreateRequest:
      type: object
      description: Webhook create parameters
      required:
      - url
      - events
      properties:
        url:
          type: string
          format: uri
          description: 'The webhook''s URL to which event notifications will be sent.

            Must be a valid HTTP or HTTPS URL, capable of receiving POST requests.'
        events:
          type: array
          description: The list of event types that the webhook is configured to listen to.
          items:
            $ref: '#/components/schemas/EventType'
      example:
        url: https://crypto.partner.com/revolut
        events:
        - ORDER_PROCESSING
        - ORDER_COMPLETED
    BadRequestError:
      type: object
      description: Thrown when request parameter field is invalid
      required:
      - message
      properties:
        message:
          type: string
          description: Specifies the invalid parameter that was provided by the user.
      example:
        message: Invalid field 'FieldName'
    EventType:
      type: string
      description: Webhook event type
      enum:
      - ORDER_CREATED
      - ORDER_PROCESSING
      - ORDER_COMPLETED
      - ORDER_FAILED
    Webhooks:
      type: array
      items:
        $ref: '#/components/schemas/Webhook'
      example:
      - $ref: '#/components/schemas/Webhook/example'
      - id: fb39d967-4a73-4483-8e52-5842e1cad7ef
        url: https://crypto.partner.com/revolut
        events:
        - ORDER_PROCESSING
        - ORDER_COMPLETED
        signing_secret: wsk_8fT55z3C5hCr41l6B0b057D85s2043x4
      - id: 894b00c1-da1f-44bb-b887-62af2e0d3bad
        url: https://example.com
        events:
        - ORDER_PROCESSING
        - ORDER_COMPLETED
        - ORDER_CREATED
        - ORDER_FAILED
        signing_secret: wsk_7gH67v2D8jEt52n9M1c068F96t3152y7
    Webhooks_2:
      type: object
      required:
      - webhooks
      properties:
        webhooks:
          type: array
          description: List of webhooks.
          maxItems: 10
          items:
            $ref: '#/components/schemas/Webhook-v2'
    Webhook-Order-Event:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/Webhook-Callback-Event'
        order_id:
          type: string
          format: uuid
          description: The ID of the order the event is related to.
        merchant_order_ext_ref:
          type: string
          description: 'The information sent during order creation in the

            `merchant_order_data.reference` field.'
        incremental_authorisation_ext_reference:
          type: string
          description: The reference sent in the `reference` field of the [Increment authorisation](https://developer.revolut.com/docs/api/merchant#increment-authorisation) request. Only present for incremental authorisation events.
      required:
      - event
      - order_id
    Webhook-Creation:
      title: Webhook schema for creation and update operations
      type: object
      properties:
        url:
          $ref: '#/components/schemas/Webhook-Url'
        events:
          $ref: '#/components/schemas/Webhook-Events'
      required:
      - url
      - events
    Webhook-Dispute-Event:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/Webhook-Callback-Event'
        dispute_id:
          type: string
          format: uuid
          description: The ID of the dispute the event is related to.
      required:
      - event
      - dispute_id
    Webhook-Update:
      title: Webhook update
      type: object
      description: 'The request body for updating a webhook.


        All fields are optional. Only the fields provided in the request will be updated.'
      properties:
        url:
          $ref: '#/components/schemas/Webhook-Url'
        events:
          $ref: '#/components/schemas/Webhook-Events'
    Webhook-Payout-Event:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/Webhook-Callback-Event'
        payout_id:
          type: string
          format: uuid
          description: The ID of the payout the event is related to.
      required:
      - event
      - payout_id
    Webhook-Url:
      type: string
      format: uri
      pattern: ^https?:\/{2}.+/gi
      maxLength: 2000
      description: "Your webhook's URL to which event notifications will be sent. \n\nMust be a valid HTTP or HTTPS URL, capable of receiving `POST` requests.\n\n:::warning\nRestrictions:\n- Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)\n- URI scheme is required and must be either `http` or `https`\n- URI host is required and cannot be `localhost` or an IP address\n- Max length: `2000`\n- Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)\n:::"
    Webhook-v2:
      title: Webhook
      type: object
      description: 'A webhook object.


        Unlike the legacy API, `signing_secret` is included in all webhook responses, not only on creation.'
      properties:
        id:
          $ref: '#/components/schemas/Webhook-Id'
        url:
          $ref: '#/components/schemas/Webhook-Url'
        events:
          $ref: '#/components/schemas/Webhook-Events'
        signing_secret:
          $ref: '#/components/schemas/Webhook-Signing-Secret'
      required:
      - id
      - url
      - events
      - signing_secret
    Error:
      title: Error
      type: object
      properties:
        errorId:
          type: string
          description: The ID of the error. You can share this ID with Revolut support for troubleshooting.
        timestamp:
          type: integer
          description: The date and time the error happened.
      required:
      - errorId
      - timestamp
    Webhook-Callback-Event:
      type: string
      enum:
      - ORDER_COMPLETED
      - ORDER_AUTHORISED
      - ORDER_CANCELLED
      - ORDER_FAILED
      - ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED
      - ORDER_INCREMENTAL_AUTHORISATION_DECLINED
      - ORDER_INCREMENTAL_AUTHORISATION_FAILED
      - ORDER_PAYMENT_AUTHENTICATION_CHALLENGED
      - ORDER_PAYMENT_AUTHENTICATED
      - ORDER_PAYMENT_DECLINED
      - ORDER_PAYMENT_FAILED
      - SUBSCRIPTION_INITIATED
      - SUBSCRIPTION_FINISHED
      - SUBSCRIPTION_CANCELLED
      - SUBSCRIPTION_OVERDUE
      - PAYOUT_INITIATED
      - PAYOUT_COMPLETED
      - PAYOUT_FAILED
      - DISPUTE_ACTION_REQUIRED
      - DISPUTE_UNDER_REVIEW
      - DISPUTE_WON
      - DISPUTE_LOST
      description: "The event type of the webhook notification that's sent by Revolut to your webhook URL.\n\nEach event is related to status changes of a specific object in the Merchant API:\n\n  | Object | Event types |\n  | --------- | ----------- |\n  | `Order`   | <ul> <li>`ORDER_COMPLETED`</li> <li>`ORDER_AUTHORISED`</li> <li>`ORDER_CANCELLED`</li> <li>`ORDER_FAILED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_DECLINED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_FAILED`</li> </ul> |\n  | `Payment` | <ul> <li>`ORDER_PAYMENT_AUTHENTICATION_CHALLENGED`</li> <li>`ORDER_PAYMENT_AUTHENTICATED`</li> <li>`ORDER_PAYMENT_DECLINED`</li> <li>`ORDER_PAYMENT_FAILED`</li> </ul> |\n  | `Subscription`  | <ul> <li>`SUBSCRIPTION_INITIATED`</li> <li>`SUBSCRIPTION_FINISHED`</li> <li>`SUBSCRIPTION_CANCELLED`</li> <li>`SUBSCRIPTION_OVERDUE`</li></ul> |\n  | `Payout`  | <ul> <li>`PAYOUT_INITIATED`</li> <li>`PAYOUT_COMPLETED`</li> <li>`PAYOUT_FAILED`</li> </ul> |\n  | `Dispute`  | <ul> <li>`DISPUTE_ACTION_REQUIRED`</li> <li>`DISPUTE_UNDER_REVIEW`</li> <li>`DISPUTE_WON`</li> <li>`DISPUTE_LOST`</li></ul> |"
    Webhook-Id:
      type: string
      format: uuid
      description: The ID of the webhook.
    Webhook-Events:
      type: array
      description: "List of event types that the webhook is configured to listen to.\n\nEach event is related to status changes of a specific object in the Merchant API:\n\n  | Object | Event types |\n  | --------- | ----------- |\n  | `Order`   | <ul> <li>`ORDER_COMPLETED`</li> <li>`ORDER_AUTHORISED`</li> <li>`ORDER_CANCELLED`</li> <li>`ORDER_FAILED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_DECLINED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_FAILED`</li> </ul> |\n  | `Payment` | <ul> <li>`ORDER_PAYMENT_AUTHENTICATION_CHALLENGED`</li> <li>`ORDER_PAYMENT_AUTHENTICATED`</li> <li>`ORDER_PAYMENT_DECLINED`</li> <li>`ORDER_PAYMENT_FAILED`</li> </ul> |\n  | `Subscription`  | <ul> <li>`SUBSCRIPTION_INITIATED`</li> <li>`SUBSCRIPTION_FINISHED`</li> <li>`SUBSCRIPTION_CANCELLED`</li> <li>`SUBSCRIPTION_OVERDUE`</li></ul> |\n  | `Payout`  | <ul> <li>`PAYOUT_INITIATED`</li> <li>`PAYOUT_COMPLETED`</li> <li>`PAYOUT_FAILED`</li> </ul> |\n  | `Dispute`  | <ul> <li>`DISPUTE_ACTION_REQUIRED`</li> <li>`DISPUTE_UNDER_REVIEW`</li> <li>`DISPUTE_WON`</li> <li>`DISPUTE_LOST`</li></ul> |"
      items:
        type: string
        description: The available event types your can listen to.
        enum:
        - ORDER_COMPLETED
        - ORDER_AUTHORISED
        - ORDER_CANCELLED
        - ORDER_FAILED
        - ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED
        - ORDER_INCREMENTAL_AUTHORISATION_DECLINED
        - ORDER_INCREMENTAL_AUTHORISATION_FAILED
        - ORDER_PAYMENT_AUTHENTICATION_CHALLENGED
        - ORDER_PAYMENT_AUTHENTICATED
        - ORDER_PAYMENT_DECLINED
        - ORDER_PAYMENT_FAILED
        - SUBSCRIPTION_INITIATED
        - SUBSCRIPTION_FINISHED
        - SUBSCRIPTION_CANCELLED
        - SUBSCRIPTION_OVERDUE
        - PAYOUT_INITIATED
        - PAYOUT_COMPLETED
        - PAYOUT_FAILED
        - DISPUTE_ACTION_REQUIRED
        - DISPUTE_UNDER_REVIEW
        - DISPUTE_WON
        - DISPUTE_LOST
      minItems: 1
    Webhook-Signing-Secret:
      type: string
      description: The signing secret for the webhook. Use it to verify the signature for the webhook request's payload.
    Webhook-Subscription-Event:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/Webhook-Callback-Event'
        subscription_id:
          type: string
          format: uuid
          description: The ID of the subscription the event is related to.
        external_reference:
          type

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/openapi/revolut-webhooks-api-openapi.yml