Build a CryptoWallet, Fast

Tatum gives you a reliable and simple back-end for your crypto wallet application.

$24,375
Wallet
Your balance
8
1
8
1
,
8
1
8
1
8
1
,
8
1
8
1
6,6096 ETH
.your-odometer .odometer-inside .odometer-digit:nth-child(1),
.your-odometer .odometer-inside .odometer-digit:last-child {
    display: none
}

/* Optional hide specific formatting mark */
.your-odometer .odometer-inside .odometer-formatting-mark:nth-child(NUMBER) {
    display: none
}
.starter-odometer {
  /* Change regular animation speed
  A bit of trial and error is required here, 
  as this value is related to the interval 
  and duration in the script. */
  --time: 2s;
  /* Specify your desired easing here */
  --odometer-easing: ease;
  vertical-align: middle;
}

.starter-odometer .odometer-inside {
  /* Flex spacing between Elements - works only if .odometer-inside 
  is set to flex oder inline-flex */
  gap: 0.5rem;
}

.starter-odometer .odometer-digit {
  display: inline-block;
  vertical-align: middle;
}

.starter-odometer .odometer-digit .odometer-digit-spacer {
  display: block;
  vertical-align: middle;
  visibility: hidden;
}

.starter-odometer .odometer-digit .odometer-value.odometer-last-value {
  position: absolute;
  left: 0%;
  right: 0%;
}

.starter-odometer .odometer-ribbon-inner {
  -webkit-backface-visibility: hidden;
}

.starter-odometer.odometer-animating-up .odometer-ribbon-inner {
  -webkit-transition: -webkit-transform var(--time);
  -moz-transition: -moz-transform var(--time);
  -ms-transition: -ms-transform var(--time);
  -o-transition: -o-transform var(--time);
  transition: transform var(--time);
}

.starter-odometer.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
  -webkit-transform: translateY(-100%);
  -moz-transform: translateY(-100%);
  -ms-transform: translateY(-100%);
  -o-transform: translateY(-100%);
  transform: translateY(-100%);
}

.starter-odometer.odometer-animating-down .odometer-ribbon-inner {
  -webkit-transform: translateY(-100%);
  -moz-transform: translateY(-100%);
  -ms-transform: translateY(-100%);
  -o-transform: translateY(-100%);
  transform: translateY(-100%);
}

.starter-odometer.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
  -webkit-transition: -webkit-transform var(--time);
  -moz-transition: -moz-transform var(--time);
  -ms-transition: -ms-transform var(--time);
  -o-transition: -o-transform var(--time);
  transition: transform var(--time);
  -webkit-transform: translateY(0);
  -moz-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateY(0);
}

.starter-odometer.odometer-animating-up .odometer-ribbon-inner,
.starter-odometer.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
  -webkit-transition-timing-function: var(--odometer-easing);
  -moz-transition-timing-function: var(--odometer-easing);
  -ms-transition-timing-function: var(--odometer-easing);
  -o-transition-timing-function: var(--odometer-easing);
  transition-timing-function: var(--odometer-easing);
}

.starter-odometer .odometer-digit .odometer-value {
  -webkit-transform: translateZ(0);
}

We Make Building a Wallet Really Easy

So you can focus on UX - not the back-end.

Generate Address Method

// Install with: npm install @tatumio/evm-wallet-provider @tatumio/tatum
const { EvmWalletProvider } = require("@tatumio/evm-wallet-provider");
const { TatumSDK, Network, Ethereum } = require("@tatumio/tatum");

(async () => {
  try {
    const tatumSdk = await TatumSDK.init({ network: Network.ETHEREUM,
     configureWalletProviders: [
         EvmWalletProvider,
     ]});
    const addressFromMnemonic = await tatumSdk.walletProvider
    .use(EvmWalletProvider).generateAddressFromMnemonic(mnemonic, 0);
    const addressFromXpub = await tatumSdk.walletProvider
    .use(EvmWalletProvider).generateAddressFromXpub(xpubDetails.xpub, 0);
    console.log(addressFromMnemonic);
    console.log(addressFromXpub);
  } catch (error) {
    console.error("Error generating address:", error);
  }
})();

await tatum.destroy()

Create as Many Addresses as You Need

Create limitless user addresses effortlessly with our streamlined code — choose between Mnemonic and Xpub for seamless integration.

Safely Handle
Private Keys

It's integral that every wallet has its private generated in the most safe and reliable way as possible - with Tatum this is easy.

Generate Private Key Method

// Install with: npm install @tatumio/evm-wallet-provider @tatumio/tatum
const { EvmWalletProvider } = require("@tatumio/evm-wallet-provider");
const { TatumSDK, Network, Ethereum } = require("@tatumio/tatum");

(async () => {
  try {
    const tatumSdk = await TatumSDK.init({ network: Network.ETHEREUM,
     configureWalletProviders: [
         EvmWalletProvider,
     ]});
    const privateKey = await tatumSdk.walletProvider.use(EvmWalletProvider)
    .generatePrivateKeyFromMnemonic(mnemonic, 0);
    console.log(privateKey);
  } catch (error) {
    console.error("Error generating private key:", error);
  }
})();

