Moving from Beta

This article is for Organizations created under the Beta access model, where an administrator granted permissions to each Member individually. Access is now built from Workflow Profiles and Account Roles, and Kraken converts your Organization for you.

Two things need your attention before the conversion:

  • If you use API keys, your integrations must be updated first. The way requests select an account has changed, and a successful withdrawal call no longer means the funds have moved. See “Update your API integrations” below.
  • We will ask you to confirm you are ready. Your Organization is not converted until you accept the change.

Nothing in the conversion removes access. Every permission each Member held is carried across.

Your existing API keys are not revoked or reissued. Their credentials, permissions, and account mapping all carry over. What changes is how your code addresses requests and reads responses.

Select an account on every request

An Organization API key covers one or more Accounts and has no default, so every private request must say which Account it applies to. Pass account_id as a query parameter on the URL, not in the request body:

bash

Bash

POST /0/private/AddOrder?account_id=W5PB62NTPNYT6TYH

This applies to trading, balance and ledger queries, order and trade history, exports, and fund movement alike.

Caution:

Read the new withdrawal response

WithdrawFunds returns approval_request_id alongside refid:

bash

Bash

{
  "error": [],
  "result": {
    "refid": "FTcLNGa-4ZWmo4GCo8wrBNZz5v53v9",
    "approval_request_id": "656a021a-1d55-42c9-853a-aea57bf5abd1"
  }
}
  • A refid no longer means the withdrawal completed. The amount is locked on the source Account when the request is submitted, and it settles only after the request is approved.
  • approval_request_id is the handle for the approval the withdrawal is waiting on. Store it against your own record.
  • Withdrawals awaiting approval do not appear in WithdrawStatus. A request that is rejected or expires creates no withdrawal record at all, so absence from WithdrawStatus never means a withdrawal was not submitted.

Automation that treats a refid as proof of completion will report withdrawals as settled while they are still in the approval queue. See API keys for the full model.

Your Organization comes out of the conversion with two sets of standard building blocks.

Workflow Profiles

A Workflow Profile sets what a Member can do on each governed workflow. Each Member holds exactly one.

Profile

What it holds

Admin

Every level on every workflow, including Execute

Initiator

View and Initiate on every workflow. Cannot approve

Approver

View and Approve on every workflow. Cannot initiate

Auditor

View on every workflow. Cannot act

Funds Manager

View, Initiate, and Approve on Withdrawal Request and Transfer Request. View and Initiate on Manage Addresses

Account Roles

An Account Role sets what a Member can do on your Accounts. The standard roles cover all current and future Accounts, so a Member on Trade all can trade on an Account you create tomorrow.

Role

What it grants on every Account

Read all

Read

Trade all

Trade

Funds all

Transfer, Withdraw, Earn Allocate, Earn Deallocate

Full access

Every account permission

Standard profiles and roles keep pace with the product: when a new workflow is added, Members holding one pick up the appropriate level automatically. See Roles, profiles, and permissions for the complete model.

Where a Member's permissions match no standard profile, they are placed on a role carrying exactly what they had. Members with identical permissions share a single role, so your Organization will have far fewer roles than Members.

These roles take their name from the label you had written beside the Member, so a Member labeled “Trader” lands on a role called trader. Members with no label land on migrated-role. Each one carries a migrated badge, which means the name was generated and is yours to change.

Tip:

Renaming these roles to match what you actually call these people is the best first task after the conversion. Editing a role clears the migrated badge.

Why your “Admin” Members are not on the Admin profile

The Beta “Admin” label let someone view, initiate, and approve, but not complete their own requests without a second approval. The Admin profile does include that ability, which is the Execute level.

Rather than granting it automatically, Members with the old label are placed on a role named beta-admin holding exactly the permissions they already had. Moving them to Admin is a single assignment whenever you decide to.

Note:

beta-admin is one of your own roles, so Members holding it will not automatically pick up new workflows the way the standard profiles do. This is another reason to review these roles soon after the conversion.

The Owner is placed on the Admin profile, keeps everything they had, and picks up new workflows automatically. The Owner also holds Read all, which cannot be removed.

If you had deliberately reduced the Owner's permissions, that decision is preserved: the Owner converts into a role holding their actual permissions, like any other Member.

  • Every permission each Member held is carried across.
  • API key credentials, permissions, and Account mapping are preserved.
  • Balances, Accounts, and Account ownership are untouched.
  • Approval requests already in flight continue, and your policies, approval thresholds, and “always require approval” settings are unchanged.
  • Identity verification is unaffected, and no one needs to sign in again or be re-invited.
  • Only Accounts belonging to your Organization are converted. A permission on any Account outside it is left as it is.

Troubleshooting

The request is almost certainly missing account_id. Without it, a private call does not resolve to one of the key's Accounts and can answer with an empty result rather than an error. Add account_id to the URL and re-check every endpoint your integration calls, not only the ones that visibly failed. See API keys.

The call created a request and locked the amount on the source Account. Settlement follows approval. Track the request with the approval_request_id returned by the call, or find it on the Requests page. See Transfers and withdrawals.

Members whose permissions did not match a standard profile each need a role that preserves their access, and two Members are only merged onto one role when their permissions are identical. Members you had given different labels stay on separate roles even where their permissions match, because the labels suggest the distinction was intentional. Roles you do not need can be consolidated by reassigning their Members and deleting the empty role.

Members who administer the Organization, managing team access, Accounts, or API keys, are placed in Read all, because administering an Account implies being able to see it. If that is broader than you want, replace Read all with an Account Role scoped to the specific Accounts they need.

No. The conversion is one-way. Everything it produces is editable afterwards, so any access arrangement you had can be rebuilt using profiles and roles.

Need more help?