Interest Refund


Operational Use Cases

  • Auto refunds on payouts/merchant returns: Let Embarc unwind accrued interest whenever you issue a payoutRefund or merchantIssuedRefund.
  • Manual top-up: Add an interest refund later if the original refund skipped interest (e.g., you set interestRefundCalculation=false) or if finance needs a rounded amount.

Supported on both Fixed Schedule and Dynamic Schedule products. The only requirements are:

  1. The loan product lists supportedInterestRefundTypes containing PAYOUT_REFUND, MERCHANT_ISSUED_REFUND, or both.
  2. The target transaction is a non-reversed refund of one of those types.

Lifecycle Snapshot

flowchart TD
    A[Refund posted] --> B{Interest refund auto-calculation enabled?}
    B -->|Yes| C[Interest refund linked automatically]
    B -->|No| D[Post manual interest refund later]
    D --> C
    C --> E[Schedule and GL updated]

API Moves

  1. Automatic interest refund (default behaviour)

    POST /v1/loans/{loanId}/transactions?command=payoutRefund
    {
      "transactionDate": "18 Feb 2026",
      "transactionAmount": 75,
      "locale": "en",
      "dateFormat": "dd MMM yyyy",
      "note": "Return to card",
      "interestRefundCalculation": true
    }
    • Embarc posts both PAYOUT_REFUND and INTEREST_REFUND (amount calculated from the referenced installments) and links them automatically.
  2. Manual interest refund

    POST /v1/loans/{loanId}/transactions/{refundTransactionId}?command=interest-refund
    {
      "transactionAmount": 2.77,
      "locale": "en",
      "dateFormat": "dd MMM yyyy",
      "note": "Return promo interest"
    }
    • Use when the original refund set interestRefundCalculation=false or when you want to override the amount.

Field reminders

  • interestRefundCalculation (refund metadata) defaults to true. Set it to false only when policy says the refund should be principal-only.
  • transactionAmount in the manual call must be positive and equals the exact interest you want to unwind.

Baseline Example (Dynamic Loan B)

Baseline B installment #4 (due 21 Feb 2026) has USD 2.77 interest and USD 100 principal. The merchant cancels the order and refunds USD 75 of principal.

  1. Merchant issues refund with interestRefundCalculation=false (merchant only covers principal today).
  2. Later, finance decides to return the USD 2.77 interest as well, so they run the manual interest refund.

Transactions created

DateTypeAmountAllocationNotes
14 Feb 2026MERCHANT_ISSUED_REFUND75.00Principal 75.00Merchant paid back part of the loan; interestRefundCalculation=false.
18 Feb 2026INTEREST_REFUND2.77Interest 2.77Manual command linked to the earlier refund transaction.

Loan summary delta

MetricBefore manual refundAfter manual refund
Principal outstandingUSD 525.00USD 525.00 (unchanged by interest refund)
Interest outstandingUSD 2.77USD 0.00
Next due installment#4 still due 21 Feb 2026 but only principal remains

Accounting snapshot

EntryDebitCreditAmount
Interest reversalInterest IncomeLoans Receivable (Interest component)USD 2.77

Because the interest refund is linked to the merchant refund, undoing the merchant refund later will also reverse the interest refund.

Verification Checklist

  1. GET /v1/loans/{loanId}?associations=transactions,repaymentSchedule,loanSummary – confirm a new INTEREST_REFUND transaction exists and the affected installment’s interestOutstanding drops accordingly.
  2. If you set interestRefundCalculation=true on the refund itself, ensure you see the linked transactions immediately without running the manual command.
  3. Subscribe to the interest-refund webhook (or your reporting feed) to reconcile GL entries in real time.

Use these steps to keep interest recognition accurate whenever refunds occur, regardless of whether they originated from Embarc (payout reversals) or external merchants.