Dosu LogoDosu Logo
Ask
Join our Discord
Organization avatar
Open Collective's SpacePublic
Open Collective
DocumentsOpen Collective's Space
transaction-pairs-groups-and-perspectives
transaction-pairs-groups-and-perspectives
Type
External
Status
Published
Created
Jun 8, 2026
Updated
Jun 8, 2026
Source
advanced/ledger/transaction-pairs-groups-and-perspectives.md

Transaction Pairs, Groups & Perspectives#

Transaction Pairs #

Transactions are always created in complementary pairs: a credit transaction and a debit transaction. For example, when Contributor A makes a contribution to Collective B, two transactions are created:

A table featuring an example of a transaction pair. The table has two rows, one for each transaction. Both feature the date April 16, 2024 and kind set to Contribution. The first has type "CREDIT," account "Collective B," and amount "$10.00"; the second has type "DEBIT," account set to "Contributor A," and amount "-$10.00"

Or when an expense is paid from Collective B to Payee C, two transactions are also created:

A table featuring an example of a transaction pair. The table has two rows, one for each transaction. Both feature the date April 16, 2024 and kind set to Expense. The first has type "CREDIT," account "Payee C," and amount "$10.00"; the second has type "DEBIT," account set to "Contributor B," and amount "-$10.00"

{% hint style="warning" %}

Not quite Double Entry Book Keeping#

Though the “transactions pairs” is a fundamental ledger pattern and it may sound like it is compatible with double entry book keeping, it isn’t.
{% endhint %}

Transaction Groups#

Usually transactions are created in groups that have a shared context. For example, when a contribution is made by Contributor A via Stripe to Collective B that is hosted by Fiscal Host C the following transaction group will be created:

  1. A pair of CONTRIBUTION transactions.
  2. A pair of PAYMENT PROCESSOR FEE transactions.
  3. A pair of HOST FEE transactions
An example of a transaction group, featuring size transactions. All of the transactions have the same date, April 16, 2024, and Group ID: 1234-5678-1234-5678. The first transaction has the kind "Contribution," the type "CREDIT," account "Collective B", and amount "$10.00." The second transaction has the kind "Contribution," the type "DEBIT," account "Contributor A", and amount "$-10.00." The third transaction has the kind "Payment Processor Fee," the type "CREDIT," account "Stripe", and amount "$00.50." The fourth transaction has the kind "Payment Processor Fee," the type "DEBIT," account "Collective B," and amount "-$00.50." The fifth transaction has the kind "Host Fee," the type "CREDIT," account "Fiscal Host C," and amount "$1.00." The sixth transaction has the kind "Host Fee," the type "DEBIT," account "Collective B," and amount "$-1.00."

Ledger Perspectives#

Different users sees a different perspective of the same ledger. The perspective a user sees depends on the account through which they are looking at the ledger. Typically each account sees only transactions related to it. Fiscal hosts are an exception since they see both their own transactions and the transactions of the collectives they host.

In the following contribution example, the contributor will see just one transaction, their contribution debited from their account:

An example of a contributor's perspective on a transaction. There is a table with one row. The date is "Apr 16, 2024," the kind is "Contribution," the type is "DEBIT," the account is "Contributor A," and the amount is "-$10.00."

A collective admin will see three transactions which correctly represent the contribution and two fees, resulting in a net $8.50 for the collective:

An example of a collective admin's perspective on a transaction. The table features three rows, on all three rows, the date is "Apr 16, 2024" and the account is "Collective B." In the first row, the kind is "Contribution," the type is "CREDIT," and the amount is "$10.00." In the second row, the kind is "Payment Processor Fee," the type is "DEBIT," and the amount is "-$0.50." In the third row, the kind is "Host Fee," the type is "DEBIT," and the amount is "-$1.00."

The Stripe account (though it has no users, there is a global Stripe account to which transactions are attributed) will show just the payment processor fee that it charged:

