---
title: Wallet Redeem API
description: Redeem wallet amounts to a consumer's account using UPI or mPesa.
---

This API is used to redeem wallet amounts to a consumer's account using UPI or mPesa. It requires merchant ID, token, private key, wallet user, order ID, amount, channel, payee identifier, merchant domain, output format, and checksum. A successful request returns the transaction status, merchant ID, wallet user, and wallet balance.

#### POST
```
https://kraken.airpay.co.in/airpay/wallet/api/redeemApi.php
```

## Header

| Parameter | Type Value | Description | Value Like |
| --- | --- | --- | --- |
| Content-Type  required | String | The Content-Type header indicates the media type of the request or response body so the receiver knows how to process the data. | `application/x-www-form-urlencodeds` |

## Request Body

| Parameter | Type Value | Description | Value Like |
| --- | --- | --- | --- |
| merchant_id  required | Number  <br>(1-20) | Merchant ID | `18999` |
| token  required | String  <br>(10-200) | Token generated during wallet creation | `JWT_SECRET_TOKEN_12345` |
| private_key  required | String  <br>(10-200) | Private Key, generated as hash('sha256', secret.'@'.username.'@@||'.password) | `53b7602609702bf0055437c5edec157b23f3ace90d34fcf07275872b2350e7d5` |
| wallet_user  required | String  <br>(6-50) | Email, mobile number, or UID of the wallet user | `test@xyz.com` |
| order_id  required | Number  <br>(1-20) | Merchant-generated unique order ID | `333213` |
| amount  required | Number  <br>(1-12,2) | Amount to be redeemed | `50.00` |
| channel  required | String | Payment channel: "upi" or "mpesa" | `upi` |
| payee_identifier  required | String  <br>(10-50) | Mobile number for mPesa or VPA for UPI | `523532523223` |
| mer_dom  required | String  <br>(10-64) | Base64-encoded, URL-encoded registered domain URL | `aHR0cDovL2xvY2FsaG9zdA==` |
| outputFormat  optional | String  <br>(1-3) | Response format: json or xml (default: xml) | `xml` |
| checksum  required | String | MD5 hash: md5(merchant_id.token.wallet_user.payee_identifier.order_id.amount.channel.date('Y-m-d').private_key) | `72ce8cfbb1347905c34e121336bb3d09` |

## Success 200

| Parameter | Type Value | Description | Value Like |
| --- | --- | --- | --- |
| TRANSACTIONSTATUS  required | Number | Transaction status code: 200: Success (Transaction is successful)211: Transaction in Process (Transaction is processing)400: Failed (Transaction failed)401: Dropped (Transaction did not register properly)402: Cancel (Payment not yet processed)403: Incomplete (No callback received from bank)405: Bounced (Transaction bounced)503: No Records (No records found) |
| MESSAGE  required | String | Response message from the payment gateway (e.g., "Successful", "Invalid checksum") |
| CHMOD  required | String | Transaction channel mode (always "wallet") | `wallet` |
| MERCHANTID  required | String | Merchant ID | `18999` |
| USERNAME  required | String | Email or username of the wallet user |
| WALLETBALANCE  required | Number | Wallet balance after transaction | `50.00` |

## Request Example

```
curl --location 'https://kraken.airpay.co.in/airpay/wallet/api/redeemApi.php' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'merchant_id=18999' \
--data-urlencode 'token=asjhdlkashdkas5658as' \
--data-urlencode 'private_key=53b7602609702bf0055437c5edec157b23f3ace90d34fcf07275872b2350e7d5' \
--data-urlencode 'wallet_user=aatest12@gmail.com' \
--data-urlencode 'order_id=333213' \
--data-urlencode 'amount=50.00' \
--data-urlencode 'channel=upi' \
--data-urlencode 'payee_identifier=523532523223' \
--data-urlencode 'mer_dom=aHR0cDovL2xvY2FsaG9zdA==' \
--data-urlencode 'checksum=72ce8cfbb1347905c34e121336bb3d09'
```

### Success Response (JSON)

```json
HTTP/1.1 200 OK
{
  "TRANSACTION": {
    "TRANSACTIONSTATUS": 200,
    "MESSAGE": "Successful",
    "CHMOD": "wallet",
    "MERCHANTID": "18999",
    "USERNAME": "aatest12@gmail.com",
    "WALLETBALANCE": 50.00
  }
}
```

### Success Response (XML)

```xml
<?xml version="1.0" encoding="UTF-8"?>
<RESPONSE>
  <TRANSACTION>
    <TRANSACTIONSTATUS>200</TRANSACTIONSTATUS>
    <MESSAGE>Successful</MESSAGE>
    <CHMOD>wallet</CHMOD>
    <MERCHANTID>18999</MERCHANTID>
    <USERNAME>aatest12@gmail.com</USERNAME>
    <WALLETBALANCE>50.00</WALLETBALANCE>
  </TRANSACTION>
</RESPONSE>
```

### Error Response (JSON)

```json
HTTP/1.1 200 OK
{
  "TRANSACTION": {
    "TRANSACTIONSTATUS": "400",
    "MESSAGE": "Invalid checksum"
  }
}
```

### Error Response (XML)

```xml
<?xml version="1.0" encoding="UTF-8"?>
<RESPONSE>
  <TRANSACTION>
    <TRANSACTIONSTATUS>400</TRANSACTIONSTATUS>
    <MESSAGE>Invalid checksum</MESSAGE>
  </TRANSACTION>
</RESPONSE>
```