Skip to main content
Request testnet tokens directly through Para without relying on external faucets. The useRequestFaucet hook handles the request and returns the transaction details once tokens are sent.

Fund the Active Wallet

The simplest usage funds whichever wallet is currently active. This works well right after wallet creation:
import { useRequestFaucet, useCreateWallet } from "@getpara/react-native-sdk";

function CreateAndFund() {
  const { createWalletAsync } = useCreateWallet();
  const { requestFaucetAsync, isPending } = useRequestFaucet();
  const [txHash, setTxHash] = useState("");

  const handleCreateAndFund = async () => {
    await createWalletAsync({ type: "EVM" });
    const result = await requestFaucetAsync();
    setTxHash(result.transactionHash);
  };

  return (
    <View>
      <Button
        onPress={handleCreateAndFund}
        disabled={isPending}
        title={isPending ? "Funding..." : "Create & Fund Wallet"}
      />
      {txHash && <Text>Transaction: {txHash}</Text>}
    </View>
  );
}
Calling requestFaucetAsync() without a walletId requires an active wallet. If no active wallet is set and no walletId is passed, the hook throws an error.

Fund a Specific Wallet

Pass an explicit walletId to target a particular wallet:
import { useRequestFaucet } from "@getpara/react-native-sdk";

function FundWallet({ walletId }: { walletId: string }) {
  const { requestFaucetAsync, isPending, data } = useRequestFaucet();

  return (
    <View>
      <Button
        onPress={() => requestFaucetAsync({ walletId })}
        disabled={isPending}
        title={isPending ? "Requesting..." : "Get Testnet ETH"}
      />
      {data && (
        <Text>
          Sent {data.amount} ETH to {data.address}
        </Text>
      )}
    </View>
  );
}

Supported Chains

ChainIdentifierToken
Ethereum SepoliaETHEREUM_SEPOLIAETH
The faucet is rate limited to 10 requests per API key per day. Each wallet has a 24-hour cooldown between faucet requests.

Error Handling

The hook surfaces errors through the standard error field on the mutation result. Common error scenarios:
StatusCause
400Invalid request (missing walletId, unsupported chain, or no address)
403Missing or invalid API key
404Wallet not found (also returned when the wallet belongs to a different API key)
429Rate limit exceeded or wallet cooldown active
500Faucet transaction failed
A 429 response includes a Retry-After header indicating when the next request will be accepted.