Skip to contentPostalForm

Content

Bank Fraud Claim & Unauthorized Transfer Dispute Packet API reference

Prepare an account-holder-authored Regulation E electronic-transfer error packet using deterministic customer facts, a confirmed bank error-resolution address, a typed or drawn signature, optional PDF/image evidence, and required Certified Mail. Require prior immediate bank notification, a personal consumer deposit or prepaid account, a supported electronic-transfer rail, and no active litigation or representation. Exclude credit cards, paper checks, wires, cryptocurrency, business accounts, customer-initiated scam payments, physical enclosures, and unsupported claims. Do not infer that a transfer was unauthorized, calculate or certify a deadline, promise provisional credit or recovery, or treat tracking as proof of legal sufficiency.

Published Aug 1, 2026

Workflow slug: bank-fraud-unauthorized-transfer-dispute. Workflow version: 1. Live schema · Markdown reference.

How it works

Step 1

Fill out form

Complete the guided fields online.

Step 2

Preview PDF

Review the generated PDF before mailing.

Step 3

Mail

We print and mail it via USPS.

How does an agent prepare this form?

PostalForm uses the same workflow definition for this API reference and its guided browser form. Fetch the live schema, collect the active required fields and attachments, and validate the completed request. Review the generated PDF, resolved recipient, mailing service and price with the owner before authorizing payment.

Submission and recipient rules

Setting Current workflow value
Form slug bank-fraud-unauthorized-transfer-dispute
Recipient mode user
Certified Mail required
Base U.S. mail service USPS First-Class Mail (mail_class="standard" in the API); not USPS Marketing Mail
Attachment total limit 12 MB
Validate without payment POST /api/machine/orders/validate or POST /api/machine/mpp/orders/validate
Machine order POST /api/machine/orders (x402) or POST /api/machine/mpp/orders (MPP)

Send a top-level form instead of pdf or letter; those three document sources are mutually exclusive. Workflow forms are letters, not postcards. The machine envelope requires buyer, sender and recipient fields. For predefined or computed recipients, the server binds the final recipient to the workflow rules. Inspect the resolved recipient returned by validation; do not substitute a convenient office address.

The template below is structural, not ready to submit: replace every placeholder, complete the active fields, omit unused optional attachments, and use the field options and visibility rules in the schema. Empty strings and unchecked checkboxes are not user answers. Never infer a signature, legal eligibility, factual declaration or consent from a default value.

JSON request template

{
  "request_id": "<new UUID; preserve on retry>",
  "buyer_name": "<buyer name>",
  "buyer_email": "<buyer email>",
  "sender_name": "<sender name>",
  "sender_address_type": "Manual",
  "sender_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "recipient_name": "<confirmed recipient name>",
  "recipient_address_type": "Manual",
  "recipient_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "mail_class": "standard",
  "double_sided": true,
  "color": false,
  "certified": true,
  "form": {
    "slug": "bank-fraud-unauthorized-transfer-dispute",
    "fields": {
      "relationship_to_account": "",
      "account_use": "",
      "transaction_scope": "",
      "already_reported_to_bank": "",
      "active_legal_matter": "",
      "physical_enclosure": "",
      "claim_stage": "",
      "error_type": "",
      "transfer_rail": "",
      "authorization_scope": "",
      "consumer_received_benefit": "",
      "letter_date": "",
      "sender_name": "",
      "sender_address": "",
      "account_last_4": "",
      "phone": "",
      "email": "",
      "recipient_name": "",
      "recipient_address": "",
      "dispute_address_source": "",
      "dispute_address_confirmed": false,
      "statement_date": "",
      "disputed_transactions": "",
      "total_disputed_amount": "",
      "why_error": "",
      "chronology": "",
      "bank_contact_date": "",
      "bank_contact_channel": "",
      "include_bank_claim_number": false,
      "bank_claim_number": "",
      "written_confirmation_due_date": "",
      "bank_response_date": "",
      "bank_response_details": "",
      "investigation_records_requested": "",
      "requested_correction": "",
      "include_attachment_summary": false,
      "attachment_summary": "",
      "signature": "",
      "facts_acknowledged": false,
      "immediate_notice_acknowledged": false,
      "product_limits_acknowledged": false
    },
    "attachments": [
      {
        "id": "supporting_records",
        "file_name": "<filename>",
        "base64": "<base64 file content>"
      }
    ]
  }
}

Field reference

