Transfers API

Initiate and manage fund transfers including bank transfers, CBDC transfers, payouts, and inter-account movements.

Base:/v1/QuickPayTransferDto, /v1/FinancialDashboard

Endpoints

GET
/v1/QuickPayTransferDto
List Transfers

Retrieve a paginated list of transfers with OData filtering. Uses the QuickPay transfer service for typed OData queries.

Query Parameters

NameTypeRequiredDescription
$filterstringOptionalOData filter. e.g. transferAction eq 'BankTransfer'
$orderbystringOptionalSort order
$topnumberOptionalPage size
$skipnumberOptionalOffset

Response

{
  "value": [
    {
      "id": 1,
      "referenceNumber": "TXF-2024-001",
      "transferAction": "BankTransfer",
      "sourceAccountId": 1,
      "destinationAccountNumber": "1234567890",
      "amount": 500.00,
      "fee": 5.00,
      "currencyCode": "USD",
      "status": "Completed",
      "feePayer": "Sender",
      "createdDateTime": "2024-03-15T10:00:00Z"
    }
  ]
}
GET
/v1/FinancialDashboard/transfers
Transfers Dashboard

Retrieve transfer analytics including type breakdown, status breakdown, time series, and fee payer distribution.

Query Parameters

NameTypeRequiredDescription
startDatestringOptionalISO date string
endDatestringOptionalISO date string
currencyCodestringOptionalCurrency filter
institutionIdnumberOptionalInstitution filter
timeUnitstringOptionalDay | Week | Month

Response

{
  "summary": {
    "totalTransfers": 1250,
    "totalSourceAmount": 625000.00,
    "totalPayoutAmount": 618750.00,
    "totalFees": 6250.00,
    "averageAmount": 500.00,
    "completionRate": 98.5
  },
  "typeBreakdown": [
    { "requestType": "BankTransfer", "count": 800, "totalAmount": 400000, "totalFees": 4000 },
    { "requestType": "Transfer", "count": 350, "totalAmount": 175000, "totalFees": 1750 },
    { "requestType": "CBDCTransfer", "count": 100, "totalAmount": 50000, "totalFees": 500 }
  ],
  "statusBreakdown": [
    { "status": "Completed", "count": 1231, "totalAmount": 615500 },
    { "status": "Processing", "count": 15, "totalAmount": 7500 },
    { "status": "Failed", "count": 4, "totalAmount": 2000 }
  ],
  "timeSeries": [
    { "date": "2024-03-01", "count": 42, "totalSourceAmount": 21000, "totalPayoutAmount": 20790, "totalFees": 210 }
  ],
  "feePayerBreakdown": [
    { "feePayer": "Sender", "count": 900, "totalFeeAmount": 4500 },
    { "feePayer": "Receiver", "count": 250, "totalFeeAmount": 1250 },
    { "feePayer": "Both", "count": 100, "totalFeeAmount": 500 }
  ]
}
GET
/v1/FinancialDashboard/payouts
Payouts Dashboard

Retrieve payout batch analytics including batch summaries, status breakdown, and disbursement tracking.

Query Parameters

NameTypeRequiredDescription
startDatestringOptionalISO date string
endDatestringOptionalISO date string
currencyCodestringOptionalCurrency filter
timeUnitstringOptionalDay | Week | Month

Response

{
  "summary": {
    "totalBatches": 50,
    "totalAmount": 250000.00,
    "totalDisbursed": 245000.00,
    "pendingAmount": 5000.00,
    "completionRate": 98.0,
    "totalEntries": 1500,
    "totalSucceeded": 1480,
    "totalFailed": 20
  },
  "statusBreakdown": [...],
  "timeSeries": [...],
  "transferTypeSummary": [...],
  "batchTypeSummary": [...]
}

Enums

TransferAction

RequestQrCode
RequestPaymentLink
RequestTransfer
ExecuteTransfer
ATMCashPickUp
ATMCashOut
CashIn
CashOut
CBDCTransfer
CBDCTransferReceived
BankTransfer
BankWithdrawal

FeePayer

Sender
Receiver
Both

Types

TransfersDashboardResponse

interface TransfersDashboardResponse {
  summary: {
    totalTransfers: number;
    totalSourceAmount: number;
    totalPayoutAmount: number;
    totalFees: number;
    averageAmount: number;
    completionRate: number;       // Percentage
  };
  typeBreakdown: TransferTypeBreakdown[];
  statusBreakdown: TransferStatusBreakdown[];
  timeSeries: TransferTimeSeriesItem[];
  feePayerBreakdown: FeePayerBreakdown[];
}

PayoutsDashboardResponse

interface PayoutsDashboardResponse {
  summary: {
    totalBatches: number;
    totalAmount: number;
    totalDisbursed: number;
    pendingAmount: number;
    completionRate: number;
    totalEntries: number;
    totalSucceeded: number;
    totalFailed: number;
  };
  statusBreakdown: PayoutStatusBreakdown[];
  timeSeries: PayoutTimeSeriesItem[];
  transferTypeSummary: PayoutTransferTypeSummary[];
  batchTypeSummary: PayoutBatchTypeSummary[];
}

Usage Examples

Transfer dashboard with React Query
TypeScript
import { useFinancialDashboard } from '@/hooks/use-financial-dashboard';

function TransfersDashboard() {
  const { data, isLoading } = useFinancialDashboard('transfers', {
    startDate: '2024-03-01',
    endDate: '2024-03-31',
    currencyCode: 'USD',
    timeUnit: 'Day',
  });

  if (isLoading) return <Skeleton />;

  return (
    <div>
      <StatsCard
        title="Total Transfers"
        value={data.summary.totalTransfers}
      />
      <StatsCard
        title="Completion Rate"
        value={`${data.summary.completionRate}%`}
      />
      <TransferChart data={data.timeSeries} />
    </div>
  );
}
Query transfers with OData
TypeScript
import { QuickPayApi } from '@/lib/api/quickpay-api-client';

// Typed OData queries via generated service
const service = QuickPayApi.getService();
const transfers = await service.query((q) =>
  q.filter((f) => f.transferAction.equals('BankTransfer'))
   .orderBy((o) => o.createdDateTime.desc())
   .top(20)
);