Before you build
What you need
- An Arc Testnet wallet with test USDC and enough USDC for gas.
- A recipient address verified against a source outside the agent prompt.
- A document or service request with a stable identifier you control.
Sequence
Do it in this order
Define the payment decision
Represent one invoice or service purchase with an ID, expected amount and known recipient. Store this outside the agent conversation.
Validate before asking to pay
Your application checks the invoice or service request, the approved payee and whether this ID has already been paid. A prompt saying ‘avoid duplicates’ is not enforcement.
Prepare the action in Aomi
Follow the Arc Testnet quickstart to ask Aomi to prepare and simulate a small transfer. Use the verified recipient and amount from your application.
Review and authorize
Compare the exact recipient and value to your payment record. Exercise one rejected request, then approve a fresh valid request in the configured manual wallet flow.
Record the outcome
Only mark the invoice or service request paid after a confirmed result. Keep its ID, transaction hash and explorer URL together. A timed-out response calls for reconciliation, not a blind second payment.
What to show a reviewer
Show one allowed payment and one refused payment. Confirm the allowed transaction independently in ArcScan, then demonstrate that the same invoice ID will not be submitted twice by your application.
Keep this boundary clear
This worked guide covers a manual USDC transfer. An automated HTTP 402 purchase needs a separate x402 payer integration and authorization model. Circle publishes an Arc x402 sample; this page does not claim that the Portal transfer is that integration.
Where to go next
Keep the first action small. If you need custom tools, start from the Aomi App guide rather than inventing an API call.