> For the complete documentation index, see [llms.txt](https://docs.usemeta.fi/js-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.usemeta.fi/js-sdk/sdk-reference/registertoken.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
