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.
Local data-rights footing, and why it matters here
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.
| Surface | Where it lives in the app | Granularity | What an integrator does with it |
|---|---|---|---|
| Account list and balances | Accounts tab (checking, savings, loans, lines of credit, time deposits) | Per-account current and available balance, nickname, last-four | Cash-position dashboards, treasury aggregation, balance alerts upstream |
| Transaction history | Per-account ledger, with tags, notes and receipt photos | Posted and pending; date, amount, description, optional tag/note/image refs | Bookkeeping ingest, categorization, expense recovery |
| Cleared check images | Transaction detail view | JPEG front and back tied to a check transaction | Audit trails, vendor-payment verification, ACH-fraud reviews |
| Bill pay records | Bill Pay module | One-time and recurring payments, payee, schedule, status | AP reconciliation, vendor-spend reporting, scheduled-pay forecasts |
| Internal transfers | Transfer module | From-to accounts, amount, status, scheduled or immediate | Sweep automation, intra-entity movements, cash forecasting |
| Mobile-deposit events | Deposit module | Front/back image refs, amount, deposit account, clearing status | Receivables capture, downstream booking, clearing-delay tracking |
| Monthly statements | Statements section (view and save) | PDF per account per cycle | Period-end archival, audit packs, OCR-driven reconciliation |
| Aggregated external accounts | Aggregation tile in the app | As surfaced by CNB's own aggregation feed | Single-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 → clearedorrejected) 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: aggregatedflag and afetched_atstamp 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.
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.