FeaturesCorporate ActionsTransfer, Cancel, and Reissue Stock

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

FieldSource
issuerIdPOST /issuer/create or POST /issuer/register
stakeholderIdPOST /stakeholder/create
stockClassIdPOST /stock-class/create
security_idPOST /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.

  • isBuyerVerified must be true or the contract rejects the transfer with UnverifiedBuyer. Set it once the buyer has cleared whatever KYC/eligibility check your application requires.
  • Partial transfers: if quantity is less than the current position on security_id, the contract automatically issues a balance security to the transferor for the leftover shares. Treat that new security_id (visible in history) as the active one going forward.

Change a security

ActionRouteRequiredOptionalReturns
CancelPOST /transactions/cancel/stockstakeholderId, stockClassId, security_id, quantitybalance_security_id, reason_text, commentsstockCancellation
RetractPOST /transactions/retract/stockstakeholderId, stockClassId, security_idreason_text, commentsstockRetraction
ReissuePOST /transactions/reissue/stockstakeholderId, stockClassId, security_id, resulting_security_idssplit_transaction_id, reason_text, commentsstockReissuance
RepurchasePOST /transactions/repurchase/stockstakeholderId, stockClassId, security_id, quantity, priceconsideration_text, balance_security_id, commentsstockRepurchase

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

Next: Save Equity Compensation and Convertibles.