Skip to content

POST /verify/truewallet

Verify TrueMoney Wallet transfer slips using image upload, Base64, or URL.

Endpoint

http
POST /verify/truewallet

Full URL: https://api.easyslip.com/v2/verify/truewallet

Authentication

Required. See Authentication Guide.

http
Authorization: Bearer YOUR_API_KEY

Request

Input Methods

MethodFieldContent-TypeDescription
Imageimagemultipart/form-dataImage file upload
Base64base64application/jsonBase64 encoded image
URLurlapplication/jsonURL to slip image

One Input Required

You must provide exactly one of: image, base64, or url.

Optional Parameters

ParameterTypeDescription
remarkstringCustom remark for tracking (1-255 chars)
matchAccountbooleanMatch receiver with registered TrueMoney Wallet accounts
matchAmountnumberExpected amount to validate
checkDuplicatebooleanCheck if slip was already verified (default: false)

Type Definitions

typescript
// Request Types
interface VerifyTrueWalletRequest {
  // One of the following is required
  image?: File;          // Image file (multipart/form-data)
  base64?: string;       // Base64 encoded image
  url?: string;          // URL to image (1-255 chars)

  // Optional parameters
  remark?: string;       // 1-255 chars
  matchAccount?: boolean;
  matchAmount?: number;
  checkDuplicate?: boolean;
}

// Response Types
interface VerifyTrueWalletResponse {
  success: true;
  data: VerifyTrueWalletData;
  message: string;
}

interface VerifyTrueWalletData {
  remark?: string;
  isDuplicate: boolean;
  matchedAccount: MatchedAccount | null;
  amountInOrder?: number;
  amountInSlip: number;
  isAmountMatched?: boolean;
  rawSlip: TrueWalletSlip;
}

interface MatchedAccount {
  bank: {
    nameTh: string;
    nameEn: string;
    code: string;
    shortCode: string;
  };
  nameTh: string;
  nameEn: string;
  type: 'PERSONAL' | 'JURISTIC';
  bankNumber: string;
}

interface TrueWalletSlip {
  transactionId: string;
  date: string;              // ISO 8601
  amount: number;
  sender: {
    name: string;
  };
  receiver: {
    name: string;
    phone: string;           // Masked phone number
  };
}

// Error Response
interface ErrorResponse {
  success: false;
  error: {
    code: string;
    message: string;
  };
}

Examples

bash
curl -X POST https://api.easyslip.com/v2/verify/truewallet \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image=@/path/to/truemoney-slip.jpg"
bash
curl -X POST https://api.easyslip.com/v2/verify/truewallet \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA..."}'
bash
curl -X POST https://api.easyslip.com/v2/verify/truewallet \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/truemoney-slip.jpg"}'

Response

Success Response (200)

json
{
  "success": true,
  "data": {
    "remark": "Order #12345",
    "isDuplicate": false,
    "matchedAccount": {
      "bank": {
        "nameTh": "ทรูมันนี่ วอลเล็ท",
        "nameEn": "TrueMoney Wallet",
        "code": "TRUEMONEYWALLET",
        "shortCode": "TRUEWALLET"
      },
      "nameTh": "นาย รับเงิน ทดสอบ",
      "nameEn": "",
      "type": "PERSONAL",
      "bankNumber": "0891234567"
    },
    "amountInOrder": 500.00,
    "amountInSlip": 500.00,
    "isAmountMatched": true,
    "rawSlip": {
      "transactionId": "12345678901234",
      "date": "2024-01-15T14:30:00+07:00",
      "amount": 500.00,
      "sender": {
        "name": "นาย ผู้โอน ทดสอบ"
      },
      "receiver": {
        "name": "นาย รับเงิน ทดสอบ",
        "phone": "08x-xxx-4567"
      }
    }
  },
  "message": "TrueMoney Wallet slip verified successfully"
}

Error Responses

Validation Error (400)

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Please provide either a image file, a base64 encoded image, or a image URL"
  }
}

Invalid Image (400)

json
{
  "success": false,
  "error": {
    "code": "INVALID_IMAGE",
    "message": "Image is not a valid TrueMoney Wallet slip"
  }
}

Slip Not Found (404)

json
{
  "success": false,
  "error": {
    "code": "SLIP_NOT_FOUND",
    "message": "TrueMoney Wallet slip not found or invalid"
  }
}

Quota Exceeded (403)

json
{
  "success": false,
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Service quota limit has been reached"
  }
}

Image Requirements

RequirementValue
Maximum size4 MB
Supported formatsJPEG, PNG, GIF, WebP
QR codeMust be clearly visible
URL restrictionsHTTP/HTTPS only, no private IP ranges

Duplicate Handling

When checkDuplicate: true:

ScenarioResultQuota
Same branch, previously verifiedCached data, isDuplicate: trueNot consumed
New slipFresh data, isDuplicate: falseConsumed

Account Matching

When matchAccount: true:

  1. System checks receiver phone against your registered TrueMoney Wallet accounts
  2. Matches by last 4 digits of the receiver's phone number
  3. Returns matchedAccount: null if no match found

Notes

  • Requests are counted against your monthly quota
  • Check /info endpoint for current usage
  • Ensure the QR code is clearly visible for best results
  • Use checkDuplicate: true to prevent double-crediting
  • See individual method pages for detailed examples

Bank Slip Verification API for Thai Banking