Changelog

Discover new features and improvements to Moov.

Updates to branding options, Moov.js & more

Branding options

Business accounts now have the ability to set brand colors for light and dark modes. You can choose and set brand colors in the Dashboard settings or with the enrichment API. Brand colors help your customers identify your brand throughout Moov’s hosted onboarding process.

Moov.js

Linking a bank account will now send a request with the x-wait-for: payment-method header, allowing for client apps to use the paymentMethodID that comes back in the response.

Moov.js now includes methods for using Moov’s new [instant bank account verification](moov.accounts.bankAccounts.startMicroDepositVerification({accountID, bankAccountID})) flow.

  • moov.accounts.bankAccounts.startVerification({accountID, bankAccountID})
  • moov.accounts.bankAccounts.getVerification({accountID, bankAccountID})
  • moov.accounts.bankAccounts.completeVerification({accountID, bankccountID, code})

See the Moov.js docs for more information.

General improvements

  • Improved the success rate of auto-fetching images for Moov accounts and financial institutions on linked bank accounts.
  • Added EIN as an available field for use with Data Sync.
  • Dashboard sign in verification codes are delivered faster.

Bug fixes

  • Fixed a bug with card fee assessments.
  • Fixed a bug with American Express chargeback inquiry processing.
  • Fixed a bug preventing date of birth from being entered in the Dashboard onboarding process.
  • Fixed an issue where Moov account capabilities could be in a pending status without requirements.

Transfer, Dashboard & card brand updates

Transfer updates

The following IDs have all been added to the transfer model:

  • sweepID
  • occurrenceID
  • scheduleID

The sweep ID is present when the transfer represents a sweep generated by Moov from the wallet. The schedule ID provides a reference to the schedule the transfer was automatically created from. The occurrence ID provides a reference to the specific occurrence of that schedule.

Moov recently released a scheduled transfers beta. The new schedule ID and occurrence ID make it easier to filter and find scheduled transfers. See our scheduling API for more details.

In addition, the default statement descriptor on a sweep is now in the following format: swp_6d72dh. The default sweep statement descriptor can be overwritten by setting your own statement descriptor when initiating a sweep. See the API reference for details.

Mastercard settlement timing

Mastercard has updated their cutoff time for processing card payments. The cutoff is now 2 AM ET instead of 6 PM ET. Transfers created before the cutoff time are typically credited to a merchant’s Moov wallet the next banking day.

See our settlement timing guide for more information.

Dashboard bug fixes

  • Fixed an issue where the capability status would be shown as “In Review” instead of “Pending” in certain situations.
  • Fixed an issue where the search bar would be hidden if the search request by ID had no results.
  • Fixed an issue where an error would appear instead of an empty result when searching for accounts.

Card brand updates

We’ve implemented the standard fall updates for card brands, including new interchange calculation tables.

American Express

We’ve implemented American Express’s new discount fees for utility merchants:

Pricing Threshold Discount fees
Tier 1 ≤$1,000.00 0.00% + $0.75
Tier 2 $1,000.01 - $5,000.00 0.00% + $1.50
Tier 3 >$5,000.01 2.30%

Visa

We’ve implemented Visa’s interchange changes for the following programs:

New installment credential standard credit product for AP region:

Interchange program Fee
Premium Card - Base Fee 1.85%

Changes for corporate & purchasing fee programs for transactions from fleet & fuel merchants:

Interchange program Fee
Commercial Fuel Level 2 Data 2.20% + $0.10
Commercial Fuel Level 3 Data 1.90% + $0.10

Two fee programs will no longer be supported:

Interchange program Fee
X Corporate Card Fuel Level 2 2.20% + $0.10
X Purchasing Card Fuel Level 2 2.20% + $0.10

Moov Drop enhancements, sweep statement descriptor, & more

Moov Drops

We freshened up the design of the onboarding, payment method, and file upload Moov Drops, improving behavior on small screens and increasing color contrast and legibility.

You can now customize the border radius of elements within the onboarding, payment method, and file upload Moov Drops. Use --moov-radius-large and --moov-radius-small in your theme to change them from the default.

