guardianPayments capture path.POST /guardian-payments/refund in attik-backend/src/routes/guardianPayments.ts requires a positive refundAmount, caps settled refunds against remaining refundable payment, and computes proportionalFee = (refundAmount / payment.amount) * feeAmount so the amount sent to the processor is refundAmount + proportionalFee. A fee-only refund would imply refundAmount === 0, which the route rejects today.attik-backend/src/util/functions/guardian/checkRefundStatus.ts (batched Guardian refunds); parity with synchronous refund ledger behavior needs to stay consistent when semantics change.Backend
attik-backend/src/routes/guardianPayments.ts (router.post('/refund', …)), including validation (refundAmount > 0), ACH partial-refund rules, inquiry-driven void vs refund vs queued paths, and refundOrVoidTransaction / refundTransaction usage from attik-backend/src/util/functions/guardian/cardpointeApi.ts.Refund creation (including feeRefundAmount), Fee updates (including negative fee / refunded flags on settled refunds), and how partial refunds compose with any new fee-only path.checkRefundStatus.ts: ensure queued / batched refund processing still matches synchronous expectations when fee-only or split semantics exist.attik-backend/src/routes/webhooks/finix/transfers.ts (e.g. feeless_total on transfer tags) and may need aligned behavior if Guardian gains fee-only refunds.Frontend
attik-frontend/src/app/tools/inspections/[id]/components/RefundModal.tsx (Guardian vs Finix branching, refundGuardianPayment from refundPayment actions, getPaymentFeeAmount, max amount / schema validation) so users can choose fee-only vs payment refund safely and copy prevents double-refunding fees.Out of scope unless explicitly expanded
attik-backend/src/routes/guardianPayments.ts (refund handler: proportionalFee, amountToSendToProcessor, Refund / feeRefundAmount, fee marking on void vs refund).attik-backend/src/util/functions/guardian/cardpointeApi.ts (refundOrVoidTransaction, refundTransaction).attik-backend/src/util/functions/guardian/checkRefundStatus.ts.attik-frontend/src/app/tools/inspections/[id]/components/RefundModal.tsx.attik-backend/src/routes/webhooks/finix/transfers.ts (feeless_total).Please authenticate to join the conversation.
Completed
Main App
18 days ago
Linear
Get notified by email when there are changes.
Completed
Main App
18 days ago
Linear
Get notified by email when there are changes.