Customers

Upload a customer supporting document

Attaches a supporting document to a customer and starts its transfer into Resolve's document validation service. Use this to hand Resolve buyer data you already hold — bank statements, financial statements, credit references, or payment history — so it can be used in a credit decision.

Create the customer first; this endpoint is separate from customer creation and belongs to the Partners API. MCP clients use partner_create_customer_document with the returned customer ID as merchant_customer_id. In ChatGPT, attach the file as download_url and supply filename and filetype separately. See the <a href="/guides/mcp-tools-partner">Partner MCP tool reference</a>.

The transfer mode is determined by the request shape:

  • Omit download_url and Resolve returns a presigned S3 upload_url (transfer_method=presigned_upload). PUT the document bytes to that URL with the headers in upload_headers before upload_expires_at.
  • Supply download_url and Resolve queues a background download job (transfer_method=download_url). There is nothing to upload.

Documents are validated asynchronously, so a successful response means the document was accepted for transfer, not that it passed validation. Poll <a href="#operation/fetchCustomer">#fetchCustomer</a> for the resulting credit_status and limit changes.

Fulfilling a banking-data request. When a credit decision is waiting on bank statements, pass the open request's ID as additional_data_request_id alongside a bank_statements upload. Resolve fulfills that request once the document validates. The field is only accepted with document_type bank_statements, and is rejected with 422 if it does not identify a banking-data request on this customer that is still awaiting a response.

Validation notes:

  • bank_statements must be PDFs; other document types also accept PNG, JPEG, CSV, XLS, and XLSX
  • filename must include an extension matching filetype
  • download_url, when provided, must use http or https, carry no embedded credentials, and resolve to a public host

For remote downloads, queue dispatch runs after the document row is committed. A dispatch failure at that point does not roll the document back — the response is still successful and queue_dispatch_status comes back as failed.

post/customers/{customer_id}/documents

Request

Path parameters

customer_idstring required

ID of the customer the supporting document belongs to

Request body

OR
OR
OR

Example request

{
  "document_type": "bank_statements",
  "additional_data_request_id": "adr_1234567890abcdef",
  "filename": "bank_statement_2026_01.pdf",
  "filetype": "application/pdf"
}

Response

Upload instructions for the customer document. The shape depends on the transfer mode requested.

OR

Example response

{
  "id": "mcd_1234567890abcdef",
  "document_id": "mcd_1234567890abcdef",
  "document_type": "bank_statements",
  "upload_url": "https://resolve-document-validation-uploads.s3.amazonaws.com/merchant_customer/cus_123/document/mcd_123/bank_statement_2026_01.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
  "upload_expires_at": "2026-02-26T18:35:00.000Z",
  "object_key": "merchant_customer/cus_1234567890abcdef/document/mcd_1234567890abcdef/bank_statement_2026_01.pdf",
  "transfer_method": "presigned_upload",
  "upload_headers": {
    "x-amz-meta-validation_profile": "merchant_underwriting_document_default"
  },
  "validation_profile": "merchant_underwriting_document_default"
}

Changes

No recorded changes to this operation across all 1 revision of this API.