Skip to content

Verify by URL

Verify a TrueMoney Wallet slip by providing a URL to the image.

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
Content-Type: application/json

Request

Parameters

ParameterTypeRequiredDescription
urlstringYesURL to slip image (1-255 characters)
remarkstringNoCustom remark (1-255 characters)
matchAccountbooleanNoMatch receiver with registered accounts
matchAmountnumberNoExpected amount to validate
checkDuplicatebooleanNoCheck for duplicate slip

URL Requirements

RequirementValue
ProtocolHTTP or HTTPS only
Maximum length255 characters
Content typeMust return a valid image
Maximum size4 MB
IP restrictionsNo private/internal IP addresses

Type Definitions

typescript
// Request
interface VerifyByUrlRequest {
  url: string;              // 1-255 chars
  remark?: string;          // 1-255 chars
  matchAccount?: boolean;
  matchAmount?: number;
  checkDuplicate?: boolean;
}

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

// See POST /verify/truewallet for full type definitions

Examples

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/slips/truemoney-slip.jpg",
    "checkDuplicate": true
  }'
javascript
const verifyTrueWallet = async (url, options = {}) => {
  const response = await fetch('https://api.easyslip.com/v2/verify/truewallet', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ url, ...options })
  });

  const result = await response.json();

  if (!result.success) {
    throw new Error(result.error.message);
  }

  return result.data;
};

// Usage
const slip = await verifyTrueWallet('https://example.com/slips/truemoney-slip.jpg', {
  checkDuplicate: true,
  matchAmount: 500.00
});

console.log('Amount:', slip.rawSlip.amount);
console.log('Is Amount Matched:', slip.isAmountMatched);
php
function verifyTrueWallet(string $url, array $options = []): array
{
    $apiKey = getenv('EASYSLIP_API_KEY');
    $data = array_merge(['url' => $url], $options);

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'https://api.easyslip.com/v2/verify/truewallet',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => [
            'Authorization: Bearer ' . $apiKey,
            'Content-Type: application/json'
        ],
        CURLOPT_POSTFIELDS => json_encode($data)
    ]);

    $response = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($response, true);

    if (!$result['success']) {
        throw new Exception($result['error']['message']);
    }

    return $result['data'];
}

// Usage
$slip = verifyTrueWallet('https://example.com/slips/truemoney-slip.jpg', [
    'checkDuplicate' => true
]);

echo "Amount: " . $slip['rawSlip']['amount'];
python
import requests
import os

def verify_truewallet(url: str, **options) -> dict:
    response = requests.post(
        'https://api.easyslip.com/v2/verify/truewallet',
        headers={
            'Authorization': f'Bearer {os.environ["EASYSLIP_API_KEY"]}',
            'Content-Type': 'application/json'
        },
        json={'url': url, **options}
    )

    result = response.json()

    if not result['success']:
        raise Exception(result['error']['message'])

    return result['data']

# Usage
slip = verify_truewallet(
    'https://example.com/slips/truemoney-slip.jpg',
    checkDuplicate=True
)

print(f"Amount: {slip['rawSlip']['amount']}")

Response

Success (200)

json
{
  "success": true,
  "data": {
    "isDuplicate": false,
    "amountInSlip": 500.00,
    "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

Invalid URL Protocol (400)

json
{
  "success": false,
  "error": {
    "code": "URL_PROTOCOL_NOT_ALLOWED",
    "message": "Only HTTP and HTTPS protocols are allowed"
  }
}

Invalid IP Range (400)

json
{
  "success": false,
  "error": {
    "code": "URL_INVALID_IP_RANGE",
    "message": "URL points to a restricted IP range"
  }
}

URL Unreachable (400)

json
{
  "success": false,
  "error": {
    "code": "IMAGE_URL_UNREACHABLE",
    "message": "Unable to access the image URL"
  }
}

Image Too Large (400)

json
{
  "success": false,
  "error": {
    "code": "IMAGE_SIZE_TOO_LARGE",
    "message": "Image size exceeds 4MB limit"
  }
}

Notes

  • Use HTTPS URLs for security
  • URL must be publicly accessible
  • API has a 10-second timeout for URL fetching
  • For reliability, host images on a CDN

Bank Slip Verification API for Thai Banking