Revision history for Business-GoCardless

1.00     2026-10-19
        - MAJOR UPDATE including some breaking changes, see below
        - Add company_name, phone_number, and danish_identity_number
          attributes to Business::GoCardless::Customer
        - Add faster_ach and scheme attributes to Business::GoCardless::Payment
        - Fix typo in Payment->withdrawn (customer_appoval_denied ->
          customer_approval_denied)
        - Add bounced status check to Business::GoCardless::Payout
        - Add mandate_reference attribute to Business::GoCardless::RedirectFlow
        - Add count, app_fee, retry_if_possible,
          earliest_charge_date_after_resume, and parent_plan_paused
          attributes to Business::GoCardless::Subscription
        - Add pending_customer_approval, customer_approval_denied, finished,
          and paused status checks to Business::GoCardless::Subscription
        - Fix Pro->customer( $id ), which returned an unpopulated object due
          to using the wrong response key
        - Fix pagination in the Pro (v2) API: the Paginator now uses the
          cursors in the response meta data, previously only the first page
          of results was ever returned
        - Payment->refund now creates a refund via the /refunds endpoint and
          returns a new Business::GoCardless::Refund object (it previously
          always returned 0). The amount to refund must be passed explicitly
        - Mandate->update now returns the updated Mandate object rather than
          the raw response data (BREAKING CHANGE if you used the return value)
        - Webhook::Event->resources now supports refunds and customers events,
          add is_customer method
        - Webhook::V2 objects from Pro->webhooks now have the webhook delivery
          attributes (id, url, response_code, successful, is_test, etc)
        - Decode API responses as UTF-8, previously strings containing non
          ASCII characters were returned as UTF-8 encoded bytes rather than
          characters (BREAKING CHANGE if you were decoding them yourself).
          Webhook::V2 now also decodes the webhook body as UTF-8
        - Fix Pro->confirm_resource for redirect flows backed by a billing
          request (the default for redirect flows now), these are completed
          by GoCardless when the customer finishes the flow so trying to
          complete them again caused an error
        - Fix Pro->confirm_resource passing all of the redirect flow's links
          when creating the payment / subscription, which is now rejected by
          the API as only the mandate link is permitted
        - Update t/004_end_to_end_pro.t to work with the current GoCardless
          sandbox, it now plays the part of the customer through the billing
          requests API rather than scraping the (now javascript) payment pages
        - Remove t/gocardless_callback_reader.pl and t/end_to_end/ as they are
          no longer needed by the end to end test, and the LWP::Simple and
          FindBin build requirements that were only used by that test
        - Pro (v2) API requests that create a resource are now sent with an
          Idempotency-Key header (a UUID v4, or pass your own as a header to
          the api_post method). If an idempotent_creation_conflict error is
          returned the existing resource is fetched and returned, unless the
          new raise_on_idempotency_conflict client attribute is set. Adds a
          dependency on UUID (0.34+) for generating the keys
        - Pro (v2) API requests are now retried on network errors, server
          errors (500, 502, 503, 504), and when rate limited (429), if it is
          safe to do so. See the new max_retries (default 3) and
          max_retry_wait (default 60s) client attributes, set max_retries to
          0 for the previous behaviour
        - Add rate_limit client attribute, containing the details from the
          ratelimit-* headers of the most recent response
        - Add api_delete method to Business::GoCardless::Client, and allow
          passing extra headers to all of the api_* methods
        - Business::GoCardless::Exception now has the details of Pro (v2) API
          errors: type, request_id, documentation_url, and errors attributes,
          and reasons, has_reason, and conflicting_resource_id methods
        - webhook_secret can now be an arrayref of secrets, allowing for the
          rotation of webhook secrets
        - Add support for the rest of the Pro (v2) API resources, see the
          RESOURCE METHODS section of Business::GoCardless::Pro:
            - Billing Requests, Billing Request Flows, Billing Request
              Templates, Bank Authorisations, Institutions (Billing Requests
              replace Redirect Flows for new integrations)
            - Customer Bank Accounts, Customer Notifications, Bank Account
              Details, Bank Details Lookups, Events
            - Creditors, Creditor Bank Accounts, Verification Details
            - Refunds, Instalment Schedules, Tax Rates
            - Mandate Imports, Mandate Import Entries, Mandate PDFs,
              Transferred Mandates
            - Payout Items, Balances, Funds Availability, Negative Balance
              Limits, Currency Exchange Rates
            - Blocks, Logos, Payer Themes, Scheme Identifiers, Exports
            - Outbound Payments, Outbound Payment Imports, Outbound Payment
              Import Entries, Bank Account Holder Verifications, Payment
              Accounts, Payment Account Transactions
            - Scenario Simulators (sandbox only)
        - Add the missing operations on existing resources: create, update,
          and remove customers; list and create mandates, reinstate mandate;
          create and update subscriptions, pause and resume subscription;
          update payments, payouts, and refunds; retry webhooks; cancel and
          retry payments with metadata
        - All of the create_* methods take an idempotency_key param
        - Webhook::Event objects now have the metadata, resource_metadata,
          customer_notifications, and source attributes, and ->resources
          supports more resource types
        - Fix Business::GoCardless->payouts( %filters ) with the Pro (v2)
          API, which passed the filters incorrectly
        - Payer Authorisations are not supported as they are deprecated in
          favour of Billing Requests
        - Move github repo to payprop org
          (https://github.com/payprop/business-gocardless)
        - Update author email address to lee@payprop.com

0.45     2026-06-15
        - Add mandate_type to Business::GoCardless::Mandate, with
          is_bank_debit, is_instant, is_recurring, is_vrp_commercial,
          and is_vrp_sweeping helper methods
        - Add authorisation_source and next_possible_standard_ach_charge_date
          attributes to Business::GoCardless::Mandate
        - Add consumed, blocked, and suspended_by_payer status check methods
          to Business::GoCardless::Mandate

0.44     2024-08-26
        - Add consent_type to Business::GoCardless::Mandate

0.43     2024-02-01
        - Make payout/payouts methods compatible with Pro API

0.42     2024-02-01
        - Bump minimum Perl version to 5.20.0

0.41     2024-01-30
        - Add webhooks method to top level class
        - Add metadata attribute to RedirectFlow object
        - Populate links attribute on webhook resources

0.40     2024-01-26
        - Add payout_id, mandate_id, and creditor_id accessor to Payment object

0.39     2023-09-01
        - Add funds_settlement (and is managed/is_direct) to Mandate object

0.38     2023-04-03
        - Fix a warning in Business::GoCardless::Resource

0.37     2023-02-01
        - Add verified_at to Mandate object

0.36     2022-09-01
        - Add consent_parameters to Mandate object

0.35     2020-01-08
        - Remove references to Basic API along with the modules
          relating to it and the upgrade guide

0.34     2019-12-03
        - Add fx to Payout and Payment objects (GH #14)

0.33     2019-04-02
        - Fix support more legacy params in call to redirect flows

0.32     2018-12-14
        - Fix PUT/POST requests when no content lenght (GH #13)

0.31     2017-11-07
        - Fix sending of non-ASCII data in JSON requests to GoCardless
          by calling ->utf8 on the JSON object prior to ->encode

0.30     2017-09-27
        - Add mandate update, cancel, and status methods + test coverage (GH #12)
        - Fix typos in error reporting when failing to set attribtutes

0.29     2017-09-22
        - Add mandate method to ::Pro and ::RedirectFlow

0.28     2017-09-22
        - Add confirmation_url to RedirectFlow
        - Improve setting of attributes on objects to not b0rk on
          newly addded and not yet supported ones

0.27     2017-09-12
        - Update some perldoc relating to Webhooks and Events

0.26     2017-09-12
        - Automatically handle legacy webhooks in the ::Pro ->webhook code

0.25     2017-09-05
        - Add missing attributes to Payout class for Pro API (GH #11)

0.24     2017-09-05
        - Support the payout resource in an event (GH #10, thanks to grifferz)

0.23     2017-08-31
        - Add missing attributes to Mandate clasee (GH #8, thanks to grifferz)
        - Fix some typos (GH #9, thanks to grifferz)

0.22     2017-08-14
        - Don't send empty params to GoCardless for user information
          to prevent incorrect assumptions about the user on the GoCardless
          side
        - print out request and response data in Client.pm if GOCARDLESS_DEBUG
          ENV variable is set

0.21     2017-06-10
        - Fix add missing module to MANIFEST

0.20     2017-06-09
        - Fix add missing module to MANIFEST

0.19     2017-06-08
        - Fix documentation typos
        - Fix VERSION confusion by moving $Business::GoCardless::VERSION
          into the main module to avoid parts of the cpan(m|ts) toolchain
          getting confused

0.18     2017-06-06
        - Fix documentation typos

0.17     2017-06-06
        - Add support for some functionality in the v2 (Pro) API
        - Add classes and tests to support the v2 (Pro) API
        - Add Business::GoCardless::Upgrading to document upgrade steps

0.16     2016-09-29
        - Clarify the version of the GoCardless API this dist works with

0.15     2016-09-28
        - Fix is_pre_authorization and is_subscription in B::G::Webhook
          as previously they were the wrong way around

0.14     2016-05-22
        - Kwalitee improvements

0.13     2016-05-17
        - Transfer repo from G3S to Humanstate

0.12     2015-10-21
        - Move github repo to Humanstate org

0.11     2015-04-02
        - Documentation clarification regarding which API version this lib
          is for (as GoCardless are working on Basic v2 BETA and Pro APIs)

0.10     2014-12-01
        - Documentation and distribution tweaks

0.09     2014-09-17
        - Document the confirmation of webhooks

0.08     2014-09-16
        - POD updates

0.07     2014-09-16
        - Add Webhook support (https://developer.gocardless.com/#webhook-overview)

0.06     2014-09-10
        - Replace use of TryCatch with Try::Tiny in tests

0.05     2014-09-06
        - Kwalitee improvements in distribution

0.04     2014-09-06
        - fix test failures for checking JSON boolean values

0.03     2014-09-04
        - Correct links in perldoc

0.02     2014-09-04
        - Remove dependency on Mojo::JSON in a couple of tests
        - Fix use of undef as an ARRAY in Utils::normalize_params

0.01     2014-09-04
        - First release
