From 754789d3cf6cc75e69ac48fe89f5290d72869879 Mon Sep 17 00:00:00 2001 From: Simon Oyaneder Date: Tue, 31 Mar 2026 11:20:10 -0300 Subject: [PATCH 1/5] feat(account-numbers/v2): add delete method --- fintoc/managers/v2/account_numbers_manager.py | 2 +- tests/test_integration.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fintoc/managers/v2/account_numbers_manager.py b/fintoc/managers/v2/account_numbers_manager.py index da92e10..30c9a58 100644 --- a/fintoc/managers/v2/account_numbers_manager.py +++ b/fintoc/managers/v2/account_numbers_manager.py @@ -7,4 +7,4 @@ class AccountNumbersManager(ManagerMixin): """Represents an account numbers manager.""" resource = "account_number" - methods = ["list", "get", "update", "create"] + methods = ["list", "get", "update", "create", "delete"] diff --git a/tests/test_integration.py b/tests/test_integration.py index 86cce65..a5b150c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -679,6 +679,14 @@ def test_v2_account_number_update(self): assert account_number.url == f"v2/account_numbers/{account_number_id}" assert account_number.json.metadata.test_key == metadata["test_key"] + def test_v2_account_number_delete(self): + """Test deleting an account number using v2 API.""" + account_number_id = "test_account_number_id" + + result = self.fintoc.v2.account_numbers.delete(account_number_id) + + assert result == account_number_id + def test_v2_account_verification_list(self): """Test getting all account verifications using v2 API.""" account_verifications = list(self.fintoc.v2.account_verifications.list()) From 501ef0b34ccc081c631a8fbdd012896d6bcfad72 Mon Sep 17 00:00:00 2001 From: Jose Marchant Date: Tue, 31 Mar 2026 12:38:34 -0300 Subject: [PATCH 2/5] feat: add account_statements resource under v2 accounts Add AccountStatement resource and AccountStatementsManager to support the new GET /v2/accounts/{account_id}/account_statements endpoint. --- fintoc/managers/v2/__init__.py | 1 + fintoc/managers/v2/account_statements_manager.py | 10 ++++++++++ fintoc/managers/v2/accounts_manager.py | 16 ++++++++++++++++ fintoc/resources/v2/__init__.py | 1 + fintoc/resources/v2/account_statement.py | 7 +++++++ 5 files changed, 35 insertions(+) create mode 100644 fintoc/managers/v2/account_statements_manager.py create mode 100644 fintoc/resources/v2/account_statement.py diff --git a/fintoc/managers/v2/__init__.py b/fintoc/managers/v2/__init__.py index 1095269..f3cda57 100644 --- a/fintoc/managers/v2/__init__.py +++ b/fintoc/managers/v2/__init__.py @@ -1,6 +1,7 @@ """Init file for the v2 managers module of the SDK.""" from .account_numbers_manager import AccountNumbersManager +from .account_statements_manager import AccountStatementsManager from .account_verifications_manager import AccountVerificationsManager from .accounts_manager import AccountsManager from .checkout_sessions_manager import CheckoutSessionsManager diff --git a/fintoc/managers/v2/account_statements_manager.py b/fintoc/managers/v2/account_statements_manager.py new file mode 100644 index 0000000..a7a241a --- /dev/null +++ b/fintoc/managers/v2/account_statements_manager.py @@ -0,0 +1,10 @@ +"""Module to hold the account statements manager.""" + +from fintoc.mixins import ManagerMixin + + +class AccountStatementsManager(ManagerMixin): + """Represents an account statements manager.""" + + resource = "account_statement" + methods = ["list"] diff --git a/fintoc/managers/v2/accounts_manager.py b/fintoc/managers/v2/accounts_manager.py index 83c18ae..3645454 100644 --- a/fintoc/managers/v2/accounts_manager.py +++ b/fintoc/managers/v2/accounts_manager.py @@ -1,6 +1,7 @@ # pylint: disable=duplicate-code """Module to hold the accounts manager.""" +from fintoc.managers.v2.account_statements_manager import AccountStatementsManager from fintoc.managers.v2.movements_manager import MovementsManager from fintoc.mixins import ManagerMixin @@ -13,8 +14,23 @@ class AccountsManager(ManagerMixin): def __init__(self, path, client): super().__init__(path, client) + self.__account_statements_manager = None self.__movements_manager = None + @property + def account_statements(self): + """Proxies the account statements manager.""" + if self.__account_statements_manager is None: + self.__account_statements_manager = AccountStatementsManager( + "/v2/accounts/{account_id}/account_statements", + self._client, + ) + return self.__account_statements_manager + + @account_statements.setter + def account_statements(self, new_value): + raise NameError("Attribute name corresponds to a manager") + @property def movements(self): """Proxies the movements manager.""" diff --git a/fintoc/resources/v2/__init__.py b/fintoc/resources/v2/__init__.py index 4cd404d..90cac09 100644 --- a/fintoc/resources/v2/__init__.py +++ b/fintoc/resources/v2/__init__.py @@ -2,6 +2,7 @@ from .account import Account from .account_number import AccountNumber +from .account_statement import AccountStatement from .account_verification import AccountVerification from .entity import Entity from .invoice import Invoice diff --git a/fintoc/resources/v2/account_statement.py b/fintoc/resources/v2/account_statement.py new file mode 100644 index 0000000..cd4d907 --- /dev/null +++ b/fintoc/resources/v2/account_statement.py @@ -0,0 +1,7 @@ +"""Module to hold the AccountStatement resource.""" + +from fintoc.mixins import ResourceMixin + + +class AccountStatement(ResourceMixin): + """Represents a Fintoc Account Statement.""" From 8de7e5a42f1823db5bbf4dc2d397f13ff7ba6106 Mon Sep 17 00:00:00 2001 From: Jose Marchant Date: Tue, 31 Mar 2026 12:51:44 -0300 Subject: [PATCH 3/5] test: add tests for account_statements and fix pylint Add integration test for v2 account_statements.list endpoint. Add pylint disable comments for duplicate-code and no-self-use. --- fintoc/managers/v2/account_statements_manager.py | 1 + fintoc/managers/v2/accounts_manager.py | 2 +- tests/test_integration.py | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/fintoc/managers/v2/account_statements_manager.py b/fintoc/managers/v2/account_statements_manager.py index a7a241a..2865899 100644 --- a/fintoc/managers/v2/account_statements_manager.py +++ b/fintoc/managers/v2/account_statements_manager.py @@ -1,3 +1,4 @@ +# pylint: disable=duplicate-code """Module to hold the account statements manager.""" from fintoc.mixins import ManagerMixin diff --git a/fintoc/managers/v2/accounts_manager.py b/fintoc/managers/v2/accounts_manager.py index 3645454..299adad 100644 --- a/fintoc/managers/v2/accounts_manager.py +++ b/fintoc/managers/v2/accounts_manager.py @@ -28,7 +28,7 @@ def account_statements(self): return self.__account_statements_manager @account_statements.setter - def account_statements(self, new_value): + def account_statements(self, new_value): # pylint: disable=no-self-use raise NameError("Attribute name corresponds to a manager") @property diff --git a/tests/test_integration.py b/tests/test_integration.py index 86cce65..a344010 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1052,6 +1052,20 @@ def test_v2_invoice_get(self): assert invoice.method == "get" assert invoice.url == f"v2/invoices/{invoice_id}" + def test_v2_account_statements_list(self): + """Test getting account statements from an account using v2 API.""" + account_id = "acc_12345" + account_statements = list( + self.fintoc.v2.accounts.account_statements.list(account_id=account_id) + ) + + assert len(account_statements) > 0 + for account_statement in account_statements: + assert account_statement.method == "get" + assert ( + account_statement.url == f"v2/accounts/{account_id}/account_statements" + ) + if __name__ == "__main__": pytest.main() From fe8efccac0a1cfba29f0c0f2c4dc757a4490becd Mon Sep 17 00:00:00 2001 From: Simon Oyaneder Date: Tue, 31 Mar 2026 17:40:00 -0300 Subject: [PATCH 4/5] fixup! feat(account-numbers/v2): add delete method --- tests/test_integration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index a5b150c..15aa2e6 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -681,7 +681,7 @@ def test_v2_account_number_update(self): def test_v2_account_number_delete(self): """Test deleting an account number using v2 API.""" - account_number_id = "test_account_number_id" + account_number_id = "acno_Kasf91034gj1AD" result = self.fintoc.v2.account_numbers.delete(account_number_id) From 8dda79decc515b2f0fcf385a62f6763737b7c10d Mon Sep 17 00:00:00 2001 From: Jose Marchant Date: Wed, 8 Apr 2026 11:52:58 -0400 Subject: [PATCH 5/5] pre-release: prepare 2.19.0 release --- fintoc/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fintoc/version.py b/fintoc/version.py index 7d35985..bb1896f 100644 --- a/fintoc/version.py +++ b/fintoc/version.py @@ -1,4 +1,4 @@ """Module to hold the version utilities.""" -version_info = (2, 18, 0) +version_info = (2, 19, 0) __version__ = ".".join([str(x) for x in version_info]) diff --git a/pyproject.toml b/pyproject.toml index b3e779a..8c48137 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fintoc" -version = "2.18.0" +version = "2.19.0" description = "The official Python client for the Fintoc API." authors = ["Daniel Leal ", "Nebil Kawas "] maintainers = ["Daniel Leal "]