Oracle FusionOracle Fusion · Enterprise architect guide
Oracle Fusion Cloud ERP → UAE FTA E-Invoicing with TrustBill
This guide is written for your Oracle Fusion architect, OIC lead and tax IT owner. It walks through the three ways to connect Fusion to the UAE FTA e-invoicing network via TrustBill, and spells out exactly which side owns which work in the advanced, event-driven integration — so there is nothing to discover during UAT.
0. Terms used in this guide
A short glossary so every reader starts from the same baseline. The rest of the document uses these terms without re-explaining them.
| Term | Meaning |
|---|---|
| FTA | UAE Federal Tax Authority. The regulator that receives, clears and stores e-invoices. |
| ASP | Accredited Service Provider — the party legally authorised by the FTA to transmit e-invoices to the FTA on behalf of taxpayers. TrustBill submits through its ASP partner. |
| PINT-AE | The UAE Peppol International Invoice specialisation. The XML profile the FTA accepts. |
| UBL 2.1 | The underlying XML standard PINT-AE is built on. |
| Peppol AS4 | The transport protocol used between ASPs to carry PINT-AE messages. |
| 5-corner model | FTA Peppol topology: sender → sender's ASP → FTA → receiver's ASP → receiver. TrustBill operates the sender-side ASP leg. |
| TRN | Tax Registration Number — 15 digits, issued by the FTA to each UAE legal entity. |
| OIC | Oracle Integration Cloud — the Oracle PaaS service that orchestrates between Fusion and external systems. |
| Oracle ERP Cloud Adapter | The OIC adapter that subscribes to Fusion business events and calls Fusion REST services. |
| DFF | Descriptive Flexfield — Oracle's standard way to add custom attributes to a seeded entity without a form customisation. |
| BU | Business Unit — Oracle Fusion's accounting partition. One UAE BU typically maps to one TRN. |
| HMAC | Hash-based Message Authentication Code. We use HMAC-SHA256 to sign the status webhooks we send you. |
| Idempotency-Key | A client-chosen header on every write. Guarantees a retry of the same logical operation returns the same result instead of creating a duplicate. |
| Partner API | The TrustBill REST surface at `https://api.trustbill.ae/v1/partner/*` that your OIC flow calls. |
1. Overview — what TrustBill delivers for Fusion
Oracle Fusion Cloud ERP has no native UAE FTA access point. It does not emit PINT-AE XML, cannot speak Peppol AS4, and cannot talk directly to the FTA's e-invoicing gateway. TrustBill sits between Fusion and the FTA: we take sales-side invoice data out of Fusion, transform it into the UAE PINT-AE UBL profile, validate it against the FTA's business rules, submit it through an FTA-accredited ASP over Peppol AS4, and send the signed, delivered document back to Fusion as a status update plus the official PDF/A-3 copy.
Your Fusion footprint stays as it is. We do not customise Fusion standard screens, we do not ask you to switch your invoice numbering strategy, we do not require a managed-services engagement from Oracle, and we do not install anything inside your Fusion tenancy. All transformation and FTA logic lives in TrustBill.
2. Three integration options — side-by-side comparison
Not every Fusion customer needs the same depth of integration. We offer three options at three price points. Pick the one that matches your invoice volume, your IT change-management posture, and whether you need the FTA UUID back on the printed invoice in real time.
All three options use the same TrustBill PINT-AE pipeline and the same FTA-accredited ASP. Only the Fusion-side trigger and the write-back path differ. Starting on Option 1 and moving up later is a configuration change, not a rebuild.
At a glance
| Option 1 — File drop | Option 2 — Scheduled REST pull | Option 3 — Event-driven push (advanced) | |
|---|---|---|---|
| Fusion-side trigger | ESS job exports AR invoices to CSV / UBL on SFTP or object storage. | TrustBill polls Fusion REST / BI Publisher on a 5–60 min schedule. | Standard AR 'Transaction Complete' business event via OIC adapter. |
| Latency to FTA | Minutes to hours. | Minutes. | Seconds (near real-time). |
| Status write-back to Fusion | CSV status report per batch (manual reconciliation). | Optional: TrustBill writes FTA UUID back via Fusion REST PATCH to DFF. | Mandatory: OIC inbound webhook verifies HMAC and writes DFF. |
| Our effort | 3–5 working days. | 8–12 working days. | 5–8 working days (consulting + UAT; Partner API already built). |
| Your effort (Fusion / IT team) | 4–8 working days. | 5–10 working days. | 15–25 working days (OIC outbound + inbound + DFFs + change-management). |
| Typical go-live | 4–6 weeks from kick-off. | 6–10 weeks from kick-off. | 10–16 weeks from kick-off. |
| Best for | Low volume (< 500 invoices / month), pilot phase, or Fusion tenancies where opening outbound HTTPS isn't permitted yet. | Mid volume (500–5,000 / month), teams that cannot ship an OIC flow in the current release train, no OIC licence. | Enterprise rollouts, high volume, multi-BU, anyone needing the FTA UUID on the printed invoice in real time. |
Section §4 breaks down the scope and effort for each option in full detail so you (or your Oracle MSP) can plan the internal work before signing. Pricing is maintained separately on the ERP integration pricing page — this document stays technical.
3. Advanced integration architecture
The advanced path is three systems in sequence. Fusion is the system of record, Oracle Integration Cloud (OIC) is the orchestrator inside your perimeter, and TrustBill is the UAE compliance plane that terminates at the accredited ASP and the FTA.
┌─────────────────────┐ 1. Business event ┌──────────────────┐
│ Oracle Fusion ERP │ ───────────────────────────▶│ Oracle │
│ (AR, Receivables) │ (Invoice Completed) │ Integration │
└─────────────────────┘ │ Cloud (OIC) │
▲ └────────┬─────────┘
│ 6. Status + UUID written back │
│ (custom DFF or OIC callback) │ 2. Enrich + POST
│ ▼
┌────────┴─────────┐ ┌──────────────────┐
│ OIC inbound │ 5. Signed webhook (HMAC) │ TrustBill │
│ webhook │ ◀──────────────────────────── │ Partner API │
│ (your tenant) │ │ api.trustbill.ae│
└──────────────────┘ └────────┬─────────┘
│ 3. PINT-AE
│ transform
│ + FTA rules
▼
┌──────────────────┐
│ FTA-accredited │
│ ASP (Peppol AS4) │
└────────┬─────────┘
│ 4. Clear
▼
┌──────────────────┐
│ UAE FTA │
│ e-invoicing │
│ gateway │
└──────────────────┘- Fusion emits the standard AR Transaction Complete business event (subscribed to through the Oracle ERP Cloud Adapter in OIC) when a sales invoice is completed and tax has been calculated.
- An OIC integration subscribes to the event, enriches it with buyer master data, exchange rate and legal entity details, and POSTs the resulting JSON document to `https://api.trustbill.ae/v1/partner/invoices` with an `Idempotency-Key`.
- TrustBill validates the payload, transforms it to PINT-AE UBL, applies the FTA UAE profile rules, signs the document, and submits it to our FTA-accredited ASP over Peppol AS4.
- The ASP relays the invoice to the FTA. The FTA returns a delivery acknowledgement and the official invoice UUID.
- TrustBill sends an HMAC-SHA256-signed `invoice.status_changed` webhook to the inbound OIC endpoint you register, carrying the FTA UUID, the delivery timestamp, and a URL to the PDF/A-3 copy and the signed UBL.
- The OIC flow verifies the signature, parses the body, and writes the UUID and status back to the Fusion invoice (standard integration: two Descriptive Flexfields on the AR Transactions header).
4. Scope + effort — per option
This section is what your Oracle team and ours will refer to during the Statement of Work. For each option we list exactly what TrustBill delivers, what your Fusion team delivers, how many person-days each side needs, and the all-in activation fee. Add your internal day-rate to the 'your effort' row and you have your total cost for the option.
— — — — — — — — — — — — — — — — — — — — — — — — — — —
4.1 — Option 1 — File drop (CSV / UBL)
| TrustBill scope (we deliver) | Your scope (you deliver) |
|---|---|
| Provide a per-tenant SFTP account (or S3-compatible bucket) in UAE me-central-1 with rotating credentials. | A Fusion ESS job that exports AR invoices to that SFTP / bucket on a schedule (hourly or daily). |
| Publish a CSV / UBL template and a sample file; map every column to a PINT-AE element. | Match your export columns to our template (headers, order, encoding UTF-8, decimal separator). |
| Pull, parse, validate against FTA rules, transform to PINT-AE UBL, submit via the accredited ASP, store signed UBL + PDF/A-3. | Capture buyer TRN per invoice (FTA requirement) — a Customer Account DFF or the standard Tax Registration Number attribute. |
| Produce a per-batch status report (delivered / rejected per external reference) back onto the same SFTP path within 15 minutes. | A simple reconciliation review in your AR team (open the status CSV and clear any rejected rows). |
| UAT: 10 synthetic invoices across standard, zero-rated, reverse-charge, free-zone and credit-note cases. | Sign off UAT acceptance (one tax owner, one AR owner). |
| Our effort: 3–5 working days (sales engineering + onboarding). | Your effort: 4–8 working days (Fusion functional for the ESS job + AR owner for TRN capture + IT for SFTP network). |
— — — — — — — — — — — — — — — — — — — — — — — — — — —
4.2 — Option 2 — Scheduled REST pull
| TrustBill scope (we deliver) | Your scope (you deliver) |
|---|---|
| Build and host a Fusion REST adapter inside TrustBill that polls your Fusion instance on a 5–60 minute schedule. | Provide a Fusion REST service account with read access to Receivables (`receivablesInvoices`), Customer master, and Tax lines. |
| Handle OAuth2 / Basic auth, pagination, incremental sync (LastUpdateDate watermark), rate limits, retries, backfill of history. | Share the Fusion instance URL per environment (DEV / UAT / PROD) and whitelist our egress CIDR in your network policy. |
| Transform to PINT-AE UBL, FTA validation, ASP submission, retention — same pipeline as Options 1 and 3. | Capture buyer TRN per Customer Account and ensure it is readable via the REST surface. |
| Optional write-back: TrustBill PATCHes the FTA UUID + status back onto the AR invoice using a DFF (if you add one). If no DFF, delivered status is visible on the TrustBill dashboard only. | If write-back is enabled: add two DFFs to AR Transactions header (`TB_FTA_UUID`, `TB_FTA_STATUS`) and grant PATCH permission to the service account. |
| UAT: 20 invoices across all tax categories; 90-day historical backfill in submission-sandbox. | Nominate the UAT business owners + an IT contact who can rotate credentials. |
| Our effort: 8–12 working days. | Your effort: 5–10 working days (Fusion functional for the service account + DFFs + IT for network + UAT). |
— — — — — — — — — — — — — — — — — — — — — — — — — — —
4.3 — Option 3 — Advanced event-driven push
| TrustBill scope (we deliver) | Your scope (you deliver) |
|---|---|
| Partner API endpoints (already live): `POST /v1/partner/invoices`, `/invoices/bulk`, `/invoices/:id/retry`, `/invoices/:id/replay-webhook`, `/invoices/:id/webhook-deliveries`, `/customers`, `/validate-trn`, `/whoami`, `/ping`. OpenAPI 3.1 + Postman collection published. | Build the OIC outbound integration: subscribe to the standard AR 'Transaction Complete' business event via the Oracle ERP Cloud Adapter, enrich with buyer + tax + legal entity, POST to the Partner API with an `Idempotency-Key`. |
| Dual-layer auth (`X-API-Key` + `X-API-Secret` + `x-erp-partner-secret`); credentials issued per legal entity; rotate without downtime. | Build the OIC inbound integration: receive the HMAC-signed `invoice.status_changed` webhook, verify `X-Webhook-Signature` with the 300-second staleness check, write the FTA UUID + status back to the AR invoice DFFs. |
| PINT-AE UBL transform, FTA schematron + UAE business rules, Peppol AS4 transmission via FTA-accredited ASP, signed UBL + PDF/A-3 stored in UAE me-central-1. | Enable AR invoice business events in Setup and Maintenance for every BU in scope. Provide a screenshot or export of 'Manage Event Subscriptions' confirming activation. |
| HMAC-signed status webhook with retry 30s → 2m → 10m → 30m → 1h → 3h; manual replay endpoint; delivery receipts in the dashboard. | Add two DFFs to AR Transactions header: `TB_FTA_UUID` (string, 64) and `TB_FTA_STATUS` (string, 32). Deploy to DEV / UAT / PROD. Expose both on the Transaction form. |
| SLA: 99.9% Partner API, 99.5% ASP leg. Status page + P1 war-room channel. 30 days of hypercare post go-live. | Open outbound 443/TCP from OIC runtime to `api.trustbill.ae` and inbound 443/TCP from the TrustBill egress CIDR we provide to your OIC inbound endpoint. TLS 1.2+ only. |
| UAT playbook: 20 synthetic invoices across all tax categories + 2 reserved test TRNs (`100000000000000` always accepts and fires a real webhook; `100000000000666` always rejects). | Create an OIC service account with the Fusion duty roles to read AR invoices, customer master and tax lines, plus write access to the two DFFs. Nominate one enterprise architect, one Fusion functional lead for AR + Tax, and one OIC developer. |
| Our effort: 5–8 working days (solution consulting, OIC flow review, UAT, hypercare). Partner API is already built — nothing new on our side. | Your effort: 15–25 working days total (OIC outbound 5–8 d + OIC inbound 3–5 d + DFFs 1 d + service account 1 d + firewall 1 d + UAT 2–3 d + change-management windows 2–6 d). |
4.4 — Explicitly out of scope (applies to all three options)
| Out of scope item | Why | Who covers it instead |
|---|---|---|
| Accounts Payable / purchase invoices | FTA Phase 1 is sales-side; purchase side is a separate workstream. | Scoped as a Phase 2 engagement under a new SOW. |
| GL, HR, master-data flows | Not required for e-invoicing compliance. | No change — remains in Fusion as today. |
| Changes to Fusion standard screens or Oracle customisations | We stay inside DFFs; no form personalisation that would conflict with Oracle quarterly updates. | Not required. |
| Fusion patches, upgrades, or quarterly release testing | Owned by your Oracle Managed Services or in-house team. | Your Oracle operations team. |
| EmaraTax or FTA account registration | Taxpayer legal act — must be done by an authorised representative of your organisation. | Your tax agent (TrustBill guides but cannot sign). |
| VAT 201 filing | Separate FTA service. | Your tax agent; TrustBill's dashboard produces a VAT 201 draft to simplify the filing. |
5. Prerequisites checklist
Have the following ready before kick-off. Anything missing on this list typically shifts the go-live date by one week per item.
- Oracle Fusion Cloud ERP: supported releases are 24A and later. 23D is supported until July 2026.
- Oracle Integration Cloud (OIC Gen 2 or OIC Gen 3) — Standard edition is enough.
- A named enterprise architect from your side, empowered to approve API design decisions in a single meeting.
- A named Fusion functional lead for AR + Tax.
- A named OIC developer who can deploy to DEV, UAT and PROD under your release train.
- A signed Statement of Work scoping AR / sales invoices only.
- UAE TRN per legal entity in scope, matched to Fusion BUs.
- DEV, UAT and PROD environments all accessible from OIC (not blocked by SSO-only rules).
- Firewall change tickets raised for outbound to `api.trustbill.ae` and inbound from the TrustBill egress CIDR we provide.
- A business sign-off from your Finance / Tax director that AR invoices can be transmitted to the FTA from go-live.
6. Authentication model
The Partner API uses a two-layer authentication scheme. The first layer is the standard partner credential, which proves to TrustBill that the caller is a known ERP integrator. The second layer is a per-SME secret, which proves that this specific push belongs to the specific legal entity whose invoice is being issued. Both must be present on every write.
| Header | Purpose | Rotation |
|---|---|---|
| X-API-Key | Identifies your organisation as a TrustBill partner. Public identifier. | On demand via the TrustBill partner portal. No downtime; dual-key window. |
| X-API-Secret | Secret pairing to X-API-Key. Treated as a credential; never log it. | On demand; dual-secret window of 24 hours. |
| x-erp-partner-secret | Per-tenant secret bound to one SME legal entity. Issued when the SME clicks Connect in TrustBill and pastes the value into your OIC lookup. | On demand per tenant. Required to prevent cross-tenant mis-routing. |
| Idempotency-Key | Any string, 1–128 chars, unique per logical write within 24h. Required on all POSTs. | n/a — client-chosen. |
7. Payload — what OIC sends to TrustBill
A minimal AR tax invoice payload looks like this. The full schema is published at `https://api.trustbill.ae/v1/partner/openapi.json` and covers simplified invoices, commercial invoices, credit notes and debit notes under the same shape.
POST /v1/partner/invoices HTTP/1.1
Host: api.trustbill.ae
Content-Type: application/json
X-API-Key: tbp_live_7f3c…
X-API-Secret: tbs_live_••••••••
x-erp-partner-secret: ers_live_••••••••
Idempotency-Key: fusion-inv-2026-10-16-00042
{
"documentType": "tax_invoice",
"externalRef": "INV-2026-00042",
"issueDate": "2026-10-16",
"dueDate": "2026-11-15",
"currency": "AED",
"seller": {
"trn": "100123456700003",
"legalName": "Acme Trading L.L.C",
"address": { "country": "AE", "emirate": "Dubai", "line1": "Office 902, Boulevard Plaza T1" }
},
"buyer": {
"trn": "100987654300003",
"legalName": "Beta Distribution F.Z.E",
"address": { "country": "AE", "emirate": "Sharjah", "line1": "SAIF Zone, Q1-05" }
},
"lines": [
{
"sku": "ACME-SKU-001",
"description": "Industrial pump, model X9",
"quantity": 2,
"unitPrice": 1500.00,
"taxCategory": "S",
"taxRate": 5
}
],
"totals": {
"netAmount": 3000.00,
"taxAmount": 150.00,
"grossAmount": 3150.00
},
"indicators": {
"freeZone": false,
"reverseCharge": false,
"marginScheme": false,
"export": false
}
}On success you receive a `202 Accepted` with an envelope containing the TrustBill invoice ID, the normalised document hash and `status: "queued"`. The webhook is the authoritative delivery channel for the final FTA clearance.
8. Fusion ↔ TrustBill field mapping
The OIC flow is where this mapping lives. Use the table as the acceptance criterion for the OIC build — once every row is wired, you are 95% of the way through functional UAT.
| TrustBill field | Fusion source | Notes |
|---|---|---|
| externalRef | RA_CUSTOMER_TRX.TRX_NUMBER | Must be unique per TRN. |
| issueDate | RA_CUSTOMER_TRX.TRX_DATE | Date-only; UAE timezone. |
| dueDate | RA_CUSTOMER_TRX.TERM_DUE_DATE | Falls back to issueDate when NULL. |
| currency | RA_CUSTOMER_TRX.INVOICE_CURRENCY_CODE | ISO 4217; AED default. |
| seller.trn | Legal entity TRN (DFF or XLE_ENTITY_PROFILES extension) | 15 digits; mapped per BU. |
| seller.legalName | XLE_ENTITY_PROFILES.NAME | |
| buyer.trn | HZ_CUST_ACCOUNTS DFF `TRN` or HZ_PARTY_TAX_PROFILE.TRN | Required for B2B UAE invoices. |
| buyer.legalName | HZ_PARTIES.PARTY_NAME | Use registered legal name, not operating name. |
| lines[*].description | RA_CUSTOMER_TRX_LINES.DESCRIPTION | |
| lines[*].quantity | RA_CUSTOMER_TRX_LINES.QUANTITY_INVOICED | |
| lines[*].unitPrice | RA_CUSTOMER_TRX_LINES.UNIT_SELLING_PRICE | Exclusive of tax. |
| lines[*].taxCategory | ZX_LINES.TAX_RATE_CODE_ID → UAE tax code | S / Z / E / O / RC per PINT-AE codes. |
| lines[*].taxRate | ZX_LINES.TAX_RATE | 5, 0 or NULL for exempt. |
| totals.* | RA_CUSTOMER_TRX_LINES_GT (summed) or AR_PAYMENT_SCHEDULES_ALL | TrustBill re-verifies totals ±0.01 AED. |
| indicators.freeZone | DFF `TB_INDICATORS.FREE_ZONE` on the transaction | Set at AR screen; wired to buyer address rules. |
| indicators.reverseCharge | DFF or derived from tax code = RC |
9. Status webhooks back from TrustBill
When an invoice reaches a terminal state (`delivered` or `rejected`), TrustBill POSTs a single `invoice.status_changed` event to the webhook URL you registered in the TrustBill partner portal. Deliveries are durable, signed, and retried on a fixed schedule.
POST /your-oic-webhook-url HTTP/1.1
Content-Type: application/json
X-Webhook-Timestamp: 1760606062
X-Webhook-Signature: t=1760606062,v1=4e9c3d…hex…
{
"event": "invoice.status_changed",
"deliveredAt": "2026-10-16T09:14:22Z",
"payload": {
"event": "invoice.status_changed",
"invoiceId": "inv_01HZ…",
"externalRef": "INV-2026-00042",
"status": "delivered",
"ftaUuid": "f1b8c7e2-9d4a-4b11-9c38-7c7a3a9c0e8b",
"deliveredAt": "2026-10-16T09:14:19Z",
"assets": {
"signedUbl": "https://api.trustbill.ae/…/signed.xml",
"pdfA3": "https://api.trustbill.ae/…/invoice.pdf"
}
}
}- `status: "delivered"` — the invoice has been delivered to the FTA; `ftaUuid` is the official UUID to store on the Fusion invoice and to print on the PDF.
- `status: "rejected"` — the FTA (or pre-submit validation) rejected it. The payload carries the error code and a human-readable reason. The invoice stays as `rejected` in TrustBill; a corrected re-submission is a new logical invoice (same `externalRef` with an incremented sub-sequence) or a credit note.
Signature verification is mandatory. Your OIC inbound flow must do these four checks before trusting the payload:
- Read `X-Webhook-Timestamp` and parse the `v1=<hex>` value out of `X-Webhook-Signature`.
- Reject if `|now − t| > 300 seconds` — this blocks replay attacks.
- Compute `hmac_sha256(webhook_secret, `${t}.${raw_body}`)` and constant-time compare to `v1`.
- Only after both checks pass, parse the JSON body and update the Fusion AR invoice DFFs.
Retry schedule on any non-2xx or transport failure: 30s → 2m → 10m → 30m → 1h → 3h. After the 6th attempt the delivery is marked `exhausted`. The invoice itself in TrustBill is unaffected: you can `GET /v1/partner/invoices/:id` at any time or fire a fresh attempt with `POST /v1/partner/invoices/:id/replay-webhook`.
10. Error handling
All error responses are RFC 7807 problem documents (`application/problem+json`). Your OIC flow should branch on the stable `type` slug — not on the human `title` or the HTTP status alone. These are the error types you will actually see from the Partner API:
| type (stable) | HTTP | Meaning | OIC action |
|---|---|---|---|
| invalid_body | 400 | The payload has a schema or business-rule issue (`detail` lists the fields). | Fail fast; raise an incident on the Fusion invoice; do not retry. |
| idempotency_required | 400 | No `Idempotency-Key` header on a POST, or the key is empty / longer than 128 chars. | Fix the OIC flow; this should never reach PROD after UAT. |
| missing_api_credentials | 401 | No `X-API-Key` / `X-API-Secret` headers. | Alert; check OIC connection configuration. Do not retry. |
| invalid_api_credentials | 401 | Partner key/secret pair rejected. | Alert — a credential has been rotated or revoked. Rotate on your side; do NOT retry blindly. |
| missing_connection_credential | 401 | No `x-erp-partner-secret` header on an endpoint that requires it. | Fix OIC lookup; the SME-level secret must be attached per BU. |
| invalid_connection_credential | 401 | The `x-erp-partner-secret` does not resolve to an active SME connection. | The SME has disconnected or rotated the secret. Alert the TrustBill partner manager. |
| connection_partner_mismatch | 403 | The `x-erp-partner-secret` belongs to a different partner than the API credentials. | Fatal mapping bug — stop and page. |
| sme_not_connected | 403 | The SME has not completed the Connect flow in TrustBill yet. | Pause pushes for that BU; notify the SME to finish Connect. |
| trn_mismatch | 403 | The TRN in the body does not match the SME resolved from `x-erp-partner-secret`. | Fatal mapping bug — stop and page. |
| erp_partner_revoked | 403 | TrustBill admin has suspended your partner credential set. | Contact TrustBill partner support. Do not retry. |
| not_live_yet | 422 | The SME is still in test or sandbox mode and this payload would require live-mode routing. | Expected during UAT; flip the SME to live when ready. |
11. Environments and cut-over plan
A healthy Fusion ↔ TrustBill rollout runs through four environments, matched on both sides. Each move forward requires a signed sign-off from the equivalent-tier owner.
| Fusion | TrustBill | Purpose | Who signs off |
|---|---|---|---|
| DEV | Sandbox | OIC flow development; no real FTA submission. | OIC lead |
| TEST | Submission-sandbox | Full end-to-end against the FTA sandbox; UAT scenarios run here. | Finance + Tax leads |
| UAT | Submission-sandbox | User acceptance by business owners; last chance to catch mapping gaps. | Head of Finance |
| PROD | Live | Real FTA clearance. | CFO or delegated authority (one-time). |
- Week 1 — Kick-off, SOW signed, DFFs deployed to DEV/TEST/UAT, Partner credentials issued.
- Week 2 — OIC flow built, 10 synthetic invoices across all tax categories in sandbox.
- Week 3 — Historical sync of the previous 90 days via `POST /v1/partner/invoices/bulk` (dry-run against submission-sandbox).
- Week 4 — UAT with real business owners, 50-invoice daily cadence in submission-sandbox.
- Week 5 — PROD cut-over at a quiet window (we recommend Thursday 20:00 GST). First 48h at 50% invoice routing with manual spot checks.
- Weeks 6–10 — Hypercare at 100% routing; weekly ops review; close-out of the SOW on week 10.
| Reserved TRN | Behaviour | Use case |
|---|---|---|
| 100000000000000 | Always accepts. Skips validation and ASP delivery, moves `draft → delivered` synchronously, fires a real HMAC webhook within ~5s. | Smoke-test the OIC inbound (webhook receive) flow end-to-end without needing a real buyer. |
| 100000000000666 | Always rejects with `403 test_trn_reject`. | Exercise your `status: "rejected"` branch and AR team incident flow. |
Frequently asked questions
Does TrustBill install anything inside our Fusion tenancy?
No. We stay outside Oracle Fusion. The only Fusion-side changes are two DFFs (TB_FTA_UUID, TB_FTA_STATUS), a service-account role, and the OIC integration your team builds. All transformation and FTA logic runs in TrustBill.
Can we start with Option 2 (scheduled pull) and move to Option 3 later?
Yes. The Partner API is the same; only the trigger side differs. We regularly see customers go live on Option 2 in week 4, then upgrade to Option 3 after a quarter when the OIC team has capacity.
What happens if the FTA rejects an invoice?
The webhook event is `invoice.rejected` with the FTA error code and a human reason. The invoice stays in TrustBill as rejected; your AR team issues a corrected invoice (same externalRef, incremented sub-sequence) or a credit note. We never silently resubmit.
How do you handle multi-TRN Fusion customers?
One `x-erp-partner-secret` per legal entity; one row per BU in the mapping spreadsheet. The OIC flow picks the right secret based on the invoice's selling BU. Cross-TRN pushes are rejected by the Partner API as a defence-in-depth check.
Where is our invoice data stored?
Signed UBL copies and PDF/A-3 copies are stored in AWS me-central-1 (UAE Dubai region) for the full FTA retention window. No invoice data leaves the UAE.
Can we use TrustBill alongside Oracle Managed Services?
Yes. Our SOW stays strictly to AR / sales invoices. We coordinate with your Oracle MSP on quarterly release windows via the change-management calendar we share on week 1.
What if we are on Oracle EBS or NetSuite instead of Fusion?
The same Partner API applies. For EBS the trigger is usually a concurrent program + BPEL, and for NetSuite a SuiteScript 2.x user event. See /documentation/oracle for the detailed guides.
Related reading
Oracle integration pillar page
Short overview of all Oracle products TrustBill supports.
Oracle technical documentation
Deep technical pages covering NetSuite, Fusion, EBS and JD Edwards.
ERP Partner API reference
The REST surface this guide calls into — auth, endpoints, errors, webhooks.
ERP integration pricing
Fees, timelines, onsite rates and partner discounts across every supported ERP.
