Use a testnet-only wallet. Never import a production mnemonic or key into the testnet application, source control, shell history, documentation, or a browser bundle.
1. Open and fund the wallet
- Open
https://app.rp.one/wallet. - Create or import a testnet-only wallet.
- Confirm the UI reports chain
chain-1and a positive, advancing height. - If the hosted faucet is available, request test tokens for the wallet address. Otherwise, ask the RP1 testnet operator to fund that address; there is no client-side faucet fallback.
- Wait until the funded balance is visible before preparing a transfer.
2. Send a native transfer
- Choose a testnet recipient address you control.
- Enter a small amount of RP1 in the wallet’s display-unit field and send it.
- Review the recipient, amount, chain, and fee before signing.
- Keep the resulting transaction hash.
The wallet form accepts RP1 display units and converts them to the smallest native unit before signing: 1 RP1 = 1,000,000 urp1. For example, entering 0.000001 sends 1urp1.
3. Verify the result
Open the hash in https://testnetexplorer.rp.one, or query REST directly:
TX_HASH='<transaction-hash>'
curl -fsS \
"https://testnet.rest.rp.one/cosmos/tx/v1beta1/txs/$TX_HASH" \
| jq '{
hash: .tx_response.txhash,
height: .tx_response.height,
code: .tx_response.code,
raw_log: .tx_response.raw_log
}'Treat a broadcast acknowledgement and a committed observation as different lifecycle states:
- Submitted — the signed envelope was accepted for broadcast.
- Observed — a query returned the same transaction identity and a positive committed height.
- Successful — the committed execution code is zero.
The response must contain the same hash, a positive height, and code 0. If the observation does not match the submitted transaction, stop instead of marking the transfer complete.
What to build next
- Review the public API surfaces.
- Check the TypeScript SDK guide for current package availability.
- For browser wallets, use Router so the server never receives a mnemonic or private key.