Skip to main content

Oracle Fusion Cloud ERP

Built, not yet proven on an instance

This connector is built against Oracle's published REST API for Oracle Fusion Cloud Financials and tested against answers constructed from that documentation. It has not yet run against a customer's Fusion instance; the first customer instance is the acceptance. It is switched on per organisation by GoRoute (it is not offered by default). Connect with automatic sending off first, check a few transactions with Sync now, and tell us what you see.

To check whether you can use it: if Integrations shows no Oracle Fusion Cloud ERP card, it is not available to your organisation yet; ask GoRoute.

GoRoute reads completed Receivables invoices and credit memos from your Fusion pod over Oracle's REST API and sends each as an e-invoice (Peppol, or your country's own route). Nothing is installed on your side and Fusion never has to call GoRoute.

What it doesโ€‹

ReadsReceivables invoices (receivablesInvoices) and credit memos (receivablesCreditMemos), with their lines and tax lines; the bill-to customer account (customerAccountSitesLOV); tax rates (taxRatesLOV); the customer's address (accounts, if your integration user may read it)
SendsEach completed transaction once, as an invoice or a credit note. Incomplete (draft) transactions are not sent until they are completed
HoldsA transaction that cannot be sent truthfully, with the reason in words and where to fix it (see Held transactions)
Writes back (optional)SENT with the GoRoute transaction id, or HELD with the reason, into a descriptive flexfield or as a small text attachment
Receives (optional)Supplier invoices GoRoute receives for you, created in Payables as an unvalidated invoice header with the supplier's PDF and XML attached

