Skip to content

Product Overview

Vision

DragonPay is a payment hub that enables the initiation and execution of payment orders, designed to help credit unions offer modern payment products through their existing digital-banking environments. DragonPay enables CUs to attract, retain, and better serve business customers by offering payment capabilities they otherwise could not economically build themselves.

DragonPay provides:

Payment Products and customer-channel options

Multiple Route Types within each Product

Centralized payment control and execution

Reusable external-system connectivity

Unified operational, financial, and reporting controls across Products, reducing the CU's vendor-management burden

Payment Hub capability map

The PH sections define logical responsibilities. They do not necessarily require separate applications, teams, or microservices. DragonPay separates customer payment intent from payment execution. Products create normalized payment requests; the Hub controls the payment lifecycle and selects the appropriate configured execution path; Connectors isolate CU-, processor-, provider-, and Route-Type-specific behavior.

Section Responsibility Business value
PH-01 — Tenant, Identity, and Access Establishes Tenant, Identity, application, role, and Permission context. Protects CU data and prevents unauthorized or cross-Tenant access.
PH-02 — Product Configuration Defines available Products, Tenant Product assignment, and versioned Tenant-specific Product configuration. Allows each CU to run the same Product with different, versioned configuration without custom Hub logic.
PH-03 — Payment Model Defines the common payment-order structure, Actions, Legs, Execution Attempts, and provider transactions. Creates one consistent payment language across all Products and Route Types.
PH-04 — Payment Orchestration Controls payment lifecycle, waits, retries, cancellation, expiration, and corrective actions. Keeps processing reliable through customer and external-system delays or failures.
PH-05 — Party and Payment Instrument Management Represents participants, accounts, cards, wallets, tokens, and validation information. Separates common participant and instrument data from Product and provider formats.
PH-06 — Policy and Transaction Risk Applies eligibility, limits, velocity, risk rules, required actions, and external Decisions. Provides explainable control over which payment orders may proceed.
PH-07 — Payment Routing Selects the Product Route Type, execution capability, provider, connection, and Connector. Allows one Product to use different execution routes by CU and payment condition.
PH-08 — Payment Execution and Connector Framework Creates Payment Instructions, invokes Connectors, manages Execution Attempts, and normalizes results. Provides one safe execution framework across CU and provider interfaces.
PH-09 — Payment History and Commercial Records Maintains immutable payment history and related Fee, Cost, and Billing records. Supports audit, operations, reconciliation, billing, and accounting integration.
PH-10 — Reconciliation Compares DragonPay records with external acknowledgements, transactions, postings, Returns, and evidence. Confirms that all responsible systems recorded the same payment outcome.
PH-11 — Exception Management Manages unresolved problems, investigations, approvals, corrective requests, and resolutions. Provides controlled human intervention when automation cannot resolve an issue safely.
PH-12 — Communication and Notification Produces invitations, transactional notifications, delivery records, receipts, and documents. Keeps customers, CUs, and operations accurately informed.
PH-13 — Reporting and Operations Provides payment search, timelines, dashboards, health, attention items, reports, and exports. Gives DragonPay and CU teams visibility into activity and operational performance.

Why the structure matters

Multiple Products

Different payment types require different initiation methods and customer experiences but can reuse the same Payment Hub.

Multiple Route Types

A Payment Product is not permanently tied to one network, processor, core, or execution method.

Multiple credit unions

Each CU may use different technologies, providers, policies, and Route Types while the central Hub remains consistent.

Speed without permanent lock-in

The initial CU’s existing systems can be used without embedding those technologies directly into the Product or core Hub architecture.

Production payment operations

DragonPay must manage more than payment submission, including:

Idempotency

Delayed and unknown outcomes

Reconciliation

Returns and corrections

Exceptions

Audit history

Communications

Reporting

Initial delivery approach

The full architecture defines DragonPay’s direction and responsibility model. The first release will support P2P. Early follow up features, if not parallel within first release will be Cross-Border product and an introducing FedNow as an execution Route Type where supported. Upon confirmation of the first CU, integration with the CU's digital-banking platform and core systems will be required.

PP-01 — P2P Payment Product

PP-01 defines the information and customer interactions required to initiate a P2P payment order.

It includes:

Authenticated Sender

Funding-account selection

Known- and unknown-Recipient flows

Recipient claim and receiving-account selection using “secret” out of band word.

P2P cancellation, expiration, status, and Return behavior

Supported channel-delivery options

PP-01 submits the payment order to the Payment Hub for routing and execution through a CU-supported Product Route Type.

Business value: Establishes DragonPay’s first marketable Payment Product while proving that one Product can support multiple channels and execution Route Types.

CX-01PP-01 Digital Experience

CX-01 defines the detailed implementation of DragonPay-provided PP-01 channel options.

It includes:

Sender experience

External Recipient experience

Hosted and embedded delivery

Authenticated CU launch

CU branding and content

Payment review, Confirmation, status, cancellation, history, and receipts

Accessibility, security, telemetry, and responsive behavior

Reference behavior for CU-built interfaces

CX-01 is a separate implementation specification, but it remains part of the PP-01 Payment Product.

OX-01 - Operations & Administration Experience

OX-01 defines the shared operational experience used by DragonPay and authorized CU teams to manage payments across Products and Route Types.

It includes:

Payment search and transaction detail

Payment lifecycle and execution timelines

Exception and reconciliation review

Risk, validation, and attention items

Approved corrective and administrative actions

Operational dashboards, reporting, and exports

DragonPay-provided administrative interface

APIs for integration with CU operational, core, or reporting systems

Separation of transactional processing from operational reporting and analytical data

Operational actions are executed through controlled Payment Hub services and remain permissioned, validated, and auditable.

Business value: Provides a single operational control point across DragonPay Payment Products and Route Types while allowing CUs to use DragonPay interfaces or integrate the same capabilities into their existing operational environments.

Architecture overview

* = future / growth, not built yet. PH-01 (Identity/Access) is omitted from this diagram — it applies across everything, not one path through the system.

<figure>
<svg viewBox="0 0 900 760" role="img" aria-label="DragonPay platform architecture: channel apps on the left connect through the Hub's capabilities, a Connector layer, and Integration to the CU's core banking system and payment Route Types, with FedNow shown as a future direct-connect option." style="max-width:100%;height:auto;font-family:inherit;">
  <defs>
    <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>
    </marker>
    <marker id="arrowA" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="var(--accent)"/>
    </marker>
  </defs>
  <rect x="20" y="20" width="410" height="140" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="225" y="40" font-size="13" font-weight="600" text-anchor="middle" fill="currentColor">Digital Banking Platform</text>
  <rect x="35" y="55" width="180" height="45" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="125.0" y="81.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">P2P (CX-01)</text>
  <rect x="225" y="55" width="190" height="45" rx="6" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-dasharray="5 4"/>
  <text x="320.0" y="81.5" font-size="13" font-weight="normal" text-anchor="middle" fill="var(--accent)">Cross-Border</text>
  <rect x="35" y="105" width="180" height="45" rx="6" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-dasharray="5 4"/>
  <text x="125.0" y="131.5" font-size="13" font-weight="normal" text-anchor="middle" fill="var(--accent)">Instant Pay</text>
  <rect x="225" y="105" width="190" height="45" rx="6" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-dasharray="5 4"/>
  <text x="320.0" y="131.5" font-size="13" font-weight="normal" text-anchor="middle" fill="var(--accent)">Credit Card</text>
  <rect x="460" y="20" width="420" height="140" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="670" y="40" font-size="13" font-weight="600" text-anchor="middle" fill="currentColor">DragonPay White-Label Apps</text>
  <rect x="475" y="60" width="190" height="80" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="570.0" y="96.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Recipient Claim</text>
  <text x="570.0" y="111.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">(CX-01)</text>
  <rect x="675" y="60" width="190" height="80" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="770.0" y="96.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Ops &amp; Admin</text>
  <text x="770.0" y="111.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">(OX-01)</text>
  <rect x="20" y="195" width="860" height="265" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="450" y="218" font-size="14" font-weight="600" text-anchor="middle" fill="currentColor">DragonPay Hub</text>
  <rect x="370" y="230" width="160" height="32" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="450.0" y="250.0" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Products (PP-01)</text>
  <rect x="35" y="280" width="260" height="50" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="165.0" y="301.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Setup &amp; Model</text>
  <text x="165.0" y="316.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">(PH-02, PH-03)</text>
  <rect x="310" y="280" width="260" height="50" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="440.0" y="309.0" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Orchestration (PH-04)</text>
  <rect x="585" y="280" width="260" height="50" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="715.0" y="301.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Parties &amp; Risk</text>
  <text x="715.0" y="316.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">(PH-05, PH-06)</text>
  <rect x="35" y="340" width="260" height="50" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="165.0" y="369.0" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Routing (PH-07)</text>
  <rect x="310" y="340" width="260" height="50" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="440.0" y="361.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Records &amp; Cases</text>
  <text x="440.0" y="376.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">(PH-09, PH-10, PH-11)</text>
  <rect x="585" y="340" width="260" height="50" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="715.0" y="361.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Comms &amp; Reports</text>
  <text x="715.0" y="376.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">(PH-12, PH-13)</text>
  <rect x="370" y="480" width="160" height="45" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="450.0" y="506.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Connector (PH-08)</text>
  <rect x="250" y="560" width="400" height="110" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="450" y="580" font-size="13" font-weight="600" text-anchor="middle" fill="currentColor">Integration (CI-01)</text>
  <rect x="265" y="595" width="180" height="55" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="355.0" y="626.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Core Calls</text>
  <rect x="455" y="595" width="180" height="55" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="545.0" y="626.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">CU Route Types (ACH)</text>
  <rect x="265" y="700" width="180" height="45" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="355.0" y="726.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">Core Banking</text>
  <rect x="455" y="700" width="180" height="45" rx="6" fill="none" stroke="currentColor" stroke-width="1.5"/>
  <text x="545.0" y="726.5" font-size="13" font-weight="normal" text-anchor="middle" fill="currentColor">ACH Network</text>
  <rect x="700" y="700" width="160" height="45" rx="6" fill="none" stroke="var(--accent)" stroke-width="1.5" stroke-dasharray="5 4"/>
  <text x="780.0" y="726.5" font-size="13" font-weight="normal" text-anchor="middle" fill="var(--accent)">FedNow</text>
  <line x1="225" y1="160" x2="225" y2="195" stroke="currentColor" stroke-width="1.5" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
  <line x1="670" y1="160" x2="670" y2="195" stroke="currentColor" stroke-width="1.5" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
  <line x1="450" y1="460" x2="450" y2="480" stroke="currentColor" stroke-width="1.5"  marker-end="url(#arrow)"/>
  <line x1="450" y1="525" x2="450" y2="560" stroke="currentColor" stroke-width="1.5"  marker-end="url(#arrow)"/>
  <line x1="355" y1="650" x2="355" y2="700" stroke="currentColor" stroke-width="1.5"  marker-end="url(#arrow)"/>
  <line x1="545" y1="650" x2="545" y2="700" stroke="currentColor" stroke-width="1.5"  marker-end="url(#arrow)"/>
  <line x1="545" y1="650" x2="730" y2="700" stroke="var(--accent)" stroke-width="1.5"  marker-end="url(#arrowA)"/>
  <text x="660" y="668" font-size="11" font-weight="normal" text-anchor="middle" fill="var(--accent)">via CU</text>
  <line x1="530" y1="502" x2="760" y2="700" stroke="var(--accent)" stroke-width="1.5"  marker-end="url(#arrowA)"/>
  <text x="660" y="590" font-size="11" font-weight="normal" text-anchor="middle" fill="var(--accent)">direct</text>
</svg>
<figcaption>How the pieces fit together.</figcaption>
</figure>