MC Mobile Banking app icon

Defiance, Ohio · BankJoy-backed credit union app

Building an authorized data integration around MC Mobile Banking

Midwest Community Federal Credit Union ships this app under the BankJoy white-label platform — visible from the Play Store package id com.bankjoyapp.midwestcom — and roughly $253M in member assets sit behind it, per the credit union's public reporting. The integration question is straightforward: a member or a treasury system wants their balances, transaction history, mobile-deposit ledger and bill-pay activity out of the app, in a stable shape, so another piece of software can use them. The route we run for this class of app is authorized interface integration: the member signs a consent, we replicate the auth chain and HTTP surface, and we ship the runnable source plus a small spec.

Data behind the app

The Play Store description and the credit union's own E-Services page together name what's reachable through the member-side app. None of this is exotic — it's the standard small-credit-union data set, with mobile check deposit as the only sub-system that lives slightly off to one side.

DomainWhere it surfaces in the appGranularityWhat an integrator usually does with it
Account balancesHome dashboard, per-account viewAvailable + current, per account, refreshed on demandTreasury cash-position view, member-facing PFM, aggregator feeds
Transaction historyActivity tabPer posting: date, amount, description, posted vs pendingReconciliation, accounting export, categorisation pipelines
Mobile check depositsMobile deposit flowSubmitted images plus status (pending, accepted, rejected, hold)Audit trail, deposit monitoring, hold-aware availability calcs
Bill pay recordsBill pay screenPayee, scheduled date, amount, recurrence, statusPayment automation, vendor reconciliation, scheduled-cash planning
P2P transfersTransfers tab (email / SMS)Counterparty handle, amount, status, messageExpense tracking, shared-account ledgers
Branch and ATM directoryLocator screenStatic geographic dataRarely an integration target on its own; useful as a referenced lookup

Where this gets used

A few engagements that map onto this app, from prior conversations and the obvious shape of what BankJoy-backed credit unions ask for.

  • Member-side PFM that reads from MC Mobile Banking — balances and transactions normalized into an FDX-shaped account + transaction schema, refreshed nightly, with consent-revocation honored.
  • Small-business member treasury view — a member running a local business pulls daily balance and posted-transaction snapshots into their accounting tool rather than logging in by hand.
  • Deposit-monitoring add-on — a wrapper that watches the mobile check deposit status stream and alerts the member when a deposit moves out of hold or gets rejected.
  • Bill-pay export for tax season — the year's bill-pay history as a clean CSV, with payee normalisation that the BankJoy UI doesn't surface directly.

Routes we work with

Authorized interface integration of the BankJoy-backed app

This is the route we recommend for this app. The member signs a consent; the studio reproduces the BankJoy auth chain — login, device registration, session refresh — and walks the same HTTP endpoints the mobile app uses. Coverage is the broadest you can get (everything visible inside the app surfaces), durability ties to BankJoy's release cycle (not Midwest Community's), and the onboarding side — sandbox or a consenting account — is something we set up with the credit union as part of the engagement, not a precondition the customer is asked to clear first.

FDX-aligned aggregator routing

FDX was recognized by the CFPB in January 2025 as the standard-setting body for personal financial data sharing, and aggregators (Plaid, MX, Finicity, Akoya) increasingly speak its dialect. Whether MC Mobile Banking is reachable through a given aggregator depends on the credit union's core (and its enabled relationships there), not on the app itself. For a $253M-class credit union the coverage is uneven; we run the discovery as part of the build and fall back to the authorized interface route where the aggregator side isn't lit up.

User-consented credential proxy

A narrower route — the member supplies credentials, the studio logs in on their behalf via the same web/mobile surface, and reads the screens we agreed to read. Workable for low-volume read-only deliverables, and we set the audit and rotation around it. Less durable than the interface route once 2FA flows change.

Native e-statements as a fallback

Midwest Community offers e-statements through its E-Services suite. For month-end-only use cases, PDF or CSV statement download is a fine fallback and avoids the live-auth complexity entirely — limited to whatever the statement contains.

What a fetch looks like

Illustrative shape only — the exact endpoint paths, headers, and token names are pinned during the build by capturing the BankJoy app's real traffic against a consenting account. The structure below is what tends to be true for BankJoy-backed apps.

# illustrative — final field shapes confirmed during the build
import httpx
from mc_session import session_with_member_consent  # auth chain captured in protocol analysis

