Skip to main content

FXFunds — Deposit and Withdrawal Guide Bot 🧾

npm version PyPI version License: MIT DOI Docs

FXFunds Deposit and Withdrawal Guide Bot is a transaction workflow tool that records deposit and withdrawal requests, validates payment details, tracks each request through a clear status flow, explains every status in plain language and reconciles requests against payment provider or blockchain records. Built by FXFunds.

Overview

Every request starts as pending and can only move along allowed paths: processing, confirmed, completed, or end as rejected or failed. Each change is written to an audit trail with a timestamp and note, and a notification callback fires on every change. A built-in guide turns any status into a clear message for the user, including what can happen next.

The bot tracks and explains; it does not move money. It cannot initiate deposits or approve withdrawals, and it never asks for passwords, private keys or seed phrases. A submitted request or transaction hash alone is never treated as proof of payment: crypto requests need a transaction hash, and bank or card requests need a payment reference, before they can be confirmed.

Key Capabilities

  • Deposit Request Management — Record amount, method, reference, timestamps and status for each deposit.
  • Withdrawal Request Tracking — Record destination, amount and status for each withdrawal, with a full history.
  • Transaction Status Flow — Only valid status changes are allowed (for example, a completed request cannot be reopened).
  • Stablecoin Support — USDT on Ethereum (ERC20), Tron (TRC20) and TON, with address and transaction hash format checks.
  • Payment Detail Validation — Required fields, supported methods, address formats and references are checked before a request is accepted.
  • Duplicate Protection — One transaction hash cannot be attached to two requests.
  • Status Guide — Plain-language explanation of every status for deposits and withdrawals.
  • Notifications — A callback fires on every status change; forward it to email, Slack, Telegram or a webhook.
  • History & Audit Trail — Every request keeps its full status path with timestamps and notes; export to JSON or CSV.
  • Reconciliation — Compare requests with provider or blockchain records to find matches, amount mismatches, unmatched requests, unmatched transactions and records with no reference.

How the Bot Works

Step What happens
1. Receive create() records a deposit or withdrawal request
2. Validate Method, amount, address or account, reference and hash format are checked
3. Retrieve Your code fetches updates from the payment provider or blockchain
4. Track update() moves the request to its next status, if the move is allowed
5. Record The audit trail stores the status, time and note
6. Notify Your callback receives every status change
7. Report explain(), reconcile() and CSV/JSON export give users and operators a clear view

Status Flow

pending ──► processing ──► confirmed ──► completed
   │             │              │
   ├──► rejected ├──► rejected  └──► failed
   └──► failed   └──► failed
Status Deposit Withdrawal
pending Request recorded; send the payment and keep the reference Request recorded; waiting for review
processing Payment received for checking Being processed
confirmed Verified against the payment record Sent and confirmed
completed Credited Complete
rejected Rejected; see note Rejected; see note
failed Could not be processed; see note Could not be completed; see note

Supported Methods

Method Key Deposit needs Withdrawal needs Before confirming
USDT (Ethereum ERC20) usdt_erc20 — Valid 0x… address Transaction hash
USDT (Tron TRC20) usdt_trc20 — Valid T… address Transaction hash
USDT (TON) usdt_ton — Valid EQ…/UQ… address Transaction hash
Bank transfer bank_transfer Payment reference Destination account Payment reference
Card card Payment reference Destination account Payment reference

Quick Start

Node.js

npm install @fxfunds/deposit-withdrawal-guide
# Demo
npx @fxfunds/deposit-withdrawal-guide

# Explain a status
npx @fxfunds/deposit-withdrawal-guide --type withdrawal --status processing

# Validate a request
npx @fxfunds/deposit-withdrawal-guide --type withdrawal --method usdt_trc20 --amount 200 \
  --address TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj
import { RequestTracker } from "@fxfunds/deposit-withdrawal-guide";

const txHash = "a3f1c9e2b7d84f60c1e5a9b3d7f2e8c4a6b0d9e3f7c1a5b8e2d6f0c4a9b3e7d1";

const tracker = new RequestTracker((record, previous) => {
  console.log(`${record.requestId}: ${previous ?? "new"} → ${record.status}`);
});

