# KernelBlock

object type

One kernel block — a settled purchase's STOCK lifecycle. Blocks consume OLDEST-FIRST with at most ONE open at a time; a block EARMARKED for transfer freezes until the decision (it cannot be consumed — freezing most of your stock can starve the wallet, the disclosed strictness); an OPENED block can never transfer (the purity law); a transferred block records where it went.

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | == the funding TokenPurchase id (one id, two records). |
| `type` | [String](/types/#scalars) `String!` | No further notes. |
| `caption` | [String](/types/#scalars) `String!` | No further notes. |
| `status` | [String](/types/#scalars) `String!` | allocated (charge in flight) · approved (money settled — in the queue; transferable) · opened (being consumed — transfer-ineligible forever) · consumed (none left) · transfer_requested (frozen, awaiting the decision) · transfer_denied (stock again — consumable, re-requestable) · transfer_approved (frozen — execute or lapse) · transferred (moved whole) · doomed (the charge failed). |
| `parentId` | [ID](/types/#scalars) `ID!` | The group wallet (the queue's operational home). |
| `rootId` | [ID](/types/#scalars) `ID!` | No further notes. |
| `createdAt` | [String](/types/#scalars) `String!` | No further notes. |
| `updatedAt` | [String](/types/#scalars) `String!` | No further notes. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | No further notes. |
| `revision` | [ID](/types/#scalars) `ID!` | No further notes. |
| `tokensPurchased` | [Int](/types/#scalars) `Int!` | The block's whole size (kernels/tokens — blocks move WHOLE). |
| `usdAmountCents` | [Int](/types/#scalars) `Int!` | What the block cost (USD cents — its own consumption is valued at exactly this, proportionally). |
| `volumeTierCode` | [String](/types/#scalars) `String!` | The volume tier that priced it. |
| `approvedAt` | [String](/types/#scalars) | When the money settled (absent = not yet stock / the charge failed). |
| `openedAt` | [String](/types/#scalars) | When the queue first reached it (present ⇒ it can never transfer — the purity law). |
| `consumedAt` | [String](/types/#scalars) | When it fully drained. |
| `transferRequestedAt` | [String](/types/#scalars) | The LATEST transfer ask (re-asks refresh it). |
| `transferRequestedToOrgGroupId` | [ID](/types/#scalars) | The requested destination group. |
| `transferRequestReason` | [String](/types/#scalars) | Your request's reason (rides the review). |
| `transferDeniedAt` | [String](/types/#scalars) | The LATEST deny + the reviewed reason (a denied block is stock again). |
| `transferDeniedReason` | [String](/types/#scalars) | No further notes. |
| `transferredToOrgGroupId` | [ID](/types/#scalars) | Where it went (present ⟺ transferred). |
| `transferredAt` | [String](/types/#scalars) | No further notes. |

## Used by

- [kernelBlocks](/reference/billing-and-the-wallet/kernelBlocks/)
- [requestKernelBlockTransfer](/reference/billing-and-the-wallet/requestKernelBlockTransfer/)
