Skip to main content
Send one *USDZ on Metal Testnet and verify its execution and finality. This path uses a standard Ethereum transaction and the default *USDZ gas token, so no Metal-specific SDK is required.

What you will do

  1. Create an RPC endpoint and verify the connection.
  2. Create an encrypted testnet account.
  3. Fund it from the faucet.
  4. Transfer one *USDZ.
  5. Verify the receipt, recipient balance, and finalized block.

Prerequisites

Complete Connect to Testnet first. You should have:
  • Foundry with cast available.
  • METAL_RPC_URL set to your full endpoint URL and verified against chain ID 63825.

Step 1: Create a test account

Generate a new account:
Copy the generated private key into Foundry’s encrypted local keystore:
When prompted, paste the testnet private key and choose a keystore password. Then derive the address without exposing the key again:

Step 2: Fund the account

Open the Metal faucet, paste $SENDER_ADDRESS, and request *USDZ. Set the testnet token address and check the funded balance:
The same *USDZ balance funds both the transfer and its gas. Leave enough balance to cover both.

Step 3: Choose a recipient

Choose a recipient EVM address different from the sender’s. Replace the placeholder below with the actual address:
The recipient does not need faucet funds because receiving the transfer does not require submitting a transaction. Read its balance before sending:
Record this value to compare with the balance after the transfer.

Step 4: Send one *USDZ

Send one *USDZ to the recipient:
Enter the keystore password when prompted. cast send prints the transaction hash and receipt. Save the hash:
The transaction’s native value remains 0. The explicit gas limit provides a starting budget for a simple transfer. Receive-policy limit tracking and quarantine can require more gas.

Step 5: Verify execution

Read the receipt:
Require:
  • a successful status (1 (success) in cast output, or 0x1 in JSON)
  • your account as the sender and the *USDZ contract as the transaction recipient
  • a blockNumber and blockHash
  • a Transfer event from the *USDZ contract for one *USDZ from $SENDER_ADDRESS to $RECIPIENT_ADDRESS.
Read the sender’s and recipient’s balances:
For a delivered payment, the recipient’s balance should have increased by 1000000000000000000, which represents one *USDZ. The sender paid both that amount and its transaction fee.

Step 6: Verify finality

Read the finalized head:
The receipt’s blockNumber must be at or below finalized.number. Decode any hexadecimal block number before comparing the heights. Fetch the canonical hash at the receipt’s block height:
The returned hash must match the receipt’s blockHash. With successful execution, the expected transfer event, and these finality checks, the payment is complete. See Settlement and Finality for the verification rules.
You funded an account, sent one *USDZ, and verified the transfer’s execution and finality.

Inspect the transfer

Look up the transaction, accounts, and containing block.

Send with the SDK

Build and submit a 0x7f transfer with a selected gas token.

Connect a browser wallet

Configure an EIP-1193 wallet and viem clients.

Deploy a contract

Deploy Solidity with standard tooling or selected-token gas.