ledger

command module
v1.11.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 4, 2024 License: MIT Imports: 1 Imported by: 0

README

Formance Ledger test goreportcard slack codecov

Formance Ledger is now part of the Formance Stack!

Checkout the Stack repository


Formance Ledger (fka numary) is a programmable financial ledger that provides a foundation for money-moving applications. The ledger provides atomic multi-postings transactions and is programmable in Numscript, a built-in language dedicated to money movements. It can be used either as a standalone micro-service or as part of the greater Formance Stack, and will shine for apps that require a lot of custom, money-moving code, e.g:

  • E-commerce with complex payments flows, payments splitting, such as marketplaces
  • Company-issued currencies systems, e.g. Twitch Bits
  • In-game currencies, inventories and trading systems, e.g. Fortnite V-Bucks
  • Payment gateways using non-standard assets, e.g. learning credits
  • Local currencies and complementary finance

Getting started

Formance Ledger works as a standalone binary, the latest of which can be downloaded from the releases page. You can move the binary to any executable path, such as to /usr/local/bin. Installations using brew, apt, yum or docker are also available.


numary server start

# Submit a first transaction
echo "
send [USD/2 599] (
  source = @world
  destination = @payments:001
)

send [USD/2 599] (
  source = @payments:001
  destination = @rides:0234
)

send [USD/2 599] (
  source = @rides:0234
  destination = {
    85/100 to @drivers:042
    15/100 to @platform:fees
  }
)
" > example.num

numary exec quickstart example.num

# Get the balances of drivers:042
curl -X GET http://localhost:3068/quickstart/accounts/drivers:042

# List transactions
curl -X GET http://localhost:3068/quickstart/transactions

Documentation

You can find the complete Numary documentation at docs.formance.com

Dashboard

A simple dashboard is built in the ledger binary, to make it easier to visualize transactions. It can be started with:

numary ui
control-screenshot

Alternatively, you can use the dashboard by heading to control.formance.com which provides a hosted version that can connect to any ledger instance.

Community

If you need help, want to show us what you built or just hang out and chat about ledgers you are more than welcome on our Slack - looking forward to see you there!

Frame 1 (2)

Quick deploy

Want to give a shot to the latest version? You can easily deploy a test instance with Heroku and the button below:

Deploy

How to contribute

Want to contribute to the project? Please read the CONTRIBUTING.md file.

We are using Task to easily lint or test the project locally. You can install it with:

go install github.com/go-task/task/v3/cmd/task@latest

Then you can run task to run both the linters and the tests. You will find other tasks in the Taskfile.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Alix Bott

💻

Maxence Maireaux

🚇 📦 💻

Henry Jackson

💻

Matias Insaurralde

💻 👀

David barinas

💻

David Jimenez

💻

Clément Salaün

🤔

Karmanyaah Malhotra

📓

Antoine Gelloz

💻

jdupas22

💻

Edward Poot

💻

Nico Gallinal

🐛

Ragot Geoffrey

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Documentation

Overview

docker run --rm -w /local -v ${PWD}:/local openapitools/openapi-generator-cli:latest generate -i ./pkg/api/controllers/swagger.yaml -g go -o ./client --git-user-id=formancehq --git-repo-id=ledger -p packageVersion=latest -p isGoSubmodule=true -p packageName=client

Directories

Path Synopsis
client module
cmd
internal
pkg
api
bus
machine/vm
Provides `Machine`, which executes programs and outputs postings.
Provides `Machine`, which executes programs and outputs postings.
storage/sqlstorage
File is part of the build only if cgo is enabled.
File is part of the build only if cgo is enabled.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL