Tokenization Guide for Issuer
The Instant Tokenization Network (ITN) is a platform designed to streamline and accelerate the process of in-kind mint and redemption of tokenized assets. The goal of the ITN is to enable efficient, secure, and rapid conversion of real-world and digital assets to and from various tokens issued by partners on the network. The network acts as instant settlement rails for market participants to programmatically rebalance inventory, thereby stitching together fragmented tokenized asset liquidity across the industry. This document will guide the Issuer of tokenized assets on how to start using Alpaca’s Instant Tokenization Network.
Handshake Process
Before a client at Alpaca can mint or redeem tokenized assets via the Issuer, they will need to reach out to Alpaca’s operation team for a handshake step. This step is meant to ensure that the client is both a client of Alpaca and the Issuer. Additionally, they will also need to be an Authorized Participant (AP) with the Issuer.
Linking Accounts
In order to easily communicate between the Alpaca and the Issuer’s platform, the AP’s account at Alpaca will be linked to their account with the Issuer. Alpaca will maintain this linking and use it during the mint and redeem processes.
Issuer’s Account Linking Endpoint
Alpaca will invoke the Issuer’s account linking endpoint. See an example below.
POST /accounts/connect
Alpaca will provide the following JSON body in the endpoint:
{
"email": "[email protected]",
"account" : "alpaca_account_number"
}
Field | Description |
---|---|
AP’s email used on the Issuer’s platform | |
account | AP's Alpaca account number |
The Issuer will respond with the AP’s account number on their platform as shown below. Alpaca will persist this information for future use during the mint and redeem flow.
{
"client_id": "5505-1234-ABC-4G45"
}
Field | Description |
---|---|
client_id | AP’s account identifier on the Issuer’s platform |
In addition, the Issuer can respond with the following statuses:
Status | Description |
---|---|
200 | OK - Successful link |
404 | Email not found |
409 | Account already linked |
Designated Tokenization Account
During the mint and redeem process, the Instant Tokenization Network will journal securities to and from the AP's account to the Issuer's account at Alpaca. If the Issuer holds multiple accounts at Alpaca, they will need to inform Alpaca which of their accounts should be designated for tokenization.
Tokenized Assets Data
The Issuer should provide Alpaca an endpoint which can retrieve the list of supported tokenized assets. The endpoint should provide the following data:
- underling symbol
- token symbol
- supported blockchain network
Alpaca will use this information when validating the AP's mint request.
Mint Endpoint and Workflow
The mint workflow is depicted in Figure 1 below.

Figure 1. Minting a tokenized asset
- The Authorized Participant sends Alpaca a mint request.
- Alpaca uses the Issuer’s endpoint to submit a mint request with a JSON object in the body. The Issuer will validate the mint request.
Issuer’s Mint Request Endpoint
POST /inkind/issuance
Mint request body:
{
"tokenization_request_id": "12345-678-90AB",
"qty": "1.23",
"underlying_symbol": "TSLA",
"token_symbol": "TSLAx",
"network": "solana",
"client_id": "98765432",
"wallet_address": "<AP's wallet address to deposit the tokenized asset>"
}
Field | Description |
---|---|
tokenization_request_id | Unique request identifier assigned by Alpaca |
qty | The underlying quantity to convert into the tokenized asset. The value can be fractional. |
underlying_symbol | Underlying asset symbol |
token_symbol | Tokenized asset symbol |
network | The token’s blockchain network. Currently, we support the following networks:
|
client_id | AP’s account identifier on the Issuer's platform. This is the account identifier received during the handshake/account linking step. |
wallet_address | The destination wallet address where the tokenized assets should be deposited |
Mint response:
{
"issuer_request_id": "123-456-ABCD-7890",
"status": "created"
}
Field | Description |
---|---|
issuer_request_id | Unique identifier assigned by the Issuer |
status | Tokenization request status. Once the request has been successfully validated, the Issuer will create a mint tokenization request on their platform. This does not mean that the token is created.
|
In addition, the Issuer will provide the following status on the request response:
Status | Description |
---|---|
200 | OK |
400 |
|
- Alpaca journals the underlying security from the AP’s account into the Issuer’s account.
- Alpaca invokes the Issuer’s endpoint to confirm the underlying asset's journal status.
Issuer Mint Journal Confirmation Endpoint
/inkind/issuance/confirm
Mint journal confirmation body:
{
"tokenization_request_id": "12345-678-90AB",
"issuer_request_id": "ABC-123-DEF-456",
"status": "<completed/rejected>"
}
Field | Description |
---|---|
tokenization_request_id | Unique request identifier previously assigned by Alpaca |
issuer_request_id | Unique identifier assigned by the Issuer as previously received on the mint response |
status | The journal status. Valid values are:
|
- The Issuer deposits the tokens into the AP’s wallet on a successful journal.
- The Issuer invokes Alpaca’s endpoint to confirm the successful token mint. The Issuer will provide their designated Alpaca tokenization account_id as a URL parameter in the endpoint.
Alpaca's Mint Confirmation Callback Endpoint
POST /v1/accounts/{account_id}/tokenization/callback/mint
Mint confirmation callback body:
{
"tokenization_request_id": "12345-678-90AB",
"client_id": "5505-1234-ABC-4G45",
"wallet_address": "<AP's wallet address where the tokenized assets were deposited>",
"tx_hash": "0x12345678",
"network": "solana"
}
Field | Description |
---|---|
tokenization_request_id | Unique request identifier previously assigned by Alpaca |
client_id | AP’s account identifier on the Issuer's platform |
wallet_address | Wallet address where the tokenized assets were deposited |
tx_hash | Mint’s transaction hash on the blockchain |
network | The token’s blockchain network. Currently, we support the following networks:
|
Redeem Endpoint and Workflow
The redeem workflow is depicted in Figure 2 below.

Figure 2. Redeeming a tokenized asset
- The token redemption process will be initiated by the client by moving the tokens into the Issuer’s redemption wallet address. The Issuer will remove these tokens from circulation.
- The Issuer will then notify Alpaca using the following endpoint that an AP has redeemed their tokens. The Issuer will provide their designated Alpaca tokenization account_id as a URL parameter in the endpoint.
Alpaca's Redeem Request Endpoint
POST /v1/accounts/{account_id}/tokenization/redeem
Redeem request body:
{
"issuer_request_id": "ABC-123-DEF-456",
"underlying_symbol": "AAPL",
"token_symbol": "AAPLx",
"client_id": "5505-1234-ABC-4G45",
"qty": "1.23",
"network": "solana",
"wallet_address": "<the originating wallet address for the redeemed tokens>",
"tx_hash": "0x12345678"
}
Field | Description |
---|---|
issuer_request_id | Unique identifier assigned by the Issuer |
underlying_symbol | Underlying asset symbol |
token_symbol | Token asset symbol |
client_id | AP’s account identifier on the Issuer's platform |
qty | The quantity to convert into the underlying asset. The value can be fractional. |
network | The originating token’s blockchain network. Currently, we support the following networks:
|
wallet_address | The address where the redeemed tokens were originally held |
tx_hash | The transaction hash of the tokens being sent to the Issuer's redemption wallet |
Redeem response:
{
"tokenization_request_id": "12345-678-90AB",
"issuer_request_id": "ABCDEF123",
"created_at":"2025-09-12T17:28:48.642437-04:00",
"type": "redeem",
"status": "completed",
"underlying_symbol": "TSLA",
"token_symbol" : "TSLAx",
"qty" : "123.45",
"issuer" : "xstocks",
"network": "solana",
"wallet_address": "0x1234567A",
"tx_hash" : "0x1234567A",
"fees" : "0.567"
}
Field | Description |
---|---|
tokenization_request_id | Unique request identifier assigned by Alpaca |
issuer_request_id | Unique identifier assigned by the Issuer |
created_at | Timestamp when Alpaca received the redeem request |
type | Tokenization request type:
|
status | Current status of the redemption request:
|
underlying_symbol | The underlying asset symbol |
token_symbol | The tokenized asset symbol |
qty | The quantity to convert into the underlying asset. It can be fractional. |
issuer | The tokenized asset's Issuer. Valid values are:
|
network | The token's blockchain network. Valid values are:
|
wallet_address | The originating wallet where the tokenized assets were previously held |
tx_hash | The transaction hash of the tokens being sent to the Issuer's redemption wallet |
fees | The fees charged for this tokenization request |
- Finally, Alpaca will journal the underlying asset from the Issuer’s account into the AP’s account.
List Requests
An Issuer can use the following endpoint to list the tokenization requests performed through their platform. The Issuer will provide their designated Alpaca tokenization account_id as a URL parameter in the endpoint.
Alpaca's List Requests Endpoint
GET /v1/accounts/{account_id}/tokenization/requests
List response:
[
{
"tokenization_request_id": "12345-678-90AB",
"issuer_request_id": "ABCDEF123",
"created_at":"2025-09-12T17:28:48.642437-04:00",
"updated_at":"2025-09-12T17:28:48.642437-04:00",
"type": "redeem",
"status": "completed",
"underlying_symbol": "TSLA",
"token_symbol" : "TSLAx",
"qty" : "123.45",
"issuer" : "xstocks",
"network": "solana",
"wallet_address": "0x1234567A",
"tx_hash" : "0x1234567A",
"fees" : "0.567"
},
{
"tokenization_request_id": "12345-678-90AB",
"issuer_request_id": "ABCDEF123",
"created_at":"2025-09-12T17:28:48.642437-04:00",
"updated_at":"2025-09-12T17:28:48.642437-04:00",
"type": "redeem",
"status": "completed",
"underlying_symbol": "TSLA",
"token_symbol" : "TSLAx",
"qty" : "123.45",
"issuer" : "xstocks",
"network": "solana",
"wallet_address": "0x1234567A",
"tx_hash" : "0x1234567A",
"fees" : "0.567"
},
{
"tokenization_request_id": "12345-678-90AB",
"issuer_request_id": "ABCDEF123",
"created_at":"2025-09-12T17:28:48.642437-04:00",
"updated_at":"2025-09-12T17:28:48.642437-04:00",
"type": "redeem",
"status": "completed",
"underlying_symbol": "TSLA",
"token_symbol" : "TSLAx",
"qty" : "123.45",
"issuer" : "xstocks",
"network": "solana",
"wallet_address": "0x1234567A",
"tx_hash" : "0x1234567A",
"fees" : "0.567"
}
]
Field | Description |
---|---|
tokenization_request_id | Unique request identifier assigned by Alpaca |
issuer_request_id | Unique identifier assigned by the Issuer |
created_at | Timestamp when the request was created |
updated_at | Timestamp when the request was last updated |
type | Tokenization request type. Valid values are:
|
status | Current status of the tokenization request:
|
underlying_symbol | The underlying asset symbol |
token_symbol | The token asset symbol |
qty | The quantity for this request |
issuer | The tokenized asset's Issuer. Valid values are:
|
network | The token's blockchain's network. Valid values are:
|
wallet_address | The wallet address associated with this request |
tx_hash | The transaction hash on the blockchain |
fees | The fees charged for this tokenization request |
Glossary
- Authorized Participant: An entity licensed to conduct digital asset business in the tokenized asset, e.g xstocks. The Issuer only sells tokenized assets to Authorized Participants (AP). The AP can sell the tokenized assets to their clients.
- Issuer: Financial entity which purchases the underlying equity securities, wraps them and creates/issues tokens which are backed by the same.
- Mint: The act of converting underlying equity securities into tokenized assets.
- Redeem: The act of converting tokenized assets into their underlying equity securities.
Updated 6 days ago