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
2 months ago
Linear
Get notified by email when there are changes.
Completed
Main App
2 months ago
Linear
Get notified by email when there are changes.