invoice_analysis_pay
Only for an invoice created with paid checks (["scorechain"], ["merkle-science"] or both) whose analysis.status is awaiting_payment (see invoice_get). Builds ONE USDC transfer of analysis.amount (0.15 Scorechain, 0.60 Merkle Science, 0.75 both) to the Vurto fee wallet (analysis.to), signed by the invoice creator. Nothing is signed or sent here. The free screening runs first on the receiving wallet and on the creator: a rejected wallet gets screening_blocked (403) and nothing is built; a screening that cannot be read gets screening_unavailable (503). payer must be the creator (the receiving wallet when the invoice was created without a session, which is always the case over MCP); any other wallet gets not_invoice_creator (403) before anything is built. plan has the same shape as invoice_pay (prepare_signing; on Solana POST the signed transaction to /v1/svm/execute), then call invoice_report_analysis_payment with the hash or signature. Paying it from another token is a swap built over the HTTP API (POST /v1/swap on EVM, POST /v1/svm/swap on Solana) from the creator wallet with tokenOut = analysis.token, receiver = analysis.to and invoiceId = this invoice, sized so the guaranteed minimum covers analysis.amountRaw; report its hash or signature to invoice_report_analysis_payment. On EVM only a swap built that way counts (the transaction must match that build); on Solana the Vurto fee wallet must be the only wallet whose USDC rises in it. A swap that only pays a fee to the same wallet does not count. Errors: no_paid_check, analysis_already_paid, invoice_already_paid, not_invoice_creator, screening_blocked, screening_unavailable. SOLANA invoices (new model, since 23/10/2026): this is how the PAYER buys the paid analysis of the RECEIVING wallet, with their own money, before paying. Pass payer = the paying wallet and checks (["merkle-science"] 0.30, ["scorechain"] 0.075, both 0.375 USDC, the price of ONE wallet). The payer proves the wallet first (destination_challenge/destination_authorize for this invoice's receiver; without it payer_signature_required, 401); the free screening of both wallets must pass (screening_blocked 403). It returns receiverAnalysis {status: awaiting_payment, amount, to} and the USDC transfer to sign; report it with invoice_report_analysis_payment (txHash and payer). While it is awaiting payment, invoice_pay refuses with receiver_analysis_unpaid (409): the invoice can be paid only after this analysis is paid and done. checks: [] gives it up before paying. The result comes back without the receiving wallet. Paying it from another token: POST /v1/svm/swap from the payer with receiver = the fee wallet (receiverAnalysis.to) and invoiceId = this invoice.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | INV-XXXX-XXXX or the 8-character id. | |
| payer | Yes | EVM (old model): the invoice creator wallet, which signs the analysis payment. Solana (new model): the paying wallet, which buys the analysis of the receiving wallet. | |
| checks | No | Solana only: the paid analyses of the RECEIVING wallet the payer buys. [] gives up an unpaid one. |