{
  "schemaVersion": "1.0.0",
  "mode": "source_feed_mapping_profiles",
  "postingEnabled": false,
  "profiles": {
    "SAP_S4HANA": {
      "target": "Journal Entry - Post (Synchronous/Asynchronous), SOAP; choose the API supported by your SAP edition",
      "sourceMappings": {
        "data.issue_date": "JournalEntry.DocumentDate (invoice records)",
        "data.currency": "Item.AmountInTransactionCurrency currencyCode attribute",
        "data.face_value": "Source invoice gross amount; derive approved ledger lines, net/tax amounts and debit/credit signs externally",
        "recordKey": "Connector source-reference crosswalk; respect target field lengths",
        "data.buyer_organization_id": "External mapping to SAP business partner; Settavio UUID is not a SAP ID",
        "data.source_updated_at": "Connector reconciliation checkpoint",
        "data.invoice_accounting.details.lineItems": "Source invoice net and tax line evidence; transform using target GL, business-partner and tax mappings",
        "data.invoice_accounting.status": "Must be complete before an invoice is eligible for connector posting; still validate target configuration and posting policy"
      },
      "requiredExternalConfiguration": [
        "SAP endpoint and communication arrangement",
        "CompanyCode",
        "PostingDate and open posting period",
        "AccountingDocumentType and BusinessTransactionType",
        "GLAccount and customer/vendor business-partner mappings",
        "Balanced Item/DebtorItem/CreditorItem entries as applicable",
        "Tax codes and net/tax breakdown where required",
        "Cost/profit centers and other account-assignment requirements",
        "Document-reference and reversal policy"
      ],
      "documentation": [
        "https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/3ab6e6fc510f4840a5508e126ef01e22/92fed0579212c525e10000000a4450e5.html",
        "https://api.sap.com/api/JOURNALENTRYCREATEREQUESTCONFI/overview"
      ]
    },
    "QuickBooks_Online": {
      "target": "Accounting API invoices/bills/payments/journal entries as appropriate",
      "sourceMappings": {
        "data.invoice_number": "DocNumber",
        "data.issue_date": "TxnDate",
        "data.due_date": "DueDate",
        "data.currency": "CurrencyRef via target mapping",
        "data.buyer_organization_id": "CustomerRef.value via master-data crosswalk",
        "data.face_value": "Reconcile Line amounts; not a complete Invoice payload"
      },
      "requiredExternalConfiguration": [
        "Realm/company ID and OAuth credentials",
        "Customer/Vendor IDs",
        "Item/Account and tax mappings",
        "Line details and target transaction type",
        "Target source-ID and revision crosswalk"
      ],
      "documentation": [
        "https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice"
      ]
    },
    "Xero": {
      "target": "Accounting API invoices/payments/journals as appropriate",
      "sourceMappings": {
        "data.invoice_number": "InvoiceNumber",
        "data.issue_date": "Date",
        "data.due_date": "DueDate",
        "data.currency": "CurrencyCode",
        "data.buyer_organization_id": "Contact.ContactID via master-data crosswalk",
        "data.face_value": "Reconcile LineItems and Total"
      },
      "requiredExternalConfiguration": [
        "Tenant ID and OAuth credentials",
        "ACCREC/ACCPAY transaction choice",
        "Contact IDs",
        "AccountCode and TaxType mappings",
        "LineItems, tax treatment and target status",
        "Target source-ID and revision crosswalk"
      ],
      "documentation": [
        "https://developer.xero.com/documentation/api/accounting/invoices"
      ]
    },
    "NetSuite": {
      "target": "SuiteTalk REST Record API invoice/vendorBill/journalEntry as appropriate",
      "sourceMappings": {
        "data.invoice_number": "tranId subject to tenant numbering policy",
        "data.issue_date": "tranDate",
        "data.buyer_organization_id": "entity.id via target master-data mapping",
        "data.currency": "currency via target currency-ID mapping",
        "recordKey": "External crosswalk or externalId when supported"
      },
      "requiredExternalConfiguration": [
        "Account URL and target authentication",
        "Entity and subsidiary IDs",
        "Posting period, location and item/account mappings",
        "Tax and line details",
        "Target source-ID and revision crosswalk"
      ],
      "documentation": [
        "https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_0209125602.html"
      ]
    },
    "Dynamics_365_Business_Central": {
      "target": "API v2.0 salesInvoices/purchaseInvoices and appropriate journal/payment APIs",
      "sourceMappings": {
        "data.issue_date": "invoiceDate",
        "data.due_date": "dueDate",
        "data.currency": "currencyCode",
        "data.buyer_organization_id": "customerId via target master-data mapping",
        "data.face_value": "Reconcile salesInvoiceLines and totals"
      },
      "requiredExternalConfiguration": [
        "Tenant/environment/company IDs and OAuth credentials",
        "Customer/vendor and item/account IDs",
        "Tax, dimension and line mappings",
        "Target source-ID and revision crosswalk"
      ],
      "documentation": [
        "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/resources/dynamics_salesinvoice"
      ]
    }
  },
  "connectorRules": [
    "Use existing authenticated organization access; no new credentials are generated by this update.",
    "Persist target document IDs mapped to recordKey; compare revision before posting again.",
    "Use all pages until hasMore=false; keep the cursor parameters and cutoff unchanged.",
    "For incremental polling overlap time windows so late updates are reconciled; the feed is a current-record projection, not an immutable event stream.",
    "Do not post test records to a live ledger. not_marked_test does not prove production payment enablement.",
    "Do not sum internal wallet movements, root funding, fee legs and payouts as independent cash receipts.",
    "Invoices and planned bills are not proof of settled cash; handle returns/reversals explicitly.",
    "invoice_accounting.details supplies extracted addresses, business tax identifiers, line items and totals when reviewed. Legacy or incomplete records remain flagged; reject incomplete invoices for automatic posting. Balanced journals and target account/tax codes still require external approved mappings.",
    "Validate payloads against the exact target API edition and test in its sandbox before enabling posting."
  ]
}