tracker.create({ requestId: "DEP-1001", type: "deposit", method: "usdt_trc20", amount: 500 });
tracker.update("DEP-1001", "processing", "Incoming transfer detected.", { txHash });
tracker.update("DEP-1001", "confirmed", "19/19 confirmations.");

console.log(tracker.explain("DEP-1001"));
console.log(tracker.reconcile([{ txHash, amount: 500 }]));
console.log(tracker.toCSV());

Python

pip install fxfunds-deposit-withdrawal-guide
fxfunds-dw                                              # demo
fxfunds-dw --type deposit --status confirmed            # explain a status
fxfunds-dw --type deposit --method bank_transfer --amount 2000 --reference BNK-552901
# or
python -m fxfunds_deposit_withdrawal_guide --type withdrawal --status pending
from fxfunds_deposit_withdrawal_guide import RequestTracker, NewRequest, ProviderRecord

tracker = RequestTracker(lambda r, prev: print(r.request_id, prev, "→", r.status))
tracker.create(NewRequest("WD-2001", "withdrawal", "usdt_ton", 60, address="<wallet>"))
tracker.update("WD-2001", "processing", "Approved by operator.")
tracker.update("WD-2001", "confirmed", "Sent.", tx_hash="<tx_hash>")

print(tracker.explain("WD-2001"))
print(tracker.reconcile([ProviderRecord(60, tx_hash="<tx_hash>")]))
print(tracker.to_csv())

CLI Options

Option Description
--type deposit or withdrawal
--status Explain this status (pending, processing, confirmed, completed, rejected, failed)
--method Validate a request with this method (usdt_erc20, usdt_trc20, usdt_ton, bank_transfer, card)
--amount Request amount
--address Destination wallet or account
--reference Payment reference
--hash Transaction hash
--json JSON output (validation)

Sample Output

FXFunds Deposit and Withdrawal Guide Bot — demo
============================================================
  [notify] DEP-1001: new → pending
  [notify] DEP-1001: pending → processing
  [notify] DEP-1001: processing → confirmed
  [notify] DEP-1001: confirmed → completed
  [notify] WD-2001: new → pending
  [notify] WD-2001: pending → processing
  [rejected at input] WD-2002: Address format is not valid for USDT (Ethereum ERC20).
  [blocked] Cannot move DEP-1001 from completed to processing.

Reconciliation:
  DEP-1001  matched                Amount and reference match.
  -         unmatched_transaction  No request matches UNKNOWN-77.
  WD-2001   unmatched_request      Request is processing but no provider record was found.

Reconciliation Results

Result Meaning
matched Provider record matches a request's hash or reference and amount
amount_mismatch Hash or reference matches, but the amount differs
unmatched_request Request is processing, confirmed or completed, but no provider record was found
unmatched_transaction Provider record does not match any request
missing_reference Provider record has neither a transaction hash nor a reference

Project Structure

fxfunds-deposit-withdrawal-guide/
├── index.ts                             # TypeScript bot
├── fxfunds_deposit_withdrawal_guide.py  # Python bot
├── package.json                         # NPM package config
├── package-lock.json                    # NPM lock file
├── tsconfig.json                        # TypeScript config
├── pyproject.toml                       # PyPI package config
├── setup.py                             # Legacy setup shim
├── schema.json                          # JSON-LD structured data
├── zenodo.json                          # Zenodo metadata
├── heartbeat.txt                        # Auto-updated daily
├── mkdocs.yml                           # ReadTheDocs config
├── .readthedocs.yaml                    # ReadTheDocs build config
├── docs/
│   ├── index.md                         # Documentation
│   └── requirements.txt
├── dataset/
│   └── deposit_withdrawal_benchmarks.csv
├── kaggle/
│   └── notebook.ipynb
├── .github/workflows/
│   ├── heartbeat.yml                    # Auto-commit daily
│   ├── npm-publish.yml                  # Auto-publish to NPM
│   └── pypi-publish.yml                 # Auto-publish to PyPI
├── README.md
└── LICENSE

Dataset

