---
api: 'Merchant API'
---

# Register address validation endpoint for Fast checkout

Use this endpoint to register a URL where Revolut can send shipping address(es) from a Revolut Pay customer for validation during the [Fast checkout
process](/docs/guides/merchant/optimise-checkout/fast-checkout).

Revolut Pay can support Fast checkout for delivering goods. Once your customer selects a shipping address, Revolut needs to validate if the merchant (or their shipping partner) delivers to the address provided. This is done by contacting the merchant's backend and asking for such validation and information.

In order for your backend to support Fast checkout, you need to:

1. Register an URL to handle address validation
1. Validate the shipping address sent to your backend
1. Respond with a JSON object containing the result of the validation

Additionally, Revolut Pay can support multiple webhooks if you have multiple stores. For more information, see:
  - [Manage multiple stores with Fast checkout](/docs/guides/merchant/optimise-checkout/fast-checkout#manage-multiple-stores-with-fast-checkout)
  - [Merchant API: Locations](/docs/api/merchant#tag-locations)

:::note
To set up a webhook for tracking order completion, failure, error, etc. events, use the [Webhooks endpoints](/docs/api/merchant#tag-webhooks).
:::

## Endpoint

POST `/api/synchronous-webhooks`

## Request body

### Attributes

- `event_type` (enum)
    Type of event this synchronous webhook is configured for.
    
    :::note
    At the moment, synchronous webhooks only support address validation events. 
    :::
    Possible enum values:

    - `fast_checkout.validate_address`
- `url` (string)
    The valid URL of the endpoint, that uses HTTPS URL schema. Revolut sends the shipping address of the customer to this URL for validation.
    
    :::warning
    Restrictions:
    - Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)
    - URI scheme is required and must be `https`
    - URI host is required and cannot be `localhost` or an IP address
    - Max length: `2000`
    - Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)
    :::
- `location_id` (string, optional)
    Unique ID representing the location where merchants sells products.
    
    :::info
    For more information, see: [Locations](/docs/api/merchant#tag-locations).
    :::

## Returns

### 200

OK

#### Response attributes

- `id` (string)
    The ID of the synchronous webhook object.
- `signing_key` (string)
    A randomly generated signing key, which can be used by merchants to authenticate requests from Revolut by verifying the signature. For more information, see: [Payload Signature](/docs/api/merchant#authentication).
- `url` (string)
    The valid URL of the endpoint, that uses HTTPS URL schema. Revolut sends the shipping address of the customer to this URL for validation.
    
    :::warning
    Restrictions:
    - Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)
    - URI scheme is required and must be `https`
    - URI host is required and cannot be `localhost` or an IP address
    - Max length: `2000`
    - Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)
    :::
- `event_type` (enum)
    Type of event this synchronous webhook is configured for.
    
    :::note
    At the moment, synchronous webhooks only support address validation events. 
    :::
    Possible enum values:

    - `fast_checkout.validate_address`
- `location_id` (string, optional)
    Unique ID representing the location where merchants sells products.
    
    :::info
    For more information, see: [Locations](/docs/api/merchant#tag-locations).
    :::

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Bad Request |
| 401 | Unauthorized |
