close
Skip to content

Repository files navigation

balanc

Modern accounting (receipts, billings, pdf storage ...) toolchain and managed service. Making accounting easy and always balance.

npm npm state npm

NPM

Why

  • if you are using NoSQL, balanc can replace traditional lock and transaction required operations for orders, invoices, receives and payments
  • if you are using SQL, balanc can solve the scale and storage problem

Demo

Receipt Pdf Demo

API

Setup config
balanc.config({
  domain: 'your-company.com',
})
Record exchange and Receipt pdf
const exchange = await balanc.exchange({
  from: 'billing@your-company.com',
  to: 'user-123',
  gives: [
    {
      quantity: 2, // two months implied by item string
      item: 'Monthly Gym Membership',
      price: 100, // sub-total price of 2 monthly Gym
      // givenAt: new Date(),
    },
  ],
  takes: [
    {
      item: 'Cash',
      price: 100,
    },
  ],
  // isPreview: true,
})

const pdfUrl = await balanc.receiptUrl(exchange)

Issue payment reminder

const receivables = await balanc.getReceivables({
  from: 'billing@your-company.com',
  to: 'user-123',
})

const invoiceUrl = await balanc.billingUrl({
  from: 'billing@your-company.com',
  to: 'user-123',
})
// [{url, paidAt}]

Access Accounts

const numbers = await balanc.getExchangeNumbers({
  from: 'billing@your-company.com',
  to: 'user-123',
})

const balance = await balanc.getBalance({
  user: 'billing@your-company.com',
  item: 'Cash',
})
should(balance).be.equal(100)

const account = await balanc.getAccount({
  user: 'billing@your-company.com',
  item: 'Cash',
})
should(account.balance).be.equal(100)
should(account.transfers.length).be.equal(1)

const excelUrl = balanc.accountExcelUrl({
  user: 'billing@your-company.com',
  item: 'Cash',
})
// url that access xlsx file

How

About

Scalable and ACID system to offload transfers and accounting storage from your system

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages