Estimated taxes
4 operations. All areas
- GET /v1/estimated-taxes
- POST /v1/estimated-taxes/plan
- POST /v1/estimated-taxes/payments
- POST /v1/estimated-taxes/payments/{id}/void
GET/v1/estimated-taxes
A planning estimate of the year's federal estimated tax (not tax advice; the accountant confirms): the plan's inputs, the income from the books, every worksheet line with its math (Form 1040-ES for an owner, Publication 542 for a C corporation), the safe harbors, the four due dates (moved for weekends and legal holidays), the amounts per quarter, what is paid and what is left, and the saved schedule the reminders use
- Operation
getEstimatedTaxes - Scope: read
- Read
- Parameters
yearquery, integer
- Responses
200Estimate (object)- Errors
400,401,403,429,500(Error:error.type,message)
POST/v1/estimated-taxes/plan
Set the year's estimate inputs (people only: the firm or the owner) and save the schedule the worksheet gives (what reminders and the firm console use). dry_run computes without saving. Audited.
- Operation
setEstimatedTaxPlan - Scope: approve
- Write: sets a value, no Idempotency-Key needed
- Request body
yearinteger, requiredreturn_type"SCHC" | "1065" | "1120S" | "1120" Schedule C, partnership (the owner's K-1 share), S corporation (the shareholder's K-1 share) or C corporation (Form 1120). Default: the company's tax profile.income_method"annualized" | "ytd" | "manual" annualized: the books' net income for the year to date × days in the year ÷ days elapsed; ytd: the year to date as it is; manual: manual_income_centsmanual_income_centsinteger | null Integer cents, signed.adjustments_centsinteger Book-to-tax adjustments to the business income (signed), e.g. the standard mileage deduction in place of vehicle costsowner_share_ppminteger 1065/1120-S: the owner's share, parts per million (500000 = 50%)se_taxboolean Schedule C and a general partner: self-employment tax applies (never to an S corporation share)filing_status"single" | "mfj" | "mfs" | "hoh"other_income_centsinteger Integer cents, signed.wages_ss_centsinteger Integer cents (100 = $1.00).deductions_centsinteger | null Itemized deductions; null: the standard deduction for the filing statusqbi_deduction_centsinteger Integer cents (100 = $1.00).credits_centsinteger Integer cents (100 = $1.00).withholding_centsinteger Integer cents (100 = $1.00).prior_year_tax_centsinteger | null Last year's total tax (entered by the firm): the prior-year safe harborprior_year_high_agiboolean Last year's AGI was over $150,000 ($75,000 married filing separately): 110%prior_year_fullboolean Last year's return covered 12 monthslarge_corporationboolean 1120: $1 million or more taxable income in any of the 3 prior yearssafe_harbor"lower" | "current_year" | "prior_year" lower: the smaller of 90% of this year's and 100%/110% of last year'spayment_accountstring | null Where payments post: the owner's draw (an owner's estimate) or a tax account (a corporation)pay_from_accountstring | null The bank account that paysremindersboolean Email the owner and CPA before a due date with something left to payreminder_daysintegerdry_runboolean Check and preview; nothing is written
- Responses
200Saved (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/estimated-taxes/payments
Record a payment for a quarter: posted as an entry (the plan's payment account, from pay_from_account) through the normal path, or `outside_books` when it was paid from a personal account. A person's posts; an agent's becomes a proposal. dry_run previews. Audited.
- Operation
recordEstimatedTaxPayment - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
yearinteger, requiredquarterinteger, requiredpaid_onstring, required Calendar date, YYYY-MM-DD.amount_centsinteger, requiredmethod"eftps" | "direct_pay" | "irs_account" | "card" | "check" | "other", requiredconfirmationstringnotestringpayment_accountstring Account codepay_from_accountstring Account codeoutside_booksboolean Paid outside these books (a personal account): recorded, nothing posts. People only.dry_runboolean Check and preview; nothing is writtenrationalestring
- Responses
200Dry run (object)201Recorded (object)202An agent's request: a proposal a person approves (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/estimated-taxes/payments/{id}/void
Void a payment record with a reason (reverse its entry too). People only; audited.
- Operation
voidEstimatedTaxPayment - Scope: approve
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
reasonstring, required
- Responses
200Voided (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)