Builder's guide · Section 2
What GAAPcore is, and what it is not
GAAPcore is a ledger, not an app. Your software sends it business documents; it turns them into journal entries, inventory layers and statements, or it refuses them and explains why.
What GAAPcore does for you
| It owns | What that means for your console |
|---|---|
| Double entry and balancing | You never compute a journal entry for a sale, a receipt or a shipment. You send the document; GAAPcore posts the entry. |
| Subledgers that tie out | Customer, vendor, inventory, bank, asset and lease balances always agree with their control accounts, and GAAPcore reports the tie-out. |
| FIFO inventory cost | Stock is valued in cost layers. Shipments, scrap and production consume the layers in order; your console never sets a cost. |
| Periods and the close | Closed periods cannot be posted into. The close is previewed, checked and then locked. |
| Document lifecycles | Drafts, posting, and reversals that point back to the original. A posted document is never edited; a mistake is reversed. |
| Statements and notes | Trial balance, income statement, balance sheet, cash flow, changes in equity, notes, and group (consolidated) statements. |
| Who wrote what | Every posting is stamped with the application that wrote it and when. |
What it leaves to you
- Screens and workflow. GAAPcore has no user interface.
- People. GAAPcore authenticates applications, never people. Your console signs in its own staff, decides what each may do, and records who asked (section 8).
- Approvals and separation of duties between people (section 10).
- Commercial data the books don't need: price lists, product photos, delivery preferences, notes for the sales team. Keep these in your own store, not in the ledger.
The database says no
The rules run as database checks, so no caller can get around them, not even a buggy one. When your console asks for something the books cannot accept, it gets a clear refusal. These are real messages:
| The console tries to… | GAAPcore answers |
|---|---|
| Post a journal with $1,000.00 of debits and $990.00 of credits | journal entry JE-0042 must balance (debits 1000.00, credits 990.00, lines 2) |
| Date an invoice into a closed September | invoice INV-1093 date 2026-09-28 falls in a closed fiscal period |
| Post a manual journal straight to a bank's cash account | CONTROL_ACCOUNT_RESTRICTED: bank cash moves only through bank documents |
This is the main reason to build on GAAPcore. A console can have bugs and still never leave the books wrong. The worst outcome is a refusal that your screen shows to the user.