How does Corda do triple-entry accounting?

(Yun Tsai) #1

I would like to know more about how Corda interacts with local accounting system. How does Corda send accounting entries to local accounting systems? According to the concept of triple-entry accounting by Ian Grigg, there would be a pointer or index that links the local double-entries to the the digital signed receipt. How does that implement in Corda?

(I am not a native English speaker, sorry for my poor expression)

(Roger Willis) #2

Hi there,

Here’s two article about triple entry accounting I wrote a while back:

In short, the ledger data drives the creation of the accounting journals. With Corda, one would likely produce a CorDapp or some kind of ETL application that takes corda state objects, combines them with some additional metadata and an accounting rules engine, in order to produce some standards compliant accounting journals.

E.g. one could take a Corda state representing an invoice and derive from it the accounting period, the amount and other required terms, then create a journal entry that posts something like:

DR Accounts receivables
    CR Revenue

The other side would post:

DR Purchases
    CR Accounts payable

Corda will guarantee that the journals will be based upon the same source information. Of course, the final amounts booked to the ledger may different due to each entity using a different accounting framework.


(Yun Tsai) #3

Hi Roger @roger ,

Thank you for your answer. One question though: I find the term “triple entry” really confusing. In my simplistic mind, “double-entry” means every transaction is recorded in two places(debit/credit accounts). But what exactly the “triple-entry” refer to?

In your Alice, Bob and Notary(SRL) example from the article. You said" Alice and Bob can simply point to the triple signed instrument on the SRL, which contains all the metadata required to post the correct accounting journal."

Does that mean the “pointer” that links the accounting entries to the signed receipt(state object) is the third column? (Sorry, I don’t have IT background. I am not sure there is any pointer as the third field in accounting journal table)

Or it simply means there are three parties Alice, Bob and Notary hold the same data(triple-entry)?
However, if my memory serves me right, in Corda Notary does not have the data. Only Alice and Bob have the data (state objects) in their vaults. Once they lose the data , there is no one can prove the presence or absence of the transaction between them because Corda doesn’t have a global ledger like blockchain and nodes are not holding the copy of the data but the origin one. Am I correct? Since there is no third party that holds the third record, is there still a triple-entry concept in Corda?


(I am not a native English speaker, sorry for my poor expression)

(Roger Willis) #4

Hi there, sorry for the super late response - I’ve only just seen your reply.

Yes, Triple-entry is quite a confusing term because we are not creating a third entry, we are just linking two separate double entries. That link ensures that the two double entries in separate legal entities are always the same.

In the blog post you link to, we can treat the Corda state object as the “third entry” or link for the journal entries in each entity. For example:

  1. Alice and Bob trade. They create a Corda state object.
  2. Alice and Bob now need to post accounting entries in respect of this transaction.
  3. They take the Corda state data, pass in some other info like accounting rules and some balance sheet/ P&L account metadata and produce a journal entry.
  4. The journal they just produced points to the State reference of the corda state that was used to create the journal.
  5. As the journals created in Alice and Bob’s accounting system point to the Corda state object we can assure: completeness, existence, value and rights&obligations of the data transaction.

We don’t really need a third party to store the data, a hash of the data is sufficient. Contrary to what most people in this space say… it’s unlikely that either party would lose the data. Google never loses your data, for example… They just back it up and Alice/Bob would do the same. You need to back up the data anyway as the enriched accounting information regarding the transaction is not shared with the counter-party (you never share accounting records with counter-parties).

So yes, I’d say Corda is still a triple entry system. In fact, by design, its probably the only one that is appropriate for us by large companies (provides tx confidentiality, scales well, easy to integrate with existing systems)

Feel free to ask me more on slack (I’m roger3cev).