Settlement draws the borrower’s facility. Repayment pays that debt down with USDC from the borrower’s wallet. The agent can start the flow. The borrower signs it. SohoPay does not pull the wallet without that signature. This page is for the borrower who owns the facility. create_repayment and execute_repayment are the prepare-only tools when someone else is paying. The first-party path is request_repayment.

Sequence

1

Read the balance

Call get_outstanding_balance with operational_agent_id when the borrower has more than one terminal.
2

Request a repayment

Take a borrower token that includes repayment:execute and repayment:read. Call request_repayment with an amount, or omit it to repay the outstanding balance.
3

Stop for the wallet

Open consent_url verbatim. The borrower signs in their wallet. The page submits the authorization. Do not ask them to paste the signature into chat. The on-chain pull uses ERC-3009 receiveWithAuthorization.
4

Poll

Poll get_repayment_status about every 2 seconds until CONFIRMED or expires_at. Then call get_outstanding_balance again.
The skill repay is the tool-level contract. Use a fresh idempotency key for the request, and do not reuse the payment idempotency key from a merchant order.

Next steps

ERC-3009

Why repayment uses a transfer authorization.

Borrower responsibility

Who owes the draw.