Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.blink.cash/llms.txt

Use this file to discover all available pages before exploring further.

After generating your key pair, submit a self-serve application to Blink. The application endpoint reserves a merchantId for you immediately so you can wire it into your signer and start testing. The reserved ID stays inert until a Blink operator manually reviews and approves your submission, at which point it becomes a fully active merchant in the registry.
You can begin wiring merchantId into your signer right away. Signed payloads will fail verification with MERCHANT_NOT_REGISTERED until approval lands.

How to register

Two paths, same outcome — pick whichever fits your team.

Self-serve API

Submit a JSON application and get a reserved merchantId back in seconds. Best when you want to start wiring code immediately.

Talk to the team

Book a meeting with the Blink team to walk through your use case and get set up. Best when you have integration questions or want a tailored kickoff.

Submit your application

POST https://api.blink.cash/v1/merchants/applications
curl -X POST https://api.blink.cash/v1/merchants/applications \
  -H 'Content-Type: application/json' \
  -d @- <<'JSON'
{
  "email": "founder@coolapp.com",
  "domain": "coolapp.com",
  "publicKey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...\n-----END PUBLIC KEY-----\n",
  "telegram": "@cooldev",
  "description": "Cool App is a mobile-first crypto rewards platform that lets users top up their game balance via Swype."
}
JSON
Successful response (202 Accepted):
{
  "applicationId": "11112222-3333-4444-5555-666677778888",
  "merchantId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
  "status": "PENDING",
  "message": "Application received. Your merchantId is reserved and will activate after a Swype operator reviews and approves your submission."
}

Request fields

FieldTypeRequiredValidation
emailstringYesRFC 5322 email, max 255 chars. Used by Blink to follow up.
domainstringYesHostname (for example, coolapp.com), max 255 chars. Defaults to the merchant’s display name on approval.
publicKeystringYesPEM-encoded ECDSA P-256 public key from Key Generation. Max 4096 chars.
telegramstringNoOptional Telegram handle (@user or user), 3–64 alphanumeric or underscore chars.
descriptionstringYes20–1000 chars describing your product and how you intend to use Blink.

Response codes

CodeMeaning
202Application received. Operator review pending.
400Validation error in the request body (bad email, malformed PEM, etc.).
409 MERCHANT_APPLICATION_DUPLICATEA pending application with the same public key already exists. Wait for review or generate a new key pair before re-submitting.
429 RATE_LIMITEDToo many submissions from your IP. Try again after the Retry-After window.

What happens next

1

Review

The Blink team is notified immediately and reviews your application.
2

Approval

Once approved, your merchantId becomes valid for signed payment links.
3

Confirmation

You’ll receive a confirmation out-of-band (email or Telegram) when approval lands.
FieldValue
merchantIdYour reserved UUID (returned in the 202 response)
displayNameDefaults to your domain, editable on approval
algorithmECDSA_P256_SHA256
statusPENDING until reviewed, then ACTIVE
publicKeyThe PEM you submitted
Once active, Blink’s hosted flow verifies every signed payment link your signer produces by fetching your public key from the API (GET /v1/merchants/{id}/public-key).

Key rotation

Public key rotation after approval is handled by contacting Blink directly.
1

Generate a new key pair

Follow the same process in Key Generation.
2

Send the new public key to Blink

Email your updated PEM to s@blink.cash or book a meeting with the Blink team.
3

Update your signer endpoint

Once confirmed, swap your signer endpoint to use the new private key.
4

Old key deactivation

The old key is deactivated immediately. Do not rotate during high-traffic periods.