About using PTA for a non-profit (tracking donations, etc) organization (Reddit)

https://www.reddit.com/r/plaintextaccounting/comments/1fny1hx/question_about_using_pta_for_a_nonprofit_tracking/

OP: I’ve played a little bit with PTA several years ago, but ultimately we went another direction. I’m going to ask a question and would love feedback. I’m asking this on behalf of a small non-profit that uses Quickbooks (QB as we call it) at the moment..
In our specific case we’re a non-profit and have to deal with managing peoples donations and have to generate year-end reports for people among other things. Of course like any other business we have AP, AR, Sales, general ledger, chart of accounts and so forth. I’m not sure if the current software is capable of any of this or if its like fitting a square peg in a round hole. Yes, I can probably write something to scrape together the reports from the raw data if push came to shove but …? I did see some other people in the past talk about using PTA for business purposes but am wondering about the level of customization required or not?
We have a decade of old data in QB that we’d like to move out of QB and not lose access to and I think moving data from QB to PTA would be way easier than most other commercial platforms...

SM: I experimented a little with stock hledger. Here's how you could attach data to donor accounts, in a separate file, and define shorter aliases:

Correction - actually, to satisfy hledger scope rules, a working setup might be more like this (aliases can't be in a sibling file):

; main.journal

account revenues:donations:individual:Ken Smith
  ; cust-id: Ken Smith
  ; address: 123 first street
  ; city:    Lincoln
  ; state:   NE
  ; Zip:     92010
  ; email:   foo@bar.com
  ; phone:   123-456-7890

alias ken-smith = revenues:donations:individual:Ken Smith

include transactions.journal

and:

; transactions.journal

2024-09-23 donation
    ken-smith
    assets:checking      $10

In practice, I almost never use aliases in journal entries; they just add more names to remember, and the entries will probably be automatically generated anyway.

The default reports show account names:

$ hledger -f main.journal bal revenues --tree --no-elide --yearly --invert
Balance changes in 2024:

                 || 2024 
=================++======
 revenues        ||  $10 
   donations     ||  $10 
     individual  ||  $10 
       Ken Smith ||  $10 
-----------------++------
                 ||  $10 

hledger has some limited ability to show other data fields:

$ hledger -f main.journal bal revenues --tree --no-elide --yearly --invert --pivot state:city:cust-id
Balance changes in 2024:

               || 2024 
===============++======
 NE            ||  $10 
   Lincoln     ||  $10 
     Ken Smith ||  $10 
---------------++------
               ||  $10 

More than this would require custom scripting. Ledger and Beancount users may have more ideas.

Thanks for getting this started here @simonmic from my reddit thread.

In my last post on that thread I was asking about whether the example setup that is provided (link here) could be translated to work in hledger instead of ledger-cli. They use a lot of custom tags and from my limited perspective I'm not sure they'll work in hledger completely or perhaps at all..? Anyway, just thought I'd ask.. I still need to wrap my brain around all this stuff with regards to small business needs..

Here's an example:

; ################################# TAGS ################################

; The Statement, Receipt, and Invoice tags' values should always a be a
; relative path names.  Note that we "check", but do not "assert" that the
; file name match a standard Unix-like path syntax, without spaces in the
; file name.

tag Statement
    assert value =~ /[^\/].+/
    check value =~ /[^\/][^ ]+(\/[^ ])+/

tag Receipt
    assert value =~ /[^\/].+/
    check value =~ /[^\/][^ ]+(\/[^ ])+/

tag Invoice
    assert value =~ /[^\/].+/
    check value =~ /[^\/][^ ]+(\/[^ ])+/
1 Like

Hi @ps23Rick . That's Ledger's tag directive, which has an "I" at hledger and Ledger > Journal format - this means hledger will ignore it.

Ok.. I was wondering if it was just not going to play well.. I think I may, for the moment, stick with ledger just to get a better feel for using PTA for a non-profit and go from there. I was able to use your example above for "ken smith" and use that in this example setting without issue.. Thanks!

PS Lots of custom features is something I'd avoid when starting out. Getting the accounts and journal entries right is the main thing, and the most portable and future-proof.

1 Like

Agreed.. thank you!

1 Like