Skip to main content
A beneficiary is a person or company you pay, saved with one or more payment accounts. Bank payouts in EUR or USD must target a saved beneficiary. For other networks it is optional. Managing beneficiaries needs a key with the payouts:write scope.

Individual or company

Choose entityType when you create the beneficiary. You can’t change it afterwards.

1. Create the beneficiary

  • accounts holds at most one account per kind and currency.
  • email is required as soon as the beneficiary has an EUR or USD bank account: the verification link is sent there.
  • An email can be verified as an individual or as a company, not both. Using the same email for the other type returns 422 email_used_by_other_entity_type: give the company its own address.
  • A company sends its documents in documents, each as { kind, filename, mimeType, base64 }. The request body can be up to 50 MB.
The response is the saved beneficiary. Keep its id: you pass it as counterpartyId when you create a payout.

2. Approval and verification

A new beneficiary starts with approvalStatus: "PENDING". You can pay it once it is APPROVED. If the beneficiary has an EUR or USD bank account, we email them a link from our payment partner. They use it to:
  1. Verify their identity (individual) or their company and its beneficial owners (company).
  2. Accept our partner’s terms of service.
Their EUR and USD accounts can be paid only once both steps are done. Their other accounts follow the usual approval. The beneficiary’s verification object tells you where they are:
nameMismatch: true means the same email was already verified under another name. KryptaPay checks it is the same person or company before the verification applies.
A beneficiary saved before verification existed has verification: null. Verification doesn’t block their payouts until you send them the link with the call below.
If the beneficiary lost the email, send the link again:

Editing a beneficiary

PATCH /v1/counterparties/{id} updates a beneficiary. Any change sends it back to PENDING until KryptaPay reviews it again. Changing its email starts a new verification at the new address.

Paying a beneficiary

Pass the beneficiary’s id as counterpartyId, and the account details you saved for it:
For BANK_EUR and BANK_USD, recipient.iban (or recipient.accountNumber) must be the beneficiary’s saved account in that currency. Spaces and letter case don’t matter. See Send payouts for the errors. In the sandbox, a beneficiary doesn’t need approval or verification to be paid. counterpartyId and the matching account are still required for EUR and USD, so your integration behaves the same in production.