Whop
Finance

documentation

×

Whop Finance × Aptos

DeFi on Aptos, powered by Tether's Wallet Development Kit. Aptos is a Layer 1 blockchain built on Move — the smart contract language originally created by Meta's Libra (later Diem) team. Earn yield, trade crypto and stocks, send stablecoins, and deploy autonomous AI agents — all on-chain with sub-second finality.

0x42A9F1B7E04

Products

Everything you need, one platform.

YIELD
LiveAave V3

Earn Yield

by Whop Finance

Supply USDT to Aave V3 — the most battle-tested lending protocol in DeFi with $27B+ TVL across 12 chains. Real-time yield accrual, withdraw anytime, no lockups.

3.4k Suppliers22.1k Txns
50X
LiveDecibel

Trade Crypto & Stocks

by Whop Finance

On-chain orderbook perps via Decibel. BTC, ETH, APT, and stocks with up to 50x leverage.

577 Traders7.6k Vol
SEND
LiveTransfers

Send Money

by Whop Finance

Transfer USDT or USDC for $0.001. Native stablecoins, instant finality.

2.1k Senders12.3k Txns
0x8F...4A
LiveAI Agents

Agent Bank

by Whop Finance

AI agents get their own bank. Checking, savings, credit, exchange — fully autonomous on Aptos.

1.2k Users8.4k Txns
14X
LiveEchelon

Leveraged Yield

by Whop Finance

Echelon E-Mode looping at 93% LTV. Up to 14x amplified stablecoin yield.

892 Users15.1k Txns

Payments

Built for the future of payments

The payments stack for modern day businesses — from entrepreneurs to global enterprises.

$2.8B+

Made by sellers

188K+

Sellers on Whop

22.4M+

Users on Whop

99.9%

Uptime

Build DeFi with the Whop Finance SDK