Before you connectโ€‹

  1. An integration user in the Fusion Security Console, with a role that can read Receivables transactions, customer accounts and tax rates. If you want the status written back, the role must also be able to update the transactions' descriptive flexfield or add attachments. If GoRoute should create supplier invoices in Payables, it needs to create Payables invoices too.
  2. Or an OAuth 2.0 client in your Fusion identity domain using the client-credentials grant, with the client id also created as a Fusion user that holds the role above (Oracle's Configure OAuth Using Client Credentials Grant Type). GoRoute recommends the integration user for the first instance: Oracle's guides disagree on whether client credentials reach every Fusion REST resource.
  3. Your pod URL, of the form https://<pod>.fa.<region>.oraclecloud.com (without /fscmRestApi).
  4. Your company registered with GoRoute on the Peppol network. Until it is, sending is on hold and nothing is lost.

One GoRoute organisation is one taxpayer. If one Fusion pod holds several legal entities, connect each from its own GoRoute organisation and set its business unit so each connector reads only its own transactions.

Connectโ€‹

In the portal open Integrations โ†’ Oracle Fusion Cloud ERP and fill in the pod URL, the sign-in, and the options below. Or call the API:

POST /api/v1/connectors/{connector_id}/connect
Content-Type: application/json

{
"config": {
"base_url": "https://yourpod.fa.ocs.oraclecloud.com",
"auth": "basic",
"business_unit": "NL Operations",
"auto_sync": false,
"writeback": "none"
},
"credentials": {
"username": "GOROUTE_INTEGRATION",
"password": "<the integration user's password>"
}
}

For OAuth, set "auth": "oauth", client_id, token_url (your identity domain's /oauth2/v1/token) and scope in config, and client_secret in credentials.

GoRoute asks Fusion for one Receivables invoice before it saves anything, so a wrong URL, a refused user or a missing role is reported at once, in words. The password or client secret is stored encrypted and never returned.

Automatic sending is off until you turn it on (auto_sync). When you do, GoRoute starts from sync_from if you give one, otherwise from the moment you turned it on, never from the start of your ledger.

How new transactions are foundโ€‹

  • Invoices are read in order of their last-update date (LastUpdateDate), from 15 minutes below the last one handled, so a transaction saved late is still found. A transaction changed after GoRoute handled it (for example, a held one you corrected) is read again.
  • Credit memos are read by their transaction date by default, from 7 days before the last one handled (credit_memo_lookback_days), because Oracle documents only the transaction date as filterable for credit memos. A credit memo dated further back than that is not seen. If your instance allows filtering credit memos on LastUpdateDate, set credit_memo_cursor to LastUpdateDate and they are read as invoices are.
  • Never twice: each send is keyed on the Fusion transaction id; an invoice already sent (by number and date) is recognised and not sent again.

Tax categoriesโ€‹

A line's tax line decides its VAT category. A rate above 0 % is a standard-rated line. A 0 % line is never guessed: map its tax rate code (or tax status code) on the connector to the category it is, with the exemption reason code your country requires:

{
"tax_map": {
"NL ZERO EXPORT": { "category": "zero", "exemption_code": "VATEX-EU-G" },
"NL EXEMPT": { "category": "exempt", "exemption_code": "VATEX-EU-132" }
}
}

A line with no tax line at all takes default_tax_category (and default_tax_rate, default_tax_exemption_code) if you set them; otherwise it is held. A line carrying two taxes is held: an e-invoice line carries one VAT category.

Customersโ€‹

GoRoute finds your customer's VAT number on the transaction (third-party tax registration), else on the customer account, and from it the customer's address on the Peppol network. If the customer is on Peppol under another identifier, map the customer account number to it:

{ "party_map": { "1001": "0106:12345678" } }

Held transactionsโ€‹

A held transaction is listed on the connector panel with its reason, and in the Invoice Hub. Typical reasons and where to fix them:

ReasonFix it in
The customer has no VAT numberthe customer's tax registration in Fusion, or party_map
The customer cannot receive on Peppol yetnothing: GoRoute asks again by itself
A 0 % line's tax rate is not mappedthe connector's tax_map
The total is not what the lines add up to (freight)the transaction (freight is not sent in this version)
The customer's address country could not be readthe customer's address in Fusion, or the integration user's access to customer accounts

Each held transaction has Retry now, Skip (with a reason; it comes back when the transaction changes in Fusion) and Never send (for one handled outside GoRoute). GoRoute retries a customer-side reason every 15 minutes and picks up a corrected transaction by its change.

Writing the status back to Fusionโ€‹

Off by default ("writeback": "none"). Two ways:

  • Descriptive flexfield ("writeback": "dff"): GoRoute writes SENT or HELD into a segment of the transaction's header DFF, the reason into another and the GoRoute transaction id into a third. Give the segments' attribute names:

    {
    "writeback": "dff",
    "writeback_dff": { "context": "GOROUTE", "status": "goRouteStatus",
    "reason": "goRouteReason", "transaction": "goRouteTransaction" }
    }
  • Attachment ("writeback": "attachment"): GoRoute adds a small text file to the transaction (category CUSTOMER_TRX unless you set writeback_attachment_category).

A held reason is written once, and again only when it changes. A write Fusion refuses is shown on the held list ("could not be written back") and tried again later; it never stops a send.

Supplier invoices into Payablesโ€‹

Off by default. With "ap_intake": "payables_invoices" and ap_business_unit, each supplier invoice GoRoute receives for you is created in Payables as an invoice header (number, date, currency, amount, supplier and site) with the supplier's PDF and the XML attached, and no lines: the distribution and tax are your accountant's to enter, and Fusion keeps the invoice Not Validated until they do. GoRoute never creates a supplier: map each supplier's Peppol ID or VAT number to its Fusion supplier and site.

{
"ap_intake": "payables_invoices",
"ap_business_unit": "NL Operations",
"ap_supplier_map": { "0106:55555555": { "supplier": "Supplier BV", "supplier_site": "AMS" } }
}

A supplier not in the map stays in GoRoute (portal and API) with a note saying which entry to add. The Payables open interface import is not offered in this version.

Settingsโ€‹

SettingMeaning
base_urlThe pod URL
authbasic (integration user) or oauth (client credentials)
business_unitSend only this business unit's transactions
auto_sync, sync_fromAutomatic sending on, and where it starts
exclude_transaction_typesTransaction type names never sent (for example intercompany)
party_mapCustomer account number โ†’ Peppol ID
tax_mapTax rate or status code โ†’ category and exemption reason
uom_mapFusion unit of measure โ†’ UN/ECE Rec. 20 code (unmapped units are EA)
credit_memo_cursor, credit_memo_lookback_daysHow credit memos are found (above)
writeback, writeback_dff, writeback_attachment_categoryStatus written back (above)
ap_intake, ap_business_unit, ap_supplier_map, ap_invoice_source, ap_attachment_categoryPayables intake (above)

What the first instance must confirmโ€‹

Everything below comes from Oracle's documentation and has not yet been seen on an instance. GoRoute checks each on the first customer's pod before switching automatic sending on there:

  1. Filtering with q=LastUpdateDate >= 'โ€ฆ' (REST framework version 2), and that completing a draft invoice moves its last-update date.
  2. Whether credit memos can be filtered on LastUpdateDate.
  3. The tax lines expanded on the lines call, for invoices and credit memos alike, and the sign of credit-memo amounts.
  4. The values of LineAmountIncludesTax.
  5. Where (if anywhere) a credit memo names the invoice it credits. Until known, credit notes are sent without a reference to the invoice; where your country requires one, the credit memo is held.
  6. Reading the customer's address from the accounts resource with the integration user.
  7. Writing the header flexfield through the transaction's update, and adding an attachment, on a completed transaction.
  8. OAuth client credentials reaching the Receivables resources.
  9. Creating a Payables invoice header with its attachments in one call.

Not in this versionโ€‹

  • Business events through Oracle Integration Cloud (GoRoute polls every five minutes; Sync now runs a cycle at once).
  • Freight and header-level charges.
  • The Payables open interface import.