- Export Items are fetched
- Pre-validation has passed
- Accounts Mapping has been resolved
Implementation
See the corresponding how-to article for API usage and step-by-step instructions:Mapping Order (Implementation Flow)
Integrations should apply mappings in the following order:- Mandatory datapoints (always required)
- Invoice datapoints (invoice-related items only)
- Optional datapoints (system-dependent)
- Apply VAT handling rules
Mandatory Datapoints
Mandatory datapoints represent the minimum information required for reconciliation and accounting accuracy.Required Data
- Expense GL Account (Category)
- Expense amount (wallet currency, derived from line amounts)
- Accounting Dimensions (Tags)
- Tax Code
- Expense Date
- Reconciliation ID
- Reconciled Entries (reimbursements)
- Consolidated Description
- Vendor (Accounts Payable only)
- Attendees Information
Mandatory Datapoint Mapping (Pleo → AS)
Entry-Level Mapping
| Accounting Concept | Pleo API Field | Notes |
|---|---|---|
| Expense Date | data[].date | Transaction date |
| Reconciliation ID | data[].additionalInformation.reconciliationId | Map to external reference or description field (≥50 chars) |
| Reconciled Entries | data[].additionalInformation.reconciledEntries | Used for reimbursement linking; map to reference/description field (≥50 chars) |
| Attendees | data[].additionalInformation.attendees | Map to description/comment field (≥100 chars) |
| Description / Note | data[].supplier.name + data[].user.name + data[].note | Concatenated description (use initials if length constrained) |
Accounts Payable Only (Entry-Level)
| Accounting Concept | Pleo API Field | Notes |
|---|---|---|
| Vendor Name | data[].vendor.name | Required for accounts_payable |
| Vendor Code | data[].vendor.code | Used for vendor matching in AS |
Line-Level Mapping
| Accounting Concept | Pleo API Field | Notes |
|---|---|---|
| Expense GL Account | data[].accountingEntryLines[].account.code | Expense/category account |
| Expense Amount (Wallet, per line) | data[].accountingEntryLines[].lineAmount.inWalletCurrency.value | Sum lines if AS requires total |
| Currency Code | data[].accountingEntryLines[].lineAmount.inWalletCurrency.currency | |
| Dimension | data[].accountingEntryLines[].tags.groupCode | e.g. Project, Cost Center |
| Dimension Value | data[].accountingEntryLines[].tags.code | |
| Tax Code | data[].accountingEntryLines[].tax.code | |
| Tax Rate | data[].accountingEntryLines[].tax.rate | Only if required (usually derived from Tax Code in AS) |
Invoice Datapoint Mapping
Invoice datapoints extend mandatory mappings with supplier invoice information.Rules
invoice→ use Supplier currencyinvoice_payment→ use Wallet currency- Provide exchange rate if required by the Accounting System
| Accounting Concept | Pleo API Field | Notes |
|---|---|---|
| Invoice Due Date | data[].additionalInformation.invoiceInformation.dueDate | Dedicated due date field |
| Invoice Date | data[].additionalInformation.invoiceInformation.invoiceDate | |
| Invoice Number | data[].additionalInformation.invoiceInformation.invoiceNumber | |
| Payment Date | data[].additionalInformation.invoiceInformation.paymentDate | For payment entries |
| Supplier Amount | data[].accountingEntryLines[].lineAmount.inSupplierCurrency.value | Line-level |
| Supplier Currency | data[].accountingEntryLines[].lineAmount.inSupplierCurrency.currency | Use AS foreign currency field |
Optional Datapoints
Optional datapoints improve reporting but must never replace mandatory data.Examples
- Internal document number
- Net and tax amounts
- Team dimensions
- Export job date
Optional Datapoint Mapping
| Accounting Concept | Pleo API Field | Notes |
|---|---|---|
| Net Amount | data[].accountingEntryLines[].netAmount.inWalletCurrency.value | Only if AS requires net values for tax calculation |
| Net Currency | data[].accountingEntryLines[].netAmount.inWalletCurrency.currency | |
| Tax Amount | data[].accountingEntryLines[].tax.amount.inWalletCurrency.value | Only if AS cannot calculate VAT |
| Tax Currency | data[].accountingEntryLines[].tax.amount.inWalletCurrency.currency | |
| Team (Dimension) | data[].team.code | Map to configured dimension value |
| Internal Document Number | (AS generated) | Do not overwrite; allow AS to assign |
| Export Date | (integration-defined) | Use instead of expense date when posting aggregated entries |
VAT Handling
VAT handling depends on Accounting System capabilities.Default Behaviour
The Accounting System calculates VAT using:- line amounts
- tax codes
When to Send VAT Amounts
Only send VAT values if the Accounting System:- cannot calculate tax automatically, or
- requires explicit VAT posting
- If AS calculates VAT → do NOT send VAT amount
- If AS cannot calculate VAT → send VAT from Pleo
Upstream Dependencies
- Export Job has been claimed (status = in_progress)
- Fetch Export Item Data (data layer)
- Bookkeeping method resolved
- Accounts Mapping – determines which GL accounts are debited and credited
Downstream Dependencies
- Attachment Handling – links receipts and supporting documentation
- Accounting Periods – assigns entries to the correct accounting period
- Posting Behaviour – determines whether entries are created as drafts or finalised
- Export Item status update – updates outcome of Export Item (
successfulorfailed) - Export Job status update – updates outcome of Export Job (
completed,completed_with_errorsorfailed)