Move modules for payments, yield, and stablecoin transfers on Aptos. Integrate the Tether WDK, deploy creator payment splits, and compose with Aave, Echelon, and Decibel — all from a single SDK with sub-second finality and $0.001 transactions.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
module whop::creator_payments { use std::signer; use aptos_framework::coin; use aptos_framework::event; use tether_wdk::usdt::{Self, USDT}; use whop::payments; use whop::campaigns; use whop::emojicoin; /// Creator payment split with campaign tracking struct CreatorSplit has key, store { creator: address, fee_bps: u64, campaign_id: vector<u8>, total_paid: u64, subscribers: u64, } /// Emojicoin reward config for buyer engagement struct RewardConfig has key { rate_bps: u64, pool: address, min_amount: u64, } /// Payment event for indexing struct PaymentEvent has drop, store { buyer: address, creator: address, amount: u64, plan_id: vector<u8>, timestamp: u64, } const E_NOT_CREATOR: u64 = 1; const E_INVALID_FEE: u64 = 2; const E_INSUFFICIENT_BAL: u64 = 3; const E_CAMPAIGN_NOT_FOUND: u64 = 4; /// Initialize creator payment channel public entry fun init_channel( creator: &signer, fee_bps: u64, campaign_id: vector<u8>, ) { assert!(fee_bps <= 5000, E_INVALID_FEE); let addr = signer::address_of(creator); payments::register(creator, fee_bps); campaigns::create( creator, campaign_id, fee_bps, ); move_to(creator, CreatorSplit { creator: addr, fee_bps, campaign_id, total_paid: 0, subscribers: 0, }); } /// Process USDT payment via Tether WDK bridge public entry fun pay_creator( buyer: &signer, creator: address, amount: u64, plan_id: vector<u8>, ) acquires CreatorSplit, RewardConfig { let split = borrow_global_mut<CreatorSplit>(creator); let fee = (amount * split.fee_bps) / 10000; let payout = amount - fee; // Transfer USDT via Tether WDK usdt::transfer(buyer, creator, payout); usdt::transfer(buyer, @whop_treasury, fee); // Update campaign subscriber metrics campaigns::record_payment( &split.campaign_id, amount, signer::address_of(buyer), ); // Mint emojicoin rewards on qualifying payments if (exists<RewardConfig>(@whop)) { let cfg = borrow_global<RewardConfig>(@whop); if (amount >= cfg.min_amount) { emojicoin::mint_reward( buyer, (amount * cfg.rate_bps) / 10000, ); }; }; split.total_paid = split.total_paid + amount; split.subscribers = split.subscribers + 1; payments::emit_event( signer::address_of(buyer), creator, amount, plan_id, ); } /// Swap emojicoin rewards to USDT via pool public entry fun redeem_emojicoin( user: &signer, coin_amount: u64, min_out: u64, ) { emojicoin::swap_to_usdt( user, coin_amount, min_out, ); } /// Creator withdraws campaign earnings public entry fun withdraw( creator: &signer, ) acquires CreatorSplit { let addr = signer::address_of(creator); let split = borrow_global<CreatorSplit>(addr); campaigns::claim(creator, &split.campaign_id); } #[view] public fun stats( addr: address, ): (u64, u64, u64) acquires CreatorSplit { let s = borrow_global<CreatorSplit>(addr); ( s.total_paid, s.subscribers, emojicoin::balance(addr), ) }}

SDK

0114453

PAYMENT_LOGS [0 SINCE LOAD]
AMOUNTCURRENCYCOUNTRYTIMESTAMP
  • $2,805,620,430Made by sellers on Whop

wdk-wallet-aptos

Self-custodial wallet module for Aptos

wallet.ts
import WDK from '@tetherto/wdk'
import WalletManagerAptos from '@AptosWhopFinance/wdk-wallet-aptos'

const wdk = new WDK(seedPhrase)
  .registerWallet('aptos', WalletManagerAptos, {
    rpcUrl: 'https://fullnode.mainnet.aptoslabs.com/v1',
    network: 'mainnet'
  })

const account = await wdk.getAccount('aptos', 0)
await account.getBalance()              // native APT
await account.getTokenBalance(USDT_FA) // $1B+ native USDT
await account.transfer({ token: USDT_FA, to, amt }) // $0.001 fee

Derivation

BIP-44

m/44'/637'/0'/0'/0'

Keys

Ed25519

Key derivation

Assets

Fungible Assets

USDT/USDC native

Security

sodium_memzero

Secure key disposal

AI Agent Banking

Bank Account for
AI Agents

Give your AI agent autonomous financial operations on Aptos. Checking, savings, credit, and exchange — all non-custodial with sub-second settlement.

Architecture — Agent Bank on Aptos

AI Agent

Claude, Cursor, Copilot...

"Check my balance"

"Pay 0x1234 $50"

"Put idle funds to work"

"Need liquidity, keep yield"

"Swap USDC for gas"

Agent Bank CLI
checking balancechecking sendsavings depositcredit borrowexchange swap
Auto gas managementAES-256-GCM walletBIP-44 Ed25519 keys
Aptos Blockchain
FA balances
USDC transfer<1s, $0.001
Aave V3 supply4-8% APY
Aave V3 borrowHF >= 1.5
DEX aggregator

Checking

$0.001

per transaction

Savings

4-8%

APY

Credit

1.5x

min health factor

Exchange

0.3%

swap fee

CLI

Agent Skills — commands for autonomous AI agents

agent-bank
# Initialize agent bank account
npx @aptos-agent-bank/cli init

# Check all accounts
npx @aptos-agent-bank/cli status

# Send USDC from checking
npx @aptos-agent-bank/cli checking send \
  --token USDC --to 0x... --amount 25

# Deposit to savings (earn 4-8% APY)
npx @aptos-agent-bank/cli savings deposit \
  --token USDC --amount 100

# Borrow against savings
npx @aptos-agent-bank/cli credit borrow \
  --token USDC --amount 50

# Swap tokens
npx @aptos-agent-bank/cli exchange swap \
  --from USDC --to APT --amount 10

Quick Start — 3 Steps

1

Initialize

npx @aptos-agent-bank/cli init

Generates Ed25519 keypair, encrypts with AES-256-GCM, stores locally.

2

Fund

Send USDC to your agent's address on Aptos. The CLI auto-converts a small amount to APT for gas.

3

Operate

Your agent can now autonomously send payments, earn yield, borrow, and swap tokens — all without human intervention.

Aptos + Tether WDK

How Agent Bank integrates with the Aptos blockchain and Tether's Wallet Development Kit

Move VM & Fungible Asset Standard

Aptos is built on Move, the programming language originally developed by Meta's Libra project (later renamed Diem) for a global payments network. Move uses a resource-oriented type system — assets can't be copied or dropped, only moved. USDC and USDT on Aptos use the Fungible Asset (FA) standard instead of the legacy Coin module. FA supports metadata, supply tracking, and programmable transfer hooks at the protocol level.

0x1::fungible_asset::transfer()0x1::primary_fungible_store

BIP-44 Key Derivation (Ed25519)

WDK generates keys using BIP-44 path m/44'/637'/0'/0'/0' where 637 is Aptos's registered coin type. Keys are Ed25519 — the same curve used by Aptos validators. Private keys are encrypted at rest with AES-256-GCM and wiped from memory using sodium_memzero.

Ed25519PrivateKeyAES-256-GCMcoin_type: 637

Transaction Model & Gas

Aptos achieves sub-second finality via Block-STM parallel execution — independent transactions execute concurrently across cores. Gas is paid in APT (not stablecoins). A typical FA transfer costs ~0.000005 APT ($0.001). Agent Bank auto-swaps a fraction of USDC to APT when gas is low, so agents never stall on empty gas tanks.

<1s

Finality

~0.000005 APT

Gas per tx

160,000

TPS (peak)

Block-STM

Execution

Aave V3 on Aptos

Aave is the most battle-tested lending protocol in DeFi — $27B+ TVL across 12 chains. V3 is deployed natively on Aptos as Move modules — not EVM bytecode bridged over. Supply USDT to receive aUSDT (yield-bearing FA token). Interest accrues every block (~1s). E-Mode for correlated stablecoins enables up to 93% LTV for USDC/USDT pairs.

pool::supply()pool::borrow()E-Mode LTV: 93%

Key On-Chain Addresses

USDC (FA)0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b
USDT (FA)0x357b0b74bc833e95a115ad22604854d6b0fca151cecd94111770e5d6ffc9dc2b
Aave V3 Pool0xc1c2f02eaa62e9d4f53d8e3710527c1de10dbc17d0030ac0d7de42e4c7f22e5b
APT0x1::aptos_coin::AptosCoin
YIELD MAXXED!YIELD MAXXED!YIELD MAXXED!YIELD MAXXED!

Start building.

Deploy DeFi on Aptos with the Tether WDK.

Launch App