# Validate Brand Wallet

**Method:** `POST`

**Path:** `/payment-option/wallet/validate`

**Category:** Brand Wallet

**Authentication:** Required

## Description

Validates that a customer's wallet can fulfil a payment of the given amount.
Call this before creating an order to confirm the wallet balance is sufficient.
Returns the eligible amount and whether redemption is allowed.


## Request Body

Content-Type: `application/json`

- `notes` (`string`)
- `amount` (`object`) **required** — Monetary amount with currency.
  - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
  - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

- `customers` (`object`) **required** — Customer information.
  - `email_id` (`string`) — Customer's email address.
  - `first_name` (`string`) — Customer's first name.
  - `last_name` (`string`) — Customer's last name.
  - `customer_id` (`string`) — Unique identifier of the customer.
  - `mobile_number` (`string`) — Customer's mobile number.
  - `country_code` (`string`) — Country code of the registered mobile number. Defaults to 91.
  - `billing_address` (`object`) — Physical address.
    - `address1` (`string`) — Address line 1.
    - `address2` (`string`) — Address line 2.
    - `address3` (`string`) — Address line 3.
    - `pincode` (`string`) — Postal/ZIP code.
    - `city` (`string`) — City name.
    - `state` (`string`) — State or province.
    - `country` (`string`) — Country name.
    - `full_name` (`string`) — Full name of the address holder.
    - `adddress_type` (`string`) — Type of address (e.g., Home, Office).
    - `address_category` (`billing | shipping`) — Category of the address.

  - `shipping_address` (`object`) — Physical address.
    - `address1` (`string`) — Address line 1.
    - `address2` (`string`) — Address line 2.
    - `address3` (`string`) — Address line 3.
    - `pincode` (`string`) — Postal/ZIP code.
    - `city` (`string`) — City name.
    - `state` (`string`) — State or province.
    - `country` (`string`) — Country name.
    - `full_name` (`string`) — Full name of the address holder.
    - `adddress_type` (`string`) — Type of address (e.g., Home, Office).
    - `address_category` (`billing | shipping`) — Category of the address.

  - `is_edit_customer_details_allowed` (`boolean`) — Whether the customer is allowed to edit their details.


### Example Request

```json
{
  "amount": {
    "value": 50000,
    "currency": "INR"
  },
  "customers": {
    "email_id": "john@example.com",
    "first_name": "Kevin",
    "last_name": "Bob",
    "customer_id": "123456",
    "mobile_number": "9876543210",
    "country_code": "91",
    "billing_address": {
      "address1": "10 Downing Street Westminster London",
      "address2": "Oxford Street Westminster London",
      "address3": "Baker Street Westminster London",
      "pincode": "51524036",
      "city": "Westminster",
      "state": "Westminster",
      "country": "London",
      "full_name": "Kevin Bob",
      "adddress_type": "Home",
      "address_category": "billing"
    },
    "shipping_address": {
      "address1": "10 Downing Street Westminster London",
      "address2": "Oxford Street Westminster London",
      "address3": "Baker Street Westminster London",
      "pincode": "51524036",
      "city": "Westminster",
      "state": "Westminster",
      "country": "London",
      "full_name": "Kevin Bob",
      "adddress_type": "Home",
      "address_category": "billing"
    },
    "is_edit_customer_details_allowed": false
  }
}
```

## Responses

- `200` — Wallet validation result.
- `400` — 
- `401` — 
- `422` — Unprocessable entity.
- `500` — 

### Response Schema

- `eligible_amount` (`object`) — Monetary amount with currency.
  - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
  - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

- `total_balance_amount` (`object`) — Monetary amount with currency.
  - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
  - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

- `redemption_allowed` (`boolean`) — Whether the wallet can be used for this transaction
- `notes` (`string`) — Additional validation notes

### Example Response

```json
{
  "eligible_amount": {
    "value": 50000,
    "currency": "INR"
  },
  "total_balance_amount": {
    "value": 50000,
    "currency": "INR"
  }
}
```

---

Reference: https://localhost:3000/api/brand-wallet/validate-brand-wallet
