---
title: "Upload Tax Exempt Cert"
method: POST
path: "/api/v1/business-profile/tax-exempt-cert"
tags: ["business-profiles"]
---

# Upload Tax Exempt Cert

`POST /api/v1/business-profile/tax-exempt-cert`

Stream a tax-exempt certificate to R2 (firewall-safe upload proxy).

Replaces the browser's direct PUT to ``*.r2.cloudflarestorage.com``.
The client POSTs the file as ``multipart/form-data``; the API streams
it straight to R2 and returns the ``r2_key``. After uploading, the
user should PATCH ``/business-profile`` with ``tax_exempt_cert_r2_key``
set to the returned ``r2_key`` to associate the certificate with their
profile.

Authorization: the user must already have a business profile. The
file is written to a key namespaced under the user's id — the client
cannot choose an arbitrary key.

## Response `200`

Successful Response

- TaxExemptCertUploadResponse — Response from the tax-exempt-cert upload proxy endpoint. Carries the R2 key the streamed file was written to. The client passes it back as ``tax_exempt_cert_r2_key`` on a subsequent ``PATCH /business-profile`` call to associate the certificate with the profile.
  - `r2_key` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/prototyping/apis/prototyping-io-api.md) · [All operations](https://skmtc.dev/prototyping/apis/prototyping-io-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/prototyping/prototyping-io-api/revisions/f4a0079fbb57/schema)
