Skip to main content
Pay and request from a customer’s wallet by setting one field, customerPartyId. For the connection model, read the Customers overview. Use customerPartyId in query parameters for reads and in data.attributes for payment and transfer mutations. Omit it to use your own party where the endpoint permits omission. Cancellation accepts an optional data.attributes.customerPartyId; it also works without a body for your own party.
On transaction lists, transaction summaries, and home metrics, customerPartyId only filters activity you can already access. It does not switch you into the customer’s context or expand access. Transaction detail reads check your authority to act for the selected customer.
Every action here needs the customer to have connected their agent.

Find the customer’s party ID

Find a customer’s customerPartyId by listing your customers with GET /customers. Each customer’s id is the party ID (pty_*) you pass.

Pay from the customer’s wallet

Set customerPartyId on POST /payments to the customer’s party ID and the payment draws from the agent’s default wallet for that customer connection, within the permissions and limits they granted. Acceptance establishes that default; the customer can later add wallets or change it. Pass walletId to choose another wallet the customer has granted. Everything else works like Send a payment: the same counterparty types, the same claim link for new recipients, the same status flow. Omit customerPartyId and the payment comes from your own wallet instead.
The response carries the payment (pay_*) and its initial status, and its sender is the customer’s party, confirming the funds came from their wallet:

Request into the customer’s wallet

Collecting for a customer is Request a payment with the same one field. Set customerPartyId on POST /payment-requests to the customer’s party and the funds land in their default wallet, or the customer wallet you name in walletId, when the payer settles. Natural delivers the request to the payer automatically, on whatever channel matches how you addressed them.
The response carries the request (prq_*) with requesterParty set to the customer, so when the payer settles the money lands in the customer’s default wallet, not yours: