Transfer, Cancel, and Reissue Stock
Use after stock issuance. Read the current canonical security_id from poller-backed history or active positions. Lifecycle operations can consume an existing security and create new balance/resulting security IDs, so do not assume the original issuance ID remains active forever.
All routes here are /transactions routes and require issuerId in the body. Each one emits a contract event, so the row appears in View History once the poller catches up (~20 s on Plume Mainnet).
Inputs
| Field | Source |
|---|---|
issuerId | POST /issuer/create or POST /issuer/register |
stakeholderId | POST /stakeholder/create |
stockClassId | POST /stock-class/create |
security_id | POST /transactions/issuance/stock response |
Transfer stock
POST /transactions/transfer/stock
Show transfer request
{
"issuerId": "<YOUR_ISSUER_ID>",
"data": {
"transferorId": "<FROM_STAKEHOLDER_ID>",
"transfereeId": "<TO_STAKEHOLDER_ID>",
"stockClassId": "<YOUR_STOCK_CLASS_ID>",
"quantity": "13",
"sharePrice": "4.20",
"isBuyerVerified": true
}
}Returns: "success".
sharePrice is the human price per share. Contract values are scaled by 1e10 (10,000,000,000). Divide raw onchain values by 1e10 before comparing. The server handles scaling automatically for API consumers.
isBuyerVerifiedmust betrueor the contract rejects the transfer withUnverifiedBuyer. Set it once the buyer has cleared whatever KYC/eligibility check your application requires.- Partial transfers: if
quantityis less than the current position onsecurity_id, the contract automatically issues a balance security to the transferor for the leftover shares. Treat that newsecurity_id(visible in history) as the active one going forward.
Change a security
| Action | Route | Required | Optional | Returns |
|---|---|---|---|---|
| Cancel | POST /transactions/cancel/stock | stakeholderId, stockClassId, security_id, quantity | balance_security_id, reason_text, comments | stockCancellation |
| Retract | POST /transactions/retract/stock | stakeholderId, stockClassId, security_id | reason_text, comments | stockRetraction |
| Reissue | POST /transactions/reissue/stock | stakeholderId, stockClassId, security_id, resulting_security_ids | split_transaction_id, reason_text, comments | stockReissuance |
| Repurchase | POST /transactions/repurchase/stock | stakeholderId, stockClassId, security_id, quantity, price | consideration_text, balance_security_id, comments | stockRepurchase |
Partial cancellation and partial repurchase also create balance securities, just like partial transfer.
Adjust authorized shares
Use these to raise or lower how many shares the issuer (or a single stock class) can issue.
Issuer-level
POST /transactions/adjust/issuer/authorized-shares
Show issuer authorized-shares request
{
"issuerId": "<YOUR_ISSUER_ID>",
"data": {
"new_shares_authorized": "25000000",
"board_approval_date": "2026-03-15",
"stockholder_approval_date": "2026-03-20",
"comments": ["Approved after financing"]
}
}Returns: { "issuerAuthorizedSharesAdj": ... }.
Stock-class-level
POST /transactions/adjust/stock-class/authorized-shares
Show stock-class authorized-shares request
{
"issuerId": "<YOUR_ISSUER_ID>",
"data": {
"stock_class_id": "<YOUR_STOCK_CLASS_ID>",
"new_shares_authorized": "5000000",
"board_approval_date": "2026-04-20",
"stockholder_approval_date": "2026-04-20",
"comments": []
}
}Returns: { "stockClassAdjustment": ... }. The class authorized cap can never exceed the issuer authorized cap.
Verify
- Holdings: View Cap Table
- History: View History