Using the software vendor’s cost sponsorship — or deliberately notAll articles

Using the software vendor’s cost sponsorship — or deliberately not

When the software vendor pays for the requests, the business still needs to know what it carries itself. This case shows the beneficiary’s side.

Published: 2026-09-12Reading time: 4 mintapinomahub API & workflows
API & processesAPIWorkshop

A workshop uses the tapinomahub functions through its workshop software. The software vendor has offered to cover the vehicle queries. But the workshop also has its own balance and its own terms — and does not want to find out only from the invoice who paid for which request.

Using the software vendor’s cost sponsorship — or deliberately notInput: the software vendor granted a sponsorship; the business decides on the terms 1. Review the sponsorships (GET /client/sponsorship-grants/received): endpointKeys, validity and partnerTermsAllowed per received sponsorship 2. Choose the terms (PUT /client/sponsorship-grants/received/{grantReference}/billing-mode): mode own or partner — partner only if the sponsor has allowed the choice 3. Read the balance (GET /client/credits): under billingMode partner the amounts are null — your own balance stays untouched 4. Read the usage (GET /client/usage): Plan consumption and usage per endpoint in the billing period Output: a business that knows for every request who pays for it Outside the sponsorship the API answers under partner with 402 partner_terms_not_covered instead of silently charging your own balance.Using the software vendor’s cost sponsorship — ordeliberately notInput: the software vendor granted a sponsorship; the business decides on the terms01Review the sponsorshipsGET /client/sponsorship-grants/receivedendpointKeys, validity and partnerTermsAllowed per received sponsorship02Choose the termsPUT /client/sponsorship-grants/received/{grantReference}/billing-modemode own or partner — partner only if the sponsor has allowed the choice03Read the balanceGET /client/creditsunder billingMode partner the amounts are null — your own balance stays untouched04Read the usageGET /client/usagePlan consumption and usage per endpoint in the billing periodOutput: a business that knows for every request who pays for itOutside the sponsorship the API answers under partner with 402 partner_terms_not_covered instead of silentlycharging your own balance.
Four calls on the beneficiary’s side. The choice of terms is reversible at any time.

In the Hub, sponsorship is an explicit relationship with two sides: the sponsor grants it and can release the choice of terms, the beneficiary sees it and decides. None of this happens silently — on partner terms not even when a request falls outside the sponsorship.

SurfaceRoles
HubWorkshop, Vehicle recyclers, Dealership

What this case requires

  • A granted sponsorship. It originates with the sponsor; the beneficiary cannot create it.
  • Release of partner terms if these are to be chosen. Without partnerTermsAllowed, choosing partner answers with 403.
  • A look at the covered endpoints. endpointKeys says what the sponsorship applies to — not every request is included.
  • A decision for requests outside the sponsorship. Under partner an uncovered request is rejected, not paid from your own balance.

The sequence

The table names the responsible call per stage and what exists afterwards. The reasoning for why a stage cannot be skipped follows below it.

The call chain of this use case
StageCallWhat exists afterwards
Review the sponsorshipsGET /client/sponsorship-grants/receivedendpointKeys, validity and partnerTermsAllowed per received sponsorship
Choose the termsPUT /client/sponsorship-grants/received/{grantReference}/billing-modemode own or partner — partner only if the sponsor has allowed the choice
Read the balanceGET /client/creditsunder billingMode partner the amounts are null — your own balance stays untouched
Read the usageGET /client/usagePlan consumption and usage per endpoint in the billing period

Why each stage is needed

  1. Review the sponsorships. GET /client/sponsorship-grants/received lists per sponsorship reference, sponsor, endpointKeys, startsAt, endsAt, active, partnerTermsAllowed and partnerTermsChosen. This shows what is covered and whether the choice is open at all.
  2. Choose the terms. PUT /client/sponsorship-grants/received/{grantReference}/billing-mode takes mode with own or partner. Under partner your own balance stays untouched; without the sponsor’s release the call answers with 403. If the sponsor withdraws the release, the choice falls with it.
  3. Read the balance. GET /client/credits returns balanceCents, creditLimitCents and availableCents. When the business works on partner terms, billingMode is partner and the amounts are null — its balance is not charged and therefore not reported.
  4. Read the usage. GET /client/usage names the period, per plan used, includedMonthlyQuantity and remaining, and per endpoint used and chargedCents. This lets you check whether the requests went where the choice was meant to send them.
Work on the sponsor’s terms
curl -X PUT \
  -H 'X-Api-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{"mode":"partner"}' \
  'https://api.tapinomahub.com/client/sponsorship-grants/received/<grantReference>/billing-mode'

What you end up with

In the end the business knows for every request who pays: on partner terms, the sponsor for the covered endpoints; on its own terms, billing draws first on the business’s own plan and balance, and the sponsor steps in only as a fallback. And on partner terms a request outside the sponsorship is visibly rejected instead of quietly costing balance.

Where to find this in the documentation

The binding field lists, error codes and sample responses live in this surface’s OpenAPI contract at docs.tapinomahub.com (tapinoma-hub). All use cases arranged by surface and role: overview of the use cases.

Frequently asked

Do I have to accept the sponsorship?

No. You can stay on your own terms. Choosing partner is only possible if the sponsor has released it.

Why does my balance show null?

Because you are working on partner terms. Your balance is then not charged and therefore not reported.

What happens to a request that is not covered?

Under partner it is rejected with 402 partner_terms_not_covered. It is not paid silently from your balance.