Distributions and period end says why each step happens; this guide shows the calls, under the same Tx numbers. Your calls are the operator’s, with an approver; the price source, the issuer and each holder act on their own nodes. $OPERATOR and $APPROVER are two bearers.

Tx 1 · The price source publishes the period-end NAV

The price source signs the period-end NAV point from its own NAV system (a PublishedNav, read through the Oracle interface). The point carries the withholding rate the period is taxed at.

Preview, then freeze the plan

GET /v1/distribution-calendar lists the record and payment dates due; the preview shows what a distribution would pay now, each line, and who is left out and why. Executing freezes the plan, under four eyes.
curl
When the body names the period, a plan for another period is refused (period-mismatch). A period whose NAV points carry more than one withholding rate is refused rate-changed-in-period unless the body says "acknowledgeRateChange": true. A period is distributed once, and the next waits until every paid line of the last is booked (distribution-unrolled).

The price source’s distribution list

Where the fund’s administrator states each holder’s distribution, the plan becomes payable only once its list agrees. Its feed posts the list as a statement, under a feed bearer; the export is the frozen plan to compare it with.
curl
A list that agrees makes the plan payable (distribution.payable); one that does not holds the fund (distribution.held). See Events and webhooks.

Tx 2 to 4 · The issuer pays; each holder accepts

On its DA Registry, the issuer pays each line of the export once: a mint to itself (Tx 2), then a transfer to the holder (Tx 3), which the holder’s custodian accepts in its wallet (Tx 4, TransferInstruction_Accept). A holder that preapproved the fund’s payouts accepts nothing: Tx 3 completes at once. The issuer reads GET /v1/distributions/{distributionId}/export for the lines and GET /v1/distributions/{distributionId} for those already booked, so it pays no line twice.

Tx 5 · Book each paid line

Rolling books every delivered line to its holder’s record (income, withholding, balance); a line not yet delivered stays pending, so calling again is safe. The distribution reads paid once every line is booked.
curl

Period end with no manual step

A standing approval lets NodeAsset’s scheduler execute the fund’s due periods itself, within bounds: at most a year, a cap on one period’s payout and on the NAV’s yearly growth, and only on a clean book. It takes two approvers besides its maker, and one call revokes it.
curl
Each due period is announced (distribution.due). A period the scheduler refuses, such as one over the payout cap, is final for that grant, and the announcement says why. Back to the workflow: Distributions and period end