Skip to main content
This tutorial teaches you how to build a payment application on Tempo using TIP-20 tokens. You’ll learn to send transfers, attach payment memos for reconciliation, and monitor incoming payments.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.

What you’ll build

A simple payment app that can:
  • Check TIP-20 token balances
  • Send stablecoin transfers
  • Attach invoice IDs as payment memos
  • Monitor incoming payments

Prerequisites

  • Node.js v18 or higher
  • A Tempo node deployed on Chainstack (mainnet or testnet)
  • Basic JavaScript/TypeScript knowledge

Deploy a Tempo node

  1. Sign up with Chainstack.
  2. Deploy a node.
See also View node access and credentials.

Tempo network details

No native gas token: Tempo uses USD stablecoins for fees. When you transfer a TIP-20 token, fees are paid in that same token automatically.

Stablecoin tokens

Tempo provides these TIP-20 stablecoins (same addresses on mainnet and testnet):

Project setup

Create a new project and install dependencies:

Get testnet tokens

The faucet is only available on Tempo testnet. On mainnet, acquire stablecoins from issuers or ecosystem partners.
Fund your testnet wallet using the tempo_fundAddress RPC method on the public Tempo RPC:
This provides 1M of each testnet stablecoin. After receiving tokens, use your Chainstack endpoint for all other operations.

TIP-20 token interface

TIP-20 extends ERC-20 with payment-optimized features. The key functions are:
6 decimals: TIP-20 tokens use 6 decimals (like USDC), not 18 like ETH. So $100.00 = 100000000 (100 * 10^6).

Check token balance

Query the balance of any address:

Send a basic transfer

Transfer TIP-20 tokens to another address:

Send a transfer with memo

Attach a payment reference (invoice ID, order number) to your transfer:
Memo limit: The memo field is 32 bytes. For longer references, store the full data off-chain and use a hash or short ID in the memo.

Monitor incoming payments

Watch for transfers to your address using event filters:

Query historical payments

Fetch past transfers using eth_getLogs:

Complete payment app

Here’s a full example combining all the functionality. Replace YOUR_CHAINSTACK_ENDPOINT with your actual Chainstack Tempo node endpoint:

Tempo-specific notes

Fee behavior: When you call transfer or transferWithMemo, the full amount goes to the recipient. Fees are deducted separately from your balance. This differs from some chains where fees reduce the transfer amount.
Key differences from other EVM chains:
  • Sub-second finality: Transactions finalize in ~0.5 seconds with no reorganizations
  • USD-denominated fees: No volatile gas token; fees are paid in the token you’re transferring
  • 6 decimals: All TIP-20 tokens use 6 decimals (standard for stablecoins)
  • 32-byte memos: Native support for payment references aligned with ISO 20022

Next steps

Now that you can send and receive payments:
  • Add invoice tracking with a database
  • Implement webhook notifications for incoming payments
  • Build a payment page for your application
  • Explore batch payments with TempoTransactions

See also

Last modified on June 22, 2026