Oracle Fusion Cloud ERP
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โ
| Reads | Receivables 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) |
| Sends | Each completed transaction once, as an invoice or a credit note. Incomplete (draft) transactions are not sent until they are completed |
| Holds | A 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โ
- 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.
- 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.
- Your pod URL, of the form
https://<pod>.fa.<region>.oraclecloud.com(without/fscmRestApi). - 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 onLastUpdateDate, setcredit_memo_cursortoLastUpdateDateand 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:
| Reason | Fix it in |
|---|---|
| The customer has no VAT number | the customer's tax registration in Fusion, or party_map |
| The customer cannot receive on Peppol yet | nothing: GoRoute asks again by itself |
| A 0 % line's tax rate is not mapped | the 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 read | the 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 writesSENTorHELDinto 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 (categoryCUSTOMER_TRXunless you setwriteback_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โ
| Setting | Meaning |
|---|---|
base_url | The pod URL |
auth | basic (integration user) or oauth (client credentials) |
business_unit | Send only this business unit's transactions |
auto_sync, sync_from | Automatic sending on, and where it starts |
exclude_transaction_types | Transaction type names never sent (for example intercompany) |
party_map | Customer account number โ Peppol ID |
tax_map | Tax rate or status code โ category and exemption reason |
uom_map | Fusion unit of measure โ UN/ECE Rec. 20 code (unmapped units are EA) |
credit_memo_cursor, credit_memo_lookback_days | How credit memos are found (above) |
writeback, writeback_dff, writeback_attachment_category | Status written back (above) |
ap_intake, ap_business_unit, ap_supplier_map, ap_invoice_source, ap_attachment_category | Payables 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:
- Filtering with
q=LastUpdateDate >= 'โฆ'(REST framework version 2), and that completing a draft invoice moves its last-update date. - Whether credit memos can be filtered on
LastUpdateDate. - The tax lines expanded on the lines call, for invoices and credit memos alike, and the sign of credit-memo amounts.
- The values of
LineAmountIncludesTax. - 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.
- Reading the customer's address from the
accountsresource with the integration user. - Writing the header flexfield through the transaction's update, and adding an attachment, on a completed transaction.
- OAuth client credentials reaching the Receivables resources.
- 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.