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,





On Sat, Jan 14, 2017 at 6:52 AM, Chad Whitacre <[email protected]>
wrote:

> If you tell us what you're trying to achieve we might be able to come up
> with something
>
> We want to:
>
>    1. keep operations (our money) and escrow (your money) separate,
>    2. have operations hit Equity:Earnings:Current on the balance sheet
>    (as usual),
>    3. have escrow hit Liabilities:Escrow on the balance sheet,
>    4. balance Assets:Escrow and Liabilities:Escrow, and
>    5. have operations and escrow both show up on the income statement.
>
> My proposal is:
>
> 2012-06-01  *
>     Assets:Escrow             10.00 USD
>     Income:Escrow            -10.00 USD
> 2012-06-01  *
>     Equity:Earnings:Current   10.00 USD
>     Liabilities:Escrow       -10.00 USD
>
> I understand that you need to differentiate between income to Gratipay and
> funds held on account, but this is exactly what Income: vs Liabilities: are
> for.
>
> This seems to suggest that we simply do:
>
> 2012-06-01  *
>     Assets:Escrow             10.00 USD
>     Liabilities:Escrow       -10.00 USD
>
> That would address (1) through (4), but not (5): without running through
> Income, escrow doesn't show up on the income statement.
>
> you can easily write Python scripts and plugins on top of it, to automated
> some of your work (this might help keep the input simpler if needed)
>
> Not a bad idea. Presumably we'd then do:
>
> 2012-06-01  *
>     Assets:Escrow             10.00 USD
>     Income:Escrow            -10.00 USD
>
> and automate the additional transaction to clear from
> Equity:Earnings:Current to Liabilities:Escrow.
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/gratipay/finances/pull/35#issuecomment-272619435>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AAUgk7sTpvK32O2M4S8-pZL8IaRsiwYuks5rSLbzgaJpZM4LTY9X>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/CAK21%2BhMp2J3v2cgbubcKhPUAstZ2Z81oDzMEyVwkobef95HdQg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to