CNB Somerset Mobile app icon

Pulaski County, Kentucky · community-bank retail app

Integrating CNB Somerset Mobile's account trail under customer authorization

Somerset is the county seat of Pulaski County, and the local mobile app from Citizens National Bank of Somerset is the consumer-side window onto a deposit-and-loan book the bank has carried under this name for over a century, per its own site. For a third party trying to read that book by software, the practical question is short. What surfaces does the app actually expose to a logged-in customer, and what authorization keeps the read lawful in a US regulatory picture that is mid-rewrite. The answer that holds today is the second-person one. The customer has the right to look at their own records; the integration rides on that right, written down.

Somerset's federal district is the Eastern District of Kentucky. That is also the court that, per a 2026 Cozen O'Connor alert, enjoined the CFPB from enforcing the Personal Financial Data Rights rule (12 CFR Part 1033) while the Bureau works through reconsideration. So for an integration scoped against CNB Somerset Mobile, we do not lean on §1033 as the working US framework. We treat it as the unsettled forward-looking piece — the August 2025 Advance Notice of Proposed Rulemaking is open and the Bureau is taking comment on representative scope, fees, and the data-security threat model — and design the build so the customer-authorized leg stands on its own no matter where the rule lands. Practically, that looks like a written customer consent record, a scope statement naming the data domains read, retention bounded to the engagement, and a revocation path that drops the session and purges cached payloads on request.

What the app actually holds, surface by surface

The rows below come from the app's own Play Store description and the bank's online-banking page. Granularity notes are what we typically see for a Jack-Henry-class community-bank portal; final field shapes are confirmed during the build.

SurfaceWhere it lives in the appGranularityWhat an integrator does with it
Account list and balancesAccounts tab (checking, savings, loans, lines of credit, time deposits)Per-account current and available balance, nickname, last-fourCash-position dashboards, treasury aggregation, balance alerts upstream
Transaction historyPer-account ledger, with tags, notes and receipt photosPosted and pending; date, amount, description, optional tag/note/image refsBookkeeping ingest, categorization, expense recovery
Cleared check imagesTransaction detail viewJPEG front and back tied to a check transactionAudit trails, vendor-payment verification, ACH-fraud reviews
Bill pay recordsBill Pay moduleOne-time and recurring payments, payee, schedule, statusAP reconciliation, vendor-spend reporting, scheduled-pay forecasts
Internal transfersTransfer moduleFrom-to accounts, amount, status, scheduled or immediateSweep automation, intra-entity movements, cash forecasting
Mobile-deposit eventsDeposit moduleFront/back image refs, amount, deposit account, clearing statusReceivables capture, downstream booking, clearing-delay tracking
Monthly statementsStatements section (view and save)PDF per account per cyclePeriod-end archival, audit packs, OCR-driven reconciliation
Aggregated external accountsAggregation tile in the appAs surfaced by CNB's own aggregation feedSingle-pane net worth, household-finance views

Routes into the book

Three routes apply here in different mixes; the one we lead with depends on what the customer needs out.

1. Consumer-authorized portal and app interface read

