TransferTransaction - Test specification
Description:
This test specification for TransferTransaction is to be one of many for testing the functionality of the Hedera SDKs. The SDK under test will use the language specific JSON-RPC server return responses back to the test driver.
Design:
Each test within the test specification is linked to one of the functions within TransferTransaction. Each function is tested with a mix of boundaries. The inputs for each test are a range of valid, minimum, maximum, negative and invalid values for the method. The expected response of a passed test can be a correct error response code or seen as the result of node queries. A successful transaction (the transaction reached consensus and was applied to state) can be determined by getting a TransactionReceipt
or TransactionRecord
, or can be determined by using queries such as AccountInfoQuery
or AccountBalanceQuery
and investigating for the required changes (creations, updates, etc.). The mirror node can also be used to determine if a transaction was successful via its rest API. Error codes are obtained from the response code proto files.
Transaction properties:
https://docs.hedera.com/hedera/sdks-and-apis/sdks/accounts-and-hbar/transfer-cryptocurrency
CryptoTransfer protobufs:
https://github.com/hashgraph/hedera-protobufs/blob/main/services/crypto_transfer.proto
Response codes:
https://github.com/hashgraph/hedera-protobufs/blob/main/services/response_code.proto
Mirror Node APIs:
https://docs.hedera.com/hedera/sdks-and-apis/rest-api
JSON-RPC API Endpoint Documentation
Method Name
transferCrypto
Input Parameters
Parameter Name | Type | Required/Optional | Description/Notes |
---|---|---|---|
transfers | list<json object> | optional | The transfer information. |
commonTransactionParams | json object | optional |
Output Parameters
Parameter Name | Type | Description/Notes |
---|---|---|
status | string | The status of the submitted TransferTransaction (from a TransactionReceipt ). |
Additional Notes
The tests contained in this specification will assume that valid sender and receiver accounts were already successfully created. The sender should have an initial balance of 10 hbar for hbar transfers. <CREATED_SENDER_ID> will denote the ID of the sender account and <CREATED_SENDER_PRIVATE_KEY> will denote the private key of the account as a DER-encoded hex string. <CREATED_RECEIVER_ID> will the denote the ID of the receiver account, and <CREATED_RECEIVER_PRIVATE_KEY> will denote the private key of the account as a DER-encoded hex string. For tests that require tokens, they will assume a valid token has already been created. <CREATED_TOKEN_ID> will denote the ID of this token. For tests that require NFTs, they will assume one valid NFT was minted. <NFT_SERIAL_NUMBER> will denote the serial number of the minted NFT. For tests that require decimals, they will assume a valid token was created with two decimals. For tests that require an approval, they will assume another account has been created and an allowance has been approved for that account. <CREATED_ALLOWANCED_ID> will denote the ID of the allowanced account, and <CREATED_ALLOWANCED_PRIVATE_KEY> will denote the private key of the account as a DER-encoded hex string.
Function Tests
AddHbarTransfer:
- Transfer hbar from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an amount of hbar from a sender account to a receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
2 | Transfers an amount of hbar from a sender account that doesn't exist to a receiver account | transfers=[{hbar.accountId="123.456.789", hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an amount of hbar from an empty sender account to a receiver account | transfers=[{hbar.accountId="", hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an amount of hbar from a deleted sender account to a receiver account | transfers=[{hbar.accountId=<DELETED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
5 | Transfers an amount of hbar from a sender account to a receiver account that doesn't exist | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId="123.456.789", hbar.amount="10"}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
6 | Transfers an amount of hbar from a sender account to an empty receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId="", hbar.amount="10"}] | The transfer fails with an SDK internal error. | Y |
7 | Transfers an amount of hbar from a sender account to a deleted receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<DELETED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
8 | Transfers 0 hbar from a sender account to a receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="0"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="0"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds and the spender and receiver accounts have the same balance as before. | Y |
9 | Transfers an amount of hbar from a sender account to a receiver account without signing | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
10 | Transfers an amount of hbar from a sender account to nowhere | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
11 | Transfers an amount of hbar that is greater than the sender balance from a sender account to a receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-100"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="100"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_ACCOUNT_BALANCE response code from the network. | Y |
12 | Transfers an amount of hbar from a sender account to a receiver account that requires a signature to receive | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
13 | Transfers an amount of hbar from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
14 | Transfers an amount of hbar from a sender account to itself | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds and nothing happens. | Y |
15 | Transfers an amount of hbar from a sender account to an EVM address unassociated with an account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.evmAddress=<VALID_EVM_ADDRESS>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, a hollow account is created with the EVM address as its alias, and the account has the amount credited to its balance. | Y |
16 | Transfers an amount of hbar from a sender account to an invalid EVM address | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.evmAddress="1234", hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
17 | Transfers an amount of hbar from a sender account to the EVM address alias of an account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.evmAddress=<CREATED_RECEIVER_EVM_ADDRESS>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver address has the amount credited to its balance. | Y |
18 | Transfers an amount of hbar from a sender EVM address alias to a receiver account | transfers=[{hbar.evmAddress=<CREATED_SENDER_EVM_ADDRESS>, hbar.amount="-10"}, {hbar.evmAddress=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender address has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
19 | Transfers an amount of hbar from several sender accounts to one receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver account has the total amount credited to its balance. | Y |
20 | Transfers an amount of hbar from several sender accounts to one receiver account with a sender that doesn't exist | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId="123.456.789", hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
21 | Transfers an amount of hbar from several sender accounts to one receiver account with a sender that is empty | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId="", hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
22 | Transfers an amount of hbar from several sender accounts to one receiver account with a sender that is deleted | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<DELETED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
23 | Transfers an amount of hbar from several sender accounts to one receiver account with one not signing | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
24 | Transfers an amount of hbar from several sender accounts to one receiver account with the amounts not adding up | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="25"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
25 | Transfers an amount of hbar from several sender accounts to several receiver accounts | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId=<CREATED_RECEIVER_ID_3>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | Y |
26 | Transfers an amount of hbar from several sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId="123.456.789" hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
27 | Transfers an amount of hbar from several sender accounts to several receiver accounts with a receiver that is empty | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId="", hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
28 | Transfers an amount of hbar from several sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId=<DELETED_RECEIVER_ID_3>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"hbar": {
"accountId": "0.0.53232",
"amount": "-100"
}
},
{
"hbar": {
"accountId": "0.0.6491",
"amount": "100"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddTokenTransfer:
- Transfer fungible tokens from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an amount of fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
2 | Transfers an amount of fungible token from a sender account that doesn't exist to a receiver account | transfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an amount of fungible token from an empty sender account to a receiver account | transfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an amount of fungible token from a sender account to a receiver account that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
5 | Transfers an amount of fungible token from a sender account to an empty receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an SDK internal error. | Y |
6 | Transfers an amount of fungible token from a sender account to a deleted receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
7 | Transfers an amount of fungible token that doesn't exist from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_ID response code from the network. | Y |
8 | Transfers an amount of fungible token that is empty from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
9 | Transfers an amount of fungible token that is deleted from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_WAS_DELETED response code from the network. | Y |
10 | Transfers an amount of NFT from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | Y |
11 | Transfers 0 fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds and the spender and receiver accounts have the same balance as before. | Y |
12 | Transfers an amount of fungible token from a sender account to a receiver account without signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
13 | Transfers an amount of fungible token from a sender account to nowhere | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
14 | Transfers an amount of fungible token that is greater than the sender balance from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_TOKEN_BALANCE response code from the network. | Y |
15 | Transfers an amount of fungible token from a sender account to a receiver account that requires a signature to receive | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
16 | Transfers an amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
17 | Transfers an amount of fungible token from a sender account to itself | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds and nothing happens. | Y |
18 | Transfers an amount of fungible token from a frozen sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
19 | Transfers an amount of fungible token from a sender account to a frozen receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
20 | Transfers an amount of paused fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_IS_PAUSED response code from the network. | Y |
21 | Transfers an amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
22 | Transfers an amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | Y |
23 | Transfers an amount of fungible token with an inclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
24 | Transfers an amount of fungible token with an exclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
25 | Transfers an amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | Y |
26 | Transfers an amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | Y |
27 | Transfers an amount of fungible token from several sender accounts to one receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver account has the total amount credited to its balance. | Y |
28 | Transfers an amount of fungible token from several sender accounts to one receiver account with a sender that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
29 | Transfers an amount of fungible token from several sender accounts to one receiver account with a sender that is empty | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
30 | Transfers an amount of fungible token from several sender accounts to one receiver account with a sender that is deleted | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
31 | Transfers an amount of fungible token from several sender accounts to one receiver account with one not signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
32 | Transfers an amount of fungible token from several sender accounts to one receiver account with the amounts not adding up | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
33 | Transfers an amount of fungible token from several sender accounts to several receiver accounts | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | Y |
34 | Transfers an amount of fungible token from several sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
35 | Transfers an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is empty | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
36 | Transfers an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100"
}
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddNftTransfer:
- Transfer NFTs from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an NFT from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | Y |
2 | Transfers an NFT from a sender account that doesn't exist to a receiver account | transfers=[{nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an NFT from an empty sender account to a receiver account | transfers=[{nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an NFT from a sender account to a receiver account that doesn't exist | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
5 | Transfers an NFT from a sender account to an empty receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
6 | Transfers an NFT from a sender account to a deleted receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<DELETED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
7 | Transfers an NFT that doesn't exist from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="123.456.789", nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_ID response code from the network. | Y |
8 | Transfers an NFT that is empty from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="", nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
9 | Transfers an NFT that is deleted from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<DELETED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_WAS_DELETED response code from the network. | Y |
10 | Transfers an NFT with an invalid serial number from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber="1000000"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_NFT_ID response code from the network. | Y |
11 | Transfers an amount of fungible tokens from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_FUNGIBLE_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | Y |
12 | Transfers an NFT from a sender account to a receiver account without signing | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
13 | Transfers an NFT from a sender account that doesn't possess the NFT to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SENDER_DOES_NOT_OWN_NFT_SERIAL_NO response code from the network. | Y |
14 | Transfers an NFT from a sender account to a receiver account that requires a signature to receive | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | Y |
15 | Transfers an NFT from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
16 | Transfers an NFT from a sender account to itself | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_SENDER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_REPEATED_IN_ACCOUNT_AMOUNTS response code from the network. | Y |
17 | Transfers an NFT from a frozen sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
18 | Transfers an NFT from a sender account to a frozen receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
19 | Transfers a paused NFT token from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_IS_PAUSED response code from the network. | Y |
20 | Transfers an NFT from a sender account to an unassociated receiver account with unlimited automatic token associations | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
21 | Transfers an NFT from a sender account to an unassociated receiver account with no automatic token associations | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | Y |
22 | Transfers an NFT with a royalty fee from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}, {hbar.accountId=<CREATED_SENDER_ACCOUNT_ID>, hbar.amount=<NEGATED_FEE_AMOUNT>}, {hbar.accountId=<CREATED_RECEIVER_ACCOUNT_ID>, hbar.amount=<FEE_AMOUNT>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account no longer has the NFT and the fee amount debited from its balance, the receiver account has the NFT, and the fee collector account has the fee amount credited to its balance. | Y |
23 | Transfers an NFT with a fee from a sender account to a receiver account with the fee collector not associated | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | Y |
24 | Transfers an NFT with a fee from a sender account to a receiver account with not enough token balance to pay the fee | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | Y |
25 | Transfers NFTs from several sender accounts to one receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts no longer have the NFTs, and the receiver account now has the NFTs. | Y |
26 | Transfers NFTs from several sender accounts to one receiver account with a sender that doesn't exist | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
27 | Transfers NFTs from several sender accounts to one receiver account with a sender that is empty | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
28 | Transfers NFTs from several sender accounts to one receiver account with a sender that is deleted | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<DELETED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
29 | Transfers NFTs from several sender accounts to one receiver account with one not signing | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
30 | Transfers NFTs from several sender accounts to one receiver account with an invalid serial number | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<INVALID_NFT_SERIAL_NUMBER>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_NFT_ID response code from the network. | Y |
31 | Transfers NFTs from several sender accounts to several receiver accounts | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts no longer have the NFTs, and the receiver accounts have the NFTs. | Y |
32 | Transfers NFTs from several sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
33 | Transfers NFTs from several sender accounts to several receiver accounts with a receiver that is empty | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
34 | Transfers NFTs from several sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<DELETED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"nft": {
"senderAccountId": "0.0.53232",
"receiverAccountId": "0.0.6491",
"tokenId": "0.0.9931",
"serialNumber": "4"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddTokenTransferWithDecimals:
- Transfer fungible tokens with decimals from an account to another account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an amount of fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
2 | Transfers an amount of fungible token from a sender account that doesn't exist to a receiver account | transfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an amount of fungible token from an empty sender account to a receiver account | transfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an amount of fungible token from a sender account to a receiver account that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
5 | Transfers an amount of fungible token from a sender account to an empty receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an SDK internal error. | Y |
6 | Transfers an amount of fungible token from a sender account to a deleted receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
7 | Transfers an amount of fungible token that doesn't exist from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_ID response code from the network. | Y |
8 | Transfers an amount of fungible token that is empty from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
9 | Transfers an amount of fungible token that is deleted from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_WAS_DELETED response code from the network. | Y |
10 | Transfers an amount of NFT from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | Y |
11 | Transfers 0 fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds and the spender and receiver accounts have the same balance as before. | Y |
12 | Transfers an amount of fungible token from a sender account to a receiver account with the incorrect decimals | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | Y |
13 | Transfers an amount of fungible token from a sender account to a receiver account without signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
14 | Transfers an amount of fungible token from a sender account to nowhere | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN response code from the network. | Y |
15 | Transfers an amount of fungible token that is greater than the sender balance from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_TOKEN_BALANCE response code from the network. | Y |
16 | Transfers an amount of fungible token from a sender account to a receiver account that requires a signature to receive | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
17 | Transfers an amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
18 | Transfers an amount of fungible token from a sender account to itself | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds and nothing happens. | Y |
19 | Transfers an amount of fungible token from a frozen sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
20 | Transfers an amount of fungible token from a sender account to a frozen receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
21 | Transfers an amount of paused fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_IS_PAUSED response code from the network. | Y |
22 | Transfers an amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
23 | Transfers an amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | Y |
24 | Transfers an amount of fungible token with an inclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
25 | Transfers an amount of fungible token with an exclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
26 | Transfers an amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | Y |
27 | Transfers an amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | Y |
28 | Transfers an amount of fungible token from several sender accounts to one receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver account has the total amount credited to its balance. | Y |
29 | Transfers an amount of fungible token from several sender accounts to one receiver account with a sender that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
30 | Transfers an amount of fungible token from several sender accounts to one receiver account with a sender that is empty | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
31 | Transfers an amount of fungible token from several sender accounts to one receiver account with a sender that is deleted | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
32 | Transfers an amount of fungible token from several sender accounts to one receiver account with one not signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
33 | Transfers an amount of fungible token from several sender accounts to one receiver account with the amounts not adding up | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
34 | Transfers an amount of fungible token from several sender accounts to one receiver account with one incorrect decimals amount | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=3}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | Y |
35 | Transfers an amount of fungible token from several sender accounts to several receiver accounts | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | Y |
36 | Transfers an amount of fungible token from several sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
37 | Transfers an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is empty | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
38 | Transfers an amount of fungible token from several sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100",
"decimals": 2
}
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100",
"decimals": 2
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedHbarTransfer:
- Transfer hbar from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an approved amount of hbar from a sender account to a receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
2 | Transfers an approved amount of hbar from a sender account that doesn't exist to a receiver account | transfers=[{hbar.accountId="123.456.789", hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an approved amount of hbar from an empty sender account to a receiver account | transfers=[{hbar.accountId="", hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an approved amount of hbar from a deleted sender account to a receiver account | transfers=[{hbar.accountId=<DELETED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
5 | Transfers an approved amount of hbar from a sender account to a receiver account that doesn't exist | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId="123.456.789", hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
6 | Transfers an approved amount of hbar from a sender account to an empty receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId="", hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
7 | Transfers an approved amount of hbar from a sender account to a deleted receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<DELETED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
8 | Transfers an approved 0 hbar from a sender account to a receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="0", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="0"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds and the spender and receiver accounts have the same balance as before. | Y |
9 | Transfers an approved amount of hbar from a sender account to a receiver account without signing | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID> | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
10 | Transfers an approved amount of hbar from a sender account to nowhere | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
11 | Transfers an approved amount of hbar that is greater than the allowanced amount from a sender account to a receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-100", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="100"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | Y |
12 | Transfers an approved amount of hbar from a sender account to a receiver account that requires a signature to receive | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
13 | Transfers an approved amount of hbar from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
14 | Transfers an approved amount of hbar from a sender account to itself | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds and nothing happens. | Y |
15 | Transfers an approved amount of hbar from a sender account to a receiver account without the allowanced account paying the fee | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
16 | Transfers an approved amount of hbar from a sender account to a receiver account without using an allowanced account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
17 | Transfers an approved amount of hbar from a sender account to a receiver account with an account that doesn't have an allowance | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="10"}], commonTransactionParameters.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
18 | Transfers an approved amount of hbar from a sender account and other sender accounts to one receiver account | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver account has the total amount credited to its balance. | Y |
19 | Transfers an approved amount of hbar from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | transfers=[{hbar.accountId="123.456.789", hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
20 | Transfers an approved amount of hbar from a sender account and other sender accounts to one receiver account with an approved sender that is empty | transfers=[{hbar.accountId="", hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
21 | Transfers an approved amount of hbar from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | transfers=[{hbar.accountId=<DELETED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<DELETED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
22 | Transfers an approved amount of hbar from a sender account and other sender accounts to one receiver account with an approved sender not signing | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
23 | Transfers an approved amount of hbar from a sender account and other sender accounts to one receiver account with the amounts not adding up | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="25"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
24 | Transfers an approved amount of hbar from a sender account and other sender accounts to several receiver accounts | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId=<CREATED_RECEIVER_ID_3>, hbar.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | Y |
25 | Transfers an approved amount of hbar from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId="123.456.789" hbar.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
26 | Transfers an approved amount of hbar from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId="", hbar.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
27 | Transfers an approved amount of hbar from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{hbar.accountId=<CREATED_SENDER_ID>, hbar.amount="-10", approved=true}, {hbar.accountId=<CREATED_SENDER_ID_2>, hbar.amount="-10"}, {hbar.accountId=<CREATED_SENDER_ID_3>, hbar.amount="-10"}, {hbar.accountId=<CREATED_RECEIVER_ID>, hbar.amount="5"}, {hbar.accountId=<CREATED_RECEIVER_ID_2>, hbar.amount="15"}, {hbar.accountId=<DELETED_RECEIVER_ID_3>, hbar.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"hbar": {
"accountId": "0.0.53232",
"amount": "-100"
},
"approved": true
},
{
"hbar": {
"accountId": "0.0.6491",
"amount": "100"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedTokenTransfer:
- Transfer fungible tokens from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an approved amount of fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
2 | Transfers an approved amount of fungible token from a sender account that doesn't exist to a receiver account | transfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an approved amount of fungible token from an empty sender account to a receiver account | transfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an approved amount of fungible token from a sender account to a receiver account that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
5 | Transfers an approved amount of fungible token from a sender account to an empty receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The transfer fails with an SDK internal error. | Y |
6 | Transfers an approved amount of fungible token from a sender account to a deleted receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
7 | Transfers an approved amount of fungible token that doesn't exist from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_ID response code from the network. | Y |
8 | Transfers an approved amount of fungible token that is empty from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
9 | Transfers an approved amount of fungible token that is deleted from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_WAS_DELETED response code from the network. | Y |
10 | Transfers an approved amount of NFT from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | Y |
11 | Transfers an approved 0 fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds and the spender and receiver accounts have the same balance as before. | Y |
12 | Transfers an approved amount of fungible token from a sender account to a receiver account without signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
13 | Transfers an approved amount of fungible token from a sender account to nowhere | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN response code from the network. | Y |
14 | Transfers an approved amount of fungible token that is greater than the allowanced amount from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | Y |
15 | Transfers an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
16 | Transfers an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
17 | Transfers an approved amount of fungible token from a sender account to itself | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds and nothing happens. | Y |
18 | Transfers an approved amount of fungible token from a frozen sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
19 | Transfers an approved amount of fungible token from a sender account to a frozen receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
20 | Transfers an approved amount of paused fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_IS_PAUSED response code from the network. | Y |
21 | Transfers an approved amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
22 | Transfers an approved amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | Y |
23 | Transfers an approved amount of fungible token with an inclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
24 | Transfers an approved amount of fungible token with an exclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
25 | Transfers an approved amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | Y |
26 | Transfers an approved amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | Y |
27 | Transfers an approved amount of fungible token from a sender account to a receiver account without the allowanced account paying the fee | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
28 | Transfers an approved amount of fungible token from a sender account to a receiver account without using an allowanced account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
29 | Transfers an approved amount of fungible token from a sender account to a receiver account with an account that doesn't have an allowance | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
30 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver account has the total amount credited to its balance. | Y |
31 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | transfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
32 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is empty | transfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
33 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | transfers=[{token.accountId=<DELETED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
34 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender not signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
35 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with the amounts not adding up | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN response code from the network. | Y |
36 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | Y |
37 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
38 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
39 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10"}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5"}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15"}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10"}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100"
},
"approved": true
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100"
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedNftTransfer:
- Transfer NFTs from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an approved NFT from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | Y |
2 | Transfers an approved NFT from a sender account that doesn't exist to a receiver account | transfers=[{nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an approved NFT from an empty sender account to a receiver account | transfers=[{nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an approved NFT from a sender account to a receiver account that doesn't exist | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
5 | Transfers an approved NFT from a sender account to an empty receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
6 | Transfers an approved NFT from a sender account to a deleted receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<DELETED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
7 | Transfers an approved NFT that doesn't exist from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="123.456.789", nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_ID response code from the network. | Y |
8 | Transfers an approved NFT that is empty from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId="", nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
9 | Transfers an approved NFT that is deleted from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<DELETED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_WAS_DELETED response code from the network. | Y |
10 | Transfers an approved NFT with an invalid serial number from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber="1000000", approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_NFT_SERIAL_NUMBER response code from the network. | Y |
11 | Transfers an approved amount of fungible tokens from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_FUNGIBLE_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | Y |
12 | Transfers an approved NFT from a sender account to a receiver account without signing | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
13 | Transfers an approved NFT from a sender account that doesn't possess the NFT to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SENDER_DOES_NOT_OWN_NFT_SERIAL_NO response code from the network. | Y |
14 | Transfers an approved NFT from a sender account to a receiver account that requires a signature to receive | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account no longer as the NFT, and the receiver account now has the NFT. | Y |
15 | Transfers an approved NFT from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
16 | Transfers an approved NFT from a sender account to itself | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_SENDER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_REPEATED_IN_ACCOUNT_AMOUNTS response code from the network. | Y |
17 | Transfers an approved NFT from a frozen sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
18 | Transfers an approved NFT from a sender account to a frozen receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
19 | Transfers an approved paused NFT token from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_IS_PAUSED response code from the network. | Y |
20 | Transfers an approved NFT from a sender account to an unassociated receiver account with unlimited automatic token associations | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
21 | Transfers an approved NFT from a sender account to an unassociated receiver account with no automatic token associations | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | Y |
22 | Transfers an approved NFT with a royalty fee from a sender account to a receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account no longer has the NFT and the fee amount debited from its balance, the receiver account has the NFT, and the fee collector account has the fee amount credited to its balance. | Y |
23 | Transfers an approved NFT with a fee from a sender account to a receiver account with the fee collector not associated | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | Y |
24 | Transfers an approved NFT with a fee from a sender account to a receiver account with not enough token balance to pay the fee | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | Y |
25 | Transfers an approved NFT from a sender account to a receiver account without the allowanced account paying the fee | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
26 | Transfers an approved NFT from a sender account to a receiver account without using an allowanced account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
27 | Transfers an approved NFT from a sender account to a receiver account with an account that doesn't have an allowance | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER>, approved=true}], commonTransactionParams.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
28 | Transfers an approved NFT from a sender account and other sender accounts to one receiver account | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts no longer have the NFTs, and the receiver account now has the NFTs. | Y |
29 | Transfers an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | transfers=[{nft.senderAccountId="123.456.789", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
30 | Transfers an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender that is empty | transfers=[{nft.senderAccountId="", nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
31 | Transfers an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | transfers=[{nft.senderAccountId=<DELETED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<DELETED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
32 | Transfers an approved NFT from a sender account and other sender accounts to one receiver account with an approved sender not signing | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
33 | Transfers an approved NFT from a sender account and other sender accounts to one receiver account with an invalid serial number | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<INVALID_NFT_SERIAL_NUMBER>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_NFT_ID response code from the network. | Y |
34 | Transfers an approved NFT from a sender account and other sender accounts to several receiver accounts | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<CREATED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts no longer have the NFTs, and the receiver accounts have the NFTs. | Y |
35 | Transfers an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="123.456.789", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
36 | Transfers an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId="", nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
37 | Transfers an approved NFT from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{nft.senderAccountId=<CREATED_SENDER_ID>, nft.receiverAccountId=<CREATED_RECEIVER_ID>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_1>, approved=true}, {nft.senderAccountId=<CREATED_SENDER_ID_2>, nft.receiverAccountId=<CREATED_RECEIVER_ID_2>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_2>}, {nft.senderAccountId=<CREATED_SENDER_ID_3>, nft.receiverAccountId=<DELETED_RECEIVER_ID_3>, nft.tokenId=<CREATED_TOKEN_ID>, nft.serialNumber=<NFT_SERIAL_NUMBER_3>}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"nft": {
"senderAccountId": "0.0.53232",
"receiverAccountId": "0.0.6491",
"tokenId": "0.0.9931",
"serialNumber": "4"
},
"approved": true
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}
AddApprovedTokenTransferWithDecimals:
- Transfer fungible tokens with decimals from an account to another account via an approved account.
Test no | Name | Input | Expected response | Implemented (Y/N) |
---|---|---|---|---|
1 | Transfers an approved amount of fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
2 | Transfers an approved amount of fungible token from a sender account that doesn't exist to a receiver account | transfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
3 | Transfers an approved amount of fungible token from an empty sender account to a receiver account | transfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}] | The transfer fails with an SDK internal error. | Y |
4 | Transfers an approved amount of fungible token from a sender account to a receiver account that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
5 | Transfers an approved amount of fungible token from a sender account to an empty receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
6 | Transfers an approved amount of fungible token from a sender account to a deleted receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<DELETED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
7 | Transfers an approved amount of fungible token that doesn't exist from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="123.456.789", token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="123.456.789", token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_TOKEN_ID response code from the network. | Y |
8 | Transfers an approved amount of fungible token that is empty from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId="", token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId="", token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
9 | Transfers an approved amount of fungible token that is deleted from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<DELETED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_WAS_DELETED response code from the network. | Y |
10 | Transfers an approved amount of NFT from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<NON_FUNGIBLE_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON response code from the network. | Y |
11 | Transfers an approved 0 fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds and the spender and receiver accounts have the same balance as before. | Y |
12 | Transfers an approved amount of fungible token from a sender account to a receiver account with the incorrect decimals | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="0", token.decimals=3}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an UNEXPECTED_TOKEN_DECIMALS response code from the network. | Y |
13 | Transfers an approved amount of fungible token from a sender account to a receiver account without signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID> | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
14 | Transfers an approved amount of fungible token from a sender account to nowhere | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_AMOUNTS response code from the network. | Y |
15 | Transfers an approved amount of fungible token that is greater than the allowanced amount from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-100", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="100", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an AMOUNT_EXCEEDS_ALLOWANCE response code from the network. | Y |
16 | Transfers an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>, <CREATED_RECEIVER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
17 | Transfers an approved amount of fungible token from a sender account to a receiver account that requires a signature to receive but doesn't sign | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
18 | Transfers an approved amount of fungible token from a sender account to itself | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds and nothing happens. | Y |
19 | Transfers an approved amount of fungible token from a frozen sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
20 | Transfers an approved amount of fungible token from a sender account to a frozen receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_FROZEN_FOR_TOKEN response code from the network. | Y |
21 | Transfers an approved amount of paused fungible token from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_IS_PAUSED response code from the network. | Y |
22 | Transfers an approved amount of fungible token from a sender account to an unassociated receiver account with unlimited automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
23 | Transfers an approved amount of fungible token from a sender account to an unassociated receiver account with no automatic token associations | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an NO_REMAINING_AUTOMATIC_ASSOCIATIONS response code from the network. | Y |
24 | Transfers an approved amount of fungible token with an inclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, the receiver account has the amount minus the fee amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
25 | Transfers an approved amount of fungible token with an exclusive fee from a sender account to a receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred and the fee amount debited from its balance, the receiver account has the amount credited to its balance, and the fee collector account has the fee amount credited to its balance. | Y |
26 | Transfers an approved amount of fungible token with a fee from a sender account to a receiver account with the fee collector not associated | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR response code from the network. | Y |
27 | Transfers an approved amount of fungible token with a fee from a sender account to a receiver account with not enough token balance to pay the fee | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_ALLOWANCED_ID>, commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE response code from the network. | Y |
28 | Transfers an approved amount of fungible token from a sender account to a receiver account without the allowanced account paying the fee | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_ALLOWANCED_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
29 | Transfers an approved amount of fungible token from a sender account to a receiver account without using an allowanced account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>] | The transfer succeeds, the spender account has the amount transferred debited from its balance, and the receiver account has the amount credited to its balance. | Y |
30 | Transfers an approved amount of fungible token from a sender account to a receiver account with an account that doesn't have an allowance | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<VALID_ACCOUNT_ID>, commonTransactionParams.signers=[<VALID_ACCOUNT_PRIVATE_KEY>] | The transfer fails with an SPENDER_DOES_NOT_HAVE_ALLOWANCE response code from the network. | Y |
31 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver account has the total amount credited to its balance. | Y |
32 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that doesn't exist | transfers=[{token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
33 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is empty | transfers=[{token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
34 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender that is deleted | transfers=[{token.accountId=<DELETED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<DELETED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
35 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with an approved sender not signing | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="30", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_SIGNATURE response code from the network. | Y |
36 | Transfers an approved amount of fungible token from a sender account and other sender accounts to one receiver account with the amounts not adding up | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="25", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN response code from the network. | Y |
37 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer succeeds, the spender accounts have the amount transferred debited from their balances, and the receiver accounts have the proper amounts credited to their balances. | Y |
38 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that doesn't exist | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="123.456.789", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an INVALID_ACCOUNT_ID response code from the network. | Y |
39 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is empty | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId="", token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an SDK internal error. | Y |
40 | Transfers an approved amount of fungible token from a sender account and other sender accounts to several receiver accounts with a receiver that is deleted | transfers=[{token.accountId=<CREATED_SENDER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2, approved=true}, {token.accountId=<CREATED_SENDER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_SENDER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="-10", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="5", token.decimals=2}, {token.accountId=<CREATED_RECEIVER_ID_2>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="15", token.decimals=2}, {token.accountId=<DELETED_RECEIVER_ID_3>, token.tokenId=<CREATED_TOKEN_ID>, token.amount="10", token.decimals=2}], commonTransactionParams.transactionId=<CREATED_SENDER_ID>, commonTransactionParams.signers=[<CREATED_SENDER_PRIVATE_KEY>, <CREATED_SENDER_2_PRIVATE_KEY>, <CREATED_SENDER_3_PRIVATE_KEY>] | The transfer fails with an ACCOUNT_DELETED response code from the network. | Y |
JSON Request Example
{
"jsonrpc": "2.0",
"id": 99232,
"method": "transferCrypto",
"params": {
"transfers": [
{
"token": {
"accountId": "0.0.53232",
"tokenId": "0.0.9931",
"amount": "-100",
"decimals": 2
},
"approved": true
},
{
"token": {
"accountId": "0.0.6491",
"tokenId": "0.0.9931",
"amount": "100",
"decimals": 2
}
}
],
"commonTransactionParams": {
"signers": [
"3030020100300706052b8104000a04220420e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35"
]
}
}
}
JSON Response Example
{
"jsonrpc": "2.0",
"id": 99232,
"result": {
"status": "SUCCESS"
}
}