ALYF Banking is a seamless solution for connecting your bank accounts with ERPNext.
This app is designed to simplify your financial management by effortlessly fetching transactions from thousands of banks and integrating them directly into your ERPNext system. Say goodbye to manual data entry and time-consuming reconciliations ✨
Experience the ease of automation and gain better control over your finances with the ultimate banking integration app for ERPNext users.
Note: Our improved Bank Reconciliation Tool is free to use and compatible with other bank integrations. The Bank Integration works with a paid subscription. Visit banking.alyf.de to check out the pricing and sign up.
Check out the Banking Wiki for a step-by-step guide on how to use the app.
We use the EBICS protocol which is widely supported by banks in the following countries:
- 🇦🇹 Austria
- 🇫🇷 France
- 🇩🇪 Germany
- 🇨🇭 Switzerland
Install via Frappe Cloud or on your local bench:
bench get-app https://github.com/alyf-de/banking.git
bench --site <sitename> install-app bankingTip
You don't need to be concerned about testing this app, since it supports clean uninstallation.
Ask the user for extra values before reconciling:
frappe.ui.form.on("Bank Reconciliation Tool Beta", {
before_reconcile: function (frm, transaction, selected_vouchers) {
return new Promise((resolve, reject) => {
frappe.prompt([
{
label: __("My Fieldname"),
fieldname: "my_fieldname",
fieldtype: "Data",
},
], (values) => {
// {my_fieldname: "My Value"}
resolve(values);
});
});
},
});Use the extra values in the get_payment_entries hook:
from banking.overrides.bank_transaction import CustomBankTransaction
def get_payment_entries(
bt: CustomBankTransaction,
vouchers: list,
reconcile_multi_party: bool = False,
extra_params: dict | None = None,
*args,
**kwargs,
):
"""Reconcile vouchers with the Bank Transaction.
Accepts a bank transaction and a list of (unpaid) vouchers to reconcile.
Returns a list of (paid) vouchers to add to the bank transaction.
"""
assert extra_params["my_fieldname"] == "My Value"
return [
{
"payment_doctype": "Journal Entry",
"payment_name": "JE-123",
"amount": 100,
},
{
"payment_doctype": "Payment Entry",
"payment_name": "PE-123",
"amount": 100,
},
]DocTypes that map to SEPA Payment Order can provide a method get_sepa_payment_amount via controller or doc_events hook. This is called when the execution date is changed. The parameters are the reference row name and execution date. It should return the amount of the payment. The main use case for this is early payment discounts.

