eWallet Backend for the OmiseGO SDKs.
Clone or download
unnawut Fix random DBConnection.ConnectionError during tests (#584)
* Start EWalletConfig.Config with start_supervised!/2 in tests

* Remove unused comments and CaseTemplate, async: false that has no effect

* Restart EWalletConfig.Config for each test

* Add the missing :ewallet_config dependency to local_ledger
Latest commit 9f4f24d Dec 12, 2018


OmiseGO eWallet

Build Status Gitter chat

This is the server application of the OmiseGO eWallet Suite that allows businesses and individuals (referred hereafter as the "provider") to setup and run their own digital wallet services through their own local ledger.

This server application and the SDKs will later be plugged onto a blockchain and connected to a decentralized exchange. Blockchain capabilities are expected to be added as they become ready. All active instances of the OmiseGO eWallet will then become a federated network forming the top layer of the OMG network, allowing the exchange of any currency into any other in a transparent way.

The SDKs for integrating your apps with the eWallet are available in Ruby (sample server), iOS (sample app) and Android (sample app).


Here is an overview of all the eWallet components and what needs to be integrated by a provider.

A provider's Sample Setup

Getting started

Pick one of the following setup approaches that best suits your needs:

Setup Description Recommended for
Bare‑metal Set up directly onto your base operating system. You will need to install Elixir, project's dependencies and Postgres manually if you havn't. Developers and DevOps preferring to manage all dependencies and configurations themselves for any purposes.
Docker A pre-packaged image for production uses. No build-time dependencies. Packaged with Distillery. Developers and DevOps looking to integrate or deploy the eWallet without changing its internals.

Having trouble setting up the eWallet? Check the Setup Troubleshooting Guide.


Below are the links to the HTTP-RPC API documentations for the master branch. Note that the eWallet is not a centralized service and the servers below are not for production uses.

  • Admin API (interactive / yaml / json): Integrate with your server apps to perform higher-privilege operations, such as managing tokens, accounts, users, transactions, global settings, etc.
  • Client API (interactive / yaml / json): Integrate with your client apps to transact on behalf of a specific user, such as creating a transaction request for a specific user, updating a user's settings, etc.

We also provide the Ruby SDK (sample server), iOS SDK (sample app) and Android SDK (sample app) so you do not have to deal with the HTTP-RPC layer yourself.

Optionally, deeper dives into the eWallet are available:

  • Demo: Explore the sample shop server demos without setting up your own.
  • Guides: Understand how the eWallet server works behind the scene.
  • Design: Find out about the technical design decisions that revolve around the eWallet server.
  • Tests: See how tests are organized for the eWallet server.
  • FAQ: Frequently asked questions.

You can also follow our advanced setup guides to customize your eWallet server:


Bug reports, feature suggestions, pull requests and feedbacks of any sorts are very welcomed.

Learn more from our contributing guide.


  • Issues: Browse or file a report for any bugs found
  • Gitter: Discuss features and suggestions in real-time
  • StackOverflow: Search or create a new question with the tag omisego
  • Need enterprise support or hosting solutions? Get in touch with us for more details

Community efforts

We are thankful to our community for creating and maintaining these wonderful work that we otherwise could not have done ourselves. If you have ported any part of the OmiseGO eWallet to another platform, we will be very happy to list them here. Submit us a pull request.

Please note that these community tools and libraries are not maintained by the OmiseGO team.


The OmiseGO eWallet is released under the Apache License.