Field ID Label Type Required when active Choices
relationship_to_account Your relationship to the account select Yes Account holder or joint account holder, Authorized representative, Estate, successor, or other relationship, Another relationship or unsure
account_use How is the account used? select Yes Personal consumer account, Business or commercial account, Another use or unsure
transaction_scope What kind of transaction is this? select Yes Electronic fund transfer from a deposit or prepaid account, Credit-card charge, Paper check, Wire transfer, Cryptocurrency transfer, Another transaction or unsure
already_reported_to_bank Have you already reported the transfer to the bank? select Yes Yes — I already reported it through an immediate channel, No — I have not reported it yet, Unsure
active_legal_matter Is there an active lawsuit, arbitration, court deadline, or attorney representation? select Yes No, Yes, Unsure
physical_enclosure Will this packet include cash, a check, money order, debit card, original document, or another physical item? select Yes No, Yes
claim_stage Current claim stage select Yes Initial written error notice after reporting the transfer, Written confirmation requested by the bank, Claim denied or provisional credit reversed — request investigation records
error_type Electronic-transfer error type select Yes Unauthorized electronic transfer, Incorrect transfer amount, Duplicate electronic transfer, Incorrect ATM cash amount, Unidentified electronic transfer or request for clarification
transfer_rail Transfer rail select Yes Debit card purchase, ATM withdrawal, ACH debit, Online bank transfer, Fraudster-initiated P2P transfer, Another electronic fund transfer
authorization_scope Who initiated or authorized the transfer? select Yes I did not initiate or authorize the disputed transfer, I authorized a transfer, but its amount was wrong or it was duplicated, I knowingly sent or approved the transfer, Unsure
consumer_received_benefit Did you receive any benefit from the disputed transfer? select Yes No, Yes, Unsure
letter_date Letter date date Yes See schema
sender_name Account holder full name text Yes See schema
sender_address Account holder return mailing address address Yes See schema
account_last_4 Account last 4 digits text Yes See schema
phone Phone number (optional) text No See schema
email Email address (optional) text No See schema
recipient_name Bank or credit union and error-resolution department text Yes See schema
recipient_address Bank error-resolution or investigation address address Yes See schema
dispute_address_source Where did you verify this address? select Yes Bank written-confirmation or denial notice, Current account statement, Current account agreement or error-resolution notice, Current bank website or written instructions
dispute_address_confirmed I confirmed this is the bank’s current address for electronic-transfer errors, written confirmations, or investigation correspondence. checkbox Yes See schema
statement_date Date the bank sent the first statement showing the disputed transfer date Yes See schema
disputed_transactions Disputed electronic transfers textarea Yes See schema
total_disputed_amount Total amount disputed text Yes See schema
why_error Why do you believe an error occurred? textarea Yes See schema
chronology Chronology of the transfer and your response textarea Yes See schema
bank_contact_date Date you first reported the transfer to the bank date Yes See schema
bank_contact_channel How did you first report it? select Yes Phone, Bank mobile app, Bank website, In person, Another immediate bank channel
include_bank_claim_number Include a bank claim or case reference checkbox No See schema
bank_claim_number Bank claim or case reference text Yes See schema
written_confirmation_due_date Date the bank gave for written confirmation date Yes See schema
bank_response_date Date of the denial or provisional-credit reversal notice date Yes See schema
bank_response_details Bank’s stated decision and reason textarea Yes See schema
investigation_records_requested Explanation and investigation records requested textarea Yes See schema
requested_correction Correction, explanation, or other action requested textarea Yes See schema
include_attachment_summary List the supporting records in the letter checkbox No See schema
attachment_summary Supporting records enclosed textarea Yes See schema
signature Account holder signature signature Yes See schema
facts_acknowledged I reviewed the generated packet and confirm its account identifier, transactions, dates, amounts, and factual statements are accurate. checkbox Yes See schema
immediate_notice_acknowledged I understand this mailing supplements my immediate bank report, and I am not relying on postal delivery to preserve a deadline. checkbox Yes See schema
product_limits_acknowledged I understand PostalForm prepares and mails the packet but does not provide legal advice, decide Regulation E coverage, certify a deadline, or guarantee provisional credit, reimbursement, or a bank response. checkbox Yes See schema

Compound fields use nested objects keyed by subfield ID. Evaluate group and field visibility before deciding which fields are active. Conditional requirements, validation rules, recipient rules, attachment formats and compliance policies are preserved in the complete schema below.

Complete workflow schema

