The list payment methods endpoint includes a new query parameter, paymentMethodType, which fetches payment methods by type. In practice, this means you could combine paymentMethodType with the existing sourceID parameter to find the push-to-card payment method for a particular card ID, or the rtp-credit payment method for a particular bank account.
Moov fees on completed transfers
Moov fees (moovFeeDetails, moovFee, moovFeeDecimal) will now populate once when a transfer completes with final fee amounts. Previously, fees would be populated after authorization and then updated with final amounts on transfer completion.
Facilitator fees in the Dashboard
You can now add a facilitator fee when creating a transfer in the Dashboard.
Ask Moov, bank account statuses, & more
Ask Moov
Ask Moov is a new generative AI search tool within docs.moov.io that makes searching for answers easy. Use the search field at the top of the page to type your question, and press return. You’ll get a summarized answer, plus links to sources within Moov documentation with more information.
Updated bank account response
The bank account response model now includes a new statusReason, which explains why a status has changed. If the change was caused by an ACH return, you will also now see achReturnCode and exceptionDetails fields.
We’ve also added a new updatedOn field to show when a status update occurred. This field has been retroactively added to all updates, however, all updates prior to 2024 should expect to see a timestamp in December of 2023.
The new fields are viewable within the bankAccount.updated webhook, the bank account GETendpoints, and within the Moov Dashboard.
Business representative requirements
As of January 8th, we’ll be requiring the full social security number for business representatives and individuals that need to be verified. We’ll be reaching out and asking for this information if it’s missing from current representatives.
Payment method IDs in the Dashboard
It’s now easier to find payment method IDs in the Dashboard. These IDs can easily be copied when viewing any wallet, and on the bank account and card detail views.
Design
We gave the Dashboard a fresh coat of paint for the new year, but don’t worry, your workflow is not impacted. We improved the contrast on buttons, made better use of available space, and added other design-related improvements. Moov is a progressive web app, so we’re constantly looking at how we can improve the look and functionality on every device.
Our documentation now supports both light mode and dark mode. The site will update per your OS settings.
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 GETendpoint and list capabilities GETendpoint 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 GETendpoint 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 GETendpoint, 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 GETendpoint 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 PATCHendpoints.
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.