Show your business’ avatar on the start page of the onboarding Drop by adding the showLogo property to the component or setting the show-logo attribute to true.

1
2
3
4
5
6
7
<moov-onboarding show-logo="true"></moov-onboarding>

<!-- or -->
<script>
  const onboardingDrop = document.querySelector('moov-onboarding');
  onboardingDrop.showLogo = true;
</script>
  • Financial institutions will be asked for their primary regulator from the onboarding Drop.
  • Loan linked bank account type can be added from the payment method and onboarding Drops.

Wallets

Now by default, transfers created by sweeps include a short, unique identifier used in company entry descriptions which appear on the recipient’s bank statement. On each sweep, you can view this descriptor in the statementDescriptor field.

Accounts

The transfers capability no longer requires a website or description for businesses.

Bug fixes

  • Improved error handling for the add funds flow.
  • Fixed a bug in which disabled payment options were being returned as transfer options.
  • Fixed a bug where the status reason for RTP credit failure was not appearing.
  • Fixed a bug where transfer details stopped loading when viewing multiple transfers back to back.
  • Fixed a bug where RTP transactions were showing 0000 as the transactionID instead of MOOV.
  • Fixed a bug where the account selector in the Dashboard eventually stops working.
  • Fixed a bug where ACH credit failures were not producing the correct failure response.
  • Fixed a bug where accounts were receiving a message that a website or description was missing even though the requirement has been removed.
  • Fixed misspelling of “website” in an error message in the onboarding Drop.
  • Fixed an issue that prevented Moov Drop dialogs from scrolling vertically on small screens.
  • Fixed an issue where the representative avatar was loading the main Moov account avatar instead in the onboarding Drop.

Updates to test mode, API, Go SDK, Dashboard & more

Account name inquiry in test mode

Test mode now supports name verification with Visa’s ANI verification. You can test various results by entering in different name combinations.

View our test mode guide for more information.

New transfer history endpoints

Two new endpoints have been added to the accounts API:

  • /accounts/{accountID}/transfers/{transferID}
  • /accounts/{accountID}/transfers

These endpoints allow you to retrieve an account transfer or list account transfers using query parameters. Moving forward, we suggest using the new list account transfers endpoint over the existing list transfers endpoint.

Go SDK updates

Webhook support for sweeps has been added to the Go SDK.

Additionally, the verifyName field has been added on POST /cards and the verifyName and holderName fields have been added on PATCH /cards/{cardID} to support ANI verification.

API updates

We’ve relaxed the validation for the website field within a business profile to allow paths.

Dashboard updates

We added the ability to search by sweepID in the wallet view of the Moov Dashboard (previously this was only available via the API).

Bug fix

We fixed a bug where an account’s capabilities could show a pending status with no listed requirements.

Additional linked bank account types

Additional linked bank account types

Moov now supports general ledger and loan linked bank account types. Loan accounts allow sending credits to external loan accounts for repayment. General ledger accounts allow financial institution users to link their general ledger accounts.

See our bank account guide for more information.

Test card updates

The data for cardCategory, regulated, and commercial has been updated for test mode cards.

For the test card starting with number 411111:

  • cardCategory is “PERSONAL”
  • regulated is true

For the test card starting with number 601111:

  • cardCategory is “TRADITIONAL REWARDS”
  • commercial is true

Sweeps & scheduling betas

Sweeps (beta)

You can now set up sweeps, which work on autopilot, sending daily transfers to external bank accounts. A sweep will payout funds from a wallet, or pull funds to cover fees and chargebacks. Contact us if you’d like to try out sweeps.

See our sweeps guide and API documentation for more information.

Scheduled transfers (beta)

We’re making it easier to create future-dated transfers through scheduling. Moov is looking for early adopters to test scheduling in beta and provide feedback.

View our new guide on scheduling transfers for more information, or contact our team if you’re interested in participating.

End-to-end encryption

You can now use our API to generate a public key for passing secure authentication data through non-PCI compliant intermediaries, or create a JWE test token to ensure it’s acceptable by Moov.

See our API documentation for more information.

Drops pseudo-class support & bug fix

