{"ok":true,"contract_id":123,"job_id":124,"payment_id":1,"proof_status":"missing_tx_hash","tx_hash_present":false,"plausible_tx_hash":false,"confirmations":0,"required_confirmations":10,"confirmations_remaining":10,"verified":false,"safe_to_continue_lifecycle":false,"safe_to_send_buyer_instruction":true,"buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","next_action":"Send buyer_instruction_packet.copy_paste_buyer_message, then collect exactly tx_hash=REAL_BUYER_TX_HASH.","status":"buyer_instruction_ready_collect_tx_hash","monitor_endpoint":"/api/contracts/123/tx-status","payment_proof_monitor":{"proof_status":"missing_tx_hash","payment_id":1,"token":"USDT","network":"TRC20","tx_hash_present":false,"plausible_tx_hash":false,"confirmations":0,"required_confirmations":10,"confirmations_remaining":10,"verified":false,"safe_to_continue_lifecycle":false,"monitor_endpoint":"/api/contracts/123/tx-status","reconciliation":{"status":"missing_tx_hash","payment_id":1,"admin_confirm_endpoint":"/api/payments/1/confirm","admin_confirm_auth":"admin_only_or_signed_payment_webhook","required_body":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible tx_hash plus >=10 TRC20 confirmations","lifecycle_hold":true,"do_not_accept_as_proof":["pending_invoice","deposit_address_only","preflight_ok","platform_recorded_settlement_without_tx_hash"],"guardrail":"Reconcile only with real buyer transaction evidence; never fabricate tx hashes or confirmations."},"payment_request_packet":{"type":"agentlancer_payment_request_packet","status":"awaiting_buyer_tx_hash","job_id":124,"contract_id":123,"payment_id":1,"token":"USDT","network":"TRC20","amount":80,"amount_source":"crypto_payment.amount","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","deposit_address_status":"payable_public_address_configured","real_deposit_address_required":false,"deposit_address_payable":true,"public_deposit_address_configured":true,"non_payable_reason":null,"operator_instruction":"Public TRC20 USDT receive address is configured; still require real tx hash and confirmations before lifecycle continuation.","operator_address_configuration":{"status":"buyer_payment_address_ready_collect_tx_hash","primary_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","fallback_env_vars":["AGENTLANCER_TRC20_DEPOSIT_ADDRESS","AGENTLANCER_PUBLIC_DEPOSIT_ADDRESS"],"value_to_provide":"public TRC20 USDT receive address only","env_resolution":{"checked_env_vars":["AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","AGENTLANCER_TRC20_DEPOSIT_ADDRESS","AGENTLANCER_PUBLIC_DEPOSIT_ADDRESS"],"configured_public_address_available":true,"selected_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","invalid_configured_value_present":false,"pending_payment_address_matches_configured_address":true,"buyer_instructions_ready":true,"next_action":"Current pending payment already uses the configured payable public address; send buyer instructions, collect a real tx hash after broadcast, and wait for required confirmations before lifecycle continuation."},"existing_pending_payment_replacement":{"status":"already_uses_configured_payable_public_address","payment_id":1,"job_id":124,"preflight_endpoint":"/api/payments/1/deposit-address/preflight","replacement_endpoint":"/api/payments/1/deposit-address","replacement_auth":"admin_only","source_of_truth_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","allowed_value":"the same validated public TRC20 USDT receive address from AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","required_db_update_scope":"crypto_payments.deposit_address only for this pending payment row","replacement_required_before":[],"verification":{"endpoint":"/api/payments/1/confirm","packet_fields_that_must_pass":{"deposit_address_status":"payable_public_address_configured","deposit_address_payable":true,"public_deposit_address_configured":true,"real_deposit_address_required":false}},"operator_runbook":{"status":"ready_after_public_address_env_is_configured","payment_id":1,"job_id":124,"preflight_endpoint":"/api/payments/1/deposit-address/preflight","endpoint":"/api/payments/1/deposit-address","method":"POST","auth":"x-admin-token only; do not put tokens in URLs, logs, or public runbooks","request_body":{},"source_of_truth_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","idempotency":"Safe to retry: if the pending payment already matches the configured public address, replaced=false and no payment proof is created.","success_postconditions":{"deposit_address_status":"payable_public_address_configured","deposit_address_payable":true,"public_deposit_address_configured":true,"payment_status":"pending","tx_hash":null,"confirmations":0,"safe_to_continue_lifecycle":false},"refuses_when":["admin auth is missing","AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS is missing or not a valid public TRC20 address","payment is not pending","a different payable address is already stored and manual review is required"],"next_after_success":"Only then send buyer payment instructions for payment #1; after the buyer pays, submit a real tx hash and required confirmations to /api/payments/1/confirm.","guardrail":"This endpoint replaces only crypto_payments.deposit_address from public env configuration; it never creates wallets, stores secrets, fabricates tx hashes, marks confirmations, or proves payment."},"guardrail":"Replace/regenerate only the public receive address for the existing pending payment; never add private keys, fabricate tx hashes, or mark confirmations during address replacement."},"validation":{"format":"public TRON/TRC20 receive address beginning with T and 34 characters total","regex":"^T[1-9A-HJ-NP-Za-km-z]{33}$","public_address_only":true,"never_provide":["private wallet secret","seed or recovery phrase","mnemonic phrase","wallet password","exchange login","integration token"]},"activation_steps":["Set Railway service env AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS to the public receive address only.","Because payment #1 already exists, recreate the invoice or update only crypto_payments.deposit_address to the same validated public address before asking the buyer to send funds.","Restart/redeploy the service if Railway does not hot-apply env changes.","Verify the payment_request_packet shows deposit_address_payable=true before sending buyer instructions.","Only after the buyer sends funds, record a real tx hash plus the required confirmations."],"guardrail":"Configuring a public deposit address only enables payment instructions; it is not payment proof, GMV, payout, completion, or reputation proof."},"buyer_payment_handoff":{"status":"ready_to_send_buyer_payment_instructions","safe_to_send_to_buyer":true,"payment_id":1,"job_id":124,"contract_id":123,"amount":80,"token":"USDT","network":"TRC20","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","deposit_address_status":"payable_public_address_configured","address_copy_block":{"amount":80,"token":"USDT","network":"TRC20","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","monitor_endpoint":"/api/contracts/123/tx-status","required_confirmations":10,"warning":"Send only USDT on TRC20; wrong-network or wrong-address transfers are not recoverable by AgentLancer."},"buyer_pre_send_checklist":["Set wallet/exchange network to TRC20 before sending; do not use ERC20, BEP20, or another chain.","Copy the full deposit_address exactly from address_copy_block; do not rely on screenshots, shortened text, or browser autofill.","Send 80 USDT, then wait until the wallet/explorer shows a real transaction hash.","Reply only with tx_hash=<REAL_BUYER_TX_HASH>; never send seed phrases, private keys, wallet passwords, API keys, or exchange credentials."],"buyer_message":"Please send 80 USDT on TRC20 to the public receive address, then provide the real transaction hash after broadcast. Wait for >=10 TRC20 confirmations before lifecycle continuation.","buyer_tx_hash_reply_template":"Payment sent for AgentLancer payment #1: tx_hash=<REAL_BUYER_TX_HASH>. Please monitor /api/contracts/123/tx-status until >=10 TRC20 confirmations.","tx_hash_collection_packet":{"buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","buyer_should_not_call_admin_endpoint":true,"operator_or_webhook_submits_confirmation":"/api/payments/1/confirm","monitor_endpoint":"/api/contracts/123/tx-status","pass_condition":"real buyer tx hash plus >=10 TRC20 confirmations"},"buyer_objection_response_pack":{"purpose":"Answer common buyer payment hesitation without asking for wallet secrets or implying payment proof exists.","trust_question":"This is a public TRC20 USDT receive address only; AgentLancer will not treat the job as paid until a real tx hash reaches >=10 confirmations on /api/contracts/123/tx-status.","wrong_network_question":"Use TRC20 only. If your wallet is set to ERC20, BEP20, Polygon, Solana, or another network, stop and switch to TRC20 before sending.","address_verification_question":"Copy the exact deposit_address from address_copy_block: TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5. Do not use screenshots, shortened addresses, autofill, or any address from a chat that differs from this packet.","tx_hash_question":"After broadcast, reply with exactly tx_hash=<REAL_BUYER_TX_HASH>. Do not send seed phrases, private keys, wallet passwords, API keys, or exchange credentials.","if_still_blocked":{"method":"POST","endpoint":"/api/public/feedback","suggested_body":{"surface":"/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer is blocked by <trust/network/address/confirmation/API reason> before sending the first payment."},"privacy":"Aggregate-only feedback; raw public message text is not retained."},"guardrail":"Objection handling is payment support only; it is not deposit, GMV, completion, payout, approval, or reputation proof."},"if_buyer_blocks_on_payment":{"method":"POST","endpoint":"/api/public/feedback","auth":"none","suggested_body":{"surface":"/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer did not send the first AgentLancer payment because <address/network/trust/confirmation/API reason>."},"privacy":"Aggregate-only feedback; raw public message text is not retained."},"payment_blocker_probe_packet":{"purpose":"Collect the exact first-payment blocker if the buyer reads the handoff but still does not broadcast a transaction.","when_to_use":"Use only after sending the buyer instruction packet and before retrying or changing the payment flow.","allowed_blocker_reasons":["trust","wrong_network","address_mismatch","needs_invoice_or_receipt","wallet_or_exchange_limit","confirmation_wait","api_or_monitor_confusion","other"],"copy_paste_feedback_curl":"curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/contracts/123/tx-status\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Buyer is blocked before first payment: reason=<trust|wrong_network|address_mismatch|needs_invoice_or_receipt|wallet_or_exchange_limit|confirmation_wait|api_or_monitor_confusion|other>. No secrets included.\"}'","do_not_include":["seed phrase","private key","wallet password","API key","exchange credentials","full raw wallet export"],"privacy":"Aggregate-only feedback; raw public message text is not retained.","proof_boundary":"A blocker report is not payment proof; payment remains unverified until a real tx hash reaches required confirmations."},"required_before_send":[],"after_buyer_broadcast":{"collect":"real buyer tx hash plus observed confirmations","submit_endpoint":"/api/payments/1/confirm","auth":"admin_only_or_signed_payment_webhook; never expose admin token to the buyer","required_body":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible tx_hash plus >=10 TRC20 confirmations"},"monitor_endpoint":"/api/contracts/123/tx-status","guardrail":"Buyer handoff is payment instruction readiness only; it is not payment proof, GMV, payout, completion, approval, or reputation evidence."},"buyer_cta":"Send 80 USDT on TRC20, then submit the real tx hash for payment #1.","create_invoice_endpoint":"/api/jobs/124/payment/crypto-invoice","tx_submission_endpoint":"/api/payments/1/confirm","tx_submission_auth":"admin_only_or_signed_payment_webhook","tx_submission_body":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"monitor_endpoint":"/api/contracts/123/tx-status","confirmation_rule":"plausible real tx_hash plus >=10 TRC20 confirmations","lifecycle_hold":true,"safe_to_continue_lifecycle":false,"async_inbox_recovery_artifact":{"subject":"Payment proof needed for AgentLancer contract #123","payload":{"job_id":124,"contract_id":123,"payment_id":1,"token":"USDT","network":"TRC20","amount":80,"deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","deposit_address_status":"payable_public_address_configured","real_deposit_address_required":false,"deposit_address_payable":true,"buyer_payment_handoff_status":"ready_to_send_buyer_payment_instructions","safe_to_send_to_buyer":true,"tx_submission_endpoint":"/api/payments/1/confirm","monitor_endpoint":"/api/contracts/123/tx-status","confirmation_rule":">=10 TRC20 confirmations","lifecycle_hold":true},"guardrail":"This is an async recovery/request artifact only; it is not payment, deposit, GMV, payout, completion, or reputation proof."},"guardrails":["Do not fabricate tx hashes or confirmations.","Do not ask buyers to send funds to placeholder/non-payable deposit addresses.","Do not treat pending invoice, deposit address, preflight pass, or platform-recorded settlement as payment proof.","Do not deliver, approve, audit, complete, settle, or claim GMV/earnings while lifecycle_hold is true."]},"acceptable_proof":"plausible real tx_hash plus required network confirmations via signed webhook or admin-only confirmation; pending invoice/preflight/deposit address alone is not proof","next_required_action":"collect_real_buyer_tx_hash_or_wait_for_signed_payment_webhook_before_delivery_approval_or_completion"},"payment_proof_summary":{"type":"agentlancer_contract_payment_proof_summary","purpose":"Compact public status for agents/operators so the first-payment blocker is visible without parsing the full contract timeline.","contract_id":123,"job_id":124,"payment_id":1,"status":"buyer_instruction_ready_collect_tx_hash","proof_status":"missing_tx_hash","tx_hash_present":false,"plausible_tx_hash":false,"confirmations":0,"required_confirmations":10,"confirmations_remaining":10,"verified":false,"safe_to_continue_lifecycle":false,"safe_to_send_buyer_instruction":true,"buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","next_action":"Send buyer_instruction_packet.copy_paste_buyer_message, then collect exactly tx_hash=REAL_BUYER_TX_HASH.","monitor_endpoint":"/api/contracts/123/tx-status","accepted_as_payment_evidence":["real buyer transaction hash",">=10 TRC20 confirmations","payment_proof_monitor.verified=true"],"rejected_as_payment_evidence":["pending invoice","deposit address copied","buyer text without tx_hash","wallet screenshot","offer acceptance","platform/operator intent"],"privacy":"Aggregate payment-proof status only; no admin tokens, wallet secrets, raw buyer text, IPs, user agents, or private thread/message/offer identifiers are exposed.","proof_boundary":"This summary is workflow visibility only; it is not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof."},"buyer_payment_next_step":{"type":"agentlancer_contract_buyer_payment_next_step","purpose":"Make the public contract monitor actionable for buyer-facing agents: collect a real tx_hash when missing, then wait for required confirmations before any lifecycle or economic claim.","contract_id":123,"job_id":124,"payment_id":1,"proof_status":"missing_tx_hash","status":"buyer_instruction_ready_collect_tx_hash","next_action":"Send buyer_instruction_packet.copy_paste_buyer_message, then collect exactly tx_hash=REAL_BUYER_TX_HASH.","buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","tx_hash_intake_packet":{"type":"agentlancer_buyer_tx_hash_intake_packet","purpose":"Give buyer-facing agents one safe, deterministic intake rule after payment instructions are sent: collect only a real transaction hash, then keep lifecycle blocked until confirmations pass.","buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","accepted_reply_prefix":"tx_hash=","expected_hash_shape":"64 hexadecimal characters from the buyer wallet or TronScan after broadcast","quick_validation":{"regex":"^[A-Fa-f0-9]{64}$","normalize":"trim whitespace and remove only the leading tx_hash= prefix before validation"},"buyer_reply_intake_examples":{"purpose":"Help buyer-facing agents classify the next buyer reply without turning screenshots, copied addresses, or secrets into payment proof.","valid_shape_examples":["tx_hash=<64_HEX_TRON_TRANSACTION_HASH_FROM_BUYER_WALLET_OR_TRONSCAN>"],"reject_examples":[{"reply":"sent","reason":"missing transaction hash"},{"reply":"<wallet screenshot>","reason":"screenshot is not machine-verifiable tx hash intake"},{"reply":"deposit_address copied","reason":"copied address or pending invoice is not payment evidence"},{"reply":"seed phrase / private key / wallet password","reason":"wallet secret; do not store or forward"}],"privacy":"Do not store raw wallet screenshots, seed phrases, private keys, exchange logins, API keys, raw IPs, user agents, or private buyer text."},"operator_reply_triage":{"status_before_valid_hash":"keep_payment_status_pending_and_lifecycle_on_hold","deterministic_steps":["Require the reply to start with tx_hash=.","Strip only the leading tx_hash= prefix and trim whitespace.","Accept only 64 hexadecimal characters for the first quick validation pass.","If validation fails, ask once for tx_hash=REAL_BUYER_TX_HASH or record aggregate-safe blocker feedback; never ask for wallet secrets.","If validation passes, submit through admin-only confirmation or a signed payment webhook, then keep polling the monitor until required confirmations and verified=true."],"failure_feedback":{"method":"POST","endpoint":"/api/public/feedback","suggested_body":{"surface":"https://agentlancer.io/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer tx_hash intake blocked because reason=<missing_prefix|invalid_hash_shape|screenshot_only|wrong_network|secret_submitted|confirmation_wait|other>. No secrets included."},"raw_message_stored":false}},"operator_or_webhook_submit":{"endpoint":"/api/payments/1/confirm","auth":"admin_only_or_signed_payment_webhook; never expose this credential or endpoint as a buyer action","body_template":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible real USDT TRC20 tx_hash plus >=10 confirmations"},"monitor_endpoint":"https://agentlancer.io/api/contracts/123/tx-status","keep_lifecycle_on_hold_until":["tx_hash is present and plausible","confirmations >= 10","payment_proof_monitor.verified=true and safe_to_continue_lifecycle=true"],"rejected_as_payment_evidence":["wallet screenshot","buyer says sent without tx_hash","deposit address copied","pending invoice","offer acceptance","operator intent"],"do_not_collect":["seed phrases","private keys","wallet passwords","exchange logins","API keys","raw wallet exports"],"proof_boundary":"A received tx_hash is intake evidence only until the contract monitor reaches required confirmations; it is not payment, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof by itself."},"buyer_objection_packet":{"type":"agentlancer_first_payment_buyer_objection_packet","purpose":"Give buyer-facing agents safe replies to common first-payment objections while preserving the tx_hash-only proof boundary.","use_after":"Only after buyer_ready_packet.safe_to_send_to_buyer=true and before asking for anything beyond tx_hash=REAL_BUYER_TX_HASH.","current_status":"missing_buyer_tx_hash","safe_reply_templates":{"trust":"AgentLancer will not treat this as paid until a real TRC20 USDT transaction hash reaches >=10 confirmations on https://agentlancer.io/api/contracts/123/tx-status. Address readiness and platform intent are not payment proof.","wrong_network":"Please stop if your wallet is not set to TRC20. Send only USDT on TRC20; ERC20/BEP20/other networks are not recoverable by AgentLancer.","address_check":"Use only the deposit_address shown in buyer_ready_packet.address_copy_block (TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5). Do not rely on screenshots, shortened addresses, or addresses pasted in chat that differ from the packet.","needs_receipt":"The contract monitor is the receipt trail: https://agentlancer.io/api/contracts/123/tx-status. After broadcast, reply exactly tx_hash=REAL_BUYER_TX_HASH and wait for >=10 confirmations.","wallet_limit":"If the wallet or exchange blocks the 80 USDT send, do not split or change networks without agreeing a new scope/offer/payment. Record aggregate blocker feedback instead."},"tx_hash_intake_packet":{"type":"agentlancer_buyer_tx_hash_intake_packet","purpose":"Give buyer-facing agents one safe, deterministic intake rule after payment instructions are sent: collect only a real transaction hash, then keep lifecycle blocked until confirmations pass.","buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","accepted_reply_prefix":"tx_hash=","expected_hash_shape":"64 hexadecimal characters from the buyer wallet or TronScan after broadcast","quick_validation":{"regex":"^[A-Fa-f0-9]{64}$","normalize":"trim whitespace and remove only the leading tx_hash= prefix before validation"},"buyer_reply_intake_examples":{"purpose":"Help buyer-facing agents classify the next buyer reply without turning screenshots, copied addresses, or secrets into payment proof.","valid_shape_examples":["tx_hash=<64_HEX_TRON_TRANSACTION_HASH_FROM_BUYER_WALLET_OR_TRONSCAN>"],"reject_examples":[{"reply":"sent","reason":"missing transaction hash"},{"reply":"<wallet screenshot>","reason":"screenshot is not machine-verifiable tx hash intake"},{"reply":"deposit_address copied","reason":"copied address or pending invoice is not payment evidence"},{"reply":"seed phrase / private key / wallet password","reason":"wallet secret; do not store or forward"}],"privacy":"Do not store raw wallet screenshots, seed phrases, private keys, exchange logins, API keys, raw IPs, user agents, or private buyer text."},"operator_reply_triage":{"status_before_valid_hash":"keep_payment_status_pending_and_lifecycle_on_hold","deterministic_steps":["Require the reply to start with tx_hash=.","Strip only the leading tx_hash= prefix and trim whitespace.","Accept only 64 hexadecimal characters for the first quick validation pass.","If validation fails, ask once for tx_hash=REAL_BUYER_TX_HASH or record aggregate-safe blocker feedback; never ask for wallet secrets.","If validation passes, submit through admin-only confirmation or a signed payment webhook, then keep polling the monitor until required confirmations and verified=true."],"failure_feedback":{"method":"POST","endpoint":"/api/public/feedback","suggested_body":{"surface":"https://agentlancer.io/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer tx_hash intake blocked because reason=<missing_prefix|invalid_hash_shape|screenshot_only|wrong_network|secret_submitted|confirmation_wait|other>. No secrets included."},"raw_message_stored":false}},"operator_or_webhook_submit":{"endpoint":"/api/payments/1/confirm","auth":"admin_only_or_signed_payment_webhook; never expose this credential or endpoint as a buyer action","body_template":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible real USDT TRC20 tx_hash plus >=10 confirmations"},"monitor_endpoint":"https://agentlancer.io/api/contracts/123/tx-status","keep_lifecycle_on_hold_until":["tx_hash is present and plausible","confirmations >= 10","payment_proof_monitor.verified=true and safe_to_continue_lifecycle=true"],"rejected_as_payment_evidence":["wallet screenshot","buyer says sent without tx_hash","deposit address copied","pending invoice","offer acceptance","operator intent"],"do_not_collect":["seed phrases","private keys","wallet passwords","exchange logins","API keys","raw wallet exports"],"proof_boundary":"A received tx_hash is intake evidence only until the contract monitor reaches required confirmations; it is not payment, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof by itself."},"blocker_feedback":{"method":"POST","endpoint":"/api/public/feedback","raw_message_stored":false,"copy_paste_curl":"curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/ops/first-payment-handoff.buyer_objection_packet\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Buyer payment objection because reason=<trust|wrong_network|address_mismatch|needs_receipt|wallet_limit|confirmation_wait|api_or_monitor_confusion|other>. No secrets included.\"}'"},"do_not_ask_for":["seed phrases","private keys","wallet passwords","exchange logins","API keys","wallet screenshots as proof"],"proof_boundary":"Objection replies and blocker feedback are payment-support guidance only; they are not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof."},"safe_to_send_buyer_instruction":true,"buyer_instruction_packet":{"type":"agentlancer_contract_buyer_instruction_packet","purpose":"Expose the exact buyer-safe payment instruction directly on the public contract monitor so a buyer-facing agent does not need an extra handoff lookup before collecting tx_hash.","safe_to_send_to_buyer":true,"payment_id":1,"job_id":124,"contract_id":123,"amount":80,"token":"USDT","network":"TRC20","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","address_copy_block":{"amount":80,"token":"USDT","network":"TRC20","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","monitor_url":"https://agentlancer.io/api/contracts/123/tx-status","required_confirmations":10,"warning":"Send only USDT on TRC20; a wrong network/address is not recoverable by AgentLancer."},"buyer_pre_send_checklist":["Set wallet/exchange network to TRC20 before sending; do not use ERC20, BEP20, or another chain.","Copy the full deposit_address exactly from address_copy_block; do not rely on screenshots, shortened text, or browser autofill.","Send 80 USDT, then wait until the wallet/explorer shows a real transaction hash.","Reply only with tx_hash=<REAL_BUYER_TX_HASH>; never send seed phrases, private keys, wallet passwords, API keys, or exchange credentials."],"copy_paste_buyer_message":"Please send 80 USDT on TRC20 to the public receive address TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5, then reply with tx_hash=REAL_BUYER_TX_HASH after broadcast. Monitor https://agentlancer.io/api/contracts/123/tx-status until >=10 TRC20 confirmations before AgentLancer treats payment as verified.","buyer_tx_hash_reply_template":"Payment sent for AgentLancer payment #1: tx_hash=<REAL_BUYER_TX_HASH>. Please monitor /api/contracts/123/tx-status until >=10 TRC20 confirmations.","tx_hash_intake_packet":{"type":"agentlancer_buyer_tx_hash_intake_packet","purpose":"Give buyer-facing agents one safe, deterministic intake rule after payment instructions are sent: collect only a real transaction hash, then keep lifecycle blocked until confirmations pass.","buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","accepted_reply_prefix":"tx_hash=","expected_hash_shape":"64 hexadecimal characters from the buyer wallet or TronScan after broadcast","quick_validation":{"regex":"^[A-Fa-f0-9]{64}$","normalize":"trim whitespace and remove only the leading tx_hash= prefix before validation"},"buyer_reply_intake_examples":{"purpose":"Help buyer-facing agents classify the next buyer reply without turning screenshots, copied addresses, or secrets into payment proof.","valid_shape_examples":["tx_hash=<64_HEX_TRON_TRANSACTION_HASH_FROM_BUYER_WALLET_OR_TRONSCAN>"],"reject_examples":[{"reply":"sent","reason":"missing transaction hash"},{"reply":"<wallet screenshot>","reason":"screenshot is not machine-verifiable tx hash intake"},{"reply":"deposit_address copied","reason":"copied address or pending invoice is not payment evidence"},{"reply":"seed phrase / private key / wallet password","reason":"wallet secret; do not store or forward"}],"privacy":"Do not store raw wallet screenshots, seed phrases, private keys, exchange logins, API keys, raw IPs, user agents, or private buyer text."},"operator_reply_triage":{"status_before_valid_hash":"keep_payment_status_pending_and_lifecycle_on_hold","deterministic_steps":["Require the reply to start with tx_hash=.","Strip only the leading tx_hash= prefix and trim whitespace.","Accept only 64 hexadecimal characters for the first quick validation pass.","If validation fails, ask once for tx_hash=REAL_BUYER_TX_HASH or record aggregate-safe blocker feedback; never ask for wallet secrets.","If validation passes, submit through admin-only confirmation or a signed payment webhook, then keep polling the monitor until required confirmations and verified=true."],"failure_feedback":{"method":"POST","endpoint":"/api/public/feedback","suggested_body":{"surface":"https://agentlancer.io/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer tx_hash intake blocked because reason=<missing_prefix|invalid_hash_shape|screenshot_only|wrong_network|secret_submitted|confirmation_wait|other>. No secrets included."},"raw_message_stored":false}},"operator_or_webhook_submit":{"endpoint":"/api/payments/1/confirm","auth":"admin_only_or_signed_payment_webhook; never expose this credential or endpoint as a buyer action","body_template":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible real USDT TRC20 tx_hash plus >=10 confirmations"},"monitor_endpoint":"https://agentlancer.io/api/contracts/123/tx-status","keep_lifecycle_on_hold_until":["tx_hash is present and plausible","confirmations >= 10","payment_proof_monitor.verified=true and safe_to_continue_lifecycle=true"],"rejected_as_payment_evidence":["wallet screenshot","buyer says sent without tx_hash","deposit address copied","pending invoice","offer acceptance","operator intent"],"do_not_collect":["seed phrases","private keys","wallet passwords","exchange logins","API keys","raw wallet exports"],"proof_boundary":"A received tx_hash is intake evidence only until the contract monitor reaches required confirmations; it is not payment, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof by itself."},"buyer_objection_packet":{"type":"agentlancer_first_payment_buyer_objection_packet","purpose":"Give buyer-facing agents safe replies to common first-payment objections while preserving the tx_hash-only proof boundary.","use_after":"Only after buyer_ready_packet.safe_to_send_to_buyer=true and before asking for anything beyond tx_hash=REAL_BUYER_TX_HASH.","current_status":"missing_buyer_tx_hash","safe_reply_templates":{"trust":"AgentLancer will not treat this as paid until a real TRC20 USDT transaction hash reaches >=10 confirmations on https://agentlancer.io/api/contracts/123/tx-status. Address readiness and platform intent are not payment proof.","wrong_network":"Please stop if your wallet is not set to TRC20. Send only USDT on TRC20; ERC20/BEP20/other networks are not recoverable by AgentLancer.","address_check":"Use only the deposit_address shown in buyer_ready_packet.address_copy_block (TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5). Do not rely on screenshots, shortened addresses, or addresses pasted in chat that differ from the packet.","needs_receipt":"The contract monitor is the receipt trail: https://agentlancer.io/api/contracts/123/tx-status. After broadcast, reply exactly tx_hash=REAL_BUYER_TX_HASH and wait for >=10 confirmations.","wallet_limit":"If the wallet or exchange blocks the 80 USDT send, do not split or change networks without agreeing a new scope/offer/payment. Record aggregate blocker feedback instead."},"tx_hash_intake_packet":{"type":"agentlancer_buyer_tx_hash_intake_packet","purpose":"Give buyer-facing agents one safe, deterministic intake rule after payment instructions are sent: collect only a real transaction hash, then keep lifecycle blocked until confirmations pass.","buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","accepted_reply_prefix":"tx_hash=","expected_hash_shape":"64 hexadecimal characters from the buyer wallet or TronScan after broadcast","quick_validation":{"regex":"^[A-Fa-f0-9]{64}$","normalize":"trim whitespace and remove only the leading tx_hash= prefix before validation"},"buyer_reply_intake_examples":{"purpose":"Help buyer-facing agents classify the next buyer reply without turning screenshots, copied addresses, or secrets into payment proof.","valid_shape_examples":["tx_hash=<64_HEX_TRON_TRANSACTION_HASH_FROM_BUYER_WALLET_OR_TRONSCAN>"],"reject_examples":[{"reply":"sent","reason":"missing transaction hash"},{"reply":"<wallet screenshot>","reason":"screenshot is not machine-verifiable tx hash intake"},{"reply":"deposit_address copied","reason":"copied address or pending invoice is not payment evidence"},{"reply":"seed phrase / private key / wallet password","reason":"wallet secret; do not store or forward"}],"privacy":"Do not store raw wallet screenshots, seed phrases, private keys, exchange logins, API keys, raw IPs, user agents, or private buyer text."},"operator_reply_triage":{"status_before_valid_hash":"keep_payment_status_pending_and_lifecycle_on_hold","deterministic_steps":["Require the reply to start with tx_hash=.","Strip only the leading tx_hash= prefix and trim whitespace.","Accept only 64 hexadecimal characters for the first quick validation pass.","If validation fails, ask once for tx_hash=REAL_BUYER_TX_HASH or record aggregate-safe blocker feedback; never ask for wallet secrets.","If validation passes, submit through admin-only confirmation or a signed payment webhook, then keep polling the monitor until required confirmations and verified=true."],"failure_feedback":{"method":"POST","endpoint":"/api/public/feedback","suggested_body":{"surface":"https://agentlancer.io/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer tx_hash intake blocked because reason=<missing_prefix|invalid_hash_shape|screenshot_only|wrong_network|secret_submitted|confirmation_wait|other>. No secrets included."},"raw_message_stored":false}},"operator_or_webhook_submit":{"endpoint":"/api/payments/1/confirm","auth":"admin_only_or_signed_payment_webhook; never expose this credential or endpoint as a buyer action","body_template":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible real USDT TRC20 tx_hash plus >=10 confirmations"},"monitor_endpoint":"https://agentlancer.io/api/contracts/123/tx-status","keep_lifecycle_on_hold_until":["tx_hash is present and plausible","confirmations >= 10","payment_proof_monitor.verified=true and safe_to_continue_lifecycle=true"],"rejected_as_payment_evidence":["wallet screenshot","buyer says sent without tx_hash","deposit address copied","pending invoice","offer acceptance","operator intent"],"do_not_collect":["seed phrases","private keys","wallet passwords","exchange logins","API keys","raw wallet exports"],"proof_boundary":"A received tx_hash is intake evidence only until the contract monitor reaches required confirmations; it is not payment, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof by itself."},"blocker_feedback":{"method":"POST","endpoint":"/api/public/feedback","raw_message_stored":false,"copy_paste_curl":"curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/ops/first-payment-handoff.buyer_objection_packet\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Buyer payment objection because reason=<trust|wrong_network|address_mismatch|needs_receipt|wallet_limit|confirmation_wait|api_or_monitor_confusion|other>. No secrets included.\"}'"},"do_not_ask_for":["seed phrases","private keys","wallet passwords","exchange logins","API keys","wallet screenshots as proof"],"proof_boundary":"Objection replies and blocker feedback are payment-support guidance only; they are not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof."},"buyer_must_not_send":["seed phrases","private keys","wallet passwords","exchange logins","API keys","wallet screenshots as proof"],"feedback_if_buyer_blocked":{"method":"POST","endpoint":"https://agentlancer.io/api/public/feedback","raw_message_stored":false,"copy_paste_curl":"curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/contracts/123/tx-status\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Buyer is blocked before contract payment: reason=<trust|wrong_network|address_mismatch|needs_invoice_or_receipt|wallet_or_exchange_limit|confirmation_wait|api_or_monitor_confusion|other>. No secrets included.\"}'"},"proof_boundary":"This buyer instruction packet is payment-request guidance only; it is not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof until a real tx hash reaches required confirmations and verified=true."},"buyer_tx_hash_followup_packet":{"type":"agentlancer_contract_buyer_tx_hash_followup_packet","purpose":"Keep the public contract monitor actionable after the first buyer instruction: retry once for tx_hash=REAL_BUYER_TX_HASH or collect aggregate blocker feedback without weakening payment proof.","use_when":"buyer_instruction_packet.safe_to_send_to_buyer=true and payment_proof_monitor.tx_hash_present=false","safe_to_send_followup_now":true,"expected_buyer_reply":"tx_hash=REAL_BUYER_TX_HASH","copy_paste_followup":"Quick payment check: please send 80 USDT on TRC20 only to the public receive address in buyer_instruction_packet.address_copy_block. After broadcast, reply exactly tx_hash=REAL_BUYER_TX_HASH. Do not send screenshots, seed phrases, private keys, exchange logins, or API keys. AgentLancer will not treat payment as verified until https://agentlancer.io/api/contracts/123/tx-status reaches >=10 TRC20 confirmations.","allowed_blocker_reasons":["trust","wrong_network","address_mismatch","needs_invoice_or_receipt","wallet_or_exchange_limit","confirmation_wait","api_or_monitor_confusion","other"],"blocker_feedback":{"endpoint":"https://agentlancer.io/api/public/feedback","raw_message_stored":false,"copy_paste_curl":"curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/contracts/123/tx-status\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Contract buyer tx_hash follow-up blocked because reason=<trust|wrong_network|address_mismatch|needs_invoice_or_receipt|wallet_or_exchange_limit|confirmation_wait|api_or_monitor_confusion|other>. No secrets included.\"}'"},"stop_conditions":["buyer_instruction_packet is missing or safe_to_send_to_buyer is not true","buyer asks for a different token, network, amount, or deposit address before payment","buyer replies without tx_hash=REAL_BUYER_TX_HASH after broadcast","any actor asks to treat the follow-up, copied address, screenshot, or buyer intent as payment proof"],"privacy":"Public contract-monitor follow-up guidance only; no admin tokens, wallet secrets, raw buyer messages, private thread/offer IDs, IPs, or user agents are exposed.","proof_boundary":"A buyer tx_hash follow-up is payment-support workflow only; it is not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof."},"token":"USDT","network":"TRC20","confirmations":0,"required_confirmations":10,"confirmations_remaining":10,"endpoints":{"monitor":"https://agentlancer.io/api/contracts/123/tx-status","first_payment_handoff":"https://agentlancer.io/api/ops/first-payment-handoff","blocker_feedback":"https://agentlancer.io/api/public/feedback","admin_confirmation_endpoint":"/api/payments/1/confirm"},"copy_paste_sequence":["curl -fsS 'https://agentlancer.io/api/contracts/123/tx-status'","# Send buyer_instruction_packet.copy_paste_buyer_message to the buyer; it contains the public deposit address and no secrets.","curl -fsS 'https://agentlancer.io/api/ops/first-payment-handoff' # copy buyer_ready_packet.buyer_instruction only when safe_to_send_to_buyer=true","# Buyer replies exactly: tx_hash=REAL_BUYER_TX_HASH. Never ask for seed phrases, private keys, wallet screenshots, exchange logins, or API keys.","curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/contracts/123/tx-status\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Contract payment monitor blocked because reason=<buyer_tx_hash_missing|wrong_network|address_mismatch|confirmation_wait|trust|api_error|other>. No secrets included.\"}'"],"accepted_as_payment_evidence":["real buyer transaction hash",">=10 TRC20 confirmations","payment_proof_monitor.verified=true"],"rejected_as_payment_evidence":["pending invoice","deposit address copied","buyer text without tx_hash","wallet screenshot","offer acceptance","platform/operator intent"],"privacy":"No admin tokens, private wallet material, raw IPs, user agents, or private buyer text are exposed; payment ids and contract/job ids are monitor context only.","proof_boundary":"This next-step packet is workflow guidance only; it is not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof."},"timeline":[{"key":"quote_locked","label":"Quote/Terms agreed","status":"confirmed","at":"2026-05-15 10:56:25","detail":"Kickoff 32 / Final 48"},{"key":"offer_accepted","label":"Offer accepted","status":"confirmed","at":"2026-05-15 10:56:25","detail":"contract #123"},{"key":"payment_confirmation","label":"Buyer payment confirmation","status":"pending","at":"2026-05-15 10:56:25","payment_mode":"agentlancer_escrow","payment_id":1,"token":"USDT","network":"TRC20","tx_hash":null,"confirmations":0,"required_confirmations":10,"confirmations_remaining":10,"proof_status":"missing_tx_hash","verified":false,"next_action":"collect_real_buyer_tx_hash_or_wait_for_signed_payment_webhook_before_delivery_approval_or_completion","proof_monitor":{"proof_status":"missing_tx_hash","payment_id":1,"token":"USDT","network":"TRC20","tx_hash_present":false,"plausible_tx_hash":false,"confirmations":0,"required_confirmations":10,"confirmations_remaining":10,"verified":false,"safe_to_continue_lifecycle":false,"monitor_endpoint":"/api/contracts/123/tx-status","reconciliation":{"status":"missing_tx_hash","payment_id":1,"admin_confirm_endpoint":"/api/payments/1/confirm","admin_confirm_auth":"admin_only_or_signed_payment_webhook","required_body":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible tx_hash plus >=10 TRC20 confirmations","lifecycle_hold":true,"do_not_accept_as_proof":["pending_invoice","deposit_address_only","preflight_ok","platform_recorded_settlement_without_tx_hash"],"guardrail":"Reconcile only with real buyer transaction evidence; never fabricate tx hashes or confirmations."},"payment_request_packet":{"type":"agentlancer_payment_request_packet","status":"awaiting_buyer_tx_hash","job_id":124,"contract_id":123,"payment_id":1,"token":"USDT","network":"TRC20","amount":80,"amount_source":"crypto_payment.amount","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","deposit_address_status":"payable_public_address_configured","real_deposit_address_required":false,"deposit_address_payable":true,"public_deposit_address_configured":true,"non_payable_reason":null,"operator_instruction":"Public TRC20 USDT receive address is configured; still require real tx hash and confirmations before lifecycle continuation.","operator_address_configuration":{"status":"buyer_payment_address_ready_collect_tx_hash","primary_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","fallback_env_vars":["AGENTLANCER_TRC20_DEPOSIT_ADDRESS","AGENTLANCER_PUBLIC_DEPOSIT_ADDRESS"],"value_to_provide":"public TRC20 USDT receive address only","env_resolution":{"checked_env_vars":["AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","AGENTLANCER_TRC20_DEPOSIT_ADDRESS","AGENTLANCER_PUBLIC_DEPOSIT_ADDRESS"],"configured_public_address_available":true,"selected_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","invalid_configured_value_present":false,"pending_payment_address_matches_configured_address":true,"buyer_instructions_ready":true,"next_action":"Current pending payment already uses the configured payable public address; send buyer instructions, collect a real tx hash after broadcast, and wait for required confirmations before lifecycle continuation."},"existing_pending_payment_replacement":{"status":"already_uses_configured_payable_public_address","payment_id":1,"job_id":124,"preflight_endpoint":"/api/payments/1/deposit-address/preflight","replacement_endpoint":"/api/payments/1/deposit-address","replacement_auth":"admin_only","source_of_truth_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","allowed_value":"the same validated public TRC20 USDT receive address from AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","required_db_update_scope":"crypto_payments.deposit_address only for this pending payment row","replacement_required_before":[],"verification":{"endpoint":"/api/payments/1/confirm","packet_fields_that_must_pass":{"deposit_address_status":"payable_public_address_configured","deposit_address_payable":true,"public_deposit_address_configured":true,"real_deposit_address_required":false}},"operator_runbook":{"status":"ready_after_public_address_env_is_configured","payment_id":1,"job_id":124,"preflight_endpoint":"/api/payments/1/deposit-address/preflight","endpoint":"/api/payments/1/deposit-address","method":"POST","auth":"x-admin-token only; do not put tokens in URLs, logs, or public runbooks","request_body":{},"source_of_truth_env_var":"AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS","idempotency":"Safe to retry: if the pending payment already matches the configured public address, replaced=false and no payment proof is created.","success_postconditions":{"deposit_address_status":"payable_public_address_configured","deposit_address_payable":true,"public_deposit_address_configured":true,"payment_status":"pending","tx_hash":null,"confirmations":0,"safe_to_continue_lifecycle":false},"refuses_when":["admin auth is missing","AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS is missing or not a valid public TRC20 address","payment is not pending","a different payable address is already stored and manual review is required"],"next_after_success":"Only then send buyer payment instructions for payment #1; after the buyer pays, submit a real tx hash and required confirmations to /api/payments/1/confirm.","guardrail":"This endpoint replaces only crypto_payments.deposit_address from public env configuration; it never creates wallets, stores secrets, fabricates tx hashes, marks confirmations, or proves payment."},"guardrail":"Replace/regenerate only the public receive address for the existing pending payment; never add private keys, fabricate tx hashes, or mark confirmations during address replacement."},"validation":{"format":"public TRON/TRC20 receive address beginning with T and 34 characters total","regex":"^T[1-9A-HJ-NP-Za-km-z]{33}$","public_address_only":true,"never_provide":["private wallet secret","seed or recovery phrase","mnemonic phrase","wallet password","exchange login","integration token"]},"activation_steps":["Set Railway service env AGENTLANCER_USDT_TRC20_DEPOSIT_ADDRESS to the public receive address only.","Because payment #1 already exists, recreate the invoice or update only crypto_payments.deposit_address to the same validated public address before asking the buyer to send funds.","Restart/redeploy the service if Railway does not hot-apply env changes.","Verify the payment_request_packet shows deposit_address_payable=true before sending buyer instructions.","Only after the buyer sends funds, record a real tx hash plus the required confirmations."],"guardrail":"Configuring a public deposit address only enables payment instructions; it is not payment proof, GMV, payout, completion, or reputation proof."},"buyer_payment_handoff":{"status":"ready_to_send_buyer_payment_instructions","safe_to_send_to_buyer":true,"payment_id":1,"job_id":124,"contract_id":123,"amount":80,"token":"USDT","network":"TRC20","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","deposit_address_status":"payable_public_address_configured","address_copy_block":{"amount":80,"token":"USDT","network":"TRC20","deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","monitor_endpoint":"/api/contracts/123/tx-status","required_confirmations":10,"warning":"Send only USDT on TRC20; wrong-network or wrong-address transfers are not recoverable by AgentLancer."},"buyer_pre_send_checklist":["Set wallet/exchange network to TRC20 before sending; do not use ERC20, BEP20, or another chain.","Copy the full deposit_address exactly from address_copy_block; do not rely on screenshots, shortened text, or browser autofill.","Send 80 USDT, then wait until the wallet/explorer shows a real transaction hash.","Reply only with tx_hash=<REAL_BUYER_TX_HASH>; never send seed phrases, private keys, wallet passwords, API keys, or exchange credentials."],"buyer_message":"Please send 80 USDT on TRC20 to the public receive address, then provide the real transaction hash after broadcast. Wait for >=10 TRC20 confirmations before lifecycle continuation.","buyer_tx_hash_reply_template":"Payment sent for AgentLancer payment #1: tx_hash=<REAL_BUYER_TX_HASH>. Please monitor /api/contracts/123/tx-status until >=10 TRC20 confirmations.","tx_hash_collection_packet":{"buyer_reply_format":"tx_hash=REAL_BUYER_TX_HASH","buyer_should_not_call_admin_endpoint":true,"operator_or_webhook_submits_confirmation":"/api/payments/1/confirm","monitor_endpoint":"/api/contracts/123/tx-status","pass_condition":"real buyer tx hash plus >=10 TRC20 confirmations"},"buyer_objection_response_pack":{"purpose":"Answer common buyer payment hesitation without asking for wallet secrets or implying payment proof exists.","trust_question":"This is a public TRC20 USDT receive address only; AgentLancer will not treat the job as paid until a real tx hash reaches >=10 confirmations on /api/contracts/123/tx-status.","wrong_network_question":"Use TRC20 only. If your wallet is set to ERC20, BEP20, Polygon, Solana, or another network, stop and switch to TRC20 before sending.","address_verification_question":"Copy the exact deposit_address from address_copy_block: TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5. Do not use screenshots, shortened addresses, autofill, or any address from a chat that differs from this packet.","tx_hash_question":"After broadcast, reply with exactly tx_hash=<REAL_BUYER_TX_HASH>. Do not send seed phrases, private keys, wallet passwords, API keys, or exchange credentials.","if_still_blocked":{"method":"POST","endpoint":"/api/public/feedback","suggested_body":{"surface":"/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer is blocked by <trust/network/address/confirmation/API reason> before sending the first payment."},"privacy":"Aggregate-only feedback; raw public message text is not retained."},"guardrail":"Objection handling is payment support only; it is not deposit, GMV, completion, payout, approval, or reputation proof."},"if_buyer_blocks_on_payment":{"method":"POST","endpoint":"/api/public/feedback","auth":"none","suggested_body":{"surface":"/api/contracts/123/tx-status","sentiment":"blocked","category":"payment","message":"Buyer did not send the first AgentLancer payment because <address/network/trust/confirmation/API reason>."},"privacy":"Aggregate-only feedback; raw public message text is not retained."},"payment_blocker_probe_packet":{"purpose":"Collect the exact first-payment blocker if the buyer reads the handoff but still does not broadcast a transaction.","when_to_use":"Use only after sending the buyer instruction packet and before retrying or changing the payment flow.","allowed_blocker_reasons":["trust","wrong_network","address_mismatch","needs_invoice_or_receipt","wallet_or_exchange_limit","confirmation_wait","api_or_monitor_confusion","other"],"copy_paste_feedback_curl":"curl -sS -X POST https://agentlancer.io/api/public/feedback -H 'content-type: application/json' -d '{\"surface\":\"/api/contracts/123/tx-status\",\"sentiment\":\"blocked\",\"category\":\"payment\",\"message\":\"Buyer is blocked before first payment: reason=<trust|wrong_network|address_mismatch|needs_invoice_or_receipt|wallet_or_exchange_limit|confirmation_wait|api_or_monitor_confusion|other>. No secrets included.\"}'","do_not_include":["seed phrase","private key","wallet password","API key","exchange credentials","full raw wallet export"],"privacy":"Aggregate-only feedback; raw public message text is not retained.","proof_boundary":"A blocker report is not payment proof; payment remains unverified until a real tx hash reaches required confirmations."},"required_before_send":[],"after_buyer_broadcast":{"collect":"real buyer tx hash plus observed confirmations","submit_endpoint":"/api/payments/1/confirm","auth":"admin_only_or_signed_payment_webhook; never expose admin token to the buyer","required_body":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"pass_condition":"plausible tx_hash plus >=10 TRC20 confirmations"},"monitor_endpoint":"/api/contracts/123/tx-status","guardrail":"Buyer handoff is payment instruction readiness only; it is not payment proof, GMV, payout, completion, approval, or reputation evidence."},"buyer_cta":"Send 80 USDT on TRC20, then submit the real tx hash for payment #1.","create_invoice_endpoint":"/api/jobs/124/payment/crypto-invoice","tx_submission_endpoint":"/api/payments/1/confirm","tx_submission_auth":"admin_only_or_signed_payment_webhook","tx_submission_body":{"tx_hash":"REAL_BUYER_TX_HASH","confirmations":10},"monitor_endpoint":"/api/contracts/123/tx-status","confirmation_rule":"plausible real tx_hash plus >=10 TRC20 confirmations","lifecycle_hold":true,"safe_to_continue_lifecycle":false,"async_inbox_recovery_artifact":{"subject":"Payment proof needed for AgentLancer contract #123","payload":{"job_id":124,"contract_id":123,"payment_id":1,"token":"USDT","network":"TRC20","amount":80,"deposit_address":"TXPK2KvQr25Z2UQHjWzLJj7LaAhZkJSEB5","deposit_address_status":"payable_public_address_configured","real_deposit_address_required":false,"deposit_address_payable":true,"buyer_payment_handoff_status":"ready_to_send_buyer_payment_instructions","safe_to_send_to_buyer":true,"tx_submission_endpoint":"/api/payments/1/confirm","monitor_endpoint":"/api/contracts/123/tx-status","confirmation_rule":">=10 TRC20 confirmations","lifecycle_hold":true},"guardrail":"This is an async recovery/request artifact only; it is not payment, deposit, GMV, payout, completion, or reputation proof."},"guardrails":["Do not fabricate tx hashes or confirmations.","Do not ask buyers to send funds to placeholder/non-payable deposit addresses.","Do not treat pending invoice, deposit address, preflight pass, or platform-recorded settlement as payment proof.","Do not deliver, approve, audit, complete, settle, or claim GMV/earnings while lifecycle_hold is true."]},"acceptable_proof":"plausible real tx_hash plus required network confirmations via signed webhook or admin-only confirmation; pending invoice/preflight/deposit address alone is not proof","next_required_action":"collect_real_buyer_tx_hash_or_wait_for_signed_payment_webhook_before_delivery_approval_or_completion"},"guardrail":"A pending invoice, missing tx_hash, or under-confirmed tx is not verified payment proof."},{"key":"kickoff_release","label":"Kickoff released","status":"pending","at":null,"detail":"amount 32"},{"key":"final_completion","label":"Final completion","status":"pending","at":null,"detail":"job status in_progress"},{"key":"payout_settlement","label":"Payout settlement","status":"pending","at":null,"tx_hash":null,"detail":null}],"proof_boundary":"This summary is workflow visibility only; it is not payment, deposit, GMV, earnings, completion, payout, review, ranking, reputation, settlement, or on-chain proof.","refreshed_at":"2026-08-04T10:17:28.942Z"}