Skip to main content
By default, nobody logs in to a connected account. You show the person behind it everything yourself, in your own app. You can also let them log in. There are two ways:
  • A small dashboard at connect.bachs.io. It carries your name, logo and colour. They never need a password.
  • The full Bachs dashboard at app.bachs.io. They get their own login, the same one any Bachs merchant uses.

Access modes

Each account has one access mode, in its dashboard field. In every mode, you stay in charge. Nobody behind an account can take payments on their own. They cannot make payment links, checkouts, products, API keys or webhooks.

Set the mode

Set dashboard when you create the account, or later on an update. Scope connected_accounts:write.
To change an existing account, send the same fields to POST /v1/accounts/{account_id}. The modes go up in this order: none, light, full. You can raise an account to any higher mode. You cannot lower it, because that takes access away from a person. If you need an account lowered, contact us. You can also pick the mode in the dashboard, on the Seller access step when you create an account.

Choose what they may change

dashboard_features decides what the person may change from their dashboard. Send only the switches you want to change. The rest keep their value. These switches only limit the person. They never limit your API key. When a switch is off and the person tries the action, they see: “Your platform manages this for you. Ask them if you need it changed.” An account in none mode reads every switch as false, including view_payments, because nobody logs in. If you raise it to light or full, the switches you set come back.

Open the dashboard from your app

Put an Open dashboard button in your app. When the person taps it, make a login link and send them to it. POST /v1/accounts/{account_id}/login_links · scope connected_accounts:write
The request has no body.
  • The link works once, and lasts five minutes. Make it at the moment the person taps the button.
  • Do not email it or save it. It will have expired by the time it is opened.
  • When the person opens it, we email a six-digit code to the account’s contact email. The code lasts ten minutes.
  • A correct code opens their dashboard. They stay logged in for up to 12 hours.
The person can also log in at connect.bachs.io/login with that email. If the email is on accounts with several platforms, they pick which one to open.
Login links only work for accounts in light mode. Any other mode gets 400 login_links_need_light. For full, see the next section.

Give them the full dashboard

In full mode, the person behind the account signs in at app.bachs.io, like any Bachs merchant. The account shows up in their dashboard as an account of its own.

The invite

We invite them by email. The invite goes to the account’s contact email, or to their login email if they already logged in at connect.bachs.io. It names the account and your platform, so they know who it comes from. It lasts seven days.
  • When the account goes live, we send the invite by ourselves. That is when its first capability turns on.
  • If the account is already live when you raise it to full, we send it straight away.
  • To send it again, for example after it expired or you fixed the contact email, call the invite endpoint. If you changed the contact email, the invite to the old address stops working.
POST /v1/accounts/{account_id}/dashboard_invite · scope connected_accounts:write
The request has no body.
We do not send invites in the sandbox. Test the rest of the flow there, and the invite in live mode.

If they already use Bachs

A person who already has a Bachs login accepts the invite with that login. They do not need a second one. They then see two accounts in their dashboard, their own and this one, and switch between them. The two accounts stay apart. Each has its own balance, payouts and checks. Their own account keeps working as before. The limits below apply only to the account you gave them.

What they can and cannot do

They can see the account’s balance, payments, customers and payouts, and answer anything it still owes. They cannot take payments outside your platform on this account. That means no payment links, products, checkouts, API keys, webhooks or checkout settings. They also cannot see the Connect pages. If they try, they get 403 CONNECTED_ACCOUNT_NOT_ALLOWED. The dashboard_features switches below work in full mode too. When a switch is off and they try the action, they see: “Your platform manages this for your account.” We never invite an email that belongs to someone on your own team. That gets 403 login_email_is_platform_member.

Contact email and login email

An account has two emails, so that you can never log in as the person behind it.
  • Contact email. Yours to set and change, as today. We send the first login code here.
  • Login email. The email the person used to log in for the first time. It is set when they enter their first correct code.
Until the person logs in, the contact email is the only one. Change it freely, and the next code goes to the new address. After they log in:
  • changing the contact email does not move their login;
  • only the person, from their own settings, or our team can change their login email.
We never send a code to an email that belongs to someone on your own team. That gets 403 login_email_is_platform_member.

Read the mode

GET /v1/accounts/{account_id} returns three fields.
account.updated carries dashboard and dashboard_access too.

Errors

See Error Reference for the error envelope.