Changelog

Discover new features and improvements to Moov.

API reference redesign and more

API reference redesign

We’ve redesigned the Moov API reference so that it’s now easier to read and understand each endpoint. Every endpoint now has its own page for enhanced clarity.

Mobile search for Moov docs

We have improved the mobile experience for interacting with Moov’s docs. You can now search docs.moov.io on mobile browsers.

American Express network discount fee property

The transfer response model now contains a new discount property within the moovFeeDetails object. The value represents the network discount fee for American Express transactions only. Note the interchange property within moovFeeDetails applies to fees for Visa, Mastercard, and Discover transactions.

Document requirements for capabilities

The retrieve capability GET endpoint and list capabilities GET endpoint now communicate when Moov requires a document to complete verification and enable capabilities for an account. The same information is also communicated via the Moov Dashboard.

We recommend subscribing to the capabilities webhook for any changes to account requirements, then using the list capabilities GET endpoint to determine what documentation is needed.

Outstanding pending capabilities

We started cleaning up old requested capabilities for accounts. If a capability is pending and has missing requirements for 90 days, we will automatically un-request it. Capabilities that are un-requested can be re-requested at any time.

Bug fix

We resolved a bug in the Dashboard where acceptable websites were previously flagged as invalid.

New transfer creation flow and more

New transfer creation flow

We’ve released a new transfer creation flow in the Moov Dashboard to simplify the end-to-end experience. You will now see a dedicated page to create a transfer versus the previous modal. More features for this flow are coming soon.

Interchange qualification

We have deprecated the interchangeQualification field on the GET and LIST transfers endpoints. We will now surface the card network program that determines the interchange rate in the feeProgram field.

Transfer timestamps

The timestamps in the transfers statusUpdates object have moved to the existing objects achDetails and cardDetails on the transfers and refunds GET endpoints. The statusUpdates object will be deprecated.

Along with this change, we’ve updated transfer details to include an improved timeline in the Dashboard. You will now see progress bars with clickable steps to view the timestamps associated with each stage of the transfer.

Improvements and bug fixes

Improvements

  • For account onboarding and adding a representative, we have updated the address fields to show the full zip code in the Dashboard.
  • When providing a website for a business profile in the Dashboard, you are no longer limited to sites that start with https://.

Bug fixes

  • Previously, our warning copy would incorrectly mark a failed verification as missing information in the Dashboard. We’ve updated the warning copy to indicate an error could be due to missing information or failed verification.
  • We also fixed an issue in the Dashboard where the account list was not properly filtering by verification state.
  • We updated the underwriting endpoint so that when you pass an invalid dollar amount with decimals, you receive a 422 response (indicating unprocessable content) rather than a generic 500 internal server error response.

Transfer timestamps

Moov has updated transfer timestamps to appear under the new railDetails object. The statusUpdates object is now deprecated.

Transfer timestamps

Moov now provides an additional layer of transparency on transfer status changes to provide customers with as much data as possible on where funds are at any given moment. Transfer timestamps are now available in the API and are coming to the Dashboard soon. These timestamps are helpful for those looking to:

  • Automate money movement flows based on when a transfer is originated
  • Know when a transfer completed to understand when the destination received the funds

When you use the transfer GET endpoint, we now provide a statusUpdates object where you can view a transfer’s status. Specifically:

source.cardDetails.statusUpdates now contains the following timestamps:

  • initiated
  • confirmed
  • settled
  • completed
  • canceled
  • failed

source.achDetails.statusUpdates and destination.achDetails.statusUpdates now contain the following timestamps:

  • initiated
  • originated
  • completed
  • corrected
  • returned

If a transfer has completed, the top-level response on the transfer GET endpoint will include a completedOn timestamp field. If the transfer has not completed, the completedOn timestamp will not appear.

Interchange qualification and passthrough fees


Interchange qualification

For greater transparency, GET and LIST transfer endpoint responses now include the interchangeQualification field under cardDetails, surfacing the card network program that determines the interchange rate.

Passthrough network fees

Moov now provides additional granularity on the moovFee in the API. You can now view the various passthrough network fees charged once a transfer moves to a completed status. The moovFee will be broken out into three buckets:

  • interchange
  • cardScheme
  • moovProcessing

You can read more about the breakdown of card processing fees in our passthrough fees guide.

Higher precision, account creation, and more

Higher precision

We’ve updated transfers, wallet transactions, and wallet endpoints with new decimal fields that support up to 9 decimal places.

You can now also input facilitator fees with higher precision. In the POST create transfer endpoint, you’ll find two new optional fields: totalDecimal and markupDecimal. We will still support the pre-existing fields (total and markup), but only one field is required in the payload.

We have updated the GET transfer endpoint to include moovFeeDetails showing each category of fees charged, with the existing total moovFee that sums all line items. moovFeeDecimal will be the precise fee charged, where the pre-existing moovFee will round to the nearest cent.

We will continue to support the pre-existing fields and will display rounded values to the nearest cent. Moov will apply standard rounding on all existing amount fields with the exception of the wallet and wallet transactions availableBalance, which will round down to the nearest cent. This will prevent transfers being created from a wallet where the amounts may exceed the precise balance available.

The walletTransaction.updated webhook event has been updated with a new valueDecimal field to support the same level of precision.

Creating accounts

We’ve refreshed the account creation flow in the Moov Dashboard for greater speed and clarity. When creating accounts in the Dashboard, you will now go through a customized flow based on the capabilities you’ve requested.

ToS acceptance for server-side integrations

For those developing server-side integrations, Moov now lets you manually pass the required terms of service information to us via the account POST and PATCH endpoints.

Closed cards

Cards that have received an account-closed update will have card_on_file set to false and no longer receive updates. Merchants should disable these closed cards.

Platform improvements

Speed and stability

Moov engineers are always working to make our system both fast and stable. We shipped a series of backend enhancements that reduced the mean response time of all API endpoints, particularly while under heavy loads.

Dashboard

We improved the process for creating and updating accounts and representatives. You can now enter the information you have on hand and come back to input more information later.

Alphanumeric character support for bank accounts

We now support alphanumeric characters for bank account numbers over ACH.

Improvements and bug fixes

Improvements

We’ve enhanced our Apple Pay solution to obtain the cardholder’s billing address so that it can be submitted for an AVS check. AVS (Address Verification System) is a fraud prevention tool that verifies that the billing address matches the address of the cardholder. See our Apple Pay docs for more information.

For those looking to implement this update, please note:

  • We made a new billingContact object available within Moov’s Link Apple Pay token request
  • We strongly recommended setting postalAddress as a required billing contact field in the Apple Pay client-side implementation so that the cardholder’s information is sent to your app. Read the Apple documentation on requiredBillingContactFields for more details.

Bug fixes

We fixed a few minor bugs in the Moov Dashboard:

  • When a card on file is activated in the payment methods list, the new status now appears immediately rather than after a user refreshes
  • The documents page communicates the correct maximum number of documents you can upload for an account

Card account updater

Card account updater

With Moov’s card account updater, you can set up cards to automatically receive updates. Sensitive card information is securely sent to Moov and updated on your behalf, eliminating the need for you to contact cardholders for card updates.

See our documentation for more information.

ACH returns in test mode

You now have the ability to simulate various ACH return scenarios in test mode. You can initiate test returns occurring at different transfer stages to gain better insight into cashflow management.

See our documentation for more information.

Subscribe

Moov is constantly improving. Subscribe to our changelog email to receive a summary of changes twice a month.