---
title: "An export (CSV text) → fill rows for its form: one 2307 per supplier per quarter (amounts summed month by month, in centavos), one 2316 per employee. Values only — send `row` to /engine/batch/<form_id>."
method: POST
path: "/api/v1/accounting-sources/{id}/rows"
tags: ["Automation"]
---

# An export (CSV text) → fill rows for its form: one 2307 per supplier per quarter (amounts summed month by month, in centavos), one 2316 per employee. Values only — send \`row\` to /engine/batch/<form_id>.

`POST /api/v1/accounting-sources/{id}/rows`

## Request

- Base URL: `https://philforms.com`
- URL: `https://philforms.com/api/v1/accounting-sources/{id}/rows`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- object
  - `csv` string, required
  - `lookup_csv` string: The second export keyed by name (Xero contacts, QuickBooks Vendor Contact List) for TINs and addresses
  - `quarter` string: YYYY-Q1 … YYYY-Q4 (2307 sources)
  - `rate` number: Withholding rate as a fraction (0.10) — computes tax_withheld
  - `atc` string
  - `constant` object: Values on every row (the payor / employer)

## Response `200`

{ form_id, source, header, row: [...], skipped: [{ line, reason, is_warning? }] }

## Other responses

- `400`: Not this export (the documented columns are named), or a bad quarter / rate
- `404`: No such source

---

[API](https://skmtc.dev/philforms/apis/philforms-api.md) · [All operations](https://skmtc.dev/philforms/apis/philforms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/philforms/apis/philforms-api/revisions/a43bf313729c?raw)
