Parties setup
Create a party and bind its Solana wallet so your intents can target it.
A party represents the end-user on whose behalf you create intents. You create the party once, bind a Solana wallet address to it, and thereafter every onramp or offramp intent targets that wallet — Nora resolves the party from the wallet on file.
Flow
Steps
-
Create the party.
POST /v2/partieswithcpfanddisplayName. Optional:partyType(default"person"),countryCode(default"BR"),externalRef,email,phone. Persist the returnedidas your canonical reference. -
Bind a Solana wallet.
PATCH /v2/parties/:id/walletwith{ solanaWallet }. The response echoes the full party object with the address now visible atprofile.solanaWallet. -
Create intents targeting that wallet. Intents do not take a
partyIdin their request body. On onramp, pass the same address asdestinationWallet; Nora looks up the party from that wallet. See Onramp intent.
Request shapes
Step 1 — Create party
curl -X POST https://staging.api.nora.finance/v2/parties \
-H "X-API-Key: $NORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cpf": "12345678901",
"displayName": "João da Silva",
"partyType": "person",
"countryCode": "BR",
"email": "joao@example.com",
"externalRef": "user_123"
}'Response:
{
"id": "2f1b4a2e-4c9e-4a5b-8c8b-...",
"instanceId": "4e0b9c7a-11d9-4f3c-9a6a-...",
"partyType": "person",
"countryCode": "BR",
"externalRef": "user_123",
"status": "pending",
"profile": {
"displayName": "João da Silva",
"documentType": "cpf",
"documentMasked": "***.***.***-01",
"solanaWallet": null
},
"createdAt": "2026-04-22T12:00:00Z",
"updatedAt": "2026-04-22T12:00:00Z"
}Step 2 — Bind the wallet
curl -X PATCH "https://staging.api.nora.finance/v2/parties/$PARTY_ID/wallet" \
-H "X-API-Key: $NORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "solanaWallet": "So11111111111111111111111111111111111111112" }'Response: the same party shape as step 1, now with
profile.solanaWallet set to the address you bound.
Step 3 — Create an intent
Intents don't take a partyId in their body. Nora looks up the party
from destinationWallet (onramp) or the wallet binding on file
(offramp). You thread the wallet address through:
curl -X POST https://staging.api.nora.finance/v2/intents/onramp \
-H "X-API-Key: $NORA_API_KEY" \
-H "Content-Type: application/json" \
-H "idempotency-key: $(uuidgen)" \
-d '{
"amountCents": 10000,
"destinationWallet": "So11111111111111111111111111111111111111112",
"chainId": "solana",
"clientReference": "ord_123"
}'Gotchas
- Tax ID validation. CPF is 11 digits for
partyType: "person"; CNPJ is 14 digits forpartyType: "business". The server validates format at create time. - Only
solanaWalletis settable today. Multi-chain wallet binding is not in the public API yet.PATCH /v2/parties/:id/wallettakes one field —{ solanaWallet }— and does not accept achainId. - Wallet replaces in place. A second
PATCHswaps the binding. The party holds one Solana wallet at a time.