# Validate an address

Validates the format of an address for a card order. Make sure to follow country-specific address fields and validation as described in the [card address validation guide](/guides/developer/api-guides/card-address-validation).
For card creation, the `address` requirement depends on the card type:
- **Physical Cards (Required)**: Used as the delivery address to ship the card and for AVS checks in countries where required.
- **Virtual Cards (Optional)**: If provided, this acts as the billing address. If omitted, the profile address is used as the fallback. In either scenario, the address is used for AVS checks in countries where required.

We do not support PO BOX addresses.

Endpoint: POST /spend/address/validate
Version: 2026Q4
Security: UserToken

## Security:

  - `UserToken` (unknown)
    http bearer JWT

## Header parameters:

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. [Learn more](/guides/developer/headers/correlation-id).

## Request fields (application/json):

  - `firstLine` (string)
    Card holder's address (max 30 characters).
    Example: 56 Shoreditch High St

  - `secondLine` (string | null)
    Card holder's address (max 30 characters).
    Example: The Tea Bldg

  - `thirdLine` (string | null)
    Card holder's address (max 30 characters).
    Example: null

  - `city` (string)
    Card holder's city (max 30 characters).
    Example: London

  - `postCode` (string)
    Card holder's postal code (max 10 characters).
    Example: E1 6JJ

  - `state` (string | null)
    Card holder's state (max 30 characters).
    Example: null

  - `country` (string)
    Card holder's country (ISO 3166-1 alpha-2, max 2 characters).
    Example: GB

## Response 200:

  - `200` (unknown)
    OK - Validation result returned. An empty errors collection means the address is valid.

## Response 200 fields (application/json):

  - `errors` (array)
    Collection of validation errors. Empty if address is valid.

  - `errors.field` (string)
    The field that failed validation.
    Example: postCode

  - `errors.message` (string)
    Description of the validation error.
    Example: Please enter a valid postcode

## Response 200 headers (application/json):

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 429:

  - `429` (unknown)
    Rate limit exceeded. Retry after the number of seconds specified in the `Retry-After` header.

## Response 429 headers (application/json):

  - `Retry-After` (integer)
    Number of seconds to wait before retrying the request.
    Example: 5

  - `X-Rate-Limited-By` (string)
    Identifies the rate limiter that triggered the 429 response.
    Example: wise-public-api

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

