ingestions.receipt_proposal

Prepare a bill-and-payment proposal from a complete, evidenced vendor receipt. Requires a matching existing funding account, or a person’s own card in the company’s currency, and same-time full payment; incomplete receipts, fees and other FX need review. Does not post the proposal.

What it does

Prepare a manual ordinary receipts.record command from exact complete retained vendor_receipt JSON or PDF/text extraction with frozen receipt-fields-v1 or receipt-spans-v1 source selections, classified receipt. Source invoice fields: vendor,buyer,externalId,currency,effectiveAt,total,lines:[{description,amount}],optional zero tax/facts. Required payment:{status:‘paid’,externalId,last4:four digits}.

Select existing current-priced vendor activity and financialAccountId; source last4 must uniquely match an active account in that currency, or a person’s own card (ownerPartyId) in the company’s currency, whose payment of the foreign receipt is recorded at the bill’s booking rate (the preview shows the recorded currency and amount). Buyer must match this business. All source lines and exact total, current contract price, completed payment and ordinary funding checks apply. No service recognition, legal acceptance, payment initiation, fees, other FX or existing-bill settlement.

Result is transient, manual, with original provenance; no durable receipt/proposal revision or financial write. Inline text remains unverified. Execute the returned ordinary command separately with current write authority; registered structured or supported complete source-bound PDF/UTF-8 receipt auto_record instead uses ingestions.start with an explicit frozen fundingAccounts policy and the existing delegated recording runner. Incomplete/unsupported PDF extraction, image originals, unverified inline automatic sources and existing-bill settlement remain review work.

Payment never establishes service delivery.

Before you send it

An authorized OAuth connection may call it, including a headless client. Effective membership, application grant and token permissions still apply. Describe ingestions.receipt_proposal through GET /v1/catalog/commands/{name} before acting.

This command does not accept source_document_id in its envelope. Any input evidence requirements remain as documented below.

Inputs

Put these fields inside the envelope’s input object. The outer envelope names the command, a stable idempotency_key and effective_at; request and recovery rules explain those separately. Use exact minor-unit integer strings for monetary fields. Take existing IDs from prior reads or command results; choose a new identity only where the command asks for one.

Required means required within its containing object; an optional parent can be omitted.

FieldTypeRequiredMeaning and accepted values
ingestionIdstringYes
receiptTextstringYes
expenseTargetsarrayYesItems: object. Minimum items: 1. Maximum items: 20.
expenseTargets[].contractIdstringYesMinimum length: 1. Maximum length: 128.
expenseTargets[].activityKeystringYesMinimum length: 1. Maximum length: 128.
financialAccountIdstringYes

After acceptance

When the command emits events, its documented effects and receipt are recorded in the command transaction. The response returns commandId, replayed, the command-specific result below and emitted events with their IDs and CIDs. A command is not automatically a cash movement or revenue recognition: use the behavior above to determine what this command records.

Inspect result and the affected records or reports before continuing. Save returned identifiers for later calls. Fetch GET /v1/commands/{id} with commandId to recover the accepted receipt; retry the same intent with the same idempotency key if the response was lost. Some commands can succeed with events: [] and return a transient result and commandId without persisting a receipt. A lookup of that ID can return null; retain the returned result and verify the affected record. Retrying can re-evaluate the current state rather than replay a stored result. A domain no_change is a separate success outcome with no persisted receipt.

Result fields

Required means required within its containing object; an optional parent can be omitted.