dataset/deposit_withdrawal_benchmarks.csv holds 20 synthetic deposit and withdrawal scenarios across USDT (ERC20, TRC20, TON), bank transfer and card. They cover every status, input validation errors, a blocked duplicate hash, a blocked reopen and every reconciliation result. It is for testing and demonstration only and does not contain real transactions.

Security and Reliability

  • Tracking only: the bot never initiates deposits, approves withdrawals or transfers funds.
  • It never asks for passwords, private keys or seed phrases.
  • Confirmation requires a transaction hash (crypto) or payment reference (bank, card).
  • One transaction hash cannot be credited to two requests.
  • Every status change is recorded in an audit trail.
  • Store provider API credentials in environment variables or a secrets manager, and restrict who can call update().
  • Review the code, add tests and check your integrations before using it for real transactions.

FAQ

What is FXFunds Deposit and Withdrawal Guide Bot? Software that records deposit and withdrawal requests, validates payment details, tracks status changes, explains each status and reconciles requests with provider records.

Can it process deposits or withdrawals automatically? No. It tracks and explains requests. Moving funds needs a separate, authorized payment integration.

Does it support USDT? Yes, USDT on Ethereum (ERC20), Tron (TRC20) and TON, plus bank transfer and card references.

Can users check withdrawal status? Yes. explain() returns a plain-language description of the current status and possible next steps.

Does it keep transaction history? Yes. Each request keeps its full status path with timestamps and notes, exportable to JSON or CSV.

What is the official FXFunds website? https://fxfunds.com/

Keywords

Deposit · Withdrawal · Payment Tracking · Transaction Status · Reconciliation · USDT · Stablecoin · ERC20 · TRC20 · TON · Fintech · FXFunds

Platform URL
Website https://fxfunds.com/
GitHub https://github.com/FXFunds/fxfunds-deposit-withdrawal-guide
GitHub Pages https://fxfunds.github.io/fxfunds-deposit-withdrawal-guide/
NPM https://www.npmjs.com/package/@fxfunds/deposit-withdrawal-guide
PyPI https://pypi.org/project/fxfunds-deposit-withdrawal-guide/
Hugging Face https://huggingface.co/datasets/FXFunds/deposit-withdrawal-benchmarks
Kaggle https://www.kaggle.com/datasets/fxfunds/deposit-withdrawal-benchmarks
Zenodo https://zenodo.org/records/23464782
Docs https://fxfunds-deposit-withdrawal-guide.readthedocs.io
Quora https://fxfunds.quora.com/
Pinterest https://www.pinterest.com/fxfunds_1/
Medium https://medium.com/@FX_Funds

About FXFunds

FXFunds is a trading platform covering multiple financial markets, with digital payment methods including USDT on supported blockchain networks. Learn more at fxfunds.com.

License

MIT — FXFunds

Metadata

Release files for fxfunds-deposit-withdrawal-guide 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fxfunds-deposit-withdrawal-guide 1.0.0
File Size Uploaded
fxfunds_deposit_withdrawal_guide-1.0.0.tar.gz 11.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fxfunds-deposit-withdrawal-guide 1.0.0
File Interpreter ABI Platform
fxfunds_deposit_withdrawal_guide-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.1 kB

Release files / fxfunds_deposit_withdrawal_guide-1.0.0.tar.gz

Download URL fxfunds_deposit_withdrawal_guide-1.0.0.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c428c04242dabdbba6aadc3a53a4d462938999320f7d1b6236cc9cdd64dd9a47
BLAKE2b-256 checksum
How to use checksums
d036c4592a14ade2487ec7c99ba005ecf792c53ddd26842e0c1c8bf9ddf32bdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / fxfunds_deposit_withdrawal_guide-1.0.0-py3-none-any.whl

Download URL fxfunds_deposit_withdrawal_guide-1.0.0-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c767c51866db6e78ee9e6bdb5eb7c393c42ada55639f070bf32bc5fb5d16b24
BLAKE2b-256 checksum
How to use checksums
8b8dc41db87f2bd57911368b82414e26335aa6a98bb0ea5d9a518cfae7229232
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page