npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-thunder

v1.1.0

Published

n8n community node for Thunder API - verify bank slips and Truemoney wallet slips

Readme

n8n-nodes-thunder

Thunder Node Version License

An n8n community node package for verifying bank slips and TrueMoney wallet slips using the Thunder API. This node provides seamless integration with Thailand's digital payment verification system.

Features

  • 🏦 Bank Slip Verification - Verify bank transfer slips from all major Thai banks
  • 💳 TrueMoney Wallet Verification - Verify TrueMoney wallet payment slips
  • 🔍 Multiple Input Methods - Support for QR payload, image files, base64 data, and image URLs
  • 🎯 Smart Filtering - Filter results by bank code or receiver name with dual outputs
  • 🔒 Duplicate Detection - Built-in duplicate slip detection capabilities
  • 🤖 AI Agent Compatible - Marked as usableAsTool: true for AI workflow integration

Installation

Prerequisites

Install the Node

npm install n8n-nodes-thunder

Set up Credentials

  1. In n8n, go to CredentialsCreate New
  2. Search for "Thunder API"
  3. Enter your Bearer token from the Thunder Developer Portal
  4. Test the connection and save

Usage

Node Behavior

Resources

Bank Slip

Supports verification of bank transfer slips from major Thai banks including:

  • Bangkok Bank (BBL) - Code: 002
  • Krung Thai Bank (KTB) - Code: 006
  • Bank of Ayudhya (BAY) - Code: 025
  • Kasikorn Bank (KBANK) - Code: 004
  • And 17+ other banks

TrueMoney Wallet

Supports verification of TrueMoney wallet payment slips.

Operations

Bank Slip Operations

1. Verify by Payload

  • Uses QR code data from bank slip
  • Method: GET request with query parameters
  • Input: QR payload string
  • Fastest verification method

2. Verify by Image

  • Upload slip image file directly
  • Method: POST with multipart form data
  • Input: Binary image data from previous node
  • Supports JPG, PNG formats

3. Verify by Base64

  • Uses base64 encoded image data
  • Method: POST with JSON payload
  • Input: Base64 string of slip image

4. Verify by URL

  • Fetches slip image from URL
  • Method: POST with JSON payload
  • Input: Public URL to slip image

TrueMoney Wallet Operations

1. Verify by Image

  • Upload wallet slip image
  • Method: POST with multipart form data
  • Input: Binary image data

Dual Output System

The node features a smart dual output system:

Output 1: "Matched / All"

  • Contains items that match applied filters
  • Contains all items when no filters are applied
  • Contains error responses when "Continue on Fail" is enabled

Output 2: "Not Matched"

  • Contains items that don't match applied filters
  • Empty when no filters are applied
  • Only used for Bank Slip verification with filters

Filtering Options (Bank Slip Only)

Filter by Receiver Bank Code

  • Filter results by specific bank
  • Non-matching items route to second output
  • Supports all major Thai bank codes

Filter by Receiver Name

  • Partial text matching on receiver name
  • Case-insensitive search
  • Non-matching items route to second output

Usage Examples

Basic Bank Slip Verification (Payload)

{
  "resource": "bankSlip",
  "operation": "verifyByPayload", 
  "payload": "00020101021129370016A000000677010111011300...",
  "checkDuplicate": false
}

Image-Based Verification

  1. Previous Node: Upload or fetch slip image
  2. Thunder Node Configuration:
    {
      "resource": "bankSlip",
      "operation": "verifyByImage",
      "imageBinaryProperty": "data",
      "checkDuplicate": true
    }

Filtered Verification with Dual Outputs

{
  "resource": "bankSlip",
  "operation": "verifyByPayload",
  "payload": "00020101021129370016A000000677010111011300...",
  "additionalOptions": {
    "receiverBankCode": "004",
    "receiverName": "John Doe"
  }
}

Result:

  • Matching slips → Output 1
  • Non-matching slips → Output 2

TrueMoney Wallet Verification

{
  "resource": "truemoneyWallet",
  "operation": "verifyByImage",
  "imageBinaryProperty": "data",
  "checkDuplicate": true
}

Response Format

Successful Verification Response

{
  "success": true,
  "data": {
    "receiver": {
      "account": {
        "name": {
          "th": "นายจอห์น โด"
        }
      },
      "bank": {
        "id": "004",
        "name": "ธนาคารกสิกรไทย"
      }
    },
    "amount": 1000.00,
    "transactionDate": "2024-01-15T10:30:00Z",
    "reference": "REF123456789"
  }
}

Duplicate Slip Response

{
  "success": false,
  "message": "duplicate_slip",
  "data": {
    // Original slip data
  }
}

Note: Duplicate slip responses are treated as valid data, not errors.

Error Handling

Built-in Error Handling

  • Duplicate Detection: 400 duplicate_slip responses are treated as valid data
  • Continue on Fail: Errors route to first output when enabled
  • Missing Binary Data: Clear error messages for missing image data

Debug Mode

Enable debug logging in Additional Options:

{
  "additionalOptions": {
    "enableDebugLogging": true
  }
}

Best Practices

1. Choose the Right Verification Method

  • Payload: Fastest, use when QR data is available
  • Image: Most reliable, use for image-based workflows
  • Base64: Good for API integrations with base64 data
  • URL: Convenient for web-scraped images

2. Implement Filtering Strategically

  • Use bank code filtering for bank-specific workflows
  • Use receiver name filtering for payment reconciliation
  • Connect both outputs when using filters

3. Handle Duplicates Appropriately

  • Enable checkDuplicate for payment processing
  • Disable for verification-only workflows
  • Process duplicate responses as valid data

4. Optimize for Performance

  • Use payload verification when possible (fastest)
  • Batch image processing for multiple slips
  • Enable debug logging only during development

Development

Project Structure

├── nodes/
│   └── Thunder/
│       ├── Thunder.node.ts     # Main node implementation
│       └── thunder.svg         # Node icon
├── credentials/
│   └── ThunderApi.credentials.ts # API credentials setup
├── dist/                        # Compiled output
├── package.json                 # Project configuration
├── tsconfig.json               # TypeScript config
└── gulpfile.js                 # Build tasks

Build Commands

# Install dependencies
npm install

# Build the project
npm run build

# Development mode (watch)
npm run dev

# Lint code
npm run lint

# Auto-fix linting issues
npm run lintfix

# Format code
npm run format

# Pre-publish validation
npm run prepublishOnly

Testing Locally

  1. Build the project: npm run build
  2. Link the package: npm link
  3. In your n8n installation: npm link n8n-nodes-thunder
  4. Restart n8n to see the node in the palette

API Documentation

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Support

Changelog

See CHANGELOG.md for detailed version history.