Skip to main content
Your payment errors should fail closed. If the agent cannot verify a seller, fit a payment inside policy, sign a guarantee, or connect the payment to the task, it should stop or ask for approval instead of spending blindly.

Common error categories

ErrorMeaningYour response
Unsupported networkSeller requires a network your client has not registered.Skip, choose another seller, or add the network intentionally.
Missing collateralWallet cannot back the payment guarantee.Add collateral or lower the task budget.
Price over limitSeller price exceeds policy.Ask for approval, choose another seller, or stop.
Seller mismatchDomain, route, or payTo address does not match expectations.Do not sign. Treat as suspicious.
Invalid signaturePayment signing failed or produced an invalid payload.Retry only after checking signer and network configuration.
Seller verification failureSeller rejected the payment retry.Log the failure and avoid repeated automatic retries.
Task budget exhaustedThe agent has spent its allowed budget.Stop or ask for a higher budget.
For collateral, network, or wallet issues, inspect your account in 4mica dashboard before retrying.

Retry rules

Do not retry forever. Automated retries can turn a small issue into unexpected spend or noisy traffic. Use strict retry rules that separate temporary transport failures from payment or policy decisions.
SituationRetry behavior
Network timeoutRetry with backoff and a small attempt limit.
Policy failureDo not retry automatically. Choose a different seller, get a lower price, or ask for approval.
Over-budget paymentStop before signing and ask for more budget.
Seller mismatchDo not retry. Treat the mismatch as suspicious until you verify it.
Seller verification failureRetry only after checking signer, network, request ID, and seller configuration.
Always record the final failure reason in the task log. If retries create duplicate-looking activity, stop the agent and share the request IDs with support.
Never let retries bypass policy. A retry should repeat a valid attempt, not turn a blocked payment into an approved one.

User-facing status

Keep payment state understandable. You should be able to tell whether the agent needs approval, lacks collateral, hit a blocked seller, failed during signing or verification, exhausted its budget, or successfully received a paid response. Use stable status names so your UI, logs, and support process speak the same language.
StatusWhen to show it
needs_approvalThe agent found a payment that exceeds policy.
insufficient_collateralThe wallet cannot back the payment guarantee.
blocked_sellerYour policy does not allow this seller.
payment_failedSigning, guarantee issuance, or seller verification failed.
budget_exhaustedThe task reached its spending limit.
paidThe request was paid and a response was received.

What you should log

Log enough to debug without guessing. The payment record should connect the task, request, seller, amount, policy, failure reason, retry count, approval state, and final outcome.
Log fieldPurpose
Task ID and request IDConnects the payment failure to the workflow.
Seller domain and payTo addressShows who the agent tried to pay.
Amount, network, and assetShows what the agent tried to authorize.
Policy versionExplains which rules allowed or blocked the attempt.
Failure reason and retry countShows why the request stopped and whether retries were controlled.
Approval state and final outcomeShows whether a person was asked and what happened next.