# Certified Mail Sender: full guide for agents > USPS Certified Mail: person-approved or trusted auto-send, with optional electronic Return Receipt. We print the letter and mail it by USPS Certified Mail, with USPS tracking and an optional electronic Return Receipt. No account and no monthly fee. Certified Mail Sender is operated by Legitimate LLC and is not affiliated with, endorsed by or sponsored by the United States Postal Service. USPS and Certified Mail are trademarks of the United States Postal Service. Short version: https://certifiedmailsender.com/llms.txt. Setup for people: https://certifiedmailsender.com/assistants. OpenAPI: https://certifiedmailsender.com/openapi.json. MCP server (Streamable HTTP, no sign-in): https://certifiedmailsender.com/mcp. ## Codex setup Add or update this block in ~/.codex/config.toml (or config.toml in CODEX_HOME): ```toml [mcp_servers.certifiedmailsender] url = "https://certifiedmailsender.com/mcp" omit_tools_from = ["deferred"] ``` Without `omit_tools_from`, Codex hides MCP tools until the agent goes looking for them, and agents often don't. Ask: “Use Certified Mail Sender to…” Some assistants keep tools out of sight until a request points at them. ## How a letter gets sent These are the instructions our MCP server sends every client when it connects: Certified Mail Sender: USPS Certified Mail. quote_letter; create_letter drafts free. Person pays at approval_url; trusted auto-send uses prepaid balance. Never pay. Share only with them. Say exactly: "This link is private. Anyone with it can read your letter and tracking. Until it goes to our printing partner, normally 30 minutes after payment, they can pay a draft, cancel or send it. Then it shows records only and changes nothing. Don't forward it; tap Open letter on its page and share that PDF instead." No account/monthly fee. Price: postage/printing + 10%. 1 page: $9.04 certified; $12.24 with electronic Return Receipt. create_letter: to/from, service, one of text/pdf_base64/pdf_url, new idempotency_key; approval_url/letter_url. The person checks letter/addresses/price/authority; auto-send pays after address confirmation, including USPS corrections. Keep letter_url whole, including t. get_letter: state/timeline/tracking/next_step; list_letters: key's letters. preview_url opens only the PDF; it cannot change the letter. If asked what to share, give preview_url. Paid letters wait 30 minutes. cancel_until: deadline; hold end, not the final cutoff; cancel_letter: full refund until submission. Only if the person asks to send right away, use send_letter_now after payment or send_now:true on create_letter. Screening must pass. Skipping leaves no guaranteed cancellation period. Errors: code/message/fix. address_undeliverable means no draft; error.address_reason: code/fields/message/partner_message/lookup_url. unit_required: ask for the apartment/suite/unit; street_number_unconfirmed: check street number; street_not_found: check street name/spelling; city_zip_mismatch: check city and ZIP. Ask the person; do not guess variants. text_has_letterhead: remove the leading address/date the error names. We add both addresses and the date; start from the greeting on. People can write or upload at https://certifiedmailsender.com/send. Not affiliated with USPS; no legal advice. If the person mentioned a deadline, compare it with the delivery estimate and tell them plainly when the estimate falls after it. ## Price USPS postage at USPS's price, printing and the envelope, and a 10% service fee. A one-page letter costs $9.04 by Certified Mail or $12.24 with an electronic Return Receipt; longer letters (up to 10 pages) cost a little more. quote_letter or POST /v1/quotes gives the exact amount; the approval page shows the total, including any sales tax, before payment. ## MCP tools Every tool returns structuredContent and a one-line text summary. A failed call returns isError with structuredContent {"error":{"code","message","fix"}}; follow the fix. address_undeliverable also carries error.address_reason with code, fields, message, partner_message and lookup_url. ### quote_letter: Quote a certified letter Get an itemized price for 1-10 pages or count a base64 PDF. Quoting is free. Unknown input fields are rejected with invalid_request; error.fix names each unknown field and the accepted fields. For a return receipt, use service certified_err. One page costs $9.04 for certified or $12.24 with an electronic Return Receipt; use quote_letter for the exact page count. Quoting never creates, pays for or mails a letter. No refund once USPS accepts the letter, even if USPS can't deliver it. Example: {"pages":1,"service":"certified"} Input: - `service` ("certified" | "certified_err"; required) - `pages` (integer; optional, 1 to 10): Page count from 1 to 10. Provide exactly one of pages or pdf_base64; omit pages when providing a PDF. - `pdf_base64` (string; optional): A base64-encoded PDF whose pages we count for the quote. Provide exactly one of pages or pdf_base64; omit pages when providing a PDF. Neither field takes precedence: sending both is rejected, even if the counts agree. Output (structuredContent): - `service` ("certified" | "certified_err"; required) - `pages` (integer; required, 1 to 10) - `line_items` (array of letter objects; required) - `total_cents` (integer; required) - `partner_cost_cents` (integer; required): Public printing-and-postage cost in USD cents. The itemized price adds a 10% service fee; total_cents is before any Stripe sales tax. - `currency` (string; required) ### create_letter: Create a certified letter draft Create a US domestic letter draft from exactly one of text, pdf_base64 or pdf_url. Creating a draft is free. Drafts cannot be edited. To change the text, an address or the service: create_letter with a new idempotency_key, give the person the new approval_url, then cancel_letter the old draft so the person cannot pay for the outdated draft. Tell the person the price from quote_letter before making the draft, unless they have already seen it. Unknown fields in the input, to or from are rejected with invalid_request; error.fix names each unknown field. Use organization for a company name, not company. For a return receipt, use service certified_err. An undeliverable address returns error.address_reason with a stable code, affected fields and USPS lookup URL; ask the person about that specific part. One page costs $9.04 for certified or $12.24 with an electronic Return Receipt; use quote_letter for the exact page count. Show approval_url to the person who will review and pay. For text, send the body from the greeting on; we add both addresses and the date. A different leading address block or date is refused with text_has_letterhead (422); remove the line named in the error. People who prefer to write or upload it themselves can use https://certifiedmailsender.com/send. Paid letters wait 30 minutes; send_now:true skips that hold only when the person asks. Screening still applies. Normally the person approves and pays; an auto-send key pays from its account balance. No refund once USPS accepts the letter, even if USPS can't deliver it. Test mode never mails. Example: {"to":{"name":"Jordan Lee","line1":"500 Market St","line2":"Suite 200","city":"Philadelphia","state":"PA","zip":"19106"},"from":{"name":"Sam Ortiz","line1":"12 Oak Ave","city":"Columbus","state":"OH","zip":"43215"},"service":"certified_err","text":"Dear Jordan,\n\n...","idempotency_key":""} Input: - `to` (object; required): Recipient address, checked by our printing partner against USPS records. If undeliverable during creation, the request is refused with address_undeliverable (422) and no draft is created. Read error.address_reason for its stable code, affected fields, plain explanation and USPS lookup URL; ask the person the specific question rather than guessing variants. - `name` (string; optional, at most 40 characters, default ""): Person's full name. Omit or leave empty when sending to an organization only; either name or organization must contain nonblank text. - `organization` (string; optional): Organization or company name. For an organization-only address, provide this and omit name. When both names are the same, we print the organization once. - `line1` (string; required, at most 64 characters) - `line2` (string; optional, at most 64 characters) - `city` (string; required) - `state` (string; required, pattern ^[A-Z]{2}$) - `zip` (string; required, pattern ^\d{5}(-\d{4})?$) - `from` (object; required) - `name` (string; optional, at most 40 characters, default ""): Person's full name. Omit or leave empty when sending to an organization only; either name or organization must contain nonblank text. - `organization` (string; optional): Organization or company name. For an organization-only address, provide this and omit name. When both names are the same, we print the organization once. - `line1` (string; required, at most 64 characters) - `line2` (string; optional, at most 64 characters) - `city` (string; required) - `state` (string; required, pattern ^[A-Z]{2}$) - `zip` (string; required, pattern ^\d{5}(-\d{4})?$) - `service` ("certified" | "certified_err"; required): certified sends USPS Certified Mail with USPS tracking. certified_err adds the electronic Return Receipt: a USPS PDF with the recipient's signature, once USPS provides it. Choose certified_err when the person wants proof of receipt. - `text` (string; optional, at most 60000 characters): The letter body, from the greeting on. We add the sender's address, the date and the recipient's address. Complete matching leading blocks are removed; a different leading address block or date is refused with text_has_letterhead (422), naming the line to remove. Subject lines and addresses after the greeting or first prose are allowed. Provide exactly one of text, pdf_base64 or pdf_url. - `send_now` (boolean; optional): Choose true only when the person asks to skip the 30-minute cancellation hold after payment. Payment and any required approval are still required (auto-send pays from balance without per-letter approval), and every screening check must pass before submission. The letter can be canceled only until it is sent to the printing partner; skipping leaves no guaranteed cancellation period. - `pdf_base64` (string; optional) - `pdf_url` (string; optional) - `idempotency_key` (string; required): Use a new UUID for a new letter; reuse it with the same body on retries. Anonymous keys need at least 16 characters. Output (structuredContent): A letter object (fields under "The letter object" below). ### get_letter: Get a letter's status Read a letter's state, timeline, tracking, proof_of_mailing, acceptance_expected_by, cancel_until, send_now, refund and next step. proof_of_mailing gives the USPS acceptance record; cite its local date as the mailing date. acceptance_expected_by gives the Eastern deadline while waiting, and is null after an individual-piece scan even if acceptance is missing. Relay next_step for the plain explanation. refund gives state, amount_cents and destination (card or balance). accepted means the processor accepted it or the balance was credited, not that the bank has posted it; manual means we will refund it by hand. Address checks usually finish in seconds. A pending address_status is retried each minute for up to a day; read again after a minute. A busy queue or partner delay can slow the check. Reading is free and changes nothing. first_usps_scan identifies the earliest individual-letter scan, not shipment receipt; only proof_of_mailing establishes acceptance. partner_checked_at is the last successful tracking poll, not the scan date. files_deleted_at means downloads are gone. Repeated adjacent checks carry observations and last_at; at stays the first check. Timestamps are UTC RFC 3339 with milliseconds; date-only fields retain their documented calendar dates. Use id with its API key, or the complete private letter_url from create_letter. Example: {"letter_url":"https://certifiedmailsender.com/l/?t="} Input: - `id` (string; optional): Letter id; send the API key that created it in Authorization. - `letter_url` (string; optional): Complete private letter_url or approval_url, including its t token. Output (structuredContent): A letter object (fields under "The letter object" below). ### list_letters: List letters List this API key's letters newest first, with cursor pagination. Listing is free and requires the creating API key; it changes nothing. first_usps_scan identifies the earliest individual-letter scan, not shipment receipt; only proof_of_mailing establishes acceptance. partner_checked_at is the last successful tracking poll, not the scan date. files_deleted_at means downloads are gone. Repeated adjacent checks carry observations and last_at; at stays the first check. Timestamps are UTC RFC 3339 with milliseconds; date-only fields retain their documented calendar dates. Pass next_cursor as cursor to read the next page. Example: {"limit":20} Input: - `limit` (integer; optional, 1 to 100, default 20) - `cursor` (string; optional) Output (structuredContent): - `letters` (array of letter objects; required) - `next_cursor` (string | null; required) ### send_letter_now: Send a paid letter now Skip a paid letter's 30-minute cancellation hold when the person asks to send it right away. This never bypasses screening and does not submit immediately. Idempotent while paid, screening or held for review; refused before payment or after submission or cancellation. Cancellation stays possible until submission, with no guaranteed extra time. Read the returned cancel_until and next_step; only the hold is skipped. Use id with its creating API key, or the complete private letter_url. Example: {"letter_url":"https://certifiedmailsender.com/l/?t="} Input: - `id` (string; optional): Letter id; send the API key that created it in Authorization. - `letter_url` (string; optional): Complete private letter_url or approval_url, including its t token. Output (structuredContent): A letter object (fields under "The letter object" below). ### cancel_letter: Cancel a letter Cancel before submission to the printing partner and refund any payment in full. Read refund.state, refund.amount_cents and refund.destination in the result; do not claim a refund succeeded unless its state is accepted. Card refunds go back to the card paid with and usually show within 5 to 10 business days; the bank decides exactly when. Balance refunds return to the prepaid balance. Paid letters normally have a 30-minute hold. Canceling is free; a submitted letter cannot be canceled. Read the returned refund and next_step; cancellation does not mail anything. Use id with its API key, or the complete private letter_url. Example: {"letter_url":"https://certifiedmailsender.com/l/?t="} Input: - `id` (string; optional): Letter id; send the API key that created it in Authorization. - `letter_url` (string; optional): Complete private letter_url or approval_url, including its t token. Output (structuredContent): A letter object (fields under "The letter object" below). ### Read a letter reliably Read get_letter (REST: GET /v1/letters/{id}) for next_step and timeline. first_usps_scan is the earliest individual-letter USPS scan (at, local date, scan); shipment receipt is excluded. Only proof_of_mailing establishes acceptance. partner_checked_at is the last successful live tracking poll, not a scan time; null means no recorded poll, including legacy/test letters. files_deleted_at means files are gone; preview_url is retained but unavailable. timeline.observations and timeline.last_at summarize adjacent identical checks; at stays the first time. Scans/transitions stay separate. All timestamp fields use UTC RFC 3339 with milliseconds; date-only scan dates stay local, acceptance_expected_by is Eastern. receipt_url appears only in receipt_ready for certified_err with files retained; absence means no receipt download, not failed delivery. acceptance_expected_by is null before submission, after acceptance/individual scan, or file deletion; null is not proof. States: draft, paid, screening, review, submitted, printed, mailed, in_transit, delivered, receipt_ready, canceled, failed, returned, refunded. printed comes from a Printed tracking observation, not USPS acceptance; reads may skip states. Test letters never print/mail and stop at submitted. quote.partner_cost_cents is public printing/postage cost; total_cents adds the itemized 10% fee, before applicable Stripe sales tax. Trusted auto-send keys pay from balance after address confirmation, including USPS corrections; screening/hold still apply. ### The letter object create_letter, get_letter, cancel_letter and send_letter_now return it, and list_letters returns an array of them. Addresses have the create_letter address fields. approval_url is present while the letter is a draft; an auto-send draft does not wait for per-letter approval. - `origin` ("web" | "api" | "mcp" | "unknown"; required) - `id` (string; required) - `mode` ("test" | "live"; required) - `state` ("draft" | "paid" | "screening" | "review" | "submitted" | "printed" | "mailed" | "in_transit" | "delivered" | "receipt_ready" | "canceled" | "failed" | "returned" | "refunded"; required): Persisted lifecycle state, not proof of mailing. printed comes from a Printed tracking observation; USPS acceptance requires proof_of_mailing. Reads can skip intermediate states. Test letters stop at submitted and never print or mail. - `service` ("certified" | "certified_err"; required) - `pages` (integer; required) - `from` (object; required) - `to` (object; required) - `quote` (object; required) - `service` ("certified" | "certified_err"; required) - `pages` (integer; required, 1 to 10) - `line_items` (array of objects; required) - `code` ("postage" | "printing" | "service_fee"; required) - `label` (string; required) - `amount_cents` (integer; required) - `total_cents` (integer; required) - `partner_cost_cents` (integer; required): Public printing-and-postage cost in USD cents. The itemized price adds a 10% service fee; total_cents is before any Stripe sales tax. - `currency` (string; required) - `address_status` ("pending" | "deliverable" | "corrected" | "undeliverable"; required) - `address_as_given` (object | null; required) - `document_source` ("text" | "pdf" | null; required) - `review_note` (string | null; required) - `cancel_until` (string | null; required): The scheduled end of the 30-minute cancellation hold, as an ISO 8601 / UTC RFC 3339 timestamp with milliseconds (YYYY-MM-DDTHH:mm:ss.sssZ); null for drafts or letters no longer cancellable. If skipped, this is when sending became eligible after payment. Cancellation remains possible until actual submission, even after this timestamp or during review; no extra cancellation period is guaranteed. - `send_now` (boolean; required): Whether someone chose to skip the 30-minute cancellation hold. This never skips required payment or screening; auto-send keys have no per-letter approval step. - `refund` (object | null; required): Refund record for a canceled, rejected or failed letter; null when no refund is due. Use state and amount_cents to tell the person what happened to their payment. Card refunds usually show within 5 to 10 business days; the bank decides exactly when. - `address_note` (string | null; required): The address partner’s raw note, not wording to relay to the person. Use next_step for the plain-language version to tell the person. - `approval_url` (string; optional): Private review page with the expected mailing date and USPS delivery estimate (not guaranteed). - `preview_url` (string; required) - `receipt_url` (string; optional): Private token link to the USPS electronic Return Receipt PDF. Present only for certified_err in receipt_ready while files are retained; omitted means no downloadable receipt is available here, not that delivery failed. Keep the t token; this receipt is private like the letter PDF. - `letter_url` (string; required): Keep this complete private link, including its t token. An anonymous letter can be read and canceled only with that token; an id alone or an API key created later cannot open it. A letter created with an API key can also be read and canceled with that same key. - `tracking_number` (string | null; required) - `tracking_url` (string | null; required) - `proof_of_mailing` (object | null; required): The acceptance scan records when USPS accepted the letter; null until an acceptance scan is recorded. Assistants cite date as the mailing date. This is not a postmarked receipt or a legal-status determination. - `acceptance_expected_by` (string | null; required): Eastern date (YYYY-MM-DD) by whose end the acceptance scan usually appears. Present from submission while no acceptance or individual-piece network/delivery scan is recorded and next_step gives this date. Null after an individual-piece scan even if acceptance is missing; proof_of_mailing remains null. Before it ends, tell the person when to contact support; after it ends, contact support now so we can check with the printing partner and USPS. - `first_usps_scan` (object | null; required): Earliest recorded individual-letter USPS scan, including acceptance: at is UTC, date is the scan’s local YYYY-MM-DD date, scan is USPS’s wording. Excludes shipment acceptance-pending and printing-partner scans. Null means no individual-letter scan is recorded, not that the letter was never mailed. Only proof_of_mailing establishes an acceptance date. - `partner_checked_at` (string | null; required): UTC time of the last successful live tracking poll recorded by this service, even if USPS supplied no new scans. Null means no successful poll time is recorded (including test or legacy letters). A read never polls the partner; this is not a delivery or mailing time or a freshness guarantee. - `files_deleted_at` (string | null; required): UTC time the letter files were deleted, or null. After deletion, preview_url is retained for compatibility but no longer downloads a file; receipt_url is omitted. Tracking and the record stay available at letter_url. - `timeline` (array of objects; required) - `at` (string; required): When the event happened, in UTC RFC 3339 format with milliseconds (YYYY-MM-DDTHH:mm:ss.sssZ). For USPS tracking scans, this is USPS’s scan time, not the time we recorded it. - `state` ("draft" | "paid" | "screening" | "review" | "submitted" | "printed" | "mailed" | "in_transit" | "delivered" | "receipt_ready" | "canceled" | "failed" | "returned" | "refunded" | null; required): When an acceptance scan exists, the USPS mailed tag belongs to that scan. A legacy mailed tag alone is not proof of mailing; read proof_of_mailing. - `source` (string; required): Who reported it. partner includes the printing partner’s Printed and Provided to postal processing facility scans; other USPS scans remain usps. - `note` (string; required): Event wording. Printing partner job statuses are observations at the check time; handed to USPS is not a USPS acceptance scan. - `observations` (integer; optional): Count of adjacent identical printing-partner status checks collapsed into this row; omitted for a single observation. No USPS scans or state transitions are collapsed. - `last_at` (string; optional): UTC time of the last observation in a collapsed status-check row; omitted for one observation. at remains the first observation time, not a mailing time. - `next_step` (string; required) - `created_at` (string; required): UTC RFC 3339 timestamp with milliseconds, YYYY-MM-DDTHH:mm:ss.sssZ. ### Refunds after cancellation or rejection The additive refund object is null when no refund is due. Otherwise it has state, amount_cents (USD cents, including card sales tax), and destination (card, balance or null). state=accepted means Stripe accepted the refund or the prepaid balance was credited; it does not mean the card refund has appeared on the bank statement. state=manual means we will refund it by hand; state=pending means acceptance is not yet recorded. state=not_charged has amount_cents=0 and destination=null: an unpaid draft or complimentary letter moved no money. Test-mode refund records concern test money only. Tell the person the actual amount and destination from refund, rather than inferring a successful refund from the letter state. Card refunds go back to the card paid with. A card refund usually shows on the statement within 5 to 10 business days; the bank decides exactly when. Balance refunds return to the prepaid balance. The payer receives one cancellation/refund email with the letter link. ## Errors to expect Every error body is {"error":{"code":"...","message":"...","fix":"..."}}. The same codes come from the MCP tools and the HTTP API. - `invalid_request` (422): A field is missing or malformed. The fix names each field to correct. - `address_undeliverable` (422): The recipient address failed the USPS check and no draft was created. error.address_reason gives a stable code, affected fields, plain message, partner_message and lookup_url. unit_required means a missing or invalid apartment/suite/unit; street_number_unconfirmed means the street number; street_not_found means the street name and spelling; city_zip_mismatch means city and ZIP. Ask the person about that part instead of guessing variants. - `text_has_letterhead` (422): text began with an address block or date that differs from the addresses given. We print both addresses and the date, so send only the body, from the greeting on. The message names the line to remove. - `text_too_long` (422): More than 60,000 characters of text. Shorten it or send a PDF. - `unsupported_characters` (422): The text has characters the letter font can't print. Remove the characters listed in the fix, or send a PDF. - `not_a_pdf` (422): The file could not be read as a PDF. - `pdf_encrypted` (422): The PDF is password-protected. Export it without a password. - `pdf_too_large` (422): The PDF is over 10 MB. - `pages_out_of_range` (422): The letter must be 1 to 10 pages. - `page_not_letter_size` (422): Every PDF page must be portrait US Letter (8.5 x 11 inches). - `pdf_url_invalid` (422): pdf_url must be an https link on a public domain. Or send pdf_base64. - `pdf_url_unreachable` (422): The PDF at pdf_url could not be downloaded. Use a public https link that returns the PDF itself, or send pdf_base64. - `unsupported_service` (422): service must be certified or certified_err. - `region_unavailable` (422): The return address is in Georgia, where we can't take orders yet. - `idempotency_mismatch` (409): The idempotency_key was already used with a different request. Retry with the original request, or use a new key for a new letter. - `address_not_confirmed` (409): Checks usually finish in seconds. A slow check leaves a saved draft, retried each minute for up to a day; read again after a minute. A busy queue or partner delay can slow the check. Payment waits until USPS confirms the recipient address. If it turned out undeliverable, create the letter again with a corrected address. - `invalid_transition` (409): The letter's state doesn't allow this, such as sending an unpaid draft now or canceling a letter already sent to the printer. Read the letter's current state. - `rate_limited` (429): Too many letters created in the last minute. Wait a minute, then retry with the same idempotency_key. - `quota_exceeded` (429): New senders can mail 3 letters in 24 hours and 10 in 30 days. The message says when the next one can be paid. - `auth_required` (401): list_letters needs an API key, an anonymous letter is read and canceled through its complete letter_url, or the key sent is not valid. - `letter_not_found` (404): The id or private link is wrong or incomplete. Use the complete letter_url, including its t token. ## HTTP API flow The OpenAPI 3.1 document at https://certifiedmailsender.com/openapi.json is the reference. Authentication is optional for a first letter: send no Authorization header to create an anonymous letter, or Authorization: Bearer for a key's letters. 1. POST https://certifiedmailsender.com/v1/quotes with {"service":"certified","pages":1} (or pdf_base64 instead of pages) for an itemized quote in integer cents. 2. POST https://certifiedmailsender.com/v1/letters with the create_letter fields as JSON and an Idempotency-Key header (a new UUID per letter; reuse it with the identical body on retries). 201 returns the draft with approval_url and letter_url; 200 returns the existing letter for a repeated request. 3. Give approval_url to the person. They review the exact letter, addresses and price, confirm, and pay. An authorized auto-send key instead pays from prepaid balance after address confirmation, including USPS corrections. 4. GET https://certifiedmailsender.com/v1/letters/{id}?t= (or with the API key) for state, timeline, tracking and next_step. 5. Paid letters wait 30 minutes before submission; cancel_until gives the scheduled hold end, not the final cancellation cutoff and send_now records skipping. POST https://certifiedmailsender.com/v1/letters/{id}/cancel?t= cancels until submission and refunds in full. 6. When the person asks to hurry, POST https://certifiedmailsender.com/v1/letters/{id}/send-now?t= (or use its creating key) skips the hold; send_letter_now is the MCP equivalent. You may instead pass send_now:true when creating a draft. Approval, payment and screening still apply. Skipping leaves no guaranteed cancellation period. Holds for review stay cancellable. GET https://certifiedmailsender.com/v1/letters lists an API key's letters. Test mode and test keys never mail anything. For repeat use, a person can sign in with an email link at https://certifiedmailsender.com/account, create an API key, add a prepaid balance and turn on auto-send for a trusted key. ## Prefilled link for assistants without tools Hand the person a link to the form with the fields after # (never ?), encoded with URLSearchParams: https://certifiedmailsender.com/send#to_name=Jordan%20Lee&to_line1=500%20Market%20St&to_city=Philadelphia&to_state=PA&to_zip=19106&service=certified&text=Dear%20Jordan%2C%0A%0A... Fields: to_name, to_company, to_line1, to_line2, to_city, to_state, to_zip; from_name, from_company, from_line1, from_line2, from_city, from_state, from_zip; service (certified or certified_err); text (the body from the greeting on). The fragment stays in the browser and never reaches our server. The person checks the form and submits it; the link never sends anything on its own. ## Questions people ask ### How much does it cost to send a letter? A one-page letter costs $9.04 by Certified Mail, or $12.24 with an electronic Return Receipt. That is USPS postage at USPS's own price, printing and the envelope, and our 10% fee. Longer letters cost a little more. You see the exact total, including any sales tax, before you pay. There is no account to open and no monthly fee. ### What happens after I pay? We check the letter, our printing partner prints it and hands it to USPS, and the letter's page shows each step with USPS tracking. We email you the link to that page when you pay, and again as the letter moves. We don't promise a delivery date. ### What is an electronic Return Receipt? It is USPS's record of delivery, including the recipient's signature, sent electronically instead of on a green card. It appears on your letter's page once USPS provides it. Source: USPS Domestic Mail Manual 503, https://pe.usps.com/text/dmm300/503.htm ### What if the recipient refuses the letter or never picks it up? The recipient may refuse a letter when USPS offers it. If no one is there to sign, USPS leaves a notice, and a letter that isn't picked up or redelivered goes back after 15 days. Either way, USPS returns it to the return address on the envelope, and tracking shows what happened. No one can make the recipient sign. Source: USPS Domestic Mail Manual 508, https://pe.usps.com/text/dmm300/508.htm ### What if my letter is not mailed? If we don't mail your letter, you get a full refund, including our service fee. You can cancel on the letter's page before it goes to our printing partner. Once USPS accepts the letter, we don't refund it, including if the recipient refuses it or doesn't pick it up. Source: Full refund policy, /refunds ### Who runs Certified Mail Sender? Certified Mail Sender is operated by Legitimate LLC. Our printing partner prints your letter and hands it to USPS for delivery by Certified Mail. Source: Our service and terms, /terms ## Policies - Terms of Service: https://certifiedmailsender.com/terms - Privacy Policy: https://certifiedmailsender.com/privacy - Acceptable Use Policy: https://certifiedmailsender.com/acceptable-use (every letter is screened before printing for threats, harassment, extortion, impersonation and fake legal notices; a person reviews holds) - Refund Policy: https://certifiedmailsender.com/refunds (full refund if we do not mail; no refund once USPS accepts the letter) - Support: support@certifiedmailsender.com. Abuse reports: abuse@certifiedmailsender.com or https://certifiedmailsender.com/report.