Betalink Docs
API Reference

List Companies

Retrieve a paginated list of companies

Endpoint

GET /api/v1/companies

Description

Returns a paginated list of all companies associated with your organization.

Authentication

Required - Include X-API-Key header

Query Parameters

ParameterTypeRequiredDefaultDescription
limitintegerNo50Number of results per page (1-100)
afterstringNo-Cursor for fetching the next page
beforestringNo-Cursor for fetching the previous page

Request

curl -X GET "https://betalink.dev/api/v1/companies?limit=10" \
  -H "X-API-Key: your-api-key"

Response

Success (200 OK)

{
  "data": [
    {
      "id": "comp_abc123def456",
      "cvr": "12345678",
      "name": "Acme ApS",
      "address": "Hovedgaden 1, 1000 Copenhagen",
      "startDate": "2024-01-01",
      "endDate": "2099-12-31",
      "status": "REGISTERED",
      "senderRegNumber": "1234",
      "senderAccountNumber": "0012345678",
      "receiverRegNumber": "5678",
      "receiverAccountNumber": "0087654321",
      "defaultAmountCents": 10000,
      "createdAt": "2024-01-15T10:30:00Z",
      "updatedAt": "2024-06-20T14:45:00Z"
    }
  ],
  "meta": {
    "total": 150,
    "limit": 10,
    "hasMore": true
  },
  "_links": {
    "self": "/api/v1/companies?limit=10",
    "next": "/api/v1/companies?limit=10&after=comp_abc123def456",
    "prev": null
  }
}

Company Object

FieldTypeDescription
idstringUnique company identifier
cvrstring8-digit Danish CVR number
namestringCompany name
addressstring | nullCompany address
startDatestringRegistration start date
endDatestringRegistration end date
statusstringDisposition status (see below)
senderRegNumberstring | nullSender bank registration number
senderAccountNumberstring | nullSender bank account number
receiverRegNumberstring | nullReceiver bank registration number
receiverAccountNumberstring | nullReceiver bank account number
defaultAmountCentsnumber | nullDefault transaction amount in cents
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 last update timestamp

Status Values

StatusDescription
CREATEDCompany created, pending registration
REGISTEREDActive and registered with Mastercard
MODIFIEDCompany details have been modified
TERMINATEDCompany registration has been terminated
REJECTEDRegistration was rejected

Error Responses

401 Unauthorized

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing API key"
  }
}

429 Too Many Requests

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again later.",
    "retryAfter": 60
  }
}

Code Example

import { createBetalinkClient } from "@betalink/api-client";

const client = createBetalinkClient({
  baseUrl: "https://betalink.dev/api",
  apiKey: "your-api-key",
});

// Get first page
const response = await client.listCompanies({ limit: 25 });

console.log(`Total companies: ${response.meta.total}`);

for (const company of response.data) {
  console.log(`${company.cvr}: ${company.name} (${company.status})`);
}

// Get next page if available
if (response.meta.hasMore) {
  const lastId = response.data[response.data.length - 1].id;
  const nextPage = await client.listCompanies({
    limit: 25,
    after: lastId,
  });
}

Pagination Example

Fetch all companies:

async function getAllCompanies() {
  const companies = [];
  let after: string | undefined;

  do {
    const response = await client.listCompanies({ limit: 100, after });
    companies.push(...response.data);

    if (response.meta.hasMore && response.data.length > 0) {
      after = response.data[response.data.length - 1].id;
    } else {
      break;
    }
  } while (true);

  return companies;
}

On this page