All files / src/features/Settlements/ReconciliationHub types.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179                                                                                                                                                                                                                                                                                                                                                                     
/**
 * TypeScript mirrors of the backend reconciliation-hub view structs
 * (`app/reconcil/views.go`). All monetary fields are integer cents; rate fields
 * suffixed `BPS` are basis points (1/100th of a percent). Keep these in sync
 * with the Go JSON tags.
 */
 
/** Derived reconciliation status, computed by the backend from the merchant's
 *  remaining (available) balance:
 *    - "settled" — remaining = 0 (everything paid out, nothing left)
 *    - "open"    — remaining > 0 (owed to the merchant, not yet paid — normal)
 *    - "review"  — remaining < 0 (overpaid / off — a human needs to look) */
export type ReconciledStatus = "settled" | "open" | "review";
 
/** Single-row summary from `GET /merchants/{id}/reconciliation-hub`. */
export interface ReconciliationHubView {
  // Flow
  volume: number;
  netSales: number;
  grossFees: number;
  interchangeFees: number;
  schemeFees: number;
  networkFees: number;
  processorFees: number;
  /** interchange + scheme + network + processor */
  processorCost: number;
  /** grossFees − processorCost */
  ourRevenue: number;
  paidToMerchant: number;
 
  // Balances (as of period end)
  fboAvailable: number;
  reserveHeld: number;
  merchantBalance: number;
  merchantLiabilities: number;
  /** fboAvailable − merchantLiabilities */
  buffer: number;
 
  // Visa
  visaPurchaseCount: number;
  visaPurchaseAmount: number;
  visaRefundCount: number;
  visaRefundAmount: number;
  visaPreChargebackRefundCount: number;
  visaPreChargebackRefundAmount: number;
  visaChargebackCount: number;
  visaChargebackAmount: number;
  visaInterchangeFees: number;
  visaAssessmentFees: number;
  visaNetworkFees: number;
 
  // MasterCard
  masterCardPurchaseCount: number;
  masterCardPurchaseAmount: number;
  masterCardRefundCount: number;
  masterCardRefundAmount: number;
  masterCardPreChargebackRefundCount: number;
  masterCardPreChargebackRefundAmount: number;
  masterCardChargebackCount: number;
  masterCardChargebackAmount: number;
  masterCardInterchangeFees: number;
  masterCardAssessmentFees: number;
  masterCardNetworkFees: number;
 
  // Discover
  discoverPurchaseCount: number;
  discoverPurchaseAmount: number;
  discoverRefundCount: number;
  discoverRefundAmount: number;
  discoverPreChargebackRefundCount: number;
  discoverPreChargebackRefundAmount: number;
  discoverChargebackCount: number;
  discoverChargebackAmount: number;
  discoverInterchangeFees: number;
  discoverAssessmentFees: number;
  discoverNetworkFees: number;
 
  // Amex
  amExPurchaseCount: number;
  amExPurchaseAmount: number;
  amExRefundCount: number;
  amExRefundAmount: number;
  amExPreChargebackRefundCount: number;
  amExPreChargebackRefundAmount: number;
  amExChargebackCount: number;
  amExChargebackAmount: number;
  amExInterchangeFees: number;
  amExAssessmentFees: number;
  amExNetworkFees: number;
 
  // ACH / Other
  otherPurchaseCount: number;
  otherPurchaseAmount: number;
  otherRefundCount: number;
  otherRefundAmount: number;
  otherPreChargebackRefundCount: number;
  otherPreChargebackRefundAmount: number;
  otherChargebackCount: number;
  otherChargebackAmount: number;
  otherInterchangeFees: number;
  otherAssessmentFees: number;
  otherNetworkFees: number;
}
 
/** One per-merchant row from `GET /merchants/{id}/reconciliation-hub/merchants`. */
export interface ReconciliationHubMerchantView {
  merchantAccID: number;
  merchantName: string;
  merchantImageURL: string;
 
  // Flow (summed over the period)
  processingVolume: number;
  refunds: number;
  chargebacks: number;
  preCBRefunds: number;
  netSales: number;
  purchaseFees: number;
  /** interchange + scheme + network + processor fees */
  acquirerTotal: number;
  paidToMerchant: number;
 
  // Balances (as of period end)
  reserveHeld: number;
  availableBalance: number;
 
  // Rates in basis points (0 when processingVolume is 0)
  cbRateBPS: number;
  preCBRateBPS: number;
 
  reconciledStatus: ReconciledStatus;
}
 
/** Aggregate Totals row for the per-merchant breakdown. */
export interface ReconciliationHubMerchantsTotals {
  processingVolume: number;
  refunds: number;
  chargebacks: number;
  preCBRefunds: number;
  netSales: number;
  purchaseFees: number;
  acquirerTotal: number;
  paidToMerchant: number;
  reserveHeld: number;
  availableBalance: number;
  cbRateBPS: number;
  preCBRateBPS: number;
}
 
/** Response shape for the per-merchant breakdown endpoint. */
export interface ReconciliationHubMerchantsView {
  merchants: ReconciliationHubMerchantView[];
  totals: ReconciliationHubMerchantsTotals | null;
}
 
/** One row in the hub's transaction list. */
export interface ReconciliationHubTransactionView {
  id: string;
  /** Unix-seconds timestamp; rendered as "MMM D, YYYY HH:mm". */
  createdAt: number;
  /** Card brand key, e.g. "visa" | "masterCard" | "amEx" | "discover". */
  cardBrand: string;
  /** Last four digits of the card. */
  cardLast4: string;
  /** Cardholder name shown after the card. */
  cardholderName: string;
  /** Payment-method caption, e.g. "Credit Card". */
  paymentMethodLabel: string;
  merchantName: string;
  /** Integer cents. */
  amount: number;
  /** Display status key, e.g. "settled" | "refunded" | "chargeback" | "declined". */
  status: string;
}
 
/** Response shape for the hub transaction-list endpoint. */
export interface ReconciliationHubTransactionsView {
  transactions: ReconciliationHubTransactionView[];
}