{"id":13880172,"url":"https://github.com/railslove/epics","last_synced_at":"2025-06-14T13:06:03.822Z","repository":{"id":20645385,"uuid":"23927355","full_name":"railslove/epics","owner":"railslove","description":"EBICS client for Ruby","archived":false,"fork":false,"pushed_at":"2025-05-19T19:27:53.000Z","size":1215,"stargazers_count":112,"open_issues_count":6,"forks_count":45,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-05-19T20:37:43.680Z","etag":null,"topics":["accounting","bank","banking","ebics","mt940"],"latest_commit_sha":null,"homepage":"https://www.railslove.com/stories/ebics-client-for-ruby","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/railslove.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-09-11T16:59:44.000Z","updated_at":"2025-05-19T19:27:57.000Z","dependencies_parsed_at":"2023-02-12T11:16:15.218Z","dependency_job_id":"8bdfcb63-668b-472f-92eb-fe8ac5e39f47","html_url":"https://github.com/railslove/epics","commit_stats":{"total_commits":233,"total_committers":22,"mean_commits":"10.590909090909092","dds":0.424892703862661,"last_synced_commit":"87ff52dccdccffea55e0dec82113ce1f60901240"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/railslove/epics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/railslove%2Fepics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/railslove%2Fepics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/railslove%2Fepics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/railslove%2Fepics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/railslove","download_url":"https://codeload.github.com/railslove/epics/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/railslove%2Fepics/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259820843,"owners_count":22916560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accounting","bank","banking","ebics","mt940"],"created_at":"2024-08-06T08:02:50.052Z","updated_at":"2025-06-14T13:06:03.812Z","avatar_url":"https://github.com/railslove.png","language":"Ruby","funding_links":[],"categories":["Ruby","Payments and Banking"],"sub_categories":[],"readme":"[![Build Status](https://railslove.semaphoreci.com/badges/epics/branches/master.svg?style=shields)](https://railslove.semaphoreci.com/branches/c29225c5-5b7e-4a90-8ac8-22d1aa28efcf)\n[![Gem Version](https://badge.fury.io/rb/epics.svg)](http://badge.fury.io/rb/epics)\n\n# Epics\n\nEPICS is a ruby implementation of the [EBICS](https://www.ebics.org/) (Electronic Banking Internet\nCommunication Standard).\n\nIt supports EBICS 2.5.\n\nThe client supports the complete initialization process comprising INI, HIA and HPB including the\nINI letter generation. It offers support for the most common download and upload order types\n(STA HAA HTD HPD PTK HAC HKD BKA C52 C53 C54 CD1 CDB CDD CCT VMK FDL).\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'epics'\n```\n\nOr install it yourself as:\n\n    $ gem install epics\n\n## Getting started\n\nIn case you are new to EBICS, you'll have to complete an initialization process with\nyour bank. Epics can help you generate all necessary keys and directly store\nthem for later use. But first you'll have to lift some contractually work with your\nbank.\n\nOnce the paperwork is done, your bank should provide you with:\n\n- _a_ URL to their EBICS Server\n- _a_ HOST ID\n- _a_ PARTNER ID\n- _n_ User IDs (depends on your bank and needs)\n\nTake these parameters and start setting up an UserID (repeat this for every user you want to initialize):\n\n```ruby\ne = Epics::Client.setup(\"my-super-secret\", \"https://ebics.sandbox\", \"EBICS_HOST_ID\", \"EBICS_USER_ID\", \"EBICS_PARTNER_ID\")\n```\n\nTo use the keys later, just store them in a file\n\n```ruby\ne.save_keys(\"/home/epics/my.key\")\n# or store the json elsewhere, but store it! for gods sake :D\n```\n\nIt is really **important** to keep your keys around, once your user has been initialized\nyou'll have to start over when you loose the keys!\n\nSubmit the keys to your bank:\n\n```ruby\ne.INI # sends the signature key\ne.HIA # sends the encryption and authentication keys\n```\n\nThe next step is to print the INI letter and post it to your bank:\n\n```ruby\ne.save_ini_letter( 'My Banks Name', \"/home/epics/ini.html\" )\n```\n\nOpen the generated HTML file in your favorite browser and print it (skipping\nheader and footer sounds like a solid setting here ;). In case you're having difficulties\nwith the encoding, try forcing your browser to use UTF-8.\n\nPut the INI letter in an envelope and mail it to your bank!\n\nDone! ... Well not completely :)\n\nOnce the bank confirms that your user is completely initialized, you'll have to\ndownload the public keys of your bank:\n\n```ruby\n### see below for client creation\ne.HPB\n```\n\nThen again, save the keys or store the json somewhere safe.\n\nYou're now ready to go. Maybe try:\n\n```ruby\ne.HAA\n```\n\nTo get a list of all supported order types.\n\n## Need help? Having questions?\n\nWe have many years of experience in developing innovative applications for the finance sector and\nintegrating applications with financial institutions. - you might want to have a look at our\n[portfolio](http://www.railslove.com/portfolio)\n**If you need help we are happy to provide consulting or development services. Contact us:\n[team@railslove.com](mailto:team@railslove.com)**\n\n## Usage\n\n### Create a client\n\n```ruby\n# read the keys from a file\ne = Epics::Client.new(File.open('/tmp/my.key'), 'passphrase', 'url', 'host', 'user', 'partner')\n\n# or provide a string hoding the key data\nkeys = File.read('/tmp/my.key')\n\ne = Epics::Client.new(keys, 'passphrase', 'url', 'host', 'user', 'partner')\n```\n\n### Client Configuration\n\nYou can choose to configure some default values like this\n\n```ruby\n# For default values see `lib/epics.rb`\ne = Epics::Client.new(keys, 'passphrase', 'url', 'host', 'user', 'partner', locale: :fr, product_name: 'Mon Epic Client EBICS')\n```\n\n## Features\n\n### Initialization\n\n- INI (Sends the public key of the electronic signature.)\n- HIA (Sends the public authentication (X002) and encryption (E002) keys.)\n\n### Downloads\n\nCurrently this EPICS implementation supports the following order types:\n\n- HPB (fetch your bank's public keys)\n- STA (statements in MT940 format)\n- HAA (available order types)\n- HTD (user properties and settings)\n- HPD (the available bank parameters)\n- PTK (customer usage report in text format)\n- HAC (customer usage report in xml format)\n- VMK (customer usage report in xml format)\n- ... more coming soon\n\nExample:\n\n```ruby\nputs e.STA('2014-09-01', '2014-09-11')\n# result is a MT940 feed\n\n:20:1\n:25:/PL12124012551111000015237873\n:28C:00152\n:60F:C081130PLN000000002535,03\n:61:0810021002DN000000001273,23N641NONREF\n:86:641^00PRZELEW MI¨DZYBANKOWY BETA/^34000\n^3019401076^38PL54194010765205871800000000\n^20wynagrodzenie z tytulu umow^21y o prac e\n^32BANKA MONIKA\n^62PODCHORAZYCH 16/1580-298 GD^63ANSK\n:61:0810021002DN000000001287,40N641NONREF\n:86:641^00PRZELEW MI¨DZYBANKOWY BETA/^34000\n^3010201909^38PL74102019090000310200475772\n^20wynagrodzenie z tytulu umow^21y o prac e\n^32SZCZACHOR DOROTA\n^62RATAJA 13B/1083-032 PSZCZOL^63KI\n```\n\n### Uploads\n\n- CD1 (Uploads a SEPA Direct Debit document of type COR1)\n- CDB (Uploads a SEPA Direct Debit document of type B2B)\n- CDD (Uploads a SEPA Direct Debit document of type CORE)\n- CCT (Uploads a SEPA Credit document)\n- ... more coming soon\n\nExample:\n\n```ruby\nputs e.CD1(\"i-am-PAIN-xml\")\n# res is a the transaction id and id of the order\n\n# if the XML is a file in your FS, read it first and give if epics to consume\nputs e.CD1(File.read(\"/where/the/xml/is/stored.xml\"))\n\n```\n\n### Lazy Mode\n\nOnce you have a client, go ahead and start playing! There are 3 convenience methods\nthat are hiding some strange names from you:\n\n- debit( _xml_ ) (submits a PAIN.008.003.02 document via CDD)\n- credit( _xml_ ) (submits a pain.001.003.03 document)\n- statements( _from_, _to_ ) (fetches an account statement via STA)\n\nIf you need more sophisticated EBICS order types, please read the next section\nabout the supported functionalities.\n\n## Issues and Feature Requests\n\n[Railslove](http://railslove.com) is commited to provide the best developer tools for integrating\nwith financial institutions. Epics is one of our many tools and services.\nIf you are missing some features or something is not working as expected please create an issue.\n\n## Supported Banks\n\nThis gem provides a full implementation of the Electronic Banking Internet Communication Standard\nand works with any bank that supports this standard. Please ask your bank if they support EBICS and\nwhat order types are available.\n\nBesides EBCIS being a standard, some server implementations are slighty different.\nBut most banks use the same EBICS server implementations. Commonly used and supported by Epics are:\n\n- Business-Logics EBICS, Banking-Server\n- Travic Corporate\n\nUsed for example by the following tested institutions:\n\n- Handelsbank\n- Deutsche Bank\n- Commerzbank\n- Kreissparkasse Mayen\n- Postbank\n- Sozialbank\n- Sparkassen\n- Volksbanken Raiffeisenbanken\n- Hypo Vereinsbank\n- BAWAG P.S.K. (AT)\n- Bank Frick (LI)\n- BNP Paribas (FR)\n\nIs Epics working with your institution? Please help us to grow this list of supported banks:\n\n## Development\n\nFor development purposes, you may want to use a proxy server in order to have a convenient look into request and response data.\nTo do so, it's sufficient to define `http_proxy` in your environment.\nAlso you may want to disable SSL verification - simply set `EPICS_VERIFY_SSL` to `\"false\"`.\n\nFor example:\n\n```\nhttp_proxy=localhost:8080\nEPICS_VERIFY_SSL=false\n```\n\n## Links\n\n- [ebics.de](http://www.ebics.de/)\n- [EBICS specification](http://www.ebics.de/index.php?id=30)\n- [Common Integrative Implementation Guide to Supplement the EBICS Specification (pdf)](http://www.ebics.de/fileadmin/unsecured/specification/implementation_guide_DE/EBICS_Common_IG_basiert_auf_EBICS_2.5.pdf)\n- [Die Deutsche Kreditwirtschaft](http://www.die-deutsche-kreditwirtschaft.de/)\n\n## Contributing\nRailslove has a [Contributor License Agreement (CLA)](https://github.com/railslove/epics/blob/master/CONTRIBUTING.md) which clarifies the intellectual property rights for contributions from individuals or entities. To ensure every developer has signed the CLA, we use [CLA  Assistant](https://cla-assistant.io/).\n\nAfter checking out the repo, run `bin/setup` to install dependencies. \nThen, run `rspec` to run the tests. \nYou can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\n0. Contact team@railslove.com for information about the CLA\n1. Fork it ( https://github.com/[my-github-username]/epics/fork )\n2. Run `bin/setup`\n3. Create your feature branch (`git checkout -b my-new-feature`)\n4. Commit your changes (`git commit -am 'Add some feature'`)\n5. Push to the branch (`git push origin my-new-feature`)\n6. Create a new Pull Request\n\n## Contribution Credits\n\n- [@punkle64](https://github.com/punkle64) \\\n  for adding XCT order type\n- [@romanlehnert](https://github.com/romanlehnert) \\\n  for adding CDB order type\n- [@gadimbaylisahil](https://github.com/gadimbaylisahil) \\\n  for fixing CCS order type and attribute\n- you, for contributing too!\n\n---\n\n2014-2022 - built with love by [Railslove](http://railslove.com) and released under the [GNU LESSER GENERAL PUBLIC LICENSE](https://github.com/railslove/epics/blob/master/LICENSE.txt). We have built quite a number of FinTech products. If you need support we are happy to help. Please contact us at team@railslove.com.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frailslove%2Fepics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frailslove%2Fepics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frailslove%2Fepics/lists"}