Changelog

Discover new features and improvements to Moov.

Instant disbursements with push to card and RTP

Instant disbursements with push to card and RTP

Moov has enabled immediate payouts to linked debit cards and bank accounts via Visa Direct, Mastercard Send, and RTP. This feature is now fully available in test mode and to early adopters in production, with use cases for loan disbursements, gig payouts, and e-commerce settlements.

Instant disbursements unlocked

  • Around-the-clock availability: Execute payments to debit cards or bank accounts any time, including weekends and holidays.
  • Create new revenue streams: Offer end users the option for faster payments and leverage facilitator fees to unlock new revenue opportunities.

Push-to-card: Quick funds for debit card users

For enabled push to card customers, a new push-to-card payment method is automatically generated when an eligible debit card is linked to a Moov account. Transfer funds between a moov-wallet and push-to-card payment method and see them credited within 30 minutes or less.

RTP: Real-time bank transfers

With RTP, you can instantly transfer funds from a Moov wallet to eligible bank accounts. The rtp-credit payment method is automatically generated for eligible bank accounts and will automatically update as additional banks join the RTP network.

Available in test mode

View the push to card and RTP test mode guides to see how you can experience the full capabilities of instant disbursements on test accounts with pre-populated sample data.

Enable in production

To use instant disbursements in a production environment, contact our sales team.

Terms of service Moov Drop

Our new, pre-built terms of service Drop provides users links to our privacy policy and terms of service agreement. We’ll generate a token in the background that you can use to update the account to be compliant with Moov’s terms of service.

Disconnect accounts with the API

We’ve added a new DEL endpoint in the /accounts API. Provide the account and bank account IDs to disconnect an account. See the API reference for more information.

We’ve updated the link a card POST endpoint to save you time by including the payment method IDs for the card in the response. You’ll no longer need to make a separate call to retrieve them when immediately making a transfer after linking a card.

Failed transfer status update

If money fails to reach the destination in a wallet-to-bank transfer, the status will now appear as failed to align with our status definitions (previously, the status would appear as reversed). Historical transfer statuses will not be changed.

New payment methods query parameter

Payment methods query parameter

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 GET endpoints, 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 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.

Subscribe

Moov is constantly improving. Subscribe to our changelog to find out what's new every two weeks.