Skip to content
Discussions/App Development/Onboard - Preapproval for external party creationForum ↗

Onboard - Preapproval for external party creation

App Development5 posts71 viewsLast activity Jun 2026
BA
BacardenOP
Jun 2026

Hi guys,

So I’m about to make the last step of my external party allocation, I hold my own private key, I’ve made a wallet, permission to custodian, and I can internal transfer between my parties. All good, the thing is that my last scenario is to receive funds from an external node.

I would like to stick with the preapproval contract that should be added to each newly added external party. I can make a preapproval contract using the endpoint from the wallet for my custodian

https://{domain}/api/validator/v0/wallet/transfer-preapproval

For the rest of my implementation, I’ve been using gRPC to allocate to an external party, grant user rights, and create a wallet. How is it possible for my external parties to get the contract either using gRPC (seems not possible) or using the wallet API?

I tried with this, resulting in a 409 error code.

curl -v -X POST https://{domain}/api/validator/v0/wallet/transfer-preapproval
-H “Authorization: Bearer {Token}”
-H “Content-Type: application/json”
-d ‘{“party_id”: “8996F10C30967E8403D7EE4998967D133638E4C116EC02CF8D3C84137C32D078::1220daa4365aafd65a37214e23c7eea4068e97e87f3f804c4a34388b3d3336dde76c”}’

So questions:

  1. How do we create a TransferPreapproval for an externally-allocated party? The wallet API (POST /v0/wallet/transfer-preapproval) only creates one for the JWT-authenticated user (our custodian). We need one per external party so senders can use TransferPreapproval_Send directly to each address.
  2. Does the External Signing API support AmuletRules_CreateTransferPreapproval? If so, what’s the endpoint/flow? We have ActAs rights on each external party and can sign with their key
JA
Jatin_Pandya_cf
Jun 2026

Hey @Bacarden

A few things here for you:

  • 409 means a preapproval already exists for that party as wallet API endpoint creates a TransferPreapproval for whichever party is authenticated via the JWT AND it ignores the party_id body field.
  • also, Yes!! use the External Signing API, this is exactly the right flow since you have actAsrights on each external party and hold their private keys, exercise AmuletRules_CreateTransferPreapprovalvia the external signing flow.
  • Note: You can get the current AmuletRules contract ID from the Scan API which you will use to submit txns.
BA
Bacarden
Jun 2026

So I found the documentation

Canton Network Docs

​External Signing API - Validator APIs - Canton Network Docs

Was this page helpful? | Wallet, user management, external signing, and validator administration APIs

So the flow is that when I’m done with the onboarding, granting permissions and want to add the pre-approval contract, I need to use the external signing flow below:

  1. Create a proposal for a party - /v0/admin/external-party/setup-proposal
  2. Get and sign a tx hash - /v0/admin/external-party/setup-proposal/prepare-accept
  3. Submit the signed has - /v0/admin/external-party/setup-proposal/submit-accept

Kind of the same type of flow as the onboarding of external parties, and there is no way around these 3 steps for the pre-approval for external parties?

JA
Jatin_Pandya_cf
Jun 2026

Yup, gotta follow the docs, apart from what’s given in docs, there is no other alternative I am aware of.

BA
Bacarden
Jun 2026
Bacarden:
  1. Create a proposal for a party - /v0/admin/external-party/setup-proposal
  2. Get and sign a tx hash - /v0/admin/external-party/setup-proposal/prepare-accept
  3. Submit the signed has - /v0/admin/external-party/setup-proposal/submit-accept

Ok, thank you. I will give it a shot :slightly_smiling_face:

← Back to Discussions