An example of a transaction from Stripe's perspective. There is only one row in the table. The date is "Apr 16, 2024," the kind is "Payment Processor Fee," type is "CREDIT," account is "Stripe," and amount is "$0.50."

Fiscal hosts see the largest amount of transactions since they see both their own transactions and the transactions of their hosted collectives (for which they are fiscally responsible):

An example of a transaction from a Fiscal Host's perspective. The table features four rows, every row has the same date "Apr 15, 2024." The first row has the kind "Contribution," type "CREDIT," account "Collective B," and amount "$10.00." The second row has the kind "Payment Processor Fee," type "DEBIT," account "Collective B," and amount "-$0.50." The third row has the kind "Host Fee," type "CREDIT," account "Fiscal Host C," and amount "$1.00." The fourth row has the kind "Host Fee," type "DEBIT," account "Collective B," and amount "-$1.00."

{% hint style="success" %}
See more about the fiscal host perspective.
{% endhint %}

Documents
Stripe Dispute Handling
SUMMARY
AGENTS
README
README
README
README
README
README
README
README
README
README
README
README
README
README
README
README
README
README
README
about
about-open-collective
activity-log
added-funds-in-the-ledger
adding-and-removing-team-members
adding-donation-buttons-badges-and-banners
adding-embeds-to-your-website
adding-funds-manually
agreements
api
asking-for-information-about-expenses
bank-account-synchronization
bank-transfers
budgets
bulk-transfers
certified-member
changing-fiscal-host
changing-organization-currency
chart-of-accounts
choosing-a-fiscal-host
closing-a-fiscal-host
collecting-local-taxes
collective-applications
collectives
configure-invoices-and-receipts
contributing
contributing
contributing-as-a-guest
contributions-in-the-ledger
conversations
creating-a-fiscal-host
creating-a-fund
creating-an-organization
creating-custom-fundraising-urls
creating-your-policies
customising-thank-you-emails
customizing-your-page-layout
deleting-your-account
deprecated-independent-collectives
editing-an-expense
editing-your-profile-page
events
expected-funds
expenses-and-getting-paid
expenses-in-the-ledger
explore
exporting-transactions
exporting-your-data
features
fiscal-host-documentation
fiscal-host-ledger-perspective
fiscal-host-overview-dashboard
fiscal-host-policies
fiscal-host-security
fiscal-host-security-old
fiscal-hosts
freezing-a-collective
funds
getting-paid-through-wise
getting-started
gift-cards
github-sponsors
giving-to-collectives
giving-to-other-collectives
grants
handling-payment-errors-through-wise
hosted-collectives
how-open-collective-works
individual-transactions
integrations
inviting-a-third-party-to-submit-an-expense
know-your-customer-kyc
launching-an-organization
ledger-changelog
linking-connected-collectives
logging-into-your-account
making-a-recurring-contribution
managing-organization-finances
managing-receipts
migrating-from-fiscal-host-to-an-organization
mission-and-values
moving-money
multi-currency-expenses
notifications
oauth
organizations
our-community-guidelines
our-investors
our-organization
our-team
paying-expenses-as-a-fiscal-host
paying-expenses-with-paypal
paying-expenses-with-wise
payment-methods
payment-processor-fees
paypal
platform-settlements
platform-tips
press-and-media
preview-features
pricing
processing-refunds
projects
recurring-expenses
refund-policy
rejecting-and-refunding-financial-contributions
security-for-collectives
setting-goals-and-tiers
setting-up-your-account
setting-your-fiscal-host-fees
sharing-your-support
stripe
submitting-a-reimbursement
tagging-expenses
tracking-an-expense
transaction-pairs-groups-and-perspectives
translations
two-factor-authentication
understanding-contributions
understanding-expenses
understanding-funds
understanding-security-checks
understanding-tax-requirements
unhosting-a-collective
updates-and-contact
vendors
verification
viewing-transactions
viewing-your-host-reports
virtual-cards
why-become-a-fiscal-host
why-open-collective
your-dashboard
zero-collective-balance