All input pseudo-classes are now supported on Moov’s composable Drops. You can style Drops based on form validity, user input interaction, and input value. Visit our Drops documentation for more information.

An issue with input validity has been fixed.

Instant micro-deposit verification

Instant micro-deposit verification

Instant micro-deposit verification introduces a faster and easier way to verify bank account ownership. This feature enables instant account verification for RTP-enabled bank accounts, allowing users to complete the process in seconds — an improvement over the traditional, multi-day, micro-deposit method. For accounts not yet RTP-enabled, the code is sent via same-day ACH.

Use instant micro-deposit verification to:

  • Instantly verify accounts for RTP-enabled banks in a single session
  • Ensure broad compatibility with automatic fallback to same-day ACH for other institutions
  • Meet Nacha account validation requirements
  • Enhance user experience with a quick, easy verification process

How it works:

  1. Moov sends a $0.01 credit to the user’s bank account
  2. This credit contains a unique verification code
  3. Users retrieve and enter the code to verify their account instantly (for RTP) or later that day (for same-day ACH)

See our documentation for more information.

Cards API response updates

New fields, commercial and regulated, will now be included in successful responses for the link a card, update a card, retrieve a card, and list cards endpoints. Both of these fields provide additional details for a card:

  • commercial indicates whether the card is for commercial or personal use
  • regulated indicates whether the card’s issuing bank is subject to capped debit interchange rates under the Durbin Amendment. This is determined by the asset size of the issuing bank. A value of true means the issuing bank’s asset size qualifies for the cap on interchange fees.

Hosted onboarding

Hosted onboarding (coming soon)

Soon you’ll be able to use Moov’s hosted onboarding forms to cut down the time it takes to onboard users. You’ll create an invite and send a secure form link from the Moov Dashboard. Users will move through the onboarding flow and provide data necessary to fulfill capability requirements, agree to pricing, and accept Moov’s terms. Once users complete the onboarding form, you’ll be notified in the Dashboard that they’re ready to move money. You can start building for this new flow now.

See our hosted onboarding guide and our API reference for details.

Disputes in the Dashboard

You can now fully manage disputes in the Dashboard. You can view, accept, delete, and update disputes, as well as view, upload, and update dispute evidence.

Updates to dynamicDescriptor

Accounts must now be approved by Moov to use the dynamicDescriptor field - an optional field to override the default card statement descriptor on a transfer. View our documentation for more details.

Changes to capability requirements

Capability requirements have updated to reflect financial institution exemptions and additional underwriting requirements.

Financial institution exemptions

US state and/or federally regulated financial institutions are exempt from beneficial ownership requirements. Our account onboarding process will conditionally require a financial institution to provide their primary regulator during signup, which will be communicated through capability requirements. Additionally, providing business representatives is not a requirement for these financial institutions.

Underwriting requirements

Additional fields have been added for account underwriting that detail fulfillment, return policies, and the type of volume expected by merchants. If you aren’t already, ensure you’re providing these fields. See the underwriting API for more details.

Moov.js version update and API docs

Moov.js version update

We identified a long-standing issue with Moov’s client-side JavaScript SDK, Moov.js. Due to a misconfiguration, it was possible for users to cache outdated versions of Moov.js in their local browsers and experience page-breaking 404 errors following the release of a new version of Moov.js. Users would then have to manually clear their local browser cache to resolve the issue.

We resolved this issue with the release of Moov.js v0.6.12 on May 14, 2024. If your website used Moov.js prior to that date, some of your users may have outdated versions of Moov.js stored in their browser cache.

If your codebase used Moov.js prior to May 14, 2024, please review your codebase for the url https://js.moov.io/v1, and update the url to https://js.moov.io/v1?min=v0.6.12.

Cards endpoints documentation

Our API docs now reflect previously undocumented fields already present in our cards endpoints.

In the update a card PATCH endpoint documentation, we now include the merchantAccountID as an optional field in the request body.

We also now document the following fields returned in 200 responses for the link a card POST endpoint as well as the update a card PATCH endpoint:

  • issuerPhone
  • issuerURL
  • cardCategory
Subscribe

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