External entity payments are a team-scoped operation. The signer must hold a wallet with payment permissions on the team’s RiseID, exactly like standard payments.
When to use this
Standard payments
Recipient is already a member of your team. Use
client.payments.* and POST /v2/payments.External entity payments
Recipient is an outside vendor/supplier identified by email. Use
client.billPay.* and the external_entity endpoints.Payment flow
External-entity instant payments follow the same secure prepare → sign → execute pattern as standard payments. The signature is produced locally with your wallet; the private key never leaves your process.1
Create or reference a recipient
Register the external recipient under the team (or reuse an existing one).
2
Prepare the payment
Request EIP-712 typed data for the instant payment.
3
Sign with your wallet
Sign the returned typed data locally.
4
Execute
Submit the signature to execute the payment on-chain.
SDK usage
Manage recipients
Send an instant payment (one call)
sendInstantPayment runs the full prepare → sign → execute flow for you. It needs a private key to sign — either passed inline or configured on the client via riseIdAuth.
Prepare and execute separately
If you sign with an external wallet (hardware wallet, custody service), split the flow:REST endpoints
See the API Reference for full request and response schemas.
Idempotency with external_id
Payments accept an optional external_id — your own reference for the payment (an invoice number, an internal transaction id). Rise enforces that external_id is unique per payer (team): a second payment from the same team with an external_id it has already used is rejected with 409 Conflict. Use it to make retries safe and to prevent accidental double-payments.
Related
- Payment Integration Guide — standard payments to team members
- Payments concept — payment flow and on-chain security
- Error Handling — handling
409and validation errors