{
  "schema_version": 1,
  "workflow_version": 1,
  "slug": "bank-fraud-unauthorized-transfer-dispute",
  "name": "Bank Fraud Claim & Unauthorized Transfer Dispute Packet",
  "description": "Create a signed written bank-dispute packet for an unauthorized or incorrect electronic transfer, attach supporting records, review the complete PDF, and send it by Certified Mail.",
  "agent_summary": "Prepare an account-holder-authored Regulation E electronic-transfer error packet using deterministic customer facts, a confirmed bank error-resolution address, a typed or drawn signature, optional PDF/image evidence, and required Certified Mail. Require prior immediate bank notification, a personal consumer deposit or prepaid account, a supported electronic-transfer rail, and no active litigation or representation. Exclude credit cards, paper checks, wires, cryptocurrency, business accounts, customer-initiated scam payments, physical enclosures, and unsupported claims. Do not infer that a transfer was unauthorized, calculate or certify a deadline, promise provisional credit or recovery, or treat tracking as proof of legal sufficiency.",
  "form_summary": "Use this workflow after promptly reporting a disputed electronic transfer to your bank. It supports an initial written error notice, a bank-requested written confirmation, or a denied-claim investigation-records request for a personal deposit or prepaid account.",
  "data_collected": [
    "Account-holder identity, return address, contact details, and account last four digits",
    "Bank or credit-union name, error-resolution department, confirmed dispute address, and optional claim number",
    "Claim stage, electronic-transfer rail, error type, disputed transactions, statement date, prior report, chronology, and requested action",
    "Bank written-confirmation date or denial and investigation-record details when applicable",
    "Optional statement pages, bank correspondence, transaction screenshots, and other supporting PDF/image copies",
    "Typed or drawn signature and factual, immediate-notice, address, and product-limit confirmations"
  ],
  "topics": [
    "bank accounts",
    "electronic fund transfers",
    "debit cards",
    "ATM withdrawals",
    "ACH",
    "Regulation E",
    "consumer finance",
    "certified mail"
  ],
  "category": "consumer_eft_error_resolution",
  "publish_state": "published",
  "aliases": [
    "regulation-e-bank-dispute",
    "unauthorized-transfer-dispute-letter",
    "bank-fraud-claim-packet"
  ],
  "llms": true,
  "indexable": true,
  "certified_mail": "required",
  "recipient": {
    "mode": "user"
  },
  "compliance_policy": {
    "id": "consumer_eft_error_resolution",
    "version": 1,
    "recheckStages": [
      "preview",
      "approval",
      "checkout",
      "payment",
      "fulfillment",
      "machine"
    ]
  },
  "checkout_flow": "forms_order",
  "published_at": "2026-08-01",
  "updated_at": "2026-08-01",
  "groups": [
    {
      "id": "scope",
      "label": "Supported consumer-account scope",
      "description": "Confirm the transfer and account fit this narrow workflow. Report suspicious transfers to the bank immediately; do not wait for a letter.",
      "depends_on": []
    },
    {
      "id": "claim",
      "label": "Claim stage and transfer type",
      "description": "Choose the current stage and describe why the electronic transfer is an error.",
      "depends_on": []
    },
    {
      "id": "consumer",
      "label": "Account holder",
      "description": "Enter only the identifying information the bank needs. Never enter a PIN, password, CVV, or full debit-card number.",
      "depends_on": []
    },
    {
      "id": "bank",
      "label": "Bank and error-resolution address",
      "description": "Use the current address the bank provides for electronic-transfer errors, written confirmations, or investigation correspondence.",
      "depends_on": []
    },
    {
      "id": "transactions",
      "label": "Transactions and chronology",
      "description": "List every disputed electronic transfer with its date, amount, statement descriptor, and factual reason.",
      "depends_on": []
    },
    {
      "id": "response",
      "label": "Bank response and requested action",
      "description": "Record the earlier report, bank response, requested correction, and investigation records when applicable.",
      "depends_on": []
    },
    {
      "id": "evidence",
      "label": "Supporting records",
      "description": "Upload relevant copies only. Keep originals and redact unrelated sensitive information.",
      "depends_on": []
    },
    {
      "id": "review",
      "label": "Sign and review",
      "description": "Sign the packet and confirm the facts, immediate bank report, destination, and product limits before preview.",
      "depends_on": []
    }
  ],
  "fields": [
    {
      "id": "relationship_to_account",
      "label": "Your relationship to the account",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "scope",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Account holder or joint account holder",
        "Authorized representative",
        "Estate, successor, or other relationship",
        "Another relationship or unsure"
      ],
      "compound": null
    },
    {
      "id": "account_use",
      "label": "How is the account used?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "scope",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Personal consumer account",
        "Business or commercial account",
        "Another use or unsure"
      ],
      "compound": null
    },
    {
      "id": "transaction_scope",
      "label": "What kind of transaction is this?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "scope",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Electronic fund transfer from a deposit or prepaid account",
        "Credit-card charge",
        "Paper check",
        "Wire transfer",
        "Cryptocurrency transfer",
        "Another transaction or unsure"
      ],
      "compound": null
    },
    {
      "id": "already_reported_to_bank",
      "label": "Have you already reported the transfer to the bank?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "scope",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Yes — I already reported it through an immediate channel",
        "No — I have not reported it yet",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "active_legal_matter",
      "label": "Is there an active lawsuit, arbitration, court deadline, or attorney representation?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "scope",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "No",
        "Yes",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "physical_enclosure",
      "label": "Will this packet include cash, a check, money order, debit card, original document, or another physical item?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "scope",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "No",
        "Yes"
      ],
      "compound": null
    },
    {
      "id": "claim_stage",
      "label": "Current claim stage",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "claim",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Initial written error notice after reporting the transfer",
        "Written confirmation requested by the bank",
        "Claim denied or provisional credit reversed — request investigation records"
      ],
      "compound": null
    },
    {
      "id": "error_type",
      "label": "Electronic-transfer error type",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "claim",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Unauthorized electronic transfer",
        "Incorrect transfer amount",
        "Duplicate electronic transfer",
        "Incorrect ATM cash amount",
        "Unidentified electronic transfer or request for clarification"
      ],
      "compound": null
    },
    {
      "id": "transfer_rail",
      "label": "Transfer rail",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "claim",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Debit card purchase",
        "ATM withdrawal",
        "ACH debit",
        "Online bank transfer",
        "Fraudster-initiated P2P transfer",
        "Another electronic fund transfer"
      ],
      "compound": null
    },
    {
      "id": "authorization_scope",
      "label": "Who initiated or authorized the transfer?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "claim",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "I did not initiate or authorize the disputed transfer",
        "I authorized a transfer, but its amount was wrong or it was duplicated",
        "I knowingly sent or approved the transfer",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "consumer_received_benefit",
      "label": "Did you receive any benefit from the disputed transfer?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "claim",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "No",
        "Yes",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "letter_date",
      "label": "Letter date",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "consumer",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_name",
      "label": "Account holder full name",
      "type": "text",
      "required": true,
      "meta_class": "name",
      "ui_width": "half",
      "group_id": "consumer",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_address",
      "label": "Account holder return mailing address",
      "type": "address",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "consumer",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "account_last_4",
      "label": "Account last 4 digits",
      "type": "text",
      "required": true,
      "meta_class": "ssn_last4",
      "ui_width": "half",
      "group_id": "consumer",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "minLength": 4,
        "maxLength": 4,
        "pattern": "^\\d{4}$"
      },
      "compound": null
    },
    {
      "id": "phone",
      "label": "Phone number (optional)",
      "type": "text",
      "required": false,
      "meta_class": "phone",
      "ui_width": "half",
      "group_id": "consumer",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "email",
      "label": "Email address (optional)",
      "type": "text",
      "required": false,
      "meta_class": "email",
      "ui_width": null,
      "group_id": "consumer",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_name",
      "label": "Bank or credit union and error-resolution department",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "bank",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_address",
      "label": "Bank error-resolution or investigation address",
      "type": "address",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "bank",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "dispute_address_source",
      "label": "Where did you verify this address?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "bank",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Bank written-confirmation or denial notice",
        "Current account statement",
        "Current account agreement or error-resolution notice",
        "Current bank website or written instructions"
      ],
      "compound": null
    },
    {
      "id": "dispute_address_confirmed",
      "label": "I confirmed this is the bank’s current address for electronic-transfer errors, written confirmations, or investigation correspondence.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "bank",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "statement_date",
      "label": "Date the bank sent the first statement showing the disputed transfer",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "transactions",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "disputed_transactions",
      "label": "Disputed electronic transfers",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "transactions",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "minLength": 20,
        "maxLength": 6000
      },
      "compound": null
    },
    {
      "id": "total_disputed_amount",
      "label": "Total amount disputed",
      "type": "text",
      "required": true,
      "meta_class": "currency",
      "ui_width": "half",
      "group_id": "transactions",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "why_error",
      "label": "Why do you believe an error occurred?",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "transactions",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "minLength": 20,
        "maxLength": 5000
      },
      "compound": null
    },
    {
      "id": "chronology",
      "label": "Chronology of the transfer and your response",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "transactions",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "minLength": 20,
        "maxLength": 5000
      },
      "compound": null
    },
    {
      "id": "bank_contact_date",
      "label": "Date you first reported the transfer to the bank",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "bank_contact_channel",
      "label": "How did you first report it?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Phone",
        "Bank mobile app",
        "Bank website",
        "In person",
        "Another immediate bank channel"
      ],
      "compound": null
    },
    {
      "id": "include_bank_claim_number",
      "label": "Include a bank claim or case reference",
      "type": "checkbox",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "bank_claim_number",
      "label": "Bank claim or case reference",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_bank_claim_number",
        "operator": "truthy"
      },
      "depends_on": [
        "include_bank_claim_number"
      ],
      "validation": {
        "maxLength": 80
      },
      "compound": null
    },
    {
      "id": "written_confirmation_due_date",
      "label": "Date the bank gave for written confirmation",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "claim_stage",
        "operator": "equals",
        "value": "Written confirmation requested by the bank"
      },
      "depends_on": [
        "claim_stage"
      ],
      "compound": null
    },
    {
      "id": "bank_response_date",
      "label": "Date of the denial or provisional-credit reversal notice",
      "type": "date",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "claim_stage",
        "operator": "equals",
        "value": "Claim denied or provisional credit reversed — request investigation records"
      },
      "depends_on": [
        "claim_stage"
      ],
      "compound": null
    },
    {
      "id": "bank_response_details",
      "label": "Bank’s stated decision and reason",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "claim_stage",
        "operator": "equals",
        "value": "Claim denied or provisional credit reversed — request investigation records"
      },
      "depends_on": [
        "claim_stage"
      ],
      "validation": {
        "minLength": 10,
        "maxLength": 4000
      },
      "compound": null
    },
    {
      "id": "investigation_records_requested",
      "label": "Explanation and investigation records requested",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "claim_stage",
        "operator": "equals",
        "value": "Claim denied or provisional credit reversed — request investigation records"
      },
      "depends_on": [
        "claim_stage"
      ],
      "validation": {
        "minLength": 10,
        "maxLength": 4000
      },
      "compound": null
    },
    {
      "id": "requested_correction",
      "label": "Correction, explanation, or other action requested",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "response",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "validation": {
        "minLength": 10,
        "maxLength": 4000
      },
      "compound": null
    },
    {
      "id": "include_attachment_summary",
      "label": "List the supporting records in the letter",
      "type": "checkbox",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "evidence",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "attachment_summary",
      "label": "Supporting records enclosed",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "evidence",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_attachment_summary",
        "operator": "truthy"
      },
      "depends_on": [
        "include_attachment_summary"
      ],
      "validation": {
        "maxLength": 2500
      },
      "compound": null
    },
    {
      "id": "signature",
      "label": "Account holder signature",
      "type": "signature",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "review",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "facts_acknowledged",
      "label": "I reviewed the generated packet and confirm its account identifier, transactions, dates, amounts, and factual statements are accurate.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "review",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "immediate_notice_acknowledged",
      "label": "I understand this mailing supplements my immediate bank report, and I am not relying on postal delivery to preserve a deadline.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "review",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "product_limits_acknowledged",
      "label": "I understand PostalForm prepares and mails the packet but does not provide legal advice, decide Regulation E coverage, certify a deadline, or guarantee provisional credit, reimbursement, or a bank response.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "review",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    }
  ],
  "attachments": [
    {
      "id": "supporting_records",
      "label": "Supporting bank-dispute records",
      "required": false,
      "instructions": "Upload relevant copies such as the statement page showing the transfer, bank claim confirmation, denial or provisional-credit reversal notice, transaction screenshots, correspondence, or an existing identity-theft or police report. Keep originals. Redact unrelated information and never upload a PIN, password, CVV, or full debit-card number.",
      "allowed_types": [
        "pdf",
        "png",
        "jpg",
        "jpeg"
      ],
      "max_files": 20,
      "max_size_mb": 12
    }
  ],
  "attachments_max_total_size_mb": 12,
  "machine_submission": {
    "payload_property": "form",
    "create_paths": {
      "x402": "/api/machine/orders",
      "mpp": "/api/machine/mpp/orders"
    }
  }
}

Preview, payment and retries

Validation does not mail the document. For a human checkout, use MCP postalform.create_form_order_draft and present the returned preview, total and checkout URL. Machine API clients must handle the returned MPP or x402 challenge only within owner-approved spending authority. Preserve request_id and the exact payload for retries; changing the content requires a new request ID. After an uncertain payment, retrieve order status before creating another order. Provider handoff is not USPS delivery.

Ready to get started?

Upload your PDF and we will handle printing and mailing.

Resources