POST /verify/truewallet
Verify TrueMoney Wallet transfer slips using image upload, Base64, or URL.
Endpoint
http
POST /verify/truewalletFull URL: https://api.easyslip.com/v2/verify/truewallet
Authentication
Required. See Authentication Guide.
http
Authorization: Bearer YOUR_API_KEYRequest
Input Methods
| Method | Field | Content-Type | Description |
|---|---|---|---|
| Image | image | multipart/form-data | Image file upload |
| Base64 | base64 | application/json | Base64 encoded image |
| URL | url | application/json | URL to slip image |
One Input Required
You must provide exactly one of: image, base64, or url.
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
remark | string | Custom remark for tracking (1-255 chars) |
matchAccount | boolean | Match receiver with registered TrueMoney Wallet accounts |
matchAmount | number | Expected amount to validate |
checkDuplicate | boolean | Check 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
| Requirement | Value |
|---|---|
| Maximum size | 4 MB |
| Supported formats | JPEG, PNG, GIF, WebP |
| QR code | Must be clearly visible |
| URL restrictions | HTTP/HTTPS only, no private IP ranges |
Duplicate Handling
When checkDuplicate: true:
| Scenario | Result | Quota |
|---|---|---|
| Same branch, previously verified | Cached data, isDuplicate: true | Not consumed |
| New slip | Fresh data, isDuplicate: false | Consumed |
Account Matching
When matchAccount: true:
- System checks receiver phone against your registered TrueMoney Wallet accounts
- Matches by last 4 digits of the receiver's phone number
- Returns
matchedAccount: nullif no match found
Notes
- Requests are counted against your monthly quota
- Check
/infoendpoint for current usage - Ensure the QR code is clearly visible for best results
- Use
checkDuplicate: trueto prevent double-crediting - See individual method pages for detailed examples