← Back to blog

Oracle receivablesCreditMemos REST API: Create and Query Receivables Credit Memos

By Mostafa Mansour 7 min read Oracle FSCMREST APIReceivablesreceivablesCreditMemosFinancials

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:

PathWhat it does
GET /receivablesCreditMemosList/filter credit memos — 15 queryable q fields
GET /receivablesCreditMemos/{CustomerTransactionId}One credit memo by its surrogate ID
POST /receivablesCreditMemosCreate an on-account credit memo (lines can be inlined)
PATCH /receivablesCreditMemos/{CustomerTransactionId}Update header attributes
.../child/receivablesCreditMemoLinesThe memo’s lines (amount or quantity credits)
.../child/receivablesCreditMemoDistributionsAccounting distributions per line
.../child/attachments/{id}/enclosure/FileContentsDownload 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:

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

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.