OptionalidempotencyKey?: stringClient-supplied dedupe token: submitting the same key twice returns the EXISTING fee transfer (no second insert, no workflow re-start), so a network-level retry cannot double-charge the customer. When absent, every call inserts a new row — prior behavior, unchanged.
Unlike ledger-account transfers this key does NOT touch the on-chain
Mintfx idempotency key — the fee transfer PDA is seeded by the external
id (see feeTransferTransaction and
ledgerAccountFeeTransferWorkflowActivities).
OptionalrecurringFee?: { periodKey: string }Set by the monthly platform-fee sweep (ENG-3083) to mark this charge as one of its own and record the period it settles.
Stored on data rather than left implicit in idempotencyKey: the key
encodes the period as a suffix, which answers "was this customer billed
for August" but cannot answer "every recurring fee taken in August"
without a scan no index can serve.
Solana transaction to execute a transfer from a ledger account to another
Get a fee transfer by ID. Admin function does not lock down to a customer.
OptionalcreatedAt?: DbTimestampCriteriaOptionalentityId?: string[]OptionalorderBy?: DbOrderByCriterion<Optionalpage?: numberDefaults to 1
OptionalpageSize?: numberDefaults to 10
OptionalsourceAccountId?: string[]OptionalsourceCustomerId?: stringOptionalstatus?: ("CANCELLED" | "FAILED" | "PENDING" | "SUCCEEDED")[]OptionaltargetAccountId?: string[]OptionaltargetCustomerId?: stringOptionalupdatedAt?: DbTimestampCriteriaUpdate the transfer details in DB and publish an event if required
Source of the master fee ledger account id, resolved per
createcall rather than taken by value. Taking the id by value forced every composition root toawaita DB round trip before it could construct this service — at module scope in the Temporal workers, which on Lambda put a database call on the cold-start init path where a failure is anInit Errorthat Sentry cannot see.