Manage practice group settings, access tokens, and configuration. Use the access token endpoint to generate short-lived JWTs for Hero Elements.
API Reference
//
Link Invoice to Appointme...
Hero Health Public API (1.0.0)
The Hero Health Public API enables healthtech partners to integrate with NHS GP practices connected to EMIS Web and TPP SystmOne.
- Patient messaging — Send SMS, email, and NHS App messages on behalf of a practice
- Appointment booking — List available slots, create reservations, and confirm bookings
- Patient management — Register and look up patients via PDS (Personal Demographics Service)
- Webhooks — Subscribe to events such as appointment confirmations and write-to-record outcomes
- Booking & form links — Generate sharable links for patient self-service flows
- Elements — Generate access tokens for embedding pre-built Hero UI components
All endpoints require an x-api-key and x-practice-group-id header. API keys are scoped to specific functionality (messaging, booking, booking links). Contact Hero support to request your key.
Download OpenAPI description
Languages
Servers
Mock server
https://developer.herohealth.net/_mock/apis/public-api/openapi/
Staging
https://api.staging.htech.app/
Production
https://api.herohealth.net/
Request
Updates an existing invoice.
The issuer_id parameter is required and must be the Admin ID of the person updating the invoice.
For draft invoices, all fields can be updated. For finalized invoices, only metadata fields (memo, footer, coupons) can be updated.
Security
apiKeyAuth and practiceGroupId
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/invoicing/invoices/{id}
- Staginghttps://api.staging.htech.app/v1/invoicing/invoices/{id}
- Productionhttps://api.herohealth.net/v1/invoicing/invoices/{id}
- curl
- NodeJS
- Ruby
curl -i -X PATCH \
'https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/invoicing/invoices/{id}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"issuer_id": "string",
"appointment_id": "string",
"practitioner_id": "string",
"service_date": "string",
"customer_stripe_id": "string",
"set_default_customer": true,
"due_date": "string",
"collection_method": "request_payment",
"payment_source": "string",
"insurer": "string",
"authentication_code": "string",
"membership_number": "string",
"diagnosis": "string",
"memo": "string",
"footer": "string",
"confidential": true,
"mode": "draft",
"coupons": [
{
"id": "string",
"name": "string"
}
],
"invoice_items_attributes": [
{
"price": "string",
"product": "string",
"description": "string",
"quantity": 0,
"unit_amount": 0,
"unit_amount_in_pounds": 0,
"create": true,
"stripe_id": "string"
}
]
}'Response
application/json
{ "id": "string", "stripe_id": "string", "status": "string", "subtotal": 0, "amount_due": 0, "customer_id": "string", "patient_record_id": "string", "appointment_id": "string", "created_at": "string", "updated_at": "string" }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/invoicing/invoices/link
- Staginghttps://api.staging.htech.app/v1/invoicing/invoices/link
- Productionhttps://api.herohealth.net/v1/invoicing/invoices/link
- curl
- NodeJS
- Ruby
curl -i -X POST \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/invoicing/invoices/link \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"stripe_invoice_id": "string",
"appointment_id": "string",
"issuer_id": "string"
}'Response
application/json
{ "id": "string", "stripe_id": "string", "status": "string", "subtotal": 0, "amount_due": 0, "customer_id": "string", "patient_record_id": "string", "appointment_id": "string", "created_at": "string", "updated_at": "string" }
- Mock serverhttps://developer.herohealth.net/_mock/apis/public-api/openapi/v1/invoicing/membership-policies
- Staginghttps://api.staging.htech.app/v1/invoicing/membership-policies
- Productionhttps://api.herohealth.net/v1/invoicing/membership-policies
- curl
- NodeJS
- Ruby
curl -i -X POST \
https://developer.herohealth.net/_mock/apis/public-api/openapi/v1/invoicing/membership-policies \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-H 'x-practice-group-id: YOUR_API_KEY_HERE' \
-d '{
"collection_method": "send_invoice",
"days_until_due": 0,
"membership_scheme_id": "string",
"customer": "string",
"price": "string",
"quantity": 0,
"starts_on": 0,
"billing_cycle_anchor": 0,
"discounts": [
{
"coupon": "string"
}
],
"members": [
{
"patient_id": "string"
}
]
}'Response
application/json
{ "id": "string", "practice_group_id": "string", "membership_scheme_id": "string" }