Skip to content

API reference ​

Interactive reference for the public Billing & Payment API (/v1), generated from contracts/openapi/public.v1.yaml with vitepress-openapi (INT-302).

Use the sidebar to open each operation, or browse the full spec below.

Playground servers (Try it out / Samples) include the upstream sample gateway https://api.dev.intelligent-eu-bp.blooo.dev/v1 plus relative /v1 and http://localhost/v1. You can also enter a custom URL. Calls need a valid OIDC bearer token.

Public API exposed by the gateway under /v1 (03 §3.1, REQ-052). Every call needs a bearer token. A response contains only data of the caller's own participant or community (REQ-010). Personal data is limited to the billing profile on /me.

Contact​

Servers​

https://api.dev.intelligent-eu-bp.blooo.dev/v1Upstream sample gateway (dev) — OIDC bearer required
/v1Relative path (same origin as your API gateway)
http://localhost/v1Local gateway

Profile​

Caller profile (REQ-009, REQ-049).


Caller profile, roles, community and readiness​

GET
/me

Profile, roles, community and readiness of the caller (REQ-049, REQ-009).

Authorizations​

bearerAuth
Type

Responses​

The caller.

application/json
JSON
{
  
"participantId": "string",
  
"communityId": "string",
  
"roles": [
  
],
  
"role": "string",
  
"readiness": "string",
  
"profile": {
  
  
"name": "string",
  
  
"address": "string",
  
  
"email": "string"
  
},
  
"billingMode": "string"
}

Playground​

Server
Authorization

Samples​


Update the caller's billing profile​

PUT
/me/profile

The participant updates their own name, address and contact e-mail. Trade-attribution identifiers are changed by the community manager (REQ-009).

Authorizations​

bearerAuth
Type

Request Body​

application/json
JSON
{
  
"name": "string",
  
"address": "string",
  
"email": "string"
}

Responses​

Updated billing profile.

application/json
JSON
{
  
"name": "string",
  
"address": "string",
  
"email": "string"
}

Playground​

Server
Authorization
Body

Samples​


Terms​

Current terms and their acceptance.


Current terms​

GET
/terms/current

Current terms, including the self-billing mandate shown to a producer (REQ-050).

Authorizations​

bearerAuth
Type

Responses​

Current terms.

application/json
JSON
{
  
"termsVersion": "string",
  
"text": "string"
}

Playground​

Server
Authorization

Samples​


Accept the current terms​

POST
/me/terms-acceptance

Records terms acceptance and, for a producer, the self-billing mandate (REQ-050).

Authorizations​

bearerAuth
Type

Request Body​

application/json
JSON
{
  
"termsVersion": "string",
  
"selfBillingMandate": true,
  
"acceptedAt": "string"
}

Responses​

Acceptance recorded.

application/json
JSON
{
  
"termsVersion": "string",
  
"selfBillingMandate": true,
  
"acceptedAt": "string"
}

Playground​

Server
Authorization
Body

Samples​


Read the caller's payment account​

GET
/me/payment-account

INT-255 — Ready Payment method / Payout account chrome. Consumers get card brand and last4 from Stripe (TP-7: Stripe is master; we do not persist PAN data). Producers get Connect account id and an optional platform Dashboard deep-link for Custom accounts (stripe_dashboard: none — no Express login link).

Authorizations​

bearerAuth
Type

Responses​

Payment account summary for the signed-in member.

application/json
JSON
{
  
"status": "string",
  
"brand": "string",
  
"last4": "string",
  
"stripeAccountId": "string",
  
"dashboardUrl": "string"
}

Playground​

Server
Authorization

Samples​


Start payment-account onboarding​

POST
/me/payment-account/onboarding

Producer/prosumer: creates the Connect account on first call and returns an Account Session client secret (mode: embedded) for the Stripe Connect embedded Account onboarding component (INT-362, REQ-051, UAT-051). Stripe collects the KYC and the terms of service; the producer pays Stripe fees and bears disputes (fees.payer = account, losses.payments = stripe), so the platform absorbs no cost. Consumer: returns a SetupIntent client secret (mode: elements) for in-platform Payment Element collection (INT-193 / REQ-040), or a provider setup link (mode: link) as fallback.

Authorizations​

bearerAuth
Type

