# RegisterToken

## Description

Function to register any asset that is not supported by default. The token will then be supported throughout the SDK - eg. it will be returned in the `assets` field of the `RetrieveUser` function if the user has a non-zero balance of the token.

Please note that by default, we support native tokens that have been outlined in [Assets](/js-sdk/constants/asset.md).

## Details

### Signature

`RegisterToken(name, symbol, chain, image, contractAddress, decimal, tokenStandard)`

### Arguments

<table><thead><tr><th width="248">Parameter</th><th width="156">Type</th><th>Definition</th></tr></thead><tbody><tr><td><code>name</code></td><td>String</td><td>Name of the currency, eg. "USD Coin"</td></tr><tr><td><code>symbol</code></td><td>String</td><td>Symbol for the currency, eg. "USDC"</td></tr><tr><td><code>chain</code></td><td>String</td><td>Chain on which the contract is deployed. eg. for USDC on ETH, pass in <code>chains.eth</code></td></tr><tr><td><code>image</code></td><td>String</td><td>Link to png image of the token. Max size is 50KB</td></tr><tr><td><code>contractAddress</code></td><td>String</td><td>Contract address of the ERC20 token, eg. for USDC on ETH, it is 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48</td></tr><tr><td><code>decimal</code></td><td>Number</td><td>Number of decimal places of precision for the asset. eg. 18 for ETH</td></tr><tr><td><code>tokenStandard</code></td><td>Object</td><td><p>Specify the token standard. eg:</p><pre class="language-json"><code class="lang-json">{
    "name": "erc20",
}
</code></pre></td></tr></tbody></table>

### Return Value

Instance of the new Asset

## Example

First, create an instance of the token by calling `RegisterToken`:

{% code title="custom-token.js" lineNumbers="true" %}

```jsx
import { RegisterToken, chains } from '@metafi/metafi-js-package';

export const WETH = RegisterToken(
    'Goerli Wrapped Ethereum', 
    'WETH', 
    chains.goerli,
    'https://d2qdyxy3mxzsfv.cloudfront.net/images/logo/ethereum.png',  
    '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6',
    18,
    {
        "name": "erc20",
    }
)

```

{% endcode %}

Then, pass in the custom token(s) you have created while initializing the MetafiProvider:

{% code title="App.js" lineNumbers="true" %}

```jsx
import { 
    TransferTokens,
} from '@metafi/metafi-js-package';
import { WETH } from "./tokens/custom-token.js";

function App() {
    const transferWETH = () => {
        TransferTokens({
                to: "0xd4594dECd0ed8BA4C7d5810dbB8D004C74250BD5",
                amount: "1",
                currency: WETH,
                callback: (result) => {
                    console.log("callback result", result);
                },
            },
            "YOUR-API-KEY"
        );
    }
    
    return (
        <div>
	    <button onClick={transferWETH}>Transfer 1 WETH</button>
        </div>
    );
}

export default App;

```

{% endcode %}

And voila! Your token will now be accessible throughout the wallet.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.usemeta.fi/js-sdk/sdk-reference/registertoken.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
