# onboarding_link_not_issued

> The link couldn't be issued

- Status: 400 Bad Request
- Returned by: /api/public
- Operations: [createOnboardingLink](https://developers.rivr.io/reference/api-public/createOnboardingLink.md), [refreshOnboardingLink](https://developers.rivr.io/reference/api-public/refreshOnboardingLink.md)
- Retry (`retryWhen`): `after_fix`
- Did anything happen? (`outcome`): `partial` (Something else happened)
- Onboarding links in /api/public
- Page in the portal: https://developers.rivr.io/errors/onboarding_link_not_issued
- Try it: `GET https://developers.rivr.io/errors/simulate/onboarding_link_not_issued` answers with the code's exact wire form; `?succeedAfter=N&attempt=K` gives a 200 once `attempt` passes `N`

## What it means

The link couldn't be issued, for example because Rivr's address for onboarding links isn't configured or the onboarding changed at the same time. An email that fails is not answered with this code. On `POST /api/public/onboarding-links` the onboarding may already exist as a draft without a link, and the draft's id isn't in the answer. The body used to be a text in Swedish.

## What your system does

On `POST /api/public/onboarding-links`: don't send the same `POST` again straight away, since each new `POST` creates another draft. List your onboardings with `GET /api/public/onboarding-links`, and if there is a draft with the organisation number and `url` null, get its link with `POST /api/public/onboarding-links/{id}/refresh` instead; that link is not emailed. Send the same `POST` again only if the list shows no draft. `retryWhen` applies to `POST`. When a link is refreshed (`refresh`), the same call can be made again a while later. If it persists, contact Rivr.

## Is it worth retrying?

Only once the situation has changed, see above. Sending the same call straight away gets the same answer.

`retryWhen`: `after_fix`. Change the request first, as the code's page says: a value, the token, a header or a new key. Then send it.

## Did anything happen?

`outcome`: `partial`. **Something else happened.** What you asked for did not happen, but something else had already happened, see the note.

On `POST /api/public/onboarding-links` the onboarding has already been saved as a draft, without a link, email or reminders, and each retry creates another draft that stays in your list. When a link is refreshed, nothing changed. Nothing concerns money.

Read the state (`resolveWith`):

- `createOnboardingLink` → [`GET /api/public/onboarding-links`](https://developers.rivr.io/reference/api-public/getOnboardingLinks.md): The draft shows up with the organisation number, `url` null and `status` pending, and its `id` is the one the refresh takes. Read the list before you retry.
- `refreshOnboardingLink` → [`GET /api/public/onboarding-links/{id}`](https://developers.rivr.io/reference/api-public/getOnboardingLink.md): Nothing changed: the link and the status are as before.

## Example: /api/public

```http
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "propertyName": null,
  "message": "The onboarding link could not be issued. Retry the request; if it persists, contact Rivr.",
  "errorCode": "onboarding_link_not_issued",
  "code": "onboarding_link_not_issued",
  "type": "https://developers.rivr.io/errors/onboarding_link_not_issued"
}
```

The `title`, `detail`, `message` and `error_description` texts are exactly as the API writes them today.