await tatum.destroy()

Sign and Broadcast Method

 // Install with: npm install @tatumio/evm-wallet-provider @tatumio/tatum
const { EvmWalletProvider } = require("@tatumio/evm-wallet-provider");
const { TatumSDK, Network, Ethereum } = require("@tatumio/tatum");

(async () => {
  try {
    const tatumSdk = await TatumSDK.init({ network: Network.ETHEREUM,
     configureWalletProviders: [
         EvmWalletProvider,
     ]});
    const payload = {
      privateKey: 'YOUR_PRIVATE_KEY',
      // other fields for your transaction...
    }
    const txHash = await tatumSdk.walletProvider.use(EvmWalletProvider)
    .signAndBroadcast(payload);
    console.log(txHash);
  } catch (error) {
    console.error("Error signing and broadcasting transaction:", error);
  }
})();

await tatum.destroy()

Sign and Broadcast
Transactions Reliably

Your wallet app has to work smoothly - every time. Tatum SDK provides you with simple code that's battle tested by thousands of wallets.

Generate Address Method

// Import the necessary library and initialize the SDK
import { UtxoWalletProvider } from '@tatumio/utxo-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

const tatumSdk = await TatumSDK.init({network: Network.BITCOIN,
     configureWalletProviders: [
         UtxoWalletProvider,
     ]});

// Generate address from mnemonic or xpub
const addressFromMnemonic = await tatumSdk.walletProvider
.use(UtxoWalletProvider).generateAddressFromMnemonic(mnemonic, 0);
const addressFromXpub = await tatumSdk.walletProvider
.use(UtxoWalletProvider).generateAddressFromXpub(xpubDetails.xpub, 0);

// This will print the generated address from mnemonic
console.log(addressFromMnemonic);
// This will print the generated address from xpub
console.log(addressFromXpub);

await tatum.destroy();

Create as Many Addresses as You Need

Create limitless user addresses effortlessly with our streamlined code — choose between Mnemonic and Xpub for seamless integration.

Safely Handle
Private Keys

It's integral that every wallet has its private generated in the most safe and reliable way as possible - with Tatum this is easy.

Generate Private Key Method

// Import the necessary library and initialize the SDK
import { UtxoWalletProvider } from '@tatumio/utxo-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

const tatumSdk = await TatumSDK.init({network: Network.BITCOIN,
     configureWalletProviders: [
         UtxoWalletProvider,
     ]});

// Generate private key from mnemonic
const privateKey = await tatumSdk.walletProvider.use(UtxoWalletProvider)
.generatePrivateKeyFromMnemonic(mnemonic, 0);

console.log(privateKey);  // This will print the generated private key

await tatum.destroy();

Sign and Broadcast Method

// Import the necessary library and initialize the SDK
import { UtxoWalletProvider } from '@tatumio/utxo-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

const tatumSdk = await TatumSDK.init({network: Network.BITCOIN,
     configureWalletProviders: [
         UtxoWalletProvider,
     ]});

// Define your transaction details
const payloadUtxo = {
   fromAddress: [{ address: 'YOUR_WALLET_ADDRESS', privateKey: 'YOUR_PRIVATE_KEY'}],
   to: [{ address: 'TARGET_WALLET_ADDRESS', value: 0.0001 }], // BTC_AMOUNT
   fee: '0.00001', // BTC_AMOUNT
   changeAddress: 'CHANGE_WALLET_ADDRESS',
}

// Sign and broadcast the transaction using the UTXO Wallet Provider submodule
const txHash = await tatumSdk.walletProvider.use(UtxoWalletProvider)
.signAndBroadcast(payloadUtxo);

// This will print the transaction hash of the broadcasted transaction
console.log(txHash);

await tatum.destroy();

Sign and Broadcast
Transactions Reliably

Your wallet app has to work smoothly - every time. Tatum SDK provides you with simple code that's battle tested by thousands of wallets.

Generate Address Method

// Import the necessary library and initialize the SDK
import { TronWalletProvider } from '@tatumio/tron-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

// Initialize the SDK for Tron
const tatumSdk = await TatumSDK.init({
  network: Network.TRON,
  configureWalletProviders: [TronWalletProvider]
});

// Derive address from mnemonic
const addressFromMnemonic = await tatumSdk.walletProvider
  .use(TronWalletProvider)
  .generateAddressFromMnemonic(mnemonic, 0);

// Derive address from xpub
const addressFromXpub = await tatumSdk.walletProvider
  .use(TronWalletProvider)
  .generateAddressFromXpub(xpubDetails.xpub, 0);

// Output the derived addresses
console.log(addressFromMnemonic);  // Prints the address derived from mnemonic
console.log(addressFromXpub);  // Prints the address derived from xpub

await tatum.destroy();

Create as Many Addresses as You Need