The customer signs in with their existing CNB Somerset credentials (4-digit passcode or biometric on supported devices, per the app's own description), grants us a written scope, and we drive the same authenticated surfaces the app itself drives. Reachable: every domain in the table above. Effort: short — most of the work is the auth chain, session keep-alive, and pagination across the ledger. Durability: medium — community-bank portals change their front-end markup on a slow cycle, and we keep a reconciliation harness running so a markup shift surfaces early instead of mid-month. Setup: access is arranged with the customer during onboarding; the build runs against a consenting account.

2. Customer-driven native export

The app exposes statement PDFs the customer can save, and bill-pay history is downloadable from the desktop online-banking site. For one-shot needs — a year of statements for an audit, a snapshot of bill-pay payees — we wrap these exports, parse the PDFs, and hand back a tidy file. Reachable: statements, payee lists, transaction CSVs where available. Effort: very short. Durability: high; the exports change shape rarely.

3. AIS-style data-aggregator path

Several US data aggregators already touch this book through the customer-permissioned model the industry has been refining ahead of any §1033 settlement. Where the customer is already paying for an aggregator, we plug into that feed instead of running our own session. Reachable: balances and transactions, mostly; check imagery and bill-pay detail are usually thinner here. Effort: short when the aggregator account exists. Durability: tracks the aggregator's own coverage.

Our recommendation for a Citizens National Bank of Somerset build is to lead with route 1, fall back to route 2 for one-shot archival work, and only bring in route 3 if the customer is already inside an aggregator relationship for the rest of their banking.

What ships to you

One engagement, one bundle. The bundle is sized to this app's surfaces, not a generic checklist.

  • An OpenAPI 3.1 spec covering the account, transaction, statement, bill-pay, transfer and mobile-deposit endpoints we drive, with the auth flow modelled as a security scheme.
  • A short protocol and auth-flow report describing the login chain (passcode plus second factor where present), token or cookie lifetime, refresh behaviour, and the rate-limits we have observed.
  • Runnable source in Python (requests-based) and Node.js (axios-based) for every endpoint in the spec, plus the consent-record scaffolding.
  • A pytest suite that exercises each endpoint against a consenting account, including the "consent revoked" path and the clearing-pending mobile-deposit case.
  • Interface documentation written for the integrator who will own the code after we hand it over, plus a data-retention note describing what is cached, where, for how long, and how the customer revokes.

Reading a CNB Somerset Mobile session in code

Illustrative — exact field names are confirmed against a consenting account during the build.

# cnb_somerset_pull.py — consumer-authorized read
import os
from cnb_somerset import ConsentSession   # internal wrapper

session = ConsentSession.login(
    username      = os.environ["CNB_USERNAME"],
    passcode      = os.environ["CNB_PASSCODE"],      # 4-digit per app
    second_factor = otp_from_inbox(),                # device-bound MFA
    consent_id    = "consent-2026-05-24-alice",      # written scope on file
)

# 1) Account list across deposit, loan, line-of-credit, time-deposit
accounts = session.get("/digital/accounts").json()
for a in accounts:
    print(a["nickname"], a["type"], a["balance"], a["available"])

# 2) Transaction window for one account, with tag/note/image refs
tx = session.get(
    f"/digital/accounts/{a['id']}/transactions",
    params = {"from": "2026-04-01", "to": "2026-04-30"},
).json()

# 3) Cleared check imagery (front and back as separate refs)
for t in tx:
    if t.get("check_image"):
        front = session.get(t["check_image"]["front"]).content
        back  = session.get(t["check_image"]["back"]).content

# 4) Mobile-deposit events, including pending clearing
deposits = session.get(
    f"/digital/accounts/{a['id']}/mobile-deposits",
    params = {"status": "any"},
).json()

# 5) Monthly statement PDF for archival
pdf = session.get(
    f"/digital/accounts/{a['id']}/statements/2026-04"
).content

# Revoke and purge on consent expiry
session.revoke_and_purge()

Things we account for during the build

These are the specifics that tend to bite a generic banking-integration template when it meets a community-bank portal of this size, and how we handle them on our side.

  • Second-factor binding on a device the customer keeps. The app advertises 4-digit passcode and biometric login; the underlying online-banking site adds a device-bound MFA step when a new device or a long-idle session shows up. We design the session keep-alive so the customer is not re-prompted weekly, and we surface the re-MFA event cleanly to your code rather than letting it look like a generic 401.
  • Reconciliation harness for portal markup shifts. Community-bank front ends get refreshed on the vendor's cycle, not the bank's. We keep a small harness running against a sandbox account that re-validates the field map every few days, so a shape change surfaces as a flagged test rather than as silently wrong data in your downstream system.
  • Mobile-deposit clearing states. A submitted deposit is not the same record as a cleared deposit; the app shows status transitions over hours to days. We model the deposit event as a single object with a state machine (submitted → under_review → cleared or rejected) instead of two unrelated rows, so your accounting code does not double-count.
  • Aggregated tiles are not first-party balances. When the customer has pulled in external accounts via the aggregation tile, those balances come back through CNB's own upstream feed and can be hours stale. We mark them with a source: aggregated flag and a fetched_at stamp so downstream dashboards do not treat them as live.
  • Bounded retention by default. We set the cache TTL on extracted payloads to the engagement window unless you ask for longer in writing, and we wire a one-call revoke that drops both the session and the cached payloads. This is how the customer-authorization basis stays clean across the life of the integration.

Normalized output shape

Whichever route is in play, the normalized object we hand your code looks roughly like this — the spec ships the full schema:

{
  "account": {
    "id": "acct_8821",
    "type": "checking",
    "nickname": "Operating",
    "balance":   {"current": 12480.55, "available": 12102.10, "currency": "USD"},
    "as_of":     "2026-05-24T14:02:11Z"
  },
  "transaction": {
    "id":        "tx_5530021",
    "posted_at": "2026-05-21",
    "amount":    -184.27,
    "description": "ELECTRIC CO ACH",
    "tags": ["utilities"],
    "check_image": null,
    "source":    "cnb_somerset_portal"
  },
  "mobile_deposit": {
    "id":        "dep_31109",
    "submitted_at": "2026-05-22T09:14:00Z",
    "amount":    1450.00,
    "status":    "cleared",
    "images":    {"front": "...jpg", "back": "...jpg"}
  }
}

Interface evidence

The screenshots below are the ones Citizens National Bank of Somerset publishes on the Play Store. They are the surfaces a consumer-authorized integration drives, end to end.

CNB Somerset Mobile screenshot 1 CNB Somerset Mobile screenshot 2 CNB Somerset Mobile screenshot 3 CNB Somerset Mobile screenshot 4 CNB Somerset Mobile screenshot 5 CNB Somerset Mobile screenshot 6 CNB Somerset Mobile screenshot 7 CNB Somerset Mobile screenshot 8 CNB Somerset Mobile screenshot 9 CNB Somerset Mobile screenshot 10

Other community-bank apps in the same shape

If you are sizing a portfolio integration across more than one Kentucky or Mid-South community-bank app, these are the names most often in the same conversation. Each carries the same retail community-bank account trail; a normalized layer above them is what removes the per-bank UI drift.

  • CFSB Mobile — Community Financial Services Bank, Western Kentucky; standard deposit and bill-pay surfaces with the same portal-driven extraction pattern.
  • 1st Kentucky Bank Mobile — balances, transfers, and a branch-locator surface; a near-equivalent integration scope.
  • Citizens Bank of Kentucky — a separate Kentucky bank with a similarly shaped mobile portal; useful as a same-state comparator.
  • Commonwealth Community Bank — adds an in-app P2P send flow on top of the standard community-bank shape.
  • Community Bank NA — multi-state regional with a richer deposit-products catalogue under the same authenticated portal model.
  • Community Bank & Trust — balances, transfers and loan payments in one mobile surface; sibling integration profile.
  • The Community Bank Mobile — Liberal, Kansas, community bank; included because the back-end and portal patterns are familiar across markets.

Questions integrators have asked us about CNB Somerset

Why does the Eastern District of Kentucky come up when scoping a CNB Somerset integration?

Somerset sits in Pulaski County, inside that federal district. Per a 2026 Cozen O'Connor alert, the same court enjoined the CFPB from enforcing 12 CFR Part 1033 while the rule is reconsidered, so our default footing for a CNB Somerset Mobile build is the customer's own authorization to read their own records — not a settled federal data-rights mandate.

How does mobile-deposit imagery come out — separate front and back captures, or a combined object?

The app describes deposits as a picture of the front and back. In practice, portal payloads we have seen for community-bank flows hold them as two image refs tied to one deposit record, with a clearing status that updates after submission. We expose them as paired JPEG URLs plus the parent deposit-event object, and confirm the exact field names during the build.

Can the build pull external accounts a customer has aggregated into CNB Somerset Mobile?

The app's own description says you can aggregate your financial accounts inside it. The aggregated tiles are stored against the customer session, so a consumer-authorized integration can read them alongside the native CNB accounts — though the upstream institutions stay rate-limited by whatever feed CNB Somerset uses, and we flag any tiles that come back stale.

How this brief was put together

The app surfaces and feature copy were read off the Play Store listing for com.cnbsomerset.grip and the App Store listing id 1606939096. The bank's online and mobile banking pages on cnbsomerset.com were checked for the bill-pay, mobile-deposit and aggregation copy. The US data-rights status was anchored against the CFPB Personal Financial Data Rights reconsideration page and the cited 2026 Cozen O'Connor alert. OpenBanking Studio integration desk · mapping reviewed 24 May 2026.

Working with us

Most CNB Somerset Mobile builds land inside one to two weeks once the customer-consent record is in hand and we have a sandbox or consenting account to drive. Source-code delivery starts at $300 — you pay only after the integration is running end-to-end on your side and you are satisfied with the bundle we handed over. If owning the code is not the goal, the same surfaces are available as a pay-per-call hosted API with no upfront fee; you only pay for calls you actually make. Either way the first move is the same: write the scope you need at our contact page, using the surfaces and routes above as the starting outline, and we will come back with a one-page scope and a date.

App profile (collapsed)

Name: CNB Somerset Mobile.
Publisher: Citizens National Bank of Somerset, Kentucky.
Distribution: Google Play package com.cnbsomerset.grip; Apple App Store id 1606939096 (per store listings).
Category: Finance / community-bank retail mobile banking.
Authentication, as described by the app: 4-digit passcode or biometric on supported devices, on top of the customer's existing online-banking credentials.
Features named by the app: balances; bill pay (one-time and recurring); transfers between accounts; mobile check deposit (picture of front and back); cleared check image view; transaction tags, notes and receipt photos; balance-threshold alerts; debit-card on/off and reorder; statement view and save; ATM and branch locator; external-account aggregation.
Reach of this brief: consumer-authorized portal and app interface read, with a customer-driven export fallback for archival work.

Mapping reviewed 24 May 2026.