BASE = "https://m.midwestcommunity.org"  # tenant host fronted by BankJoy

def fetch_account_summary(member_id: str) -> list[dict]:
    s = session_with_member_consent(member_id)   # OAuth + device token, established once
    r = s.get(f"{BASE}/api/v1/accounts/summary",
              headers={"X-Device-Id": s.device_id})
    r.raise_for_status()
    return [
        {
            "id":        a["accountNumber"],
            "kind":      a["accountType"],     # share, share draft, loan, etc.
            "available": a["availableBalance"],
            "current":   a["currentBalance"],
        }
        for a in r.json()["accounts"]
    ]

def fetch_transactions(account_id: str, since: str) -> list[dict]:
    s = session_with_member_consent.cached()
    cursor, out = None, []
    while True:
        r = s.get(f"{BASE}/api/v1/accounts/{account_id}/transactions",
                  params={"since": since, "cursor": cursor, "limit": 100})
        r.raise_for_status()
        page = r.json()
        out.extend(page["items"])
        cursor = page.get("nextCursor")
        if not cursor: break
    return out

Mobile check deposit lives on a different sub-system — typically a deposit-capture vendor BankJoy fronts — and is exposed through a separate handshake. The build treats it as its own flow with its own status polling so a rejected deposit shows up cleanly rather than silently disappearing.

What we hand over

  • Runnable source in Python or Node, covering the auth chain (login, device registration, token refresh), balance and transaction reads, mobile-deposit status, and bill-pay listing — packaged as a small library with example callers.
  • An OpenAPI / auth-flow document describing the endpoints we use, request and response shapes as we observed them, error codes, and the OAuth-style token flow the BankJoy app actually runs.
  • Automated tests against a recorded fixture set so the integration breaks loudly and specifically when BankJoy ships a platform change.
  • Interface documentation — a short engineer-readable brief on how to operate the integration, where the rate limits sit, and what to do when a sync fails.
  • A compliance posture write-up covering the consent record, what we log, the data minimisation we applied, and the retention defaults — so the credit union's compliance team has the file it needs.

The dependable basis for this integration today is the member's own authorization to read their own accounts — the same authorization that the Reg E mobile banking app already trades on. The studio works under that consent plus a written letter from the credit union where the integration touches their systems directly, with a clear revocation path the member can use.

The US §1033 picture is unsettled and we describe it that way. The Personal Financial Data Rights rule was stayed on October 29, 2025 by the Eastern District of Kentucky in Forcht Bank v. CFPB, and the CFPB has reopened the rulemaking — so the obligations the rule would have phased in are not in force, and the specific institution-size thresholds are not present-tense law. FDX is the CFPB-recognized standard-setting body, so the data shapes we deliver mirror its dictionary where it covers the surface — that gives a forward path if and when the rule lands, without betting on what the next text will say.

How the build is scoped

  • BankJoy releases drive the cadence, not Midwest Community. Because com.bankjoyapp.midwestcom sits on BankJoy's shared mobile codebase, the field naming, endpoint paths, and token handling track BankJoy's platform releases. We pin the protocol against a captured session, snapshot the response shapes, and watch the BankJoy release stream during maintenance so a platform change reaches us before it reaches the member.
  • Mobile check deposit is its own surface. The deposit-capture flow doesn't share the read-side endpoints — it has its own auth handshake, image upload step, and status state machine. We scope it as a separate module with its own retry and status-polling logic, not bolted into the transaction reader.
  • Core-system fingerprints leak into the field shapes. The credit union's core processor (the system actually holding the ledger) decides things like share-draft vs share-savings labels, pending-vs-posted timing, and ACH memo formatting. We normalize these once on the build so downstream consumers see a single consistent vocabulary rather than the raw core dialect.
  • Session lifetime is short. Mobile banking sessions on this platform expire quickly, especially after 2FA prompts. The integration is built around token refresh and a re-auth fall-back so a sync run doesn't quietly fail at 2 a.m. and stay failed.

Keeping it from drifting

White-label apps drift on someone else's calendar. The maintenance posture for this build is a small set of recorded fixtures that mirror the real responses, a thin diff job that flags shape changes the moment a captured replay no longer matches, and a documented escalation: re-capture against a consenting account, regenerate the fixture, ship the patch. That keeps the integration honest without paying an engineer to babysit BankJoy's release notes.

Pricing and timing

