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


.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.




























What Devs Say About Us


Zac Barron
Product Lead at Binance


David Spitzer-Dulagan
CTO at Limewire


Hitoshi Harada
Co-founder & CPO at Alpaca
Get in Touch
If you can, please provide additional detail so that it’s easier for our team to reach you.
Thank you!
Our team will get in touch shortly.
Access All Tatum Tools
A powerful SDK, lightning-fast RPC nodes, faucets and a whole lot more - for free.
Sign Up.avif)