Configuration

You set what your users are allowed to send and collect. Moov scores what looks suspicious. Those are separate controls.

Limits and groups #

Caps are per transaction, per day, per week, per month, and as a daily send count. You apply them as a provider default, then by group, then by participant override. A new account, a seasoned household, and a private-banking relationship should not share a limit.

Read and update the default policy with GET and PATCH /providers/{providerID}/limits. Create groups, add members, and set per-participant overrides. Effective limits shows what a given user actually has after group and override.

Dimensions in the API:

DimensionWhat it caps
per_transaction_amountOne payment
daily_amount / weekly_amount / monthly_amountTrailing-window velocity
daily_send_countHow many payments in a trailing day

An example, not a default you are stuck with:

GroupWhoPer transactionPer dayPer month
New accountsFirst 30 days$100$250$1,000
StandardMost users$500$1,000$5,000
TenuredTwo years or more$1,500$2,500$10,000

You define the groups, the amounts, and who lands in each. Move someone between groups as the relationship changes; the new caps take effect on the next payment.

Start a cohort low when you roll out. Raise limits when the losses you actually see support it. The fraud stack flags a payment; limits keep a flagged pattern from draining an account even if a check misses.

Limits apply to payments (money leaving the account) and to requests (how much a user can collect, and how often they can ask a stranger). You set both as program settings.

Branding #

Three surfaces carry your name:

SurfaceWhat you controlWhere
Your appYour brand color and where the entry point appearsiOS and Android MoovMoneyConfiguration
Hosted pageYour name, colors, and logoConfigured with Moov for your program
NotificationsYour brand on RCS and email Moov sends to the other personMoov sends them; you don’t stand up messaging

The SDK is not a webview of a Moov app. It’s native UI, themed to the color you pass in. On iOS you supply a single brand color and the SDK draws the rest from system semantic colors, so it adapts to light and dark on its own. On Android you supply a light and a dark palette, and the SDK follows the device’s night mode.

Statement descriptor #

On capture, the other person’s card statement shows a dynamic descriptor. You set a shortName (2–12 ASCII letters or digits) and Moov composes it with the user’s name:

ACME*JANE S

Update it with PATCH /providers/{providerID}:

curl -X PATCH "https://api.moov.money/providers/$PROVIDER_ID" \
  -u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
  -H "Content-Type: application/json" \
  --data '{"shortName":"ACME"}'

Pick something a user of yours would recognize on someone else’s statement. A cryptic prefix is how “I don’t know this charge” disputes start.

Features you can have on #

These are program-level. They’re not flags your app toggles per session, except where the SDK is told to collect a signal.

  • Device intelligence. When it’s on for your institution, the SDK receives a fraud client configuration on the session and collects device signals. A rooted phone, an emulator, or taps that don’t look like a person feed the score you see on authorize. If the section is absent from the session, the SDK proceeds without it.
  • Contact sync. Users can sync contacts so a mistyped digit is caught before the money leaves. Matching also drives the “in your contacts” / name-mismatch copy in the payment flow.
  • Passkeys. Offered on the hosted page after a successful claim or payment, so the next visit is Face ID / device unlock instead of a new OTP.
  • Apple Pay and Google Pay. On the claim page, as disbursement (the recipient receives onto a wallet). On a pay link, as the way the other person pays. Manual debit-card entry is always available as the fallback.

What is not configurable #

A few things are fixed as part of the product, not a setting:

  • The other person must have an eligible US Visa or Mastercard debit (or prepaid that can receive). Credit cards can’t receive a payment.
  • Unclaimed payments expire after 10 days. Unpaid requests default to 30 days.
  • Moov messages the other person. You don’t send the claim or pay link yourself unless you choose to share it in-app as well.
  • Card data is captured on Moov’s page, never in your app.

Funding sources #

The accounts a user can send from are yours to enumerate. Create them on the participant with POST /providers/{providerID}/participants/{participantID}/funding-sources: a fundingType (card or bank_account), your providerSourceID, and a display name. That id is what you will see again on authorize as fundingSource; Moov treats it as opaque. The SDK reads the list off the session, so there is nothing to pass in. If they have checking and savings, you decide which appear and what they’re called.

Creation is idempotent on (participant, fundingType, providerSourceID). Update display metadata with PATCH; remove a source with DELETE.