FieldTypeRequiredMeaning and accepted values
dispositionstringYesChoose "ready", "needs_information".
missingarrayYesItems: string.
sourceobjectYes
source.documentIdstringYes
source.cidstringYes
source.textCidstringYes
source.provenancestringYesChoose "registered_bytes", "caller_supplied_unverified".
billingobjectNo
previewobjectNo
commandobjectNo
command.namestringYesMust be "receipts.record".
command.source_document_idstringYes
command.effective_atstringYesFormat: date-time.
command.idempotency_keystringYes
command.inputobjectYes
command.input.processingobjectNo
command.input.processing.railstringYesChoose "ach", "ach_same_day", "fedwire", "rtp", "sepa", "sepa_instant", "swift", "onchain", "internal", "card".
command.input.processing.netAmountstringYesPattern: "^(0|-?[1-9][0-9]*)$".
command.input.processing.feeFactsobjectNo
command.input.processing.evidencearrayYesItems: object. Minimum items: 1. Maximum items: 20.
command.input.processing.evidence[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.processing.evidence[].refstringYesMinimum length: 1.
command.input.processing.evidence[].signerstringNoMinimum length: 1.
command.input.billingobjectYesChoose a matching alternative in the exact schema below.
command.input.billing.contractIdstringYesMinimum length: 1.
command.input.billing.activityKeystringYesMinimum length: 1.
command.input.billing.occurrenceKeystringYesMinimum length: 1.
command.input.billing.obligationKeystringNoMinimum length: 1.
command.input.billing.sourceFactIdstringYesMinimum length: 1.
command.input.billing.effectiveAtstringYesFormat: date-time.
command.input.billing.phasestringYesMust be "billing".
command.input.billing.dueDatestringNoFormat: date.
command.input.billing.exchangeRateobjectNoAn evidenced exchange rate (1 base = numerator/denominator quote), e.g. from a bank statement. It overrides the shared rate store for this command; omit it to use the store.
command.input.billing.exchangeRate.basestringYesPattern: "^[A-Z]{3}$".
command.input.billing.exchangeRate.quotestringYesPattern: "^[A-Z]{3}$".
command.input.billing.exchangeRate.datestringYesFormat: date.
command.input.billing.exchangeRate.numeratorstringYesPattern: "^[1-9][0-9]*$".
command.input.billing.exchangeRate.denominatorstringYesPattern: "^[1-9][0-9]*$".
command.input.billing.exchangeRate.evidencearrayYesItems: object. Minimum items: 1.
command.input.billing.exchangeRate.evidence[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.billing.exchangeRate.evidence[].refstringYesMinimum length: 1.
command.input.billing.exchangeRate.evidence[].signerstringNo
command.input.billing.periodobjectNo
command.input.billing.period.fromstringYesFormat: date-time.
command.input.billing.period.throughstringYesFormat: date-time.
command.input.billing.factsobjectNo
command.input.billing.evidenceobjectNo
command.input.billing.evidence.billingarrayNoItems: object. Minimum items: 1. Maximum items: 20.
command.input.billing.evidence.billing[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.billing.evidence.billing[].refstringYesMinimum length: 1.
command.input.billing.evidence.billing[].signerstringNoMinimum length: 1.
command.input.billing.evidence.servicearrayNoItems: object. Minimum items: 1. Maximum items: 20.
command.input.billing.evidence.service[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.billing.evidence.service[].refstringYesMinimum length: 1.
command.input.billing.evidence.service[].signerstringNoMinimum length: 1.
command.input.billing.evidence.acceptancearrayNoItems: object. Minimum items: 1. Maximum items: 20.
command.input.billing.evidence.acceptance[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.billing.evidence.acceptance[].refstringYesMinimum length: 1.
command.input.billing.evidence.acceptance[].signerstringNoMinimum length: 1.
command.input.billing.evidence.economicarrayNoItems: object. Minimum items: 1. Maximum items: 20.
command.input.billing.evidence.economic[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.billing.evidence.economic[].refstringYesMinimum length: 1.
command.input.billing.evidence.economic[].signerstringNoMinimum length: 1.
command.input.paymentobjectYes
command.input.payment.financialAccountIdstringYesMinimum length: 1.
command.input.payment.directionstringYesChoose "in", "out".
command.input.payment.amountstringYesPattern: "^[1-9][0-9]*$".
command.input.payment.currencystringYesMinimum length: 1.
command.input.payment.partyIdstringYesMinimum length: 1.
command.input.payment.effectiveAtstringYesFormat: date-time.
command.input.payment.sourceFactIdstringYesMinimum length: 1.
command.input.payment.evidencearrayYesItems: object. Minimum items: 1. Maximum items: 20.
command.input.payment.evidence[].kindstringYesChoose "tap_message", "x402_receipt", "chain_tx", "signed_doc", "stripe_object", "other".
command.input.payment.evidence[].refstringYesMinimum length: 1.
command.input.payment.evidence[].signerstringNoMinimum length: 1.

All commands · Operation and errors · Reusable schemas

Keep credentials out of prompts; rehearse writes only in a disposable sandbox.

Exact request schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "const": "ingestions.receipt_proposal"
    },
    "input": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "ingestionId",
        "receiptText",
        "expenseTargets",
        "financialAccountId"
      ],
      "properties": {
        "ingestionId": {
          "type": "string"
        },
        "receiptText": {
          "type": "string"
        },
        "expenseTargets": {
          "type": "array",
          "minItems": 1,
          "maxItems": 20,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "contractId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              },
              "activityKey": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              }
            },
            "required": [
              "contractId",
              "activityKey"
            ]
          }
        },
        "financialAccountId": {
          "type": "string"
        }
      }
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256
    },
    "effective_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "name",
    "input",
    "idempotency_key",
    "effective_at"
  ],
  "additionalProperties": false
}