Create limitless user addresses effortlessly with our streamlined code — choose between Mnemonic and Xpub for seamless integration.

Safely Handle
Private Keys

It's integral that every wallet has its private generated in the most safe and reliable way as possible - with Tatum this is easy.

Generate Private Key Method

// Import the necessary library and initialize the SDK
import { TronWalletProvider } from '@tatumio/tron-wallet-provider';
import { TatumSDK, Network, Tron } from '@tatumio/tatum';

// Initialize the SDK for Tron
const tatumSdk = await TatumSDK.init({
  network: Network.TRON,
  configureWalletProviders: [TronWalletProvider]
});

// Generate private key from mnemonic
const privateKey = await tatumSdk.walletProvider
  .use(TronWalletProvider)
  .generatePrivateKeyFromMnemonic(mnemonic, 0);

console.log(privateKey);  // This will print the generated private key

await tatum.destroy()

Sign and Broadcast Method

// Import the necessary library and initialize the SDK
import { TronWalletProvider } from '@tatumio/tron-wallet-provider';
import { TatumSDK, Network, Tron } from '@tatumio/tatum';

const tatumSdk = await TatumSDK.init({network: Network.TRON,
     configureWalletProviders: [
         TronWalletProvider,
     ]});

// Define your transaction details
const payloadTron = {
  privateKey: 'YOUR_PRIVATE_KEY',
  to: 'TARGET_WALLET_ADDRESS',
  amount: '0.01'  // TRX_AMOUNT
}

// Sign and broadcast the transaction using the Tron Wallet Provider submodule
const txHash = await tatumSdk.walletProvider.use(TronWalletProvider)
.signAndBroadcast(payloadTron);

// This will print the transaction hash of the broadcasted transaction
console.log(txHash);

await tatum.destroy();

Sign and Broadcast
Transactions Reliably

Your wallet app has to work smoothly - every time. Tatum SDK provides you with simple code that's battle tested by thousands of wallets.

Generate Address Method

// Import the necessary library and initialize the SDK
import { TezosWalletProvider } from '@tatumio/tezos-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

const tatumSdk = await TatumSDK.init({network: Network.TEZOS,
     configureWalletProviders: [TezosWalletProvider],
});

// Generate Address from Private Key
const address = await tatumSdk.walletProvider
  .use(TezosWalletProvider)
  .generateAddressFromPrivateKey(privateKey);

console.log(address);  // This will print the generated address

await tatum.destroy();

Create as Many Addresses as You Need

Create limitless user addresses effortlessly with our streamlined code — choose between Mnemonic and Xpub for seamless integration.

Safely Handle
Private Keys

It's integral that every wallet has its private generated in the most safe and reliable way as possible - with Tatum this is easy.

Generate Private Key Method

// Import the necessary library and initialize the SDK
import { TezosWalletProvider } from '@tatumio/tezos-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

const tatumSdk = await TatumSDK.init({network: Network.TEZOS,
     configureWalletProviders: [TezosWalletProvider],
});

// Generate Private Key from Mnemonic
const privateKey = await tatumSdk.walletProvider
  .use(TezosWalletProvider)
  .generatePrivateKeyFromMnemonic(mnemonic, 0);

console.log(privateKey);  // This will print the generated private key

await tatum.destroy();

Sign and Broadcast Method

// Import necessary libraries
import { TezosWalletProvider } from '@tatumio/tezos-wallet-provider';
import { TatumSDK, Network } from '@tatumio/tatum';

// Initialize the SDK for Tezos
const tatumSdk = await TatumSDK.init({network: Network.TEZOS,
     configureWalletProviders: [
    { type: TezosWalletProvider, config: { rpcUrl: 'https://ghostnet.ecadinfra.com' } },
  ]
});

// Get private key, address and mnemonic
const { privateKey, address, mnemonic } = await tatumSdk.walletProvider
  .use(TezosWalletProvider)
  .getWallet();

// Output the retrieved data
console.log(privateKey);  // Prints the private key
console.log(address);  // Prints the address
console.log(mnemonic);  // Prints the mnemonic

Sign and Broadcast
Transactions Reliably

Your wallet app has to work smoothly - every time. Tatum SDK provides you with simple code that's battle tested by thousands of wallets.

See Everything Else You Can Do

Visit our simple-to-navigate documentation.

What Devs Say About Us

binance.us
"Tatum helps us build robust product solutions in a fraction of the time."
zac barron

Zac Barron
Product Lead at Binance

Limewire
"Building a product in the crypto space is hard. Making it work reliably across chains - even harder. Tatum helped us meet our deadline."
david spiltzer

David Spitzer-Dulagan
CTO at Limewire

Alpaca
"Tatum accelerates our web3 development."
hitoshi harada

Hitoshi Harada
Co-founder & CPO at Alpaca

Speak to the Tatum Sales Team
Not into forms? Let's talk on Telegram

Access All Tatum Tools

A powerful SDK, lightning-fast RPC nodes, faucets and a whole lot more - for free.

Sign Up