I still don't understand what you wrote. I re-read it many times, but it still
doesn't make sense to me. I'm not much of an accountant, and we're not using
those words the same way.
Here's how I would approach this problem should I have to do the same thing
myself. Please note that I am not an accountant and that whatever you do, this
is not legal advice in any way, and you should consult a professional to look at
setting up your company's finances (DISCLAIMER: I'M NOT A PRO. Don't trust
anything I say, we're just talking about ideas here).
You can cut-and-paste the following to run queries against it.
;; First, I'd ask, "what aggregates do I want to keep track of?"
;;
;; - The amount of borrowed money I owe to each donator:
;;
;; Liabilities:Donator:<DonatorName>
2016-01-01 open Liabilities:Donator:Donald USD
2016-01-01 open Liabilities:Donator:Mike USD
2016-01-01 open Liabilities:Donator:Rex USD
;; - The amount of pending payments I owe to each project:
;;
;; Liabilities:Project:<ProjectName>
;;
2016-01-01 open Liabilities:Project:Linux USD
2016-01-01 open Liabilities:Project:Apache USD
2016-01-01 open Liabilities:Project:MySQL USD
2016-01-01 open Liabilities:Project:Firefox USD
;; These are the "client accounts" for which you could generate a journal and
;; send statements to donators or projects about.
;; To keep the company's money separated from the escrow money I'd open two
;; real, separate corporate bank accounts (you might have to actually do this I
;; think, if there's banking regulation affecting the holding of other people's
;; money).
;;
;; - The amount of money in our escrow account
;;
;; Assets:US:BigBank:Escrow
;;
2015-06-01 open Assets:US:BigBank:Escrow USD
;; - The amount of money in our company account
;;
;; Assets:US:BigBank:Checking
;;
2015-06-01 open Assets:US:BigBank:Checking USD
;; Then there's the rest of the regular company operating accounts:
;;
;; - The amount of income we took (I'll assume it's fees as a % of
;; contributions, but it doesn't matter):
;;
;; Income:US:Fees
;;
2015-06-01 open Income:US:Fees USD
;; - Company expenses
;;
;; Expenses:<...>
;;
2015-06-01 open Expenses:OfficeSupplies
2015-06-01 open Expenses:Salaries:Chad USD
;; I would want to disconnect the notion of payments actually made to
;; contributions made to projects. So we're going to do accrual accounting with
;; the accounts above:
;;
;; - When a donator makes a payment, I'll assume they pay sums seldomly and
;; ahead of time, even if the donations accrue monthly. For the example I'll
;; assume that they're one-time donations intended to be spread out over many
;; months to projects.
;;
;; - I'll further assume that while donations to projects accrue monthly,
;; payments to them are made every three months, just to make things a bit
;; more hairy. This is a realistic need too: in reality payments might bounce
;; or be delayed for various reasons.
;; Let's look at some transactions now.
;;
;; When a donator makes a payment, you receive the money in the escrow account
;; and add to the amount you owe them:
2016-01-10 * "Received money from Donald"
Liabilities:Donator:Donald -10000.00 USD
Assets:US:BigBank:Escrow
2016-01-11 * "Received money from Mike"
Liabilities:Donator:Mike -2000.00 USD
Assets:US:BigBank:Escrow
2016-01-12 * "Received money from Rex"
Liabilities:Donator:Rex -4500.00 USD
Assets:US:BigBank:Escrow
;; When it's time to accrue donator payments to particular projects, you create
;; a transaction for that. I'll assume this occurs at the end of a month:
2016-01-31 * "Monthly donation for Donald"
Liabilities:Donator:Donald 500.00 USD
Liabilities:Project:Linux -300.00 USD
Liabilities:Project:Apache -120.00 USD
Liabilities:Project:Firefox -80.00 USD
2016-01-31 * "Monthly donation for Mike"
Liabilities:Donator:Mike 210.00 USD
Liabilities:Project:Linux -90.00 USD
Liabilities:Project:MySQL -120.00 USD
;; When you accept a fee for processing this, you could do that in a separate
;; transaction, while at the same time tranferring money to the company's
;; account:
2016-01-31 * "Collecting fees for processing"
Liabilities:Donator:Donald 20.00 USD
Liabilities:Donator:Mike 20.00 USD
Liabilities:Donator:Rex 20.00 USD
Income:US:Fees -60.00 USD
Assets:US:BigBank:Escrow -60.00 USD
Assets:US:BigBank:Checking 60.00 USD
;; Finally, when you get to making a payment to a project, you take it out of
;; the escrow account:
2016-02-25 * "Apache Foundation" "February payment"
Liabilities:Project:Apache 120.00 USD
Assets:US:BigBank:Escrow
2016-02-25 * "Mozilla Foundation" "February payment"
Liabilities:Project:Firefox 80.00 USD
Assets:US:BigBank:Escrow
2016-02-25 * "Linus Torvalds" "February payment"
Liabilities:Project:Linux 390.00 USD
Assets:US:BigBank:Escrow
2016-02-25 * "Oracle" "February payment"
Liabilities:Project:MySQL 120.00 USD
Assets:US:BigBank:Escrow
;; After the payments, the balances should be zero. If you like, you could
;; assert this:
2016-02-26 balance Liabilities:Project:Linux 0.00 USD
2016-02-26 balance Liabilities:Project:Apache 0.00 USD
2016-02-26 balance Liabilities:Project:Firefox 0.00 USD
2016-02-26 balance Liabilities:Project:MySQL 0.00 USD
;; All the other company expenses entered as per usual:
2017-03-12 * "Envelopes"
Expenses:OfficeSupplies 7.99 USD
Assets:US:BigBank:Checking
I'd organize these in sections, in whichever way makes it easiest to update.
I would write scripts to automatically generate the accrual of payments with appropriate percentages and fees and whatever.
Then I'd also write scripts to generate per-client statements of accounts to be mailed or rendered on the company's site.
Hope this helps,