Source-code delivery starts at $300 for a build of this shape, and the invoice clears only after you've received the code, run it, and signed off — there's no upfront retainer. If you'd rather not run anything yourself, the pay-per-call hosted endpoint is the alternative: we host the integration, you call it, and the meter only ticks on real calls. The whole cycle, from a signed engagement to a working build against a consenting account, is 1–2 weeks. Send us the app and what you need from it and we'll come back with the exact scope.

How this was checked

Sources we opened while writing this brief: the credit union's own mobile banking page; BankJoy's consumer banking product page for the platform context; the Federal Register notice on Personal Financial Data Rights Reconsideration for the current §1033 status; and the CFPB's recognition of FDX as a standard-setting body. App-side facts come from the Play Store listing and the credit union's own pages and are flagged as such inline.

Mapping reviewed by the OpenBanking Studio integration desk, 2026-05-29.

Same category, same kind of data behind them. A handful of these run on the same BankJoy platform that MC Mobile Banking does — Emporia State FCU, SafeAmerica, UMe, Lafayette FCU — which makes them easier to fold into a unified credit-union read layer.

  • Alliant Credit Union — large national CU; checking, savings, loan and transaction history behind member auth.
  • Bethpage Federal Credit Union — Long Island-based; balances, transfers, mobile deposit and bill pay.
  • Lafayette Federal Credit Union — BankJoy-backed, member-portal data shape similar to MC Mobile Banking.
  • SafeAmerica Credit Union — BankJoy-backed; same balance/transaction/transfer surfaces.
  • Emporia State Federal Credit Union — BankJoy on a Fiserv CUnify core; standard CU data set.
  • UMe Credit Union — BankJoy partner; consumer banking flows.
  • Mountain America Credit Union — FDX member; balance, transaction, and card-management data.
  • Navy Federal Credit Union — large CU with FDX involvement; broad personal and small-business data behind member auth.
  • Delta Community Credit Union — Georgia-headquartered CU; full mobile feature set with strong app ratings.
  • Eastman Credit Union — Tennessee-headquartered CU; consistently among the highest-rated credit-union apps.

Questions

What sits behind the BankJoy white-label MC Mobile Banking app, and does it change how the integration is built?

The package id com.bankjoyapp.midwestcom places the app on BankJoy's shared mobile codebase, fronting Midwest Community's core processor. Practically that means the auth flow, HTTP surface, and field naming track BankJoy's platform releases rather than a Midwest-Community-specific build, so we lift the protocol once and watch the BankJoy release notes for changes during maintenance.

Does the CFPB §1033 stay actually block anything we want to ship for a credit union of this size?

No. The Personal Financial Data Rights rule was stayed by the Eastern District of Kentucky on October 29, 2025 and is back at the CFPB for reconsideration, so it is not in force in either direction. The integration we deliver rides on the member's own authorization to access their accounts — the durable basis today — and stays aligned with whatever §1033 ultimately becomes once the rulemaking lands.

Can the build cover mobile check deposits and bill pay, or is that out of reach?

Both are reachable. Mobile check deposit usually sits on a separate sub-system from balance and transaction reads, with its own auth handshake and status polling for cleared / pending / rejected — we wire that as a distinct flow. Bill-pay records (payee, amount, schedule, status) come through the BankJoy bill-pay surface and normalize cleanly into a payments timeline.

What gets logged when the studio runs the integration against a real member account?

Every call is captured with timestamp, scope, and account id under the consent record the member signed, with a clear revoke path. Personally identifying fields are minimized to what the integration actually needs, raw HTTP captures from the build phase are kept inside the engagement under NDA, and the deliverable ships with a redaction layer so the same hygiene survives into production.

App profile

App name: MC Mobile Banking
Package id: com.bankjoyapp.midwestcom (per the Play Store listing)
Publisher: Midwest Community Federal Credit Union, Defiance, Ohio
Platform backend: BankJoy white-label digital banking
Categories of data behind the app: account balances, transaction activity, mobile check deposits, internal and P2P transfers, bill pay, branch / ATM locator, member-service contact
Membership eligibility, per the credit union: people who live, work, attend school or worship in Defiance, Henry, Fulton, Paulding, Williams and part of Putnam counties in Ohio
Regulator: National Credit Union Administration (NCUA)
Independent listings checked while writing this: the credit union's own E-Services page and the Play Store listing

Mapping last checked 2026-05-29.