Skip to main content

Transactions App

Transactions are the fundamental building blocks for tracking financial activity in Maybern. They record money movement, commitments, accruals, allocations, and more.

Overview

Every financial event in Maybern creates transactions. Transactions provide:
  • Audit trail - What happened and when
  • Calculations - Source data for fees, waterfalls, metrics
  • Reporting - Investor statements and fund reports

Transaction Model

Key Fields

FieldDescription
capital_amountThe monetary amount
transaction_codeType of transaction
effective_fund_family_eventOriginal source event
posted_fund_family_eventEvent that posted this (if offset)
effective_fund_family_sub_eventOriginal source sub-event
posted_fund_family_sub_eventSub-event that posted this

Effective vs Posted Events

The source of the transaction - what originally caused it.Example: For a capital call, the effective event is the capital activity event.

Effective vs Posted Sub-Events

Same pattern at the sub-event level:
Transaction TypeEffective Sub-EventPosted Sub-Event
Capital CallCapital CallCapital Call
EqualizationOriginal Capital CallEqualization
TransferOriginal EventTransfer

Transaction Categories

Clients use complex metrics that aggregate multiple transaction codes. Transaction categories enable this:
class TransactionCategory(CustomerTimeStampedModel):
    """
    Allows users to group transaction codes for calculations.
    Example: "Net Contributions" = Contributions - Recallable Distributions
    """
    name = CharField()
    transaction_codes = ManyToManyField(TransactionCode)

Common Transaction Codes

CodeDescription
Capital ContributionLP sends money to fund
DistributionFund sends money to LP
Management Fee AccruedFee owed
Management Fee BreakFee reduction
EqualizationAllocation adjustment

Usage in Calculations

Transactions are the source data for:
  • Fee Basis - Sum of relevant transaction codes
  • Waterfall - Contributions, distributions, gains
  • Performance Metrics - IRR, TVPI, DPI
  • Investor Statements - Activity summaries

Querying Transactions

from server.apps.transactions.private.selectors import list_transactions

transactions = list_transactions(
    ctx=ctx,
    filters=TransactionFilters(
        security_ownership_id=so_id,
        transaction_codes=["capital_contribution"],
        effective_date__gte=start_date,
    )
)