heruAPI
Point of sale

Create an onboarding

LiveServed by the v1 API in development with the same checks as production; production opens on the same contract. The capabilities from before v1 keep running in production at the path your account team gives you.

POST
/merchants/{id}/onboarding

Creates a new onboarding link for the merchant, valid for 7 days. Any previous link stops working. Use it when the first link expired, or when the CSD is about to expire (csd_expiring) and the merchant must upload the new one. The current onboarding always comes in onboarding when you get the merchant. Answers 409 when the merchant is active and its CSD is not expiring.

Needs the merchants:write scope.

Authorization

oauth2 merchants:write
headerAuthorizationBearer <token>

OAuth 2.0 client credentials. Exchange your client_id and client_secret at /oauth/token of the environment for a bearer token valid for one hour. The playground of every operation asks for your own client and keeps it in your browser tab only.

Scope: merchants:write

Path parameters

id*string

The merchant id.

Match^mer_[0-7][0-9a-hjkmnp-tv-z]{25}$

Header parameters

Idempotency-Key*string

Unique per operation. Retrying with the same key returns the original result for 24 hours.

Lengthlength <= 255

Response body

Created

application/json
  1. response
status*string

pending while the link works, completed once the merchant uploaded a valid CSD, expired when the link ran out unused.

Value in"pending""completed""expired"
url*|null
expires_at*|null
completed_at*|null
curl -X POST 'https://api.dev.b2b.heru.app/v1/merchants/mer_01m4rc7b4tf4ca1e964d5zx99v/onboarding' \  -H 'Idempotency-Key: try-it-0001'
{  "status": "pending",  "url": "https://onboarding.heru.app/m/Hq8sY2vK9pLx",  "expires_at": "2026-10-21T17:02:41.219Z",  "completed_at": null}
© 2026 Kuarto Inc. (heru)heru.appQuestions about your integration? Contact your heru account team.