Skip to content
CCPEDIAby Unity Nodes
App Development

Onboard - Preapproval for external party creation

5 posts102 viewsLast activity Jun 2026

  1. BacardenOP

    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
  2. Jatin_Pandya_cf

    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.
  3. Bacarden

    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?

  4. Jatin_Pandya_cf

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

  5. Bacarden
    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: