---
title: "How to Build a Fintech Application with Unified's Payments API"
img: https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_build_a_fintech_application_with_unified_payments_api-icon.png
date: 2025-09-09T00:00:00.000Z
tag: Guides
description: "With Unified, you can build fin-tech products that work with your end customers payment providers. With a single integration you can connect payment processors..."
url: "https://docs.unified.to/guides/how_to_build_a_fintech_application_with_unified_payments_api"
---

# How to Build a Fintech Application with Unified's Payments API
------
_September 9, 2025_

# Introduction


With Unified, you can build fin-tech products that work with your end customers payment providers. With a single integration you can connect payment processors like Stripe, PayPal, GoCardless and more!


You can do various things such as creating payments, generating payment links, manage payouts and even handle refunds - all without building custom connectors for each payment provider.


In this guide, we will show you how to create and list payments as well as some related data. For the example we will be using Stripe, but this approach works for any of the payment integrations supported by Unified.


[See the full list of supported payment integrations.](https://docs.unified.to/payment/integrations)


---


## Prerequisites

- Node.js (v18+)
- Unified account with a payment integration enabled (e.g., Stripe)
- Unified API key
- Your customer's payment processor connection ID

---


## Step 1: Setting up your project


Set up your dependencies


```bash
mkdir payments-demo
cd payments-demo
npm init -y
npm install @unified-api/typescript-sdk dotenv
```


Add your credentials to `.env`:


```plain text
UNIFIED_API_KEY=your_unified_api_key
CONNECTION_STRIPE=your_customer_stripe_connection_id
```


---


## Step 2: Initialize the SDK


```typescript
import 'dotenv/config';
import { UnifiedTo } from '@unified-api/typescript-sdk';

const { UNIFIED_API_KEY, CONNECTION_STRIPE } = process.env;

const sdk = new UnifiedTo({
  security: { jwt: UNIFIED_API_KEY! },
});
```


---


## Step 3: How to Get Your Customer's Connection ID


Before you can list payments, your customer must authorize your app to access their payment provider via Unified's embedded auth flow.


Once authorized, you'll receive a connection ID for each integrations.


## Step 4: Listing Payments


```typescript
export async function listPayments(connectionId: string) {
  const payments = await sdk.payment.listPaymentPayments({
    connectionId,
    limit: 10,
  });
  return payments; // PaymentPayment[]
}
```


---


## Step 5: Creating a Payment Link


```typescript
export async function createPaymentLink(connectionId: string, amount: number, currency: string) {
  const link = await sdk.link.createPaymentLink({
    connectionId,
    paymentLink: {
      amount,
      currency,
      isActive: true,
      successUrl: "<https://example.com/success>",
      // Stripe typically requires line items on links
      lineitems: [
        {
          itemName: "Order #123",
          unitAmount: amount,
          unitQuantity: 1,
          itemSku: "SKU-123",
        },
      ],
    },
  });
  return link; // PaymentLink
}
```


---


## Step 6: Listing Refunds


```typescript
export async function listRefunds(connectionId: string) {
  const refunds = await sdk.refund.listPaymentRefunds({
    connectionId,
    limit: 10,
  });
  return refunds; // PaymentRefund[]
}
```


---


## Step 7: Listing Payouts


```typescript
export async function listPayouts(connectionId: string) {
  const payouts = await sdk.payout.listPaymentPayouts({
    connectionId,
    limit: 10,
  });
  return payouts; // PaymentPayout[]
}
```


---


## Step 8: Listing Subscriptions


```typescript
export async function listSubscriptions(connectionId: string) {
  const subs = await sdk.subscription.listPaymentSubscriptions({
    connectionId,
    limit: 10,
  });
  return subs; // PaymentSubscription[]
}
```


---


## Step 9: Example Usage


Here's how you might use these functions in your payment workflow:


```typescript
async function main() {
  // 1. Create a payment
  const payment = await createPayment(CONNECTION_STRIPE!, 1000, "USD");

  // 2. List payments
  const payments = await listPayments(CONNECTION_STRIPE!);

  // 3. Create a payment link
  const link = await createPaymentLink(CONNECTION_STRIPE!, 1000, "USD");

  // 4. List links
  const links = await sdk.link.listPaymentLinks({ connectionId: CONNECTION_STRIPE!, limit: 10 });

  // 5. List refunds
  const refunds = await listRefunds(CONNECTION_STRIPE!);

  // 6. List payouts
  const payouts = await listPayouts(CONNECTION_STRIPE!);

  // 7. List subscriptions (creation may not be implemented for some providers)
  const subscriptions = await listSubscriptions(CONNECTION_STRIPE!);

  console.log("Payment:", payment);
  console.log("Payments count:", payments.length);
  console.log("Payment Link URL:", link.url);
  console.log("Links count:", links.length);
  console.log("Refunds count:", refunds.length);
  console.log("Payouts count:", payouts.length);
  console.log("Subscriptions count:", subscriptions.length);
}

main();
```


---


Happy building! 🎉