Skip to main content
This quick guide walks through the steps to implement Accounting Enrichment. For parameter definitions, status descriptions, and API versions, see the Enrichment API Overview.

Prerequisites

Your integration must be authenticated with the accounting-entries:write scope. See Accounting Enrichment API Scopes.

Workflow Overview

StepWhat happens
1. Build the enrichment payloadGather transaction details and encode the receipt as Base64
2. Submit the enrichment requestCall the v2 enrichment endpoint
3. Handle the responseAct on the receipt status returned by Pleo

Step 1: Build the Enrichment Payload

Gather the required transaction details and encode the receipt file as Base64. For the full list of required and optional parameters, see Request Parameters. Supported receipt formats: PDF, PNG, JPEG, HEIC. The encoded string is submitted in the receipts array in the request body.

Step 2: Submit the Enrichment Request

Endpoint: POST /v2/accounting-entries:enrich Submit transaction details as query parameters and the encoded receipt in the request body:
{
  "receipts": ["<base64-encoded-receipt>"]
}

Step 3: Handle the Response

Pleo returns a receiptStatus with every response. For status definitions, see Receipt Statuses.
  • UPLOADED: Enrichment is complete. Store the accountingEntryId for reference.
  • ACCEPTED: Pleo is retrying asynchronously. No action required; retrying will create duplicate receipts.
  • ADDED_TO_RECEIPT_INBOX: Pleo could not make a reliable match. The receipt is placed in the spender’s Pleo Receipt Inbox, accessible on mobile, for manual matching. Retry if within your retry window, otherwise stop.
  • UNRESOLVED: The request could not be processed. Investigate the transaction details and do not retry with the same payload.

Applying Tags (Optional)

Tags apply Accounting Dimensions (Pleo Tags) to the matched accounting entry at enrichment time. For full details on how tags work, see Tags Sync. Include validated Pleo Tag UUIDs in the request body alongside the receipt:
{
  "receipts": ["<base64-encoded-receipt>"],
  "tags": ["<tag-uuid>"]
}
Before submitting with tags:
  1. Retrieve tag IDs from your Tags Sync implementation: do not use hardcoded IDs.
  2. Confirm each tag ID is present and not archived in your most recent synced snapshot.
  3. If any ID cannot be validated, re-fetch from the Pleo Tags API and remap where possible.
  4. If valid IDs cannot be resolved, omit the tags field and submit the receipt only.
Never submit with invalid tag IDs. Pleo validates all submitted tag IDs before processing: if any ID is invalid, the entire request is rejected with UNRESOLVED and the receipt will not be attached to any accounting entry.
If Pleo rejects a tag, re-fetch tags, remap where possible, and resubmit. If valid IDs cannot be resolved, resubmit without the tags field.