---
title: "Create receipt"
method: POST
path: "/v1/platform/businesses/{business_id}/receipts/"
tags: ["Receipts"]
---

# Create receipt

`POST /v1/platform/businesses/{business_id}/receipts/`

## Request

- Base URL: `https://docs.thredfi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.thredfi.com/v1/platform/businesses/{business_id}/receipts/`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP basic
  - HTTP bearer
  - HTTP bearer

Create a new receipt for a business. Supports idempotency via external_id.

## Path parameters

- `business_id` string, required

## Request body

- ReceiptCreateAPIRequest: Receipt creation serializer. Creates a Receipt with vendor. Supports document upload via 'document' field.
  - `external_id` string
  - `vendor_id` string, uuid, nullable
  - `receipt_date` string, date, required
  - `total_amount_cents` integer, required: Total amount in cents
  - `receipt_number` string
  - `description` string
  - `payment_method` 'cash' | 'credit_card' | 'debit_card' | 'bank_transfer' | 'check' | 'other' | '' | 'null', nullable: * `cash` - Cash * `credit_card` - Credit Card * `debit_card` - Debit Card * `bank_transfer` - Bank Transfer * `check` - Check * `other` - Other
  - `currency` 'EUR' | 'GBP' | 'USD' | 'SEK' | 'NOK' | 'DKK' | 'ISK' | 'MYR' | 'SGD' | '': * `EUR` - Euro * `GBP` - British Pound * `USD` - US Dollar * `SEK` - Swedish Krona * `NOK` - Norwegian Krone * `DKK` - Danish Krone * `ISK` - Icelandic Króna * `MYR` - Malaysian Ringgit * `SGD` - Singapore Dollar
  - `metadata` unknown
  - `document` ReceiptDocumentUploadRequest: Receipt specific document upload payload.
    - `file` string, binary
    - `document_type` string
    - `upload_source` string
    - `metadata` unknown
    - `tags` unknown

## Response `201`

- Receipt: Main receipt serializer for list/fetch responses, aligned with Bill API style
  - `type` string, required
  - `id` string, uuid, required
  - `business_id` string, uuid, required
  - `external_id` string
  - `receipt_number` string
  - `receipt_date` string, date-time, required
  - `description` string
  - `payment_method` string
  - `metadata` unknown
  - `currency` string, required
  - `vendor` Vendor, required: Serializer for vendor objects returned by the vendors list endpoint
    - `type` string, required: Resource type (always 'VendorData')
    - `id` string, uuid, required: Unique vendor identifier
    - `external_id` string: Your unique identifier for this vendor (used for idempotency)
    - `individual_name` string: Vendor individual name (for sole traders/freelancers)
    - `company_name` string: Registered company name (for limited companies)
    - `email` string, email: Primary email address for vendor communications
    - `mobile_phone` string, required: Mobile phone number (E.164 format, e.g., +44 7700 900123)
    - `office_phone` string, required: Office phone number (E.164 format, e.g., +44 20 7946 0958)
    - `address_string` string, required: Full formatted address (read-only, auto-generated)
    - `memo` string, required: Internal notes or description for this vendor
    - `status` string, required: Vendor status (ACTIVE, INACTIVE, ARCHIVED, BLOCKED)
    - `transaction_tags` unknown[], required: List of tags for categorization
      - unknown
    - `documents` DocumentFileUrl[], required: All documents linked to this vendor with presigned URLs
      - `url` string, uri, required: Presigned URL for document download
      - `expires_in` integer, required: Seconds until URL expires
      - `document_id` string, uuid, required: Document UUID
      - `file_name` string, required: Original document filename
      - `file_size` integer, required: File size in bytes
      - `mime_type` string, required: MIME type of the document
  - `document` DocumentFileUrl, required: Serializer for document file URL with metadata.
    - `url` string, uri, required: Presigned URL for document download
    - `expires_in` integer, required: Seconds until URL expires
    - `document_id` string, uuid, required: Document UUID
    - `file_name` string, required: Original document filename
    - `file_size` integer, required: File size in bytes
    - `mime_type` string, required: MIME type of the document
  - `total_amount` integer, required: Total receipt amount in cents
  - `reconciled_bank_transactions` EntityReconciliationDetail[], required: Bank transactions this receipt is reconciled to
    - `payment_type` string
    - `bank_transaction_id` string, uuid, required
    - `bank_transaction_date` string, date-time, required
    - `bank_transaction_amount_cents` integer, required
    - `bank_transaction_direction` string, required
    - `reconciled_amount_cents` integer, required
    - `reconciliation_link_id` string, uuid, required
    - `reconciled_at` string, date-time, required
    - `currency` string, required
    - `bank_account_name` string
    - `notes` string
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: Validation errors in request data
- `401`: Authentication required - missing or invalid API key
- `403`: Permission denied - insufficient privileges
- `404`: Resource not found
- `409`: Conflict - resource already exists or invalid state transition
- `422`: Unprocessable entity - business logic validation failed
- `500`: Internal server error

---

[API](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api.md) - [All operations](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api/revisions/0c1918254db3?raw)
