stream() at the first page (1,000 records) instead of following TotalCount — verified at 2,893/2,893 for a full year. Any reconciliation, accounting export, cash-flow forecast, or underwriting model built on statements was previously operating on a partial year with no error surfaced. This is the gating question for any statement-dependent feature.balance()->get() was calling an endpoint Bonline rejects with HTTP 400 — i.e. the balance feature did not work at all. todayActivities()->get() returned DTOs with empty amounts because the feed uses different field names. Both are now mapped to real responses (AvailableBalance, CurrentBalance, StatementBalance, credit/debit/nomination). Balance-dependent UI (available funds, overdraft warnings, spend-today widgets) moves from "not buildable" to "buildable."CardPaymentDto::fromText() (gross, commission, net, terminal, merchant, address, auth code, deposit id) unlocks a second wave: expense categorization, merchant-level spend analytics, terminal/POS reconciliation, and fee (commission) reporting. These are differentiators that were not possible on v1.0.0.entryAmountCredit-style fields (now documented as always-empty), and decide whether affected reports need correction notices.Consider adoption when:
TotalCount paging fix is the specific capability that makes year-scale pulls viable.Look elsewhere when:
TotalCount to ingested count) a tractable control you can build.For executives: This is a Laravel library that pulls account statements, balances, and same-day transactions directly from Bonline. The new release is a correctness release: it fixes three bugs that made the integration quietly wrong rather than visibly broken — statements were being cut off at 1,000 records (now a full year, 2,893 of 2,893), the balance call was failing outright, and same-day activity amounts were coming back empty. It also adds structured parsing of card-terminal payments, which opens up merchant-level spend and fee reporting as a product surface. Net: the foundation is now sound enough to build customer-facing features on, and we should decide whether to remediate any data already pulled on the prior version. The main risk is dependency on an under-documented third-party API maintained by a small team.
For engineering: Treat v1.1.0 as the minimum version — do not ship against v1.0.0. One behavior change to plan for: todayActivities()->get() now returns TodayActivityDto[] instead of TransactionDto[]; if you read entryAmountCredit or similar, switch to credit / debit / nomination (the old fields were always empty, so no real data is lost, but type hints and property access will break). New surfaces available: CardPaymentDto::fromText(), TransactionDto::cardPayment(), TodayActivityDto::cardPayment() / isCredit(), and BalanceDto::$accountKey / $statementBalance. Recommend we add integration tests asserting ingested row count equals TotalCount and that balance/activity calls return non-empty amounts — that guardrail is what was missing and would have caught all three defects. Also worth pinning dependency versions and watching for the next upstream endpoint change, since the release notes are effectively a changelog of undocumented API shapes.
How can I help you explore Laravel packages today?