Responses​

Onboarding session (embedded, elements, or link).

application/json
JSON
{
  
"mode": "string",
  
"status": "string",
  
"stripeAccountId": "string",
  
"currentlyDue": [
  
  
"string"
  
],
  
"eventuallyDue": [
  
  
"string"
  
],
  
"url": "string",
  
"clientSecret": "string"
}

Playground​

Server
Authorization

Samples​


Attach consumer payment method after SetupIntent​

POST
/me/payment-account/payment-method

Confirms the payment method collected via Stripe.js / Payment Element (INT-193, REQ-040) and marks the payment account ready.

Authorizations​

bearerAuth
Type

Request Body​

application/json
JSON
{
  
"paymentMethodId": "string"
}

Responses​

Updated onboarding session (status complete).

application/json
JSON
{
  
"mode": "string",
  
"status": "string",
  
"stripeAccountId": "string",
  
"currentlyDue": [
  
  
"string"
  
],
  
"eventuallyDue": [
  
  
"string"
  
],
  
"url": "string",
  
"clientSecret": "string"
}

Playground​

Server
Authorization
Body

Samples​


Deprecated

Submit Connect KYC requirements​

POST
/me/payment-account/onboarding/requirements

Deprecated by INT-362: producers onboard through the embedded Account onboarding component (mode: embedded). Kept for producer accounts created before INT-362 (Custom, requirement_collection = application): updates such an account using an Account Token (INT-191, REQ-051) and returns the refreshed onboarding session. Personal data is not retained by billing.

Authorizations​

bearerAuth
Type

Request Body​

application/json
JSON
{
  
"accountToken": "string",
  
"country": "string",
  
"businessType": "string",
  
"businessProfileUrl": "string",
  
"businessProfileMcc": "string",
  
"representative": {
  
  
"firstName": "string",
  
  
"lastName": "string",
  
  
"email": "string",
  
  
"phone": "string",
  
  
"dob": {
  
  
  
"day": 0,
  
  
  
"month": 0,
  
  
  
"year": 0
  
  
},
  
  
"address": {
  
  
  
"line1": "string",
  
  
  
"city": "string",
  
  
  
"postalCode": "string",
  
  
  
"country": "string"
  
  
}
  
},
  
"identityDocumentFront": "string",
  
"identityDocumentAdditionalFront": "string",
  
"externalAccount": {
  
  
"country": "string",
  
  
"currency": "string",
  
  
"accountNumber": "string",
  
  
"routingNumber": "string"
  
},
  
"tosAccepted": true
}

Responses​

Refreshed onboarding session.

application/json
JSON
{
  
"mode": "string",
  
"status": "string",
  
"stripeAccountId": "string",
  
"currentlyDue": [
  
  
"string"
  
],
  
"eventuallyDue": [
  
  
"string"
  
],
  
"url": "string",
  
"clientSecret": "string"
}

Playground​

Server
Authorization
Body

Samples​


Pay an invoice​

POST
/invoices/{id}/payments

The consumer pays the invoice. The payment goes to the producer's account (REQ-014).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Payment started.

