---
title: Wallet Transactions
description: Perform manual wallet debit or credit transactions.
---

This API is used for manual wallet transactions (debit or credit). It requires transaction mode, 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, username, and wallet balance.

#### POST
```
https://kraken.airpay.co.in/airpay/wallet/api/walletTxn.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 |
| --- | --- | --- | --- |
| txn_mode  required | String  <br>(1-10) | Transaction mode: "debit" or "credit" | `debit` |
| merchant_id  required | Number  <br>(1-20) | Merchant ID | `18999` |
| token  required | String  <br>(10-200) | Token generated during wallet creation | `53b7602609702bf0055437c5edec157b23f3ace90d34fcf07275872b2350e7d5` |
| 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 | `aatest12@gmail.com` |
| order_id  required | Number  <br>(1-20) | Merchant-generated order ID | `12312312` |
| amount  required | Number  <br>(1-12) | Amount to be transacted | `100` |
| channel  required | String | Payment channel: "upi" or "mpesa" | `upi` |
| payee_identifier  required | String  <br>(10-15) | Mobile number for mPesa or VPA for UPI | `98776x3123` |
| 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.txn_mode.order_id.amount.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/walletTxn.php' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'txn_mode=debit' \
--data-urlencode 'merchant_id=18999' \
--data-urlencode 'token=53b7602609702bf0055437c5edec157b23f3ace90d34fcf07275872b2350e7d5' \
--data-urlencode 'private_key=53b7602609702bf0055437c5edec157b23f3ace90d34fcf07275872b2350e7d5' \
--data-urlencode 'wallet_user=aatest12@gmail.com' \
--data-urlencode 'order_id=12312312' \
--data-urlencode 'amount=100' \
--data-urlencode 'channel=upi' \
--data-urlencode 'payee_identifier=98776x3123' \
--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>
```