Accepted command receipt

{
  "type": "object",
  "required": [
    "commandId",
    "replayed",
    "result",
    "events"
  ],
  "properties": {
    "commandId": {
      "type": "string"
    },
    "replayed": {
      "type": "boolean"
    },
    "imported": {
      "const": true,
      "description": "The command's events are history from before the business joined Economico, recorded as an import: free of monthly events."
    },
    "result": {
      "type": "object",
      "required": [
        "disposition",
        "source",
        "missing"
      ],
      "properties": {
        "disposition": {
          "enum": [
            "ready",
            "needs_information"
          ]
        },
        "missing": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "source": {
          "type": "object",
          "required": [
            "documentId",
            "cid",
            "textCid",
            "provenance"
          ],
          "properties": {
            "documentId": {
              "type": "string"
            },
            "cid": {
              "type": "string"
            },
            "textCid": {
              "type": "string"
            },
            "provenance": {
              "enum": [
                "registered_bytes",
                "caller_supplied_unverified"
              ]
            }
          }
        },
        "billing": {
          "type": "object"
        },
        "preview": {
          "type": "object"
        },
        "command": {
          "type": "object",
          "required": [
            "name",
            "source_document_id",
            "effective_at",
            "idempotency_key",
            "input"
          ],
          "properties": {
            "name": {
              "const": "receipts.record"
            },
            "source_document_id": {
              "type": "string"
            },
            "effective_at": {
              "type": "string",
              "format": "date-time"
            },
            "idempotency_key": {
              "type": "string"
            },
            "input": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "billing",
                "payment"
              ],
              "properties": {
                "processing": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "rail",
                    "netAmount",
                    "evidence"
                  ],
                  "properties": {
                    "rail": {
                      "enum": [
                        "ach",
                        "ach_same_day",
                        "fedwire",
                        "rtp",
                        "sepa",
                        "sepa_instant",
                        "swift",
                        "onchain",
                        "internal",
                        "card"
                      ]
                    },
                    "netAmount": {
                      "type": "string",
                      "pattern": "^(0|-?[1-9][0-9]*)$"
                    },
                    "feeFacts": {
                      "type": "object",
                      "maxProperties": 20,
                      "additionalProperties": {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    },
                    "evidence": {
                      "type": "array",
                      "minItems": 1,
                      "maxItems": 20,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "kind",
                          "ref"
                        ],
                        "properties": {
                          "kind": {
                            "enum": [
                              "tap_message",
                              "x402_receipt",
                              "chain_tx",
                              "signed_doc",
                              "stripe_object",
                              "other"
                            ]
                          },
                          "ref": {
                            "type": "string",
                            "minLength": 1
                          },
                          "signer": {
                            "type": "string",
                            "minLength": 1
                          }
                        }
                      }
                    }
                  }
                },
                "billing": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "contractId",
                    "activityKey",
                    "occurrenceKey",
                    "sourceFactId",
                    "effectiveAt",
                    "phase"
                  ],
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "obligationKey": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "required": [
                        "obligationKey"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "period": {
                          "type": "object",
                          "properties": {
                            "from": {
                              "type": "string",
                              "minLength": 1
                            },
                            "through": {
                              "type": "string",
                              "minLength": 1
                            }
                          },
                          "required": [
                            "from",
                            "through"
                          ]
                        }
                      },
                      "required": [
                        "period"
                      ]
                    }
                  ],
                  "properties": {
                    "contractId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "activityKey": {
                      "type": "string",
                      "minLength": 1
                    },
                    "occurrenceKey": {
                      "type": "string",
                      "minLength": 1
                    },
                    "obligationKey": {
                      "type": "string",
                      "minLength": 1
                    },
                    "sourceFactId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "effectiveAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "phase": {
                      "const": "billing"
                    },
                    "dueDate": {
                      "type": "string",
                      "format": "date"
                    },
                    "exchangeRate": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "base",
                        "quote",
                        "date",
                        "numerator",
                        "denominator",
                        "evidence"
                      ],
                      "description": "An evidenced exchange rate (1 base = numerator/denominator quote), e.g. from a bank statement. It overrides the shared rate store for this command; omit it to use the store.",
                      "properties": {
                        "base": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "quote": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "date": {
                          "type": "string",
                          "format": "date"
                        },
                        "numerator": {
                          "type": "string",
                          "pattern": "^[1-9][0-9]*$"
                        },
                        "denominator": {
                          "type": "string",
                          "pattern": "^[1-9][0-9]*$"
                        },
                        "evidence": {
                          "type": "array",
                          "minItems": 1,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "kind",
                              "ref"
                            ],
                            "properties": {
                              "kind": {
                                "enum": [
                                  "tap_message",
                                  "x402_receipt",
                                  "chain_tx",
                                  "signed_doc",
                                  "stripe_object",
                                  "other"
                                ]
                              },
                              "ref": {
                                "type": "string",
                                "minLength": 1
                              },
                              "signer": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "period": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "through"
                      ],
                      "properties": {
                        "from": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "through": {
                          "type": "string",
                          "format": "date-time"
                        }
                      }
                    },
                    "facts": {
                      "type": "object",
                      "maxProperties": 100,
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "occurrenceId"
                            ],
                            "properties": {
                              "occurrenceId": {
                                "type": "string",
                                "minLength": 1
                              }
                            }
                          },
                          {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "claimId",
                              "component"
                            ],
                            "properties": {
                              "claimId": {
                                "type": "string",
                                "minLength": 1
                              },
                              "component": {
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                  "originLedgerId",
                                  "accountCode"
                                ],
                                "properties": {
                                  "originLedgerId": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "accountCode": {
                                    "type": "integer"
                                  }
                                }
                              }
                            }
                          }
                        ]
                      }
                    },
                    "evidence": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "billing": {
                          "type": "array",
                          "minItems": 1,
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "kind",
                              "ref"
                            ],
                            "properties": {
                              "kind": {
                                "enum": [
                                  "tap_message",
                                  "x402_receipt",
                                  "chain_tx",
                                  "signed_doc",
                                  "stripe_object",
                                  "other"
                                ]
                              },
                              "ref": {
                                "type": "string",
                                "minLength": 1
                              },
                              "signer": {
                                "type": "string",
                                "minLength": 1
                              }
                            }
                          }
                        },
                        "service": {
                          "type": "array",
                          "minItems": 1,
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "kind",
                              "ref"
                            ],
                            "properties": {
                              "kind": {
                                "enum": [
                                  "tap_message",
                                  "x402_receipt",
                                  "chain_tx",
                                  "signed_doc",
                                  "stripe_object",
                                  "other"
                                ]
                              },
                              "ref": {
                                "type": "string",
                                "minLength": 1
                              },
                              "signer": {
                                "type": "string",
                                "minLength": 1
                              }
                            }
                          }
                        },
                        "acceptance": {
                          "type": "array",
                          "minItems": 1,
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "kind",
                              "ref"
                            ],
                            "properties": {
                              "kind": {
                                "enum": [
                                  "tap_message",
                                  "x402_receipt",
                                  "chain_tx",
                                  "signed_doc",
                                  "stripe_object",
                                  "other"
                                ]
                              },
                              "ref": {
                                "type": "string",
                                "minLength": 1
                              },
                              "signer": {
                                "type": "string",
                                "minLength": 1
                              }
                            }
                          }
                        },
                        "economic": {
                          "type": "array",
                          "minItems": 1,
                          "maxItems": 20,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "kind",
                              "ref"
                            ],
                            "properties": {
                              "kind": {
                                "enum": [
                                  "tap_message",
                                  "x402_receipt",
                                  "chain_tx",
                                  "signed_doc",
                                  "stripe_object",
                                  "other"
                                ]
                              },
                              "ref": {
                                "type": "string",
                                "minLength": 1
                              },
                              "signer": {
                                "type": "string",
                                "minLength": 1
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "payment": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "financialAccountId",
                    "direction",
                    "amount",
                    "currency",
                    "partyId",
                    "effectiveAt",
                    "sourceFactId",
                    "evidence"
                  ],
                  "properties": {
                    "financialAccountId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "direction": {
                      "enum": [
                        "in",
                        "out"
                      ]
                    },
                    "amount": {
                      "type": "string",
                      "pattern": "^[1-9][0-9]*$"
                    },
                    "currency": {
                      "type": "string",
                      "minLength": 1
                    },
                    "partyId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "effectiveAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "sourceFactId": {
                      "type": "string",
                      "minLength": 1
                    },
                    "evidence": {
                      "type": "array",
                      "minItems": 1,
                      "maxItems": 20,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "kind",
                          "ref"
                        ],
                        "properties": {
                          "kind": {
                            "enum": [
                              "tap_message",
                              "x402_receipt",
                              "chain_tx",
                              "signed_doc",
                              "stripe_object",
                              "other"
                            ]
                          },
                          "ref": {
                            "type": "string",
                            "minLength": 1
                          },
                          "signer": {
                            "type": "string",
                            "minLength": 1
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "cid": {
            "type": "string"
          }
        }
      }
    }
  }
}
Navigate documentation