application/json
JSON
{
  
"paymentId": "string",
  
"invoiceId": "string",
  
"amount": "string",
  
"currency": "string",
  
"status": "string",
  
"method": "string",
  
"failureCategory": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Balances​

Balances of the caller.


Unbilled balances per counterpart​

GET
/me/balances

Unbilled amounts of the caller, one row per counterpart (REQ-002, REQ-057).

Authorizations​

bearerAuth
Type

Responses​

Unbilled balances.

application/json
JSON
[
  
{
  
  
"counterpartId": "string",
  
  
"amount": "string",
  
  
"currency": "string",
  
  
"since": "string"
  
}
]

Playground​

Server
Authorization

Samples​


Settle early with one producer​

POST
/early-settlements

The consumer settles the unbilled balance with the named producer now (REQ-057). The threshold does not apply (BR-05).

Authorizations​

bearerAuth
Type

Request Body​

application/json
JSON
{
  
"producerId": "string"
}

Responses​

Early settlement accepted.

application/json
JSON
{
  
"runId": "string",
  
"communityId": "string",
  
"period": "string",
  
"type": "string",
  
"status": "string",
  
"version": 0
}

Playground​

Server
Authorization
Body

Samples​


Invoices of the caller​

GET
/me/invoices

Invoices where the caller is the producer or the consumer (REQ-007, REQ-039).

Authorizations​

bearerAuth
Type

Responses​

The caller's invoices.

application/json
JSON
[
  
{
  
  
"invoiceId": "string",
  
  
"legalNumber": "string",
  
  
"producerId": "string",
  
  
"consumerId": "string",
  
  
"period": "string",
  
  
"currency": "string",
  
  
"status": "string",
  
  
"dueDate": "string",
  
  
"pairSettlementId": "string",
  
  
"tradeIds": [
  
  
  
"string"
  
  
],
  
  
"lines": [
  
  
],
  
  
"amounts": {
  
  
  
"energy": "string",
  
  
  
"vat": "string",
  
  
  
"total": "string"
  
  
},
  
  
"billingMode": "string"
  
}
]

Playground​

Server
Authorization

Samples​


Invoice detail​

GET
/invoices/{id}

One invoice in the caller's scope. The detail view reads the provider live (TD-6, REQ-007).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

The invoice.

application/json
JSON
{
  
"invoiceId": "string",
  
"legalNumber": "string",
  
"producerId": "string",
  
"consumerId": "string",
  
"period": "string",
  
"currency": "string",
  
"status": "string",
  
"dueDate": "string",
  
"pairSettlementId": "string",
  
"tradeIds": [
  
  
"string"
  
],
  
"lines": [
  
],
  
"amounts": {
  
  
"energy": "string",
  
  
"vat": "string",
  
  
"total": "string"
  
},
  
"billingMode": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Invoice PDF​

GET
/invoices/{id}/document

Hosted invoice PDF (REQ-039). The provider sends the document.

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Invoice PDF.

application/pdf
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Set an invoice status manually​

POST
/invoices/{id}/status

A community manager sets a status with a mandatory reason (REQ-044).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Request Body​

application/json
JSON
{
  
"status": "string",
  
"reason": "string"
}

Responses​

Updated invoice.

application/json
JSON
{
  
"invoiceId": "string",
  
"legalNumber": "string",
  
"producerId": "string",
  
"consumerId": "string",
  
"period": "string",
  
"currency": "string",
  
"status": "string",
  
"dueDate": "string",
  
"pairSettlementId": "string",
  
"tradeIds": [
  
  
"string"
  
],
  
"lines": [
  
],
  
"amounts": {
  
  
"energy": "string",
  
  
"vat": "string",
  
  
"total": "string"
  
},
  
"billingMode": "string"
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Communities​


Read community billing settings​

GET
/communities/{id}/settings

Currency, period, threshold, VAT and mode (REQ-006, REQ-043, REQ-056).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Community settings.

application/json
JSON
{
  
"communityId": "string",
  
"currency": "string",
  
"billingPeriod": "string",
  
"threshold": "string",
  
"vatRate": "string",
  
"billingMode": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Update community billing settings​

PUT
/communities/{id}/settings

A community manager updates currency, period, threshold, VAT and mode (REQ-006, REQ-043, REQ-056).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Request Body​

application/json
JSON
{
  
"currency": "string",
  
"billingPeriod": "string",
  
"threshold": "string",
  
"vatRate": "string",
  
"billingMode": "string"
}

Responses​

Updated settings.

application/json
JSON
{
  
"communityId": "string",
  
"currency": "string",
  
"billingPeriod": "string",
  
"threshold": "string",
  
"vatRate": "string",
  
"billingMode": "string"
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Participants​


Import participants​

POST
/communities/{id}/participants:import

Imports a minimal list of e-mail, GSY DEX actor identifier, meter identifier and role. The import creates the participant, the identity-provider account and the invitation (REQ-008).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Request Body​

application/json
JSON
{
  
"participants": [
  
  
{
  
  
  
"email": "string",
  
  
  
"marketActorId": "string",
  
  
  
"meterId": "string",
  
  
  
"role": "string",
  
  
  
"existingIdpSubject": "string"
  
  
}
  
]
}

Responses​

Imported participants.

application/json
JSON
[
  
{
  
  
"participantId": "string",
  
  
"communityId": "string",
  
  
"role": "string",
  
  
"status": "string",
  
  
"marketActorId": "string",
  
  
"meterId": "string",
  
  
"name": "string",
  
  
"email": "string"
  
}
]

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


List participants of a community​

GET
/communities/{id}/participants

Participant registry of the community (REQ-008, REQ-058).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Participants. Full billing-profile address is not included; optional directory name / email help managers recognise members (INT-283 / REQ-008).

application/json
JSON
[
  
{
  
  
"participantId": "string",
  
  
"communityId": "string",
  
  
"role": "string",
  
  
"status": "string",
  
  
"marketActorId": "string",
  
  
"meterId": "string",
  
  
"name": "string",
  
  
"email": "string"
  
}
]

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Update trade-attribution identifiers​

PATCH
/participants/{id}

A community manager changes the GSY DEX actor identifier, meter or role. The participant cannot change these (REQ-009, REQ-058).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Request Body​

application/json
JSON
{
  
"marketActorId": "string",
  
"meterId": "string",
  
"role": "string"
}

Responses​

Updated participant.

application/json
JSON
{
  
"participantId": "string",
  
"communityId": "string",
  
"role": "string",
  
"status": "string",
  
"marketActorId": "string",
  
"meterId": "string",
  
"name": "string",
  
"email": "string"
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Offboard a participant​

POST
/participants/{id}:offboard

Removes the participant from the community and triggers the final settlement (REQ-012).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Offboarding accepted.

application/json
JSON
{
  
"participantId": "string",
  
"communityId": "string",
  
"role": "string",
  
"status": "string",
  
"marketActorId": "string",
  
"meterId": "string",
  
"name": "string",
  
"email": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Billing​

Billing runs and early settlement.


Start a billing run​

POST
/communities/{id}/billing-runs

A manager or operator starts a run for the community (REQ-006). The token community must be this community (REQ-049 / UAT-060); another community receives 403. The period is YYYY-MM or YYYY-Qn; a periodic run without a period closes the last elapsed period of the community calendar.

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Request Body​

application/json
JSON
{
  
"type": "string",
  
"period": "string"
}

Responses​

Run accepted.

application/json
JSON
{
  
"runId": "string",
  
"communityId": "string",
  
"period": "string",
  
"type": "string",
  
"status": "string",
  
"version": 0
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Read a billing run​

GET
/billing-runs/{id}

Status of one billing run (REQ-006). Returns 404 when the run is not in the caller's community (REQ-049 / UAT-060).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

The billing run.

application/json
JSON
{
  
"runId": "string",
  
"communityId": "string",
  
"period": "string",
  
"type": "string",
  
"status": "string",
  
"version": 0
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Reports​

Periodic summaries, discrepancies, intake anomalies and KPI export.


Payment overview of a community​

GET
/communities/{id}/payments-overview

Manager view of payments in the community (REQ-018). The token community must be this community (REQ-049 / UAT-060). Lists use the provider read cache (TD-6).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Payments of the community.

application/json
JSON
[
  
{
  
  
"paymentId": "string",
  
  
"invoiceId": "string",
  
  
"amount": "string",
  
  
"currency": "string",
  
  
"status": "string",
  
  
"method": "string",
  
  
"failureCategory": "string"
  
}
]

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Member history​

GET
/participants/{id}/history

Invoices and payments of one participant (REQ-031). A member reads only their own participant. A manager or operator reads a participant of their own community. Another community returns 404 (REQ-049 / UAT-060).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Member history.

application/json
JSON
{
  
"participantId": "string",
  
"invoices": [
  
  
{
  
  
  
"invoiceId": "string",
  
  
  
"legalNumber": "string",
  
  
  
"producerId": "string",
  
  
  
"consumerId": "string",
  
  
  
"period": "string",
  
  
  
"currency": "string",
  
  
  
"status": "string",
  
  
  
"dueDate": "string",
  
  
  
"pairSettlementId": "string",
  
  
  
"tradeIds": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"lines": [
  
  
  
],
  
  
  
"amounts": {
  
  
  
  
"energy": "string",
  
  
  
  
"vat": "string",
  
  
  
  
"total": "string"
  
  
  
},
  
  
  
"billingMode": "string"
  
  
}
  
],
  
"payments": [
  
  
{
  
  
  
"paymentId": "string",
  
  
  
"invoiceId": "string",
  
  
  
"amount": "string",
  
  
  
"currency": "string",
  
  
  
"status": "string",
  
  
  
"method": "string",
  
  
  
"failureCategory": "string"
  
  
}
  
]
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Periodic summary​

GET
/reports/summary

Summary of one community and period (REQ-032). The token community must match communityId (REQ-049 / UAT-060).

Authorizations​

bearerAuth
Type

Parameters​

Query Parameters

communityId*

Community whose data is requested (REQ-010).

Required
period*

Billing period of the report.

Type
string
Required

Responses​

Periodic summary.

application/json
JSON
{
  
"communityId": "string",
  
"period": "string",
  
"currency": "string",
  
"invoiceCount": 0,
  
"paymentCount": 0,
  
"total": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


KPI export for a period​

GET
/kpi-exports/{period}

CSV file export of the period (REQ-047 invoice amounts/kWh plus REQ-046 payment failure causes, suggested corrective actions and processing times per method). The later channel is still open in the architecture (03 §7, port P-KPI).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

period*

Billing period of the export.

Type
string
Required

Query Parameters

communityId*

Community whose data is requested (REQ-010).

Required

Responses​

KPI file.

application/octet-stream
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Reconciliation discrepancies​

GET
/reconciliation/discrepancies

Discrepancies visible to an operator (REQ-041).

Authorizations​

bearerAuth
Type

Parameters​

Query Parameters

communityId

Limits the result to one community in the caller's scope (REQ-010).

Responses​

Discrepancies.

application/json
JSON
[
  
{
  
  
"scope": "string",
  
  
"expected": "string",
  
  
"actual": "string",
  
  
"status": "string"
  
}
]

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Intake anomalies​

GET
/intake/anomalies

Trade-intake anomalies visible to an operator (REQ-029).

Authorizations​

bearerAuth
Type

Parameters​

Query Parameters

communityId

Limits the result to one community in the caller's scope (REQ-010).

Responses​

Intake anomalies.

application/json
JSON
[
  
{
  
  
"type": "string",
  
  
"marketId": "string",
  
  
"details": "string"
  
}
]

Playground​

Server
Authorization
Variables
Key
Value

Samples​


List scheduled jobs​

GET
/jobs

Job executions visible to an operator (02 §4.5).

Authorizations​

bearerAuth
Type

Parameters​

Query Parameters

communityId

Limits the result to one community in the caller's scope (REQ-010).

Responses​

Jobs.

application/json
JSON
[
  
{
  
  
"jobId": "string",
  
  
"name": "string",
  
  
"communityId": "string",
  
  
"outcome": "string",
  
  
"lastRunAt": "string"
  
}
]

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Run a job now​

POST
/jobs/{id}:run

An operator triggers one scheduled job (02 §4.5).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

Job accepted.

application/json
JSON
{
  
"jobId": "string",
  
"name": "string",
  
"communityId": "string",
  
"outcome": "string",
  
"lastRunAt": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Privacy​

Data-subject export and erasure requests.


Request an export or an erasure​

POST
/data-subject-requests

The member opens an export or erasure for themselves; the token subject is used and a body participantId is ignored (REQ-013). A community manager or the DPO may name another participant of their own community. A peer or another community is rejected (REQ-049).

Authorizations​

bearerAuth
Type

Request Body​

application/json
JSON
{
  
"type": "string",
  
"participantId": "string"
}

Responses​

Request accepted.

application/json
JSON
{
  
"requestId": "string",
  
"participantId": "string",
  
"type": "string",
  
"status": "string"
}

Playground​

Server
Authorization
Body

Samples​


Read a data-subject request​

GET
/data-subject-requests/{id}

Status of one export or erasure request (REQ-013). A member reads a request they opened or that names them. A manager, operator or DPO reads a request in their own community. Another community returns 404 (REQ-049).

Authorizations​

bearerAuth
Type

Parameters​

Path Parameters

id*

Resource identifier.

Required

Responses​

The request.

application/json
JSON
{
  
"requestId": "string",
  
"participantId": "string",
  
"type": "string",
  
"status": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Powered by VitePress OpenAPI

Horizon Europe INTELLIGENT (GA 101160678) · Task T5.6 · Deliverable D5.5