Copy link
Create
There are two types of wallets in the system: account wallets and client wallets.
An account wallet is a wallet that accepts funds from client wallets. Roughly speaking, this is the wallet of the business owner. You can create new account wallets or import an existing wallet. A default account wallet and a secondary account wallet are available. Funds are sent to the default account wallet after the client wallet is replenished. All transactions for account wallets are performed on-chain.
Here's a visual representation of how transaction works for crypto account wallets replenishment:
A client wallet is a wallet that is created when a customer pays for a product or service. A business owner can create a client wallet himself and reset it to a client for replenishment. Also, such wallets are generated when paying for a checkout: donation, sale, sale token or cart. The balance on the client wallets is virtual, that is, after replenishing such a wallet, funds are sent to the account wallet. However, the client wallet also displays the balance for the amount by which it was replenished.
Here's a visual representation of how transaction works for crypto clients wallets replenishment:
Withdrawal of funds for account wallets occurs as follows:
For client wallets, the withdrawal is made according to the same principle, the withdrawal is made from the default wallet of the account, but the client wallet is substituted in the withdrawal transaction. After the withdrawal, the balance of the client wallet and the default wallet of the account is updated.
Work with client wallets is performed via API. To get started, you need to get the account API keys:
Next you need to get the account's JWT token:
Parameters
Request body
- publicKey
*
string
- privateKey
*
string
Responses
- 200:OK{token: "String"}
- 200:Example{token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYyMDI5MDg0ZDA4NmM2MDExMzc3ODFlMiIsInVzZXIiOiI2MDlhNjM0MGU1ZTFjZjAyMTU2ZDBkZjciLCJpYXQiOjE2OTgyNDU5NTcsImV4cCI6MTY5ODMzMjM1N30.ogoBh6UolGWJUy0bOcNPjNNqPqstoj8ld_u3siUSEQU"}
After that you can create a wallet (both client and account):
Parameters
Path
- currencyId
*
string
Body
- typeWallet
*
string
merchant, user
- privateKey
*
string
- isMnemonic
*
boolean
if true then fill mnemonic phrase to privateKey parameter
- setMain
*
boolean
- password
string
Responses
- 200:OK{data: {id: "string",address: "string",balance: 0,balanceUSD: 0,passphrase: "string"}}
- 200:OK
Example
{data: {id: "63321da650a1280200bcacca",address: "0x3Cf221e9AFdCc4792c5fF7631CB84b6e8a066c7a",balance: "0",balanceUSD: "0",passphrase: "d1295f73-1cfc-4bde-bcca-c496944b9dd5"}} - 400:Bad request{message: "This currency is not supported."}
- 401{status: "fail",data: {message: "Unauthorized"}}
Next you can replenish the wallet you created. If you need to make a withdrawal, use this request, but first you need to get JWT token for wallet:
Parameters
Request body
- publicKey
*
string
- privateKey
*
string
- walletId
*
string
- passphrase
*
string
Responses
- 200:OK{token: "String"}
- 200:Example{token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYyMDI5MDg0ZDA4NmM2MDExMzc3ODFlMiIsInVzZXIiOiI2MDlhNjM0MGU1ZTFjZjAyMTU2ZDBkZjciLCJpYXQiOjE2OTgyNDU5NTcsImV4cCI6MTY5ODMzMjM1N30.ogoBh6UolGWJUy0bOcNPjNNqPqstoj8ld_u3siUSEQU"}
Parameters
Headers
- Idempotency-Key
string
This means that if the same request is sent multiple times with the same unique Idempotency-Key header, it won’t create duplicate transactions. This is especially useful in cases where a connection drops or a request is retried — only one transaction will be executed.
Body
- to
*
string
- amount
*
number
- currencyToken
*
string
Used if withdrawals are made from the account’s wallet
- comment
string
Use for TON and USDT TON
- password
string
- sign
string
base64 format
Responses
- 200:OK{data: {id: "string"}}
- 200:OK
Example
{data: {id: "63321f4d50a1280200bcaccd"}} - 400:Bad request{status: "fail",data: {message: "Address INVALID"}}
- 401{status: "fail",data: {message: "Unauthorized"}}
Client wallets also have the ability to perform off-chain transactions within Crypto Now, which is very useful if you want to move funds between your users in your system:
Parameters
Headers
- Idempotency-Key
string
This means that if the same request is sent multiple times with the same unique Idempotency-Key header, it won’t create duplicate transactions. This is especially useful in cases where a connection drops or a request is retried — only one transaction will be executed.
Body
- to
*
string
- amount
*
number
Responses
- 200:OK{"data": {"id": "String"}}
- 200:OK
Example
{"data": {"id": "634ecbb9053b310076f5c309"}} - 400:Bad request{"status": "fail","data": {"message": "Wallet not found in this account."}}
To process transactions of your wallets in your system, use callbacks - https://docs.crypto-now.io/for-developers/callbacks/
More detailed information on working with the API for wallets is available on the page - https://docs.crypto-now.io/for-developers/api/using-api-for-wallet/
Each wallet in the system is unique, you cannot create two identical wallets.
Next comes the presentation of the work on creating wallets through the interface
To create an account wallet, you need to go to the Account Wallet page, click on the Create new wallet button, select the New option, select the currency you need and click on the Create button:
Set as default - allows you to set the secondary wallet as default. There is a default wallet for every currency. The default ones are located at the top of the list. Funds are sent to them from client wallets. Client wallets are all installed by default.
Set password - password for auto-signing.
To create a client wallet, you need to go to the Client Wallet page, click on the Create new wallet button, select the New option, select the currency you need and click on the Create button:
You can create several wallets at once: