Oracle receivablesCreditMemos REST API: Create and Query Receivables Credit Memos
Credit memos are the corrective lens of Oracle Receivables — when an invoice was wrong, a return came back, or a concession was agreed, a credit memo puts the balance right. The REST resource for them is receivablesCreditMemos under the FSCM base path, and while Oracle’s reference docs describe every endpoint, the entire first page of Google for this resource is those docs — there is no practical walkthrough of the flow integration developers actually build: create a credit memo with lines, query it back, and read its distributions. This guide is that walkthrough, using field names, finders, and child resources straight from the real Oracle spec.
All examples use an anonymized pod (acme.fa.us2.oraclecloud.com) and placeholder data — swap in your own values. Authentication works exactly like every other Fusion REST call; see our authentication guide if you’re setting that up first.
The resource at a glance
https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos
In the real FSCM spec this resource spans 54 distinct paths. The ones that matter for integration work:
| Path | What it does |
|---|---|
GET /receivablesCreditMemos | List/filter credit memos — 15 queryable q fields |
GET /receivablesCreditMemos/{CustomerTransactionId} | One credit memo by its surrogate ID |
POST /receivablesCreditMemos | Create an on-account credit memo (lines can be inlined) |
PATCH /receivablesCreditMemos/{CustomerTransactionId} | Update header attributes |
.../child/receivablesCreditMemoLines | The memo’s lines (amount or quantity credits) |
.../child/receivablesCreditMemoDistributions | Accounting distributions per line |
.../child/attachments/{id}/enclosure/FileContents | Download an attached file’s raw bytes |
Seven child resources hang off the header: receivablesCreditMemoLines, receivablesCreditMemoDistributions, attachments, notes, and three flexfield children (receivablesCreditMemoDFF, receivablesCreditMemoTransactionDFF, receivablesCreditMemoGdf). The header itself returns 69 response fields.
One scope note before the examples: this resource creates and manages the credit memo transaction — an on-account credit in a business unit. Crediting a specific invoice line-by-line through the managed “Credit Transaction” flow or AutoInvoice is a separate process; don’t expect an InvoiceNumber field on this POST body.
Query credit memos with q
The GET collection supports q on exactly 15 documented fields: AllowCompletion, BillToCustomerNumber, BillToSite, BusinessUnit, CreditMemoCurrency, CrossReference, CustomerTransactionId, DocumentNumber, PrimarySalesperson, PurchaseOrder, PurchaseOrderDate, TransactionDate, TransactionNumber, TransactionSource, TransactionType.
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos?q=BillToCustomerNumber='1001'&onlyData=true&limit=25"
The operator gotcha: in the real spec, every one of those 15 fields documents only = and != as supported q operators — no >, <, or LIKE. That includes TransactionDate. So a date-range filter like q=TransactionDate>'2026-01-01' is not part of the documented contract for this resource, even though the same expression works on resources such as invoices. If a range filter appears to work on your pod, treat it as undocumented behavior; the safe pattern for “everything since date X” sweeps is equality filters plus client-side windowing, or an OTBI/BICC extract for bulk pulls. General q syntax rules (quoting, URL encoding, and/or) are covered in our q parameter guide.
Combine filters with and:
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos?q=BusinessUnit='Acme%20US'%20and%20TransactionType='Credit%20Memo'&onlyData=true"
Get one credit memo
The key is CustomerTransactionId — a surrogate ID, not the transaction number a user would quote:
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/300000001234567"
To go from a human-facing number to the record, filter on TransactionNumber:
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos?q=TransactionNumber='CM-100045'&onlyData=true"
Two finders exist on the collection: PrimaryKey and creditMemosFinder (“finds credit memos using various attributes”). Neither documents bind variables in the spec, so in practice q is the reliable filtering interface here — a contrast with HCM resources like workers, where finders carry named bind variables.
Create a credit memo
The POST body accepts 59 fields, but only three are required: BusinessUnit, TransactionNumber, and TransactionDate. Lines go in the receivablesCreditMemoLines array, where LineNumber is the only required field per line:
curl -u integration.user -X POST \
-H "Content-Type: application/json" \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos" \
-d '{
"BusinessUnit": "Acme US",
"TransactionNumber": "CM-100045",
"TransactionDate": "2026-07-20",
"TransactionType": "Credit Memo",
"TransactionSource": "Manual",
"BillToCustomerNumber": "1001",
"CreditMemoCurrency": "USD",
"CreditReason": "Sales return",
"receivablesCreditMemoLines": [
{
"LineNumber": 1,
"MemoLine": "Consulting services",
"LineDescription": "Credit for overbilled hours",
"LineAmountCredit": -1500.00
}
]
}'
Notes from the real field definitions:
LineAmountCreditis an amount credit; useLineQuantityCreditwithUnitSellingPrice(and optionallyItemNumber+UnitOfMeasure) for quantity-based credits instead — they’re separate fields, not two names for one thing.CreditMemoStatusreflects completion state;AllowCompletionindicates whether the memo can be completed. Transaction types and sources must exist in your Receivables setup for the business unit — the API validates against configuration, and most 400s on this POST are configuration mismatches, not payload syntax.- Flexfield values ride along in
receivablesCreditMemoDFF/receivablesCreditMemoTransactionDFFarrays on the same POST.
Update and complete
Header attributes are PATCHable on the single-record URL:
curl -u integration.user -X PATCH \
-H "Content-Type: application/json" \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/300000001234567" \
-d '{"CreditMemoComments": "Approved per case 100234", "InternalNotes": "Reviewed by AR team"}'
Read lines, distributions, and attachments
Children live under /child/:
# Lines
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/300000001234567/child/receivablesCreditMemoLines?onlyData=true"
# Accounting distributions
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/300000001234567/child/receivablesCreditMemoDistributions?onlyData=true"
Or pull the header and children in one round trip with expand:
curl -u integration.user \
"https://acme.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05/receivablesCreditMemos/300000001234567?expand=receivablesCreditMemoLines,receivablesCreditMemoDistributions&onlyData=true"
Attached files come back through the enclosure link — list child/attachments, then follow the returned enclosure/FileContents URL to stream the bytes rather than building the URL by hand.
If you’re paging through a large result set, the standard limit/offset/hasMore loop applies — see our pagination guide for the patterns and the off-by-one traps.
Common errors
- 400 on POST with a valid-looking payload —
TransactionType,TransactionSource, orBusinessUnitdoesn’t match Receivables configuration for that BU, or the type isn’t a credit memo class type. qon a field that isn’t filterable — only the 15 fields listed above are documentedqfields; everything else in the 69-field response is read-only output, not a filter.- 404 on
GET /{id}— you passedTransactionNumberwhereCustomerTransactionIdbelongs; resolve the surrogate ID first. - 403 with working credentials — the integration user lacks the Receivables data access (business unit assignment) for that BU; fix data security, not the request.
Seeing the full endpoint surface
Everything above — the 54 paths, 15 q fields with their exact operators, both finders, all 7 children, and the 59-field POST body — comes from the real Oracle FSCM spec. You can browse it interactively on our receivablesCreditMemos reference page, or search the whole HCM + FSCM surface in the endpoint reference.
This post is part of our complete Oracle Fusion API guide — auth, base URLs, q filters, finders, and the key endpoints in one place.