All projects

Payment core

A shared payment integration base for products that need multiple payment paths.

TypeScriptBank integrationsCrypto
01

Challenge

Payment integrations repeated across products and needed consistent states and error models.

02

What we did

We separated payment logic into a core with adapters for banking and alternative channels.

03

Result

New products can connect payments through a shared model and maintain operations more simply.

Dev-story article

Payment core: how the project was built

Payment integrations repeated across products create different states, errors and maintenance patterns. The payment core defines one base model for products that need more than one payment path.

Sections

06

Modules

04

Stack

TypeScript + Bank integrations

Duration: 12-15 min. From project to learning materials
01 00:00

Why the project exists

Payment integrations repeated across products and needed consistent states and error models.

Payment integrations repeated across products create different states, errors and maintenance patterns. The payment core defines one base model for products that need more than one payment path.

02 01:00

What was built

We separated payment logic into a core with adapters for banking and alternative channels.

The system separates payment logic into a TypeScript core with adapters for banking and alternative channels. Products can connect to the core rather than rewrite transaction handling for each checkout or invoice flow.

03 02:40

Main modules and user path

M01

Transaction records track amount, currency, customer reference, payment method, status and timestamps so each operation has a clear lifecycle.

M02

Adapter modules isolate channel-specific work for bank and crypto paths, letting the shared core keep one state model while each channel handles its own details.

M03

Error and status mapping converts provider responses into product-level states for support queues, retries and reconciliation.

M04

Operations views can inspect pending, failed and completed payments without reading provider-specific logs first.

04 04:30

Architecture and technology decisions

Technical foundation: TypeScript, Bank integrations, Crypto. This matters not as a logo list, but as the set of choices that keeps data, state, user actions and future maintenance manageable.

TypeScript keeps the core contract explicit and helps adapters follow the same shape. Provider logic stays out of product screens, which keeps future payment paths easier to add.

05 06:30

How it works in a real scenario

In real use, “Payment core” works as a clear sequence: it starts from the original problem, then the user takes the primary action, follows a clear data path and reaches the result. The experience stays logical instead of being a random set of screens.

The practical value shows where manual work used to be needed: part of the process is automated, responsibilities are clearly separated, and each module does one understandable job. That is what keeps the solution easy to maintain and extend.

06 08:30

Result and lessons

New products can connect payments through a shared model and maintain operations more simply.

Products get a shared payment model and clearer operations data. New checkout or billing flows can use the same transaction states instead of inventing their own.

Read next

These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.

Have a similar idea?

Discuss your project