Transfers
Download the complete public OpenAPI schema
Transfers
Submit invoice-backed transfer requests, inspect optional evidence and execution history, and resolve information requirements. Submission grants no payment authorization.
POST /v1/transfer_documents
Reserve a transfer document upload
Upload bytes directly with the returned short-lived signed instructions, then supply the document ID when creating a request.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "Reserve a transfer document upload",
"description": "Upload bytes directly with the returned short-lived signed instructions, then supply the document ID when creating a request.",
"operationId": "v1_create_transfer_document",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvoiceDocumentCreate"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvoiceDocumentCreated"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_create_transfer_document",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_documents",
"x-docs-kind": "create",
"x-docs-order": 10,
"x-docs-depth": 0,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X POST https://api.openmerchant.dev/v1/transfer_documents \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"idempotency_key\": \"...\",\n \"filename\": \"...\",\n \"content_type\": \"application/pdf\",\n \"size_bytes\": 1,\n \"sha256\": \"...\"\n}'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_create_transfer_document\",\n \"arguments\": {\n \"idempotency_key\": \"...\",\n \"filename\": \"...\",\n \"content_type\": \"application/pdf\",\n \"size_bytes\": 1,\n \"sha256\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_create_transfer_document\",\n arguments: {\n \"idempotency_key\": \"...\",\n \"filename\": \"...\",\n \"content_type\": \"application/pdf\",\n \"size_bytes\": 1,\n \"sha256\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_requests
List transfer requests
Filter request status and processing progress before pagination. No processing or provider refresh is triggered.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "List transfer requests",
"description": "Filter request status and processing progress before pagination. No processing or provider refresh is triggered.",
"operationId": "v1_list_transfer_requests",
"parameters": [
{
"required": false,
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/TransferRequestKind"
},
{
"type": "null"
}
],
"title": "Kind"
},
"name": "kind",
"in": "query"
},
{
"required": false,
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/PayableInvoiceStatus"
},
{
"type": "null"
}
],
"title": "Status"
},
"name": "status",
"in": "query"
},
{
"required": false,
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/InvoiceProcessingStatus"
},
{
"type": "null"
}
],
"title": "Processing Status"
},
"name": "processing_status",
"in": "query"
},
{
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Issuer Profile Id"
},
"name": "issuer_profile_id",
"in": "query"
},
{
"required": false,
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/PayableInvoiceSourceKind"
},
{
"type": "null"
}
],
"title": "Source"
},
"name": "source",
"in": "query"
},
{
"required": false,
"schema": {
"type": "integer",
"maximum": 100.0,
"minimum": 1.0,
"title": "Limit",
"default": 20
},
"name": "limit",
"in": "query"
},
{
"required": false,
"schema": {
"type": "integer",
"minimum": 0.0,
"title": "Offset",
"default": 0
},
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferListResponse"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_list_transfer_requests",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests",
"x-docs-kind": "list",
"x-docs-order": 40,
"x-docs-depth": 0,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_requests \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_list_transfer_requests\",\n \"arguments\": {}\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_list_transfer_requests\",\n arguments: {},\n});"
}
]
}
POST /v1/transfer_requests
Create a transfer request
Submit invoice facts and/or uploaded documents. Creation grants no payment authorization. SAFE funding is not yet supported.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "Create a transfer request",
"description": "Submit invoice facts and/or uploaded documents. Creation grants no payment authorization. SAFE funding is not yet supported.",
"operationId": "v1_create_transfer_request",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferRequestCreate"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicTransferRequestRead"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_create_transfer_request",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests",
"x-docs-kind": "create",
"x-docs-order": 10,
"x-docs-depth": 0,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X POST https://api.openmerchant.dev/v1/transfer_requests \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"idempotency_key\": \"...\"\n}'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_create_transfer_request\",\n \"arguments\": {\n \"idempotency_key\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_create_transfer_request\",\n arguments: {\n \"idempotency_key\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_requests/{request_id}
Retrieve a transfer request
Core facts include masked payout_destination and revision references. Repeat include for evidence, requirements, documents, submissions, or executions. Collections embed their first 20 items; omitted sections are not loaded. GET never schedules work or refreshes provider state.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "Retrieve a transfer request",
"description": "Core facts include masked payout_destination and revision references. Repeat include for evidence, requirements, documents, submissions, or executions. Collections embed their first 20 items; omitted sections are not loaded. GET never schedules work or refreshes provider state.",
"operationId": "v1_get_transfer_request",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
},
{
"required": false,
"schema": {
"anyOf": [
{
"items": {
"$ref": "#/components/schemas/TransferInclude"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Include"
},
"name": "include",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicTransferRequestRead"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_get_transfer_request",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}",
"x-docs-kind": "retrieve",
"x-docs-order": 30,
"x-docs-depth": 0,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_requests/... \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_get_transfer_request\",\n \"arguments\": {\n \"request_id\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_get_transfer_request\",\n arguments: {\n \"request_id\": \"...\"\n},\n});"
}
]
}
POST /v1/transfer_requests/{request_id}
Update a transfer request
Select a payout destination and/or reevaluate information requirements using an idempotency key and the current revision. This cannot approve payment, override rejection, or authorize a retry.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "Update a transfer request",
"description": "Select a payout destination and/or reevaluate information requirements using an idempotency key and the current revision. This cannot approve payment, override rejection, or authorize a retry.",
"operationId": "v1_update_transfer_request",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferUpdate"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicTransferRequestRead"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_update_transfer_request",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}",
"x-docs-kind": "update",
"x-docs-order": 20,
"x-docs-depth": 0,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X POST https://api.openmerchant.dev/v1/transfer_requests/... \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"idempotency_key\": \"...\",\n \"expected_revision\": \"...\"\n}'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_update_transfer_request\",\n \"arguments\": {\n \"request_id\": \"...\",\n \"idempotency_key\": \"...\",\n \"expected_revision\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_update_transfer_request\",\n arguments: {\n \"request_id\": \"...\",\n \"idempotency_key\": \"...\",\n \"expected_revision\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_documents/{document_id}
Retrieve transfer document metadata
Read scoped metadata and scanning progress. This response contains no document bytes, signed read URL, or storage path.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "Retrieve transfer document metadata",
"description": "Read scoped metadata and scanning progress. This response contains no document bytes, signed read URL, or storage path.",
"operationId": "v1_get_transfer_document",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Document Id"
},
"name": "document_id",
"in": "path"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvoiceDocumentRead"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_get_transfer_document",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_documents/{document_id}",
"x-docs-kind": "retrieve",
"x-docs-order": 30,
"x-docs-depth": 0,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_documents/... \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_get_transfer_document\",\n \"arguments\": {\n \"document_id\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_get_transfer_document\",\n arguments: {\n \"document_id\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_requests/{request_id}/documents
List transfer documents
Read the next bounded page using next_offset from the request's embedded documents section. No processing or provider calls are triggered.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "List transfer documents",
"description": "Read the next bounded page using next_offset from the request's embedded documents section. No processing or provider calls are triggered.",
"operationId": "v1_list_transfer_documents",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
},
{
"required": false,
"schema": {
"type": "integer",
"maximum": 100.0,
"minimum": 1.0,
"title": "Limit",
"default": 20
},
"name": "limit",
"in": "query"
},
{
"required": false,
"schema": {
"type": "integer",
"minimum": 0.0,
"title": "Offset",
"default": 0
},
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferPage_InvoiceDocumentRead_"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_list_transfer_documents",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}/documents",
"x-docs-kind": "other",
"x-docs-order": 100,
"x-docs-depth": 2,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_requests/.../documents \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_list_transfer_documents\",\n \"arguments\": {\n \"request_id\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_list_transfer_documents\",\n arguments: {\n \"request_id\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_requests/{request_id}/evidence
List transfer evidence
Read the next bounded page using next_offset from the request's embedded evidence section. No processing or provider calls are triggered.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "List transfer evidence",
"description": "Read the next bounded page using next_offset from the request's embedded evidence section. No processing or provider calls are triggered.",
"operationId": "v1_list_transfer_evidence",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
},
{
"required": false,
"schema": {
"type": "integer",
"maximum": 100.0,
"minimum": 1.0,
"title": "Limit",
"default": 20
},
"name": "limit",
"in": "query"
},
{
"required": false,
"schema": {
"type": "integer",
"minimum": 0.0,
"title": "Offset",
"default": 0
},
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferPage_IntakeCandidateRead_"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_list_transfer_evidence",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}/evidence",
"x-docs-kind": "other",
"x-docs-order": 100,
"x-docs-depth": 2,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_requests/.../evidence \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_list_transfer_evidence\",\n \"arguments\": {\n \"request_id\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_list_transfer_evidence\",\n arguments: {\n \"request_id\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_requests/{request_id}/executions
List transfer executions
Read the next bounded page using next_offset from the request's embedded executions section. No processing or provider calls are triggered.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "List transfer executions",
"description": "Read the next bounded page using next_offset from the request's embedded executions section. No processing or provider calls are triggered.",
"operationId": "v1_list_transfer_executions",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
},
{
"required": false,
"schema": {
"type": "integer",
"maximum": 100.0,
"minimum": 1.0,
"title": "Limit",
"default": 20
},
"name": "limit",
"in": "query"
},
{
"required": false,
"schema": {
"type": "integer",
"minimum": 0.0,
"title": "Offset",
"default": 0
},
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicTransferPage_TransferExecutionRead_"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_list_transfer_executions",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}/executions",
"x-docs-kind": "other",
"x-docs-order": 100,
"x-docs-depth": 2,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_requests/.../executions \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_list_transfer_executions\",\n \"arguments\": {\n \"request_id\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_list_transfer_executions\",\n arguments: {\n \"request_id\": \"...\"\n},\n});"
}
]
}
GET /v1/transfer_requests/{request_id}/submissions
List transfer submissions
Read the next bounded page using next_offset from the request's embedded submissions section. No processing or provider calls are triggered.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "List transfer submissions",
"description": "Read the next bounded page using next_offset from the request's embedded submissions section. No processing or provider calls are triggered.",
"operationId": "v1_list_transfer_submissions",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
},
{
"required": false,
"schema": {
"type": "integer",
"maximum": 100.0,
"minimum": 1.0,
"title": "Limit",
"default": 20
},
"name": "limit",
"in": "query"
},
{
"required": false,
"schema": {
"type": "integer",
"minimum": 0.0,
"title": "Offset",
"default": 0
},
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferPage_TransferSubmissionRead_"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_list_transfer_submissions",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}/submissions",
"x-docs-kind": "other",
"x-docs-order": 100,
"x-docs-depth": 2,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X GET https://api.openmerchant.dev/v1/transfer_requests/.../submissions \\\n -H 'Authorization: Bearer pr_sk_test_...'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_list_transfer_submissions\",\n \"arguments\": {\n \"request_id\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_list_transfer_submissions\",\n arguments: {\n \"request_id\": \"...\"\n},\n});"
}
]
}
POST /v1/transfer_requests/{request_id}/submissions
Submit transfer evidence or corrected facts
Append a packet of invoice facts and optional documents, or a correction for an associated candidate. Documents may be reused within the same account and mode; original custody, consent, and retention remain authoritative. Requires the current request revision and an idempotency key. Submission never authorizes execution.
Parameters, request, responses, and security
{
"tags": [
"transfers"
],
"summary": "Submit transfer evidence or corrected facts",
"description": "Append a packet of invoice facts and optional documents, or a correction for an associated candidate. Documents may be reused within the same account and mode; original custody, consent, and retention remain authoritative. Requires the current request revision and an idempotency key. Submission never authorizes execution.",
"operationId": "v1_create_transfer_submission",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Request Id"
},
"name": "request_id",
"in": "path"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferSubmissionCreate"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferSubmissionRead"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"ApiKeyBearer": []
}
],
"x-api-audience": "public_v1",
"x-api-authentication": "required",
"x-operation-id": "v1_create_transfer_submission",
"x-mcp-exposed": true,
"x-public-path": "/v1/transfer_requests/{request_id}/submissions",
"x-docs-kind": "other",
"x-docs-order": 100,
"x-docs-depth": 2,
"x-docs-action-order": 1000,
"x-codeSamples": [
{
"lang": "shell",
"label": "curl",
"source": "curl -X POST https://api.openmerchant.dev/v1/transfer_requests/.../submissions \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"idempotency_key\": \"...\",\n \"expected_revision\": \"...\"\n}'"
},
{
"lang": "shell",
"label": "MCP (Streamable HTTP)",
"source": "curl -X POST https://api.openmerchant.dev/mcp/v1 \\\n -H 'Authorization: Bearer pr_sk_test_...' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"v1_create_transfer_submission\",\n \"arguments\": {\n \"request_id\": \"...\",\n \"idempotency_key\": \"...\",\n \"expected_revision\": \"...\"\n }\n }\n}'"
},
{
"lang": "typescript",
"label": "MCP SDK (TS)",
"source": "// Reusing a Client connected to /mcp/v1 — see the \"MCP server\" tag for setup.\nconst result = await client.callTool({\n name: \"v1_create_transfer_submission\",\n arguments: {\n \"request_id\": \"...\",\n \"idempotency_key\": \"...\",\n \"expected_revision\": \"...\"\n},\n});"
}
]
}