AR Refund Upload
AR Refund Upload returns customer credit balances in Oracle Receivables from Excel. Each row refunds either an open credit memo or the unapplied / on-account balance of a customer cash receipt. The upload records the Receivables side of the refund, which automatically raises a Payment Request in Payables – so the actual disbursement still goes through the normal Payables review and payment cycle.
When to use it
- A customer has an open credit memo (for example an overpayment recorded as a credit memo) and wants the money back.
- A customer paid more than they owed, or paid with no specific invoice, and the unapplied / on-account cash should be returned.
- You want to clear long-standing customer credit balances in bulk rather than one at a time.
Before you start
- Blitz Report is installed and you are signed in to a Receivables responsibility with an appropriate AR approval limit – the upload never bypasses your approval limit.
- Each operating unit that processes refunds has a Credit Memo Refund-type Receivables Activity defined (Receivables > Setup > Receipts > Receivables Activities). The same activity is used for both credit-memo and receipt refunds.
- The Apply GL Date you use falls in an open Receivables period.
Step 1 – Open the upload and download the candidates
Run AR Refund Upload from the Blitz Report menu. In the default Create, Update mode the template downloads pre-populated with every eligible credit memo and unapplied receipt for your parameters, showing the Customer Name and Open Balance – turning the upload into a review-and-select worksheet.
| Parameter | Purpose |
|---|---|
| Upload Mode | Create, Update (recommended – pre-lists the candidates) or Create (empty template for manual entry). |
| Operating Unit | Limits both credit memos and receipts. |
| Customer Name | Limits to customers that have an eligible refund in the operating unit. |
| GL Date From / To | Credit-memo date range. |
| Credit Memo Number | One or more specific credit memos. |
| Batch Name | One or more Receivables transaction batches (credit memos). |
| Include accounts with open invoices | By default a credit memo is offered only when the customer has no open invoices. Set this to Yes to also list customers who do have open invoices (for example when those invoices are disputed). |
| Open Invoice Due Within Days | Used only when the above is Yes. Enter a number of days N: a credit memo is hidden only if the customer has an open invoice due within N days; invoices due later are ignored so the credit memo can still be refunded. Leave blank to ignore due dates. |
Step 2 – Review and mark the rows to refund
- Review the listed candidates – each shows the Refund Source (Credit Memo or Unapplied Receipt), Customer Name and Open Balance.
- Set Refund = Yes on the rows you want to refund. Leave it blank to skip a row – blank rows are not processed.
- Refund Amount defaults to the open balance. Enter a smaller positive amount for a partial refund (it must be greater than zero and no more than the balance).
- Apply Date and Apply GL Date default to today; the GL Date must be in an open period.
- Optionally set Payment Method, Pay Group, Payment Reason Comments and Comments – these flow through to the Payables Payment Request.
To add a refund manually, pick the Refund Source first, then choose the Credit Memo Number or Receipt Number (the list adapts to the source).
Step 3 – Save and upload
Save the workbook and use the Upload button. Only the rows marked Refund = Yes are processed; the result workbook lists those rows with a Status and Message.
What happens next (end-to-end)
- Receivables (this upload) records the refund against the operating unit’s Credit Memo Refund activity.
- An automatic Receivables-to-Payables event creates a Payment Request invoice payable to the customer.
- Payables Invoice Validation runs as normal.
- A Payment Process Request issues the disbursement.
This upload performs step 1 only. Steps 2-4 are standard Payables processing and act as a second control point before any money leaves.
Common questions
Credit memo or unapplied receipt – which refund source do I use?
Use Credit Memo when the credit sits on an open credit memo; use Unapplied Receipt when the customer’s cash receipt has an unapplied or on-account balance to return.
Can I do a partial refund?
Yes – set Refund Amount to a value smaller than the open balance.
Does the money leave immediately?
No. The upload only records the Receivables side. The payment is issued later through the standard Payables payment cycle.
Why isn’t a particular credit memo in the list?
By default credit memos for customers that have open invoices are hidden. Set “Include accounts with open invoices” to Yes (optionally with a due-within-days threshold) to see them.
What about approval limits?
Your Receivables approval limit always applies. A refund above your limit is rejected with the standard message; limits are never bypassed.
Troubleshooting
| Message | Cause | What to do |
|---|---|---|
| No Credit Memo Refund activity is defined for this operating unit | The operating unit has no Credit Memo Refund-type Receivables Activity. | Define one in Receivables > Setup > Receipts > Receivables Activities. |
| Refund over approval limit | The refund amount exceeds your Receivables approval limit. | Have a user with a sufficient limit process the row. |
| GL period not open | The Apply GL Date is in a closed period. | Use a date in an open Receivables period. |
| Refund amount invalid | The amount is zero, negative, or larger than the open balance. | Enter a positive amount no greater than the Open Balance. |
select null action_, null status_, null message_, null modified_columns_, haouv.name operating_unit, cast(null as varchar2(30)) refund, 'Credit Memo' refund_source, rcta.trx_number credit_memo_number, cast(null as varchar2(30)) receipt_number, hp.party_name customer_name, abs(apsa.amount_due_remaining) open_balance, abs(apsa.amount_due_remaining) refund_amount, cast(null as date) apply_date, cast(null as date) apply_gl_date, cast(null as varchar2(100)) payment_method, cast(null as varchar2(80)) pay_group, cast(null as varchar2(240)) payment_reason_comments, cast(null as varchar2(240)) comments, rownum upload_row from ar_payment_schedules_all apsa, ra_customer_trx_all rcta, hr_all_organization_units_vl haouv, hz_cust_accounts hca, hz_parties hp where 1=1 and apsa.class='CM' and apsa.status='OP' and apsa.amount_due_remaining<>0 and apsa.customer_trx_id=rcta.customer_trx_id and apsa.org_id=haouv.organization_id and apsa.customer_id=hca.cust_account_id and hca.party_id=hp.party_id and apsa.org_id in (select mgoat.organization_id from mo_glob_org_access_tmp mgoat union select fnd_global.org_id from dual where fnd_release.major_version=11) and not exists ( select null from ar_payment_schedules_all inv where inv.customer_id=apsa.customer_id and inv.org_id=apsa.org_id and inv.class='INV' and inv.status='OP' and inv.amount_due_remaining<>0 and (nvl(:include_with_open_invoices,'N')<>'Y' or :open_invoice_due_within_days is not null and inv.due_date<trunc(sysdate)+:open_invoice_due_within_days) ) union all select null action_, null status_, null message_, null modified_columns_, haouv.name operating_unit, cast(null as varchar2(30)) refund, 'Unapplied Receipt' refund_source, cast(null as varchar2(20)) credit_memo_number, acra.receipt_number, hp.party_name customer_name, (select sum(ara.amount_applied) from ar_receivable_applications_all ara where ara.cash_receipt_id=acra.cash_receipt_id and ara.status in ('UNAPP','ACC') and ara.amount_applied>0) open_balance, (select sum(ara.amount_applied) from ar_receivable_applications_all ara where ara.cash_receipt_id=acra.cash_receipt_id and ara.status in ('UNAPP','ACC') and ara.amount_applied>0) refund_amount, cast(null as date) apply_date, cast(null as date) apply_gl_date, cast(null as varchar2(100)) payment_method, cast(null as varchar2(80)) pay_group, cast(null as varchar2(240)) payment_reason_comments, cast(null as varchar2(240)) comments, rownum upload_row from ar_cash_receipts_all acra, hr_all_organization_units_vl haouv, hz_cust_accounts hca, hz_parties hp where 1=1 and acra.status='UNAPP' and acra.org_id=haouv.organization_id and acra.pay_from_customer=hca.cust_account_id and hca.party_id=hp.party_id and acra.org_id in (select mgoat.organization_id from mo_glob_org_access_tmp mgoat union select fnd_global.org_id from dual where fnd_release.major_version=11) and exists ( select null from ar_receivable_applications_all ara where ara.cash_receipt_id=acra.cash_receipt_id and ara.status in ('UNAPP','ACC') and ara.amount_applied>0 ) |
| Parameter Name | SQL text | Validation | |
|---|---|---|---|
| Upload Mode |
| LOV | |
| Operating Unit |
| LOV | |
| GL Date From |
| Date | |
| GL Date To |
| Date | |
| Credit Memo Number |
| Char | |
| Customer Name |
| LOV | |
| Batch Name |
| LOV | |
| Include accounts with open invoices | LOV | ||
| Open Invoice Due Within Days | Number |