> For the complete documentation index, see [llms.txt](https://developers.polymath.network/polymath/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.polymath.network/polymath/wiki/transfer-manager.md).

# Transfer-Manager

**Summary:**

This CLI feature allows you to run the transfer\_manager module which allows you to manage if you want to disable or set a new controller or even force a transfer.

**How it works**

1. Verify transfers
2. Make Transfer
3. Allow Forced transfers
4. Configure existing modules
5. Add new Transfer Manager module

**How to Use this CLI Feature (Instructions)**

To run this feature, please run:

```
$ node CLI/polymath-cli tm  or  $ node CLI/polymath-cli transfer_manager
```

## Example Scenario:

```
*********************************************
Welcome to the Command-Line Transfer Manager.
*********************************************
Issuer Account: 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e


[1] CP - Deployed at 0x37454c3FCa8547D17b79F12aF485b0F920082b7A
[2] Enter token symbol manually
[0] Exit

Select a token [1, 2, 0]: 1

 Transfer Manager - Main Menu 

Transfer Manager modules attached:
- GeneralTransferManager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4
- PercentageTransferManager at 0x71936d7a699790Db8C708A0E4739A44eB686C55F

[1] Verify transfer
[2] Transfer
[3] Forced transfers
[4] Config existing modules
[5] Add new Transfer Manager module
[0] Exit
```

**Verifying Transfers between addresses**

```
What do you want to do? [1...5 / 0]: 1
Selected: Verify transfer 

Total investors at the moment: 1
Enter the sender account (0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e): 
Balance of 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e: 100 CP - 100% of total supply
Enter the receiver account: 0x2f795dd330a3f4b3f0ac531543d362a411248749
Balance of 0x2f795dd330a3f4b3f0ac531543d362a411248749: 0 CP - 0% of total supply
Enter amount of tokens to verify: 20

20 CP can be transferred from 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e to 0x2f795dd330a3f4b3f0ac531543d362a411248749!

 Transfer Manager - Main Menu 

Transfer Manager modules attached:
- GeneralTransferManager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4
- PercentageTransferManager at 0x71936d7a699790Db8C708A0E4739A44eB686C55F
```

**Note: Addresses must be on the whitelist and have no transfer restrictions prior to verifying transfers**

**Transfering**

```
What do you want to do? [1...5 / 0]: 2
Selected: Transfer 

Total investors at the moment: 1
Balance of 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e: 100 CP - 100% of total supply
Enter beneficiary of tranfer: 0x2f795dd330a3f4b3f0ac531543d362a411248749
Balance of 0x2f795dd330a3f4b3f0ac531543d362a411248749: 0 CP - 0% of total supply
Enter amount of tokens to transfer: 10
---- Transaction executed: transfer - Gas limit provided: 175632 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xa783e6315cbf54a5ec3d00cafeaf1977320a6828752116d7d967aab283592c42

  Congratulations! The transaction was successfully completed.
  Gas used: 146360 - Gas spent: 0.007318 Ether
  Review it on Etherscan.
  TxHash: 0xa783e6315cbf54a5ec3d00cafeaf1977320a6828752116d7d967aab283592c42

0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e transferred 10 CP to 0x2F795dd330A3f4B3f0ac531543d362a411248749 successfully!
Total investors at the moment: 2
Balance of 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e: 90 CP - 90% of total supply
Balance of 0x2f795dd330a3f4b3f0ac531543d362a411248749: 10 CP - 10% of total supply

 Transfer Manager - Main Menu 

Transfer Manager modules attached:
- GeneralTransferManager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4
- PercentageTransferManager at 0x71936d7a699790Db8C708A0E4739A44eB686C55F
```

**Forced Transfers**

For forced transfers you simple enter the address you would like to set as a controller or disable as a controller

```
Selected: Forced transfers 

[1] Disable controller
[2] Set controller
[0] Return
```

**Configuration of existing modules**

The process is the same for whatever module you select. With that being said, we are going to select GeneralTransferManager for this example.

```
Selected: Config existing modules 


[1] GeneralTransferManager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4
[2] PercentageTransferManager at 0x71936d7a699790Db8C708A0E4739A44eB686C55F
[0] Return

----
Which module do you want to config? [1, 2, 0]: 1
Selected: GeneralTransferManager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4 

General Transfer Manager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4 

- Issuance address:                0x0000000000000000000000000000000000000000
- Signing address:                 0x0000000000000000000000000000000000000000
- Allow all transfers:             NO
- Allow all whitelist transfers:   NO
- Allow all whitelist issuances:   YES
- Allow all burn transfers:        NO
- Default times:
   - From time:                    0 (December 31st 1969, 19:00:00)
   - To time:                      0 (December 31st 1969, 19:00:00)
- Investors:                       4

[1] Show investors
[2] Show whitelist data
[3] Modify whitelist
[4] Modify whitelist from CSV
[5] Change the default times used when they are zero
[6] Change issuance address
[7] Change signing address
[8] Allow all transfers
[9] Allow all whitelist transfers
[a] Disallow all whitelist issuances
[b] Allow all burn transfers
[0] Return

----
What do you want to do? [1...9, a, b, 0]: 1
Selected: Show investors 

***** List of investors on whitelist *****
0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e
0xa40B039F9aE64718aEe5DccaA30BcF248F384545
0x2F795dd330A3f4B3f0ac531543d362a411248749
0x600f5D001F2f6044E652628E9a703E0A96Eb633D

----
What do you want to do? [1...9, a, b, 0]: 2
Selected: Show whitelist data 

Enter the addresses of the investors you want to show (i.e: addr1,addr2,addr3) or leave empty to show them all: 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e
0xa40B039F9aE64718aEe5DccaA30BcF248F384545
0x2F795dd330A3f4B3f0ac531543d362a411248749
0x600f5D001F2f6044E652628E9a703E0A96Eb633D
╔════════════════════════════════════════════╤══════════════════╤══════════════════╤══════════════════╤════════════╗
║ Investor                                   │ From time        │ To time          │ KYC expiry date  │ Restricted ║
╟────────────────────────────────────────────┼──────────────────┼──────────────────┼──────────────────┼────────────╢
║ 0xddF2Da2bc5a45D21e7B136F08EeADD08FcF5a27e │ 01/08/2019 12:38 │ 01/08/2019 12:38 │ 01/12/2019 12:38 │ NO         ║
╚════════════════════════════════════════════╧══════════════════╧══════════════════╧══════════════════╧════════════╝
----
What do you want to do? [1...9, a, b, 0]: 3
Selected: Modify whitelist 

Selected: Modify whitelist 

Enter the address to whitelist: 0x6f877e57ecb50a6b092a989237f3ef5f3ac6949e
Enter the time(Unix Epoch time) when the sale lockup period ends and the investor can freely sell his tokens(now = 1546983389): 1546983398
Enter the time(Unix Epoch time) when the purchase lockup period ends and the investor can freely purchase tokens from others(now = 1546983389): 1546983398
Enter the time till investors KYC will be validated(after that investor need to do re - KYC) (1 hour from now = 1546987002): 1547328997
Is the investor a restricted investor? [y/n]: n
---- Transaction executed: modifyWhitelist - Gas limit provided: 121776 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xb8f4f26fb96afb53f7993cb89df5105bacef637847ed92b20458e034c9beed2f

  Congratulations! The transaction was successfully completed.
  Gas used: 101480 - Gas spent: 0.005074 Ether
  Review it on Etherscan.
  TxHash: 0xb8f4f26fb96afb53f7993cb89df5105bacef637847ed92b20458e034c9beed2f

0x6f877e57EcB50A6b092A989237f3Ef5f3Ac6949E has been whitelisted sucessfully!

----
Selected: Modify whitelist from CSV 

Enter the path for csv data file (/Users/charlesst.louis/Desktop/polymath-core/CLI/commands/../data/Transfer/GTM/whitelist_data.csv): *Enter updated csv file here*
Enter the max number of records per transaction or batch size (75): *Enter max # of records/tx or batch size*
Batch 1 - Attempting to modify whitelist to accounts: 

 [ '0xEe7Ae74D964F2bE7d72C1B187B38e2eD3615d4d1',
  '0x2F0fD672BF222413cc69DC1f4f1d7e93Ad1763A1',
  '0xaC297053173B02b02a737D47F7B4a718e5b170EF',
  '0x49FC0b78238DAB644698A90FA351B4C749E123d2',
  '0x10223927009b8ADD0960359dd90d1449415b7ca9',
  '0x3C65CFE3dE848cF38e9d76e9c3e57a2F1140B399',
  '0xaBf60DE3265B3017Db7A1be66fC8B364ec1dbb98',
  '0xb841fe5a89Da1BBeF2D0805FbD7ffcBbB2fCa5E3',
  '0x56bE93088141b16EBaA9416122Fd1D928dA25ecf',
  '0xBB276B6f68f0A41D54B7E0A608FE8eB1eBDeE7B0' ] 

---- Transaction executed: modifyWhitelistMulti - Gas limit provided: 927058 ----

  Your transaction is being processed. Please wait...
  TxHash: 0x9ff240d7c9c6e18753d9d9c95e6788e462f35bb91498609abef186286542704c

  Congratulations! The transaction was successfully completed.
  Gas used: 772548 - Gas spent: 0.0386274 Ether
  Review it on Etherscan.
  TxHash: 0x9ff240d7c9c6e18753d9d9c95e6788e462f35bb91498609abef186286542704c

Modify whitelist transaction was successful.
772548 gas used.Spent: 0.0386274 ETH

----
What do you want to do? [1...9, a, b, 0]: 5
Selected: Change the default times used when they are zero 

Enter the default time (Unix Epoch time) used when fromTime is zero: 1547328997

---- Transaction executed: changeDefaults - Gas limit provided: 60128 ----

  Your transaction is being processed. Please wait...
  TxHash: 0x9229e2a8405639c2237aa034d06b8799a90f55771fb0fc13dea06f3baa8f6179

  Congratulations! The transaction was successfully completed.
  Gas used: 50107 - Gas spent: 0.00250535 Ether
  Review it on Etherscan.
  TxHash: 0x9229e2a8405639c2237aa034d06b8799a90f55771fb0fc13dea06f3baa8f6179

Default times have been updated successfully!
----
Selected: Change issuance address 

Enter the new issuance address: 0x0cff167c0b67ec12064bb7326e4f6da793c77b3b
---- Transaction executed: changeIssuanceAddress - Gas limit provided: 60544 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xeec8b7b173b36e886212a7639c753beb8d5166dd1d1c240174d0e1c7a6be54bf

  Congratulations! The transaction was successfully completed.
  Gas used: 50453 - Gas spent: 0.00252265 Ether
  Review it on Etherscan.
  TxHash: 0xeec8b7b173b36e886212a7639c753beb8d5166dd1d1c240174d0e1c7a6be54bf

0x0cff167C0b67ec12064BB7326E4f6Da793C77b3b is the new address for the issuance!

----
Selected: Change signing address 

Enter the new signing address: 0x0cff167c0b67ec12064bb7326e4f6da793c77b3b
---- Transaction executed: changeSigningAddress - Gas limit provided: 42016 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xc845a5e7e4411cf055271f3e25ef59bce34f71be2a2b018423a7c33ead454064

  Congratulations! The transaction was successfully completed.
  Gas used: 35013 - Gas spent: 0.00175065 Ether
  Review it on Etherscan.
  TxHash: 0xc845a5e7e4411cf055271f3e25ef59bce34f71be2a2b018423a7c33ead454064

0x0cff167C0b67ec12064BB7326E4f6Da793C77b3b is the new address for the signing!----

----
Selected: Allow all transfers (no input required, automtically runs script) 

---- Transaction executed: changeAllowAllTransfers - Gas limit provided: 40312 ----

  Your transaction is being processed. Please wait...
  TxHash: 0x925f5d8f3a196df2999650d2db28d5fecca48fed6fc54edacef4b475983643bd

  Congratulations! The transaction was successfully completed.
  Gas used: 33593 - Gas spent: 0.00167965 Ether
  Review it on Etherscan.
  TxHash: 0x925f5d8f3a196df2999650d2db28d5fecca48fed6fc54edacef4b475983643bd

All transfers are allowed!

*When going back to the menu it now shows the "Disallow all transfers" instead of "Allow all transfers":*

1] Show investors
[2] Show whitelist data
[3] Modify whitelist
[4] Modify whitelist from CSV
[5] Change the default times used when they are zero
[6] Change issuance address
[7] Change signing address
[8] Disallow all transfers
[9] Allow all whitelist transfers
[a] Disallow all whitelist issuances
[b] Allow all burn transfers
[0] Return

----
Selected: Allow all whitelist transfers 

---- Transaction executed: changeAllowAllWhitelistTransfers - Gas limit provided: 40570 ----

  Your transaction is being processed. Please wait...
  TxHash: 0x4a9ef2755290afe51a070a5c5d934fa76368217188ffe4d956abb0582d7d32a5

  Congratulations! The transaction was successfully completed.
  Gas used: 33808 - Gas spent: 0.0016904 Ether
  Review it on Etherscan.
  TxHash: 0x4a9ef2755290afe51a070a5c5d934fa76368217188ffe4d956abb0582d7d32a5

Time locks from whitelist are ignored for transfers!

*When going back to the menu it now shows the "Disallow all whitelist transfers" instead of "Allow whitelist transfers":*

General Transfer Manager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4 

- Issuance address:                0x0cff167C0b67ec12064BB7326E4f6Da793C77b3b
- Signing address:                 0x0cff167C0b67ec12064BB7326E4f6Da793C77b3b
- Allow all transfers:             YES
- Allow all whitelist transfers:   YES
- Allow all whitelist issuances:   YES
- Allow all burn transfers:        NO
- Default times:
   - From time:                    1547328997 (January 12th 2019, 16:36:37)
   - To time:                      1547328997 (January 12th 2019, 16:36:37)
- Investors:                       15

[1] Show investors
[2] Show whitelist data
[3] Modify whitelist
[4] Modify whitelist from CSV
[5] Change the default times used when they are zero
[6] Change issuance address
[7] Change signing address
[8] Disallow all transfers
[9] Disallow all whitelist transfers
[a] Disallow all whitelist issuances
[b] Allow all burn transfers
[0] Return


----
Selected: Disallow all whitelist issuances 

---- Transaction executed: changeAllowAllWhitelistIssuances - Gas limit provided: 40440 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xd1344491bbd0008e9b3f7f19ba56eb928e763e9906349e31068d760df1153c7c

  Congratulations! The transaction was successfully completed.
  Gas used: 33700 - Gas spent: 0.001685 Ether
  Review it on Etherscan.
  TxHash: 0xd1344491bbd0008e9b3f7f19ba56eb928e763e9906349e31068d760df1153c7c

Issuances are restricted by time locks from whitelist!


----
Selected: Allow all burn transfers 

---- Transaction executed: changeAllowAllBurnTransfers - Gas limit provided: 40992 ----

  Your transaction is being processed. Please wait...
  TxHash: 0x4d1908a2ff9911a0b834ab3c014569b0fcc37d7b631aae6ac78720be678fcd44

  Congratulations! The transaction was successfully completed.
  Gas used: 34160 - Gas spent: 0.001708 Ether
  Review it on Etherscan.
  TxHash: 0x4d1908a2ff9911a0b834ab3c014569b0fcc37d7b631aae6ac78720be678fcd44

The burning mechanism is deactivated!
```

**Adding new Transfer Manager modules**

```
Selected: Add new Transfer Manager module 


[1] PercentageTransferManager
[2] CountTransferManager
[3] GeneralTransferManager
[4] ManualApprovalTransferManager
[0] Return

----
Percentage Transfer Manager

Which Transfer Manager module do you want to add? [1...4 / 0]: 1
Are you sure you want to add PercentageTransferManager module? [y/n]: y
Enter the maximum amount of tokens in percentage that an investor can hold: 5
Do you want to ignore transactions which are part of the primary issuance? [y/n]: n

---- Transaction executed: addModule - Gas limit provided: 2268599 ----

  Your transaction is being processed. Please wait...
  TxHash: 0x38e9cb87902602eb0cf1c519e39c62929e75cd1f883a3ec50d090033354c5b10

  Congratulations! The transaction was successfully completed.
  Gas used: 1875499 - Gas spent: 0.09377495 Ether
  Review it on Etherscan.
  TxHash: 0x38e9cb87902602eb0cf1c519e39c62929e75cd1f883a3ec50d090033354c5b10

Module deployed at address: 0x7f930c9dd304c90D331d055Bb70A2ED6363c980E

----
Count Transfer Manager

Which Transfer Manager module do you want to add? [1...4 / 0]: 2
Are you sure you want to add CountTransferManager module? [y/n]: y
Enter the maximum no. of holders the SecurityToken is allowed to have: 1000

---- Transaction executed: addModule - Gas limit provided: 1746196 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xc6ca7e7566ae4c869b627af4f0c566008e86f52c7ebda005bb137485c192d80d

  Congratulations! The transaction was successfully completed.
  Gas used: 1455163 - Gas spent: 0.07275815 Ether
  Review it on Etherscan.
  TxHash: 0xc6ca7e7566ae4c869b627af4f0c566008e86f52c7ebda005bb137485c192d80d

Module deployed at address: 0x1b0bCe80cab378EFd2472398a24d8Aa8CaA965cF

----
General Transfer Manager

Which Transfer Manager module do you want to add? [1...4 / 0]: 3
Are you sure you want to add GeneralTransferManager module? [y/n]: y

---- Transaction executed: addModule - Gas limit provided: 1323953 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xb02830107df701d438f7ffb2df636c8f669b3b115788369beffda70bee74fa6f

  Congratulations! The transaction was successfully completed.
  Gas used: 1103294 - Gas spent: 0.0551647 Ether
  Review it on Etherscan.
  TxHash: 0xb02830107df701d438f7ffb2df636c8f669b3b115788369beffda70bee74fa6f

Module deployed at address: 0x503298dc6b5971bA6c77ddBB29E005e78b2347Ac
----
Which Transfer Manager module do you want to add? [1...4 / 0]: 4
Are you sure you want to add ManualApprovalTransferManager module? [y/n]: y
---- Transaction executed: addModule - Gas limit provided: 3725315 ----

  Your transaction is being processed. Please wait...
  TxHash: 0xa96b64be89ad93f924b687308a8a8adeb794189b0bb21d8fdb92dc071f791717

  Congratulations! The transaction was successfully completed.
  Gas used: 3104429 - Gas spent: 0.15522145 Ether
  Review it on Etherscan.
  TxHash: 0xa96b64be89ad93f924b687308a8a8adeb794189b0bb21d8fdb92dc071f791717

Module deployed at address: 0xfDC74D7bCB6D72dC855ddd4989eB46f1C7ccF0d3

 Transfer Manager - Main Menu 

----
Summary: 

Transfer Manager modules attached:
- GeneralTransferManager at 0xb0E3F9D978A0E52639f3691821138Bd5E1FAb6A4
- PercentageTransferManager at 0x71936d7a699790Db8C708A0E4739A44eB686C55F
- PercentageTransferManager at 0x7f930c9dd304c90D331d055Bb70A2ED6363c980E
- CountTransferManager at 0x1b0bCe80cab378EFd2472398a24d8Aa8CaA965cF
- GeneralTransferManager at 0x503298dc6b5971bA6c77ddBB29E005e78b2347Ac
- ManualApprovalTransferManager at 0xfDC74D7bCB6D72dC855ddd4989eB46f1C7ccF0d3
```

**Troubleshooting / FAQs**
