API reference · Moving money

Bills

Airtime, data, power and TV: catalogue, account check, prepaid tokens, schedules. About bills Live

POST Save a bill

POST /bill

Keeps a bill the customer expects to pay again - a meter, a smartcard, a policy, a subscription - so it can be paid by reference and, later, on a schedule. The account is validated with the biller before it is saved, and the name the biller holds for it comes back on the response. Show that name: a bill pointing at the wrong meter is otherwise discovered by paying a stranger's electricity. This is the same record a payment saves when asked to, so a bill created here and one kept from a completed payment are one thing. Provider, currency and category all follow from the product and are not accepted from the caller. For a product whose amount the customer chooses, amount keeps how much the bill is usually paid for; it must fall within the product's limits. A fixed-price product is always its own price. Supply schedule to start paying the bill on a schedule as it is saved. The schedule follows the same rules as POST /bill/schedule and needs a validated transaction PIN; it defaults to paying the bill's amount, and if it is refused the bill is not saved either.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Example

Request body: BillRequest · Response: GenericResponseBillResponse

curl -X POST "https://api.bridgemoni.com/bill" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Ikeja Electric - Flat 3",
  "description": "Prepaid meter, upstairs flat. Landlord reimburses quarterly.",
  "productCode": "IKEDC_PREPAID",
  "accountNumber": 45012345678,
  "amount": 5000.0,
  "schedule": {
    "name": "Monthly electricity",
    "sourceAccountNumber": 1000000199,
    "amountMode": "FIXED",
    "fixedAmount": 5000.0,
    "maximumAmount": 25000.0,
    "frequency": "DAILY",
    "dayOfMonth": 5,
    "dayOfWeek": 3,
    "startsOn": "2026-10-01",
    "endsOn": "2027-10-01",
    "maximumOccurrences": 12
  }
}'

Responses

StatusWhen
200Bill created successfully
400Amount is not allowed for this product; Say how much the schedule should pay; That cadence is incomplete
403Transaction PIN validation required
404No such product in the catalogue
409The biller could not confirm that account, or this bill is already saved

GET List bill categories

GET /bill/categories

Lists the available bill categories, optionally narrowed to a single country. The country is where the bill is paid, not where the payer is - a customer abroad paying a bill back home should pass the destination country, not their own.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
countryCodeOptional

Example

Response: List<BillCategoryResponse>

curl -X GET "https://api.bridgemoni.com/bill/categories?countryCode=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill categories fetched successfully

POST Create a bill category

POST /bill/category

Creates a category that billers and their products are grouped under, such as electricity or cable television.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Example

Request body: BillCategoryRequest · Response: BillCategoryResponse

curl -X POST "https://api.bridgemoni.com/bill/category" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "Ada Obi",
    "name": "Ada Obi",
    "categoryType": "AIRTIME",
    "countryCode": "NG",
    "description": "March payroll",
    "displayOrder": 1,
    "iconUrl": "Ada Obi"
  }'

Responses

StatusWhen
200Bill category created successfully
409Bill category already registered

GET Fetch a bill category

GET /bill/category/{reference}

Fetches one bill category by reference.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: BillCategoryResponse

curl -X GET "https://api.bridgemoni.com/bill/category/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill category fetched successfully
404Bill category not found

PUT Update a bill category

PUT /bill/category/{reference}

Updates a bill category's own attributes. Does not affect the providers or products beneath it.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: UpdateBillCategoryRequest · Response: BillCategoryResponse

curl -X PUT "https://api.bridgemoni.com/bill/category/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Obi",
    "description": "March payroll",
    "displayOrder": 1,
    "iconUrl": "Ada Obi",
    "active": true
  }'

Responses

StatusWhen
200Bill category updated successfully
404Bill category not found

GET List the billers in a category

GET /bill/category/{reference}/providers

Lists the providers available under a category - the billers a customer can pay.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: List<BillProviderResponse>

curl -X GET "https://api.bridgemoni.com/bill/category/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/providers" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill providers fetched successfully

POST Pay a bill

POST /bill/payment

Submits a bill payment. A 200 does not always mean the biller was paid - check status. SUBMITTED and UNKNOWN both mean the outcome is still being confirmed and neither carries a token. Only SUCCESSFUL is a completed payment.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Idempotency-KeyReuse the same value on every retry of this request
Content-Typeapplication/json

Example

Request body: BillPaymentRequest · Response: BillPaymentResponse

curl -X POST "https://api.bridgemoni.com/bill/payment" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Idempotency-Key: a-unique-key-per-intent" \
  -H "Content-Type: application/json" \
  -d '{
    "beneficiaryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "organizationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "productCode": "Ada Obi",
    "customerIdentifier": "March payroll",
    "saveBeneficiary": true,
    "beneficiaryAlias": "Ada Obi",
    "amount": {
      "amount": "250000.00",
      "currencyCode": "NGN"
    },
    "sourceAccountNumber": "0123456789",
    "instrumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "validationReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "fxQuoteReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "narration": "March payroll"
  }'

Responses

StatusWhen
200Bill payment processed
400Amount is not allowed for this product; That beneficiary cannot be paid from here; The beneficiary and the bill details disagree; This bill must be paid from a wallet in its own currency; This quote does not match the transaction
404Bill category not found; Bill product not found; Bill provider not found; Exchange rate quote not found; Validation not found or expired
409Bill product is not available; Bill provider is not available; This exchange rate quote has already been used
410This exchange rate quote has expired

GET Fetch a bill payment

GET /bill/payment/{reference}

Fetches one bill payment, including its current status and any token the biller returned.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: BillPaymentResponse

curl -X GET "https://api.bridgemoni.com/bill/payment/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill payment fetched successfully
404Bill payment not found

POST Resolve a bill payment by hand

POST /bill/payment/{reference}/resolve

Records an operator's decision on a payment that could not be settled automatically. Guessing in either direction - refunding a bill that was paid, or claiming one that was not - is worse than asking, which is why this call exists.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: ResolveBillPaymentRequest · Response: BillPaymentResponse

curl -X POST "https://api.bridgemoni.com/bill/payment/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/resolve" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "PENDING",
    "reason": "March payroll"
  }'

Responses

StatusWhen
200Bill payment resolved
404Bill payment not found
409Bill payment has already been finalized

GET List bill payments awaiting manual review

GET /bill/payments/review

Lists payments that could not be settled automatically because the provider never gave a usable answer and the requery attempts ran out. The money is still held against the provider.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Example

Response: List<BillPaymentResponse>

curl -X GET "https://api.bridgemoni.com/bill/payments/review" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill payments awaiting review fetched successfully

GET Look a product up by its biller and code

GET /bill/product

Finds one product by the codes that identify it, whatever its status - no reference needed, so an aggregator holding only its own codes can find it. Listing a biller's products returns only active ones, so this is the way to recover a withdrawn product: re-registering something withdrawn earlier is refused as a duplicate, and this is how it finds the reference to put back on sale instead. The aggregator is required alongside the biller code because the two together are what identify a biller; the code alone is not unique.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
aggregatorCodeOptional
providerCodeOptional
productCodeOptional

Example

Response: GenericResponseBillProductResponse

curl -X GET "https://api.bridgemoni.com/bill/product?aggregatorCode=value&providerCode=value&productCode=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill product fetched successfully
404Bill provider not found; Bill product not found

GET Fetch a product

GET /bill/product/{reference}

Fetches one product by reference, with the fees and taxes a customer pays on top of the amount. Tenant and operator callers also see the commission the product earns.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
amountOptional

Example

Response: GenericResponseBillProductResponse

curl -X GET "https://api.bridgemoni.com/bill/product/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill product fetched successfully
404Bill product not found

PUT Override a synced product's presentation

PUT /bill/product/{reference}/override

Curates a product that catalogue sync owns. The sync never writes these fields, so an override survives every refresh.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Example

Request body: BillProductOverrideRequest · Response: BillProductResponse

curl -X PUT "https://api.bridgemoni.com/bill/product/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/override" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "displayName": "Ada Obi",
    "enabled": true,
    "marginRateOverride": 250000.0,
    "minAmountOverride": 250000.0,
    "maxAmountOverride": 250000.0,
    "note": "March payroll"
  }'

Responses

StatusWhen
200Bill product override applied successfully
404Bill product not found; Bill provider not found

GET Look a biller up by its aggregator and code

GET /bill/provider

Finds one biller by the pair that identifies it in an aggregator's feed, whatever its status. Listing a category returns only active billers, so this is the way to recover a deactivated one - an aggregator re-registering a biller it withdrew earlier is refused as a duplicate, and this is how it finds the reference to reactivate instead.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
aggregatorCodeOptional
providerCodeOptional

Example

Response: GenericResponseBillProviderResponse

curl -X GET "https://api.bridgemoni.com/bill/provider?aggregatorCode=value&providerCode=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill provider fetched successfully
404Bill provider not found

GET Fetch a biller

GET /bill/provider/{reference}

Fetches one biller by reference.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillProviderResponse

curl -X GET "https://api.bridgemoni.com/bill/provider/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill provider fetched successfully
404Bill provider not found

GET List a biller's products

GET /bill/provider/{reference}/products

Lists the products a biller offers. A product declares whether validation is required before payment is accepted, and carries the fees and taxes a customer pays on top of the amount - the product's own, then the tenant's pricing rules for bill payments. Tenant and operator callers also see the commission each product earns.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: List<BillProductResponse>

curl -X GET "https://api.bridgemoni.com/bill/provider/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/products" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill products fetched successfully
404Bill provider not found

POST Schedule a bill

POST /bill/schedule

Sets a saved bill to be paid on a cadence. Nothing is paid by this call. Requires a validated transaction PIN: a schedule is standing authority to debit a wallet, which is the same authority as paying by hand. The amount is a mode, not a number. FIXED is checked against the product's own rules here - its range, and the multiple it requires - so an amount the biller would reject is refused now rather than at one in the morning on the first of the month. AMOUNT_DUE and CAPPED_AMOUNT_DUE need a product the biller will quote a balance for.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Example

Request body: BillScheduleRequest · Response: GenericResponseBillScheduleResponse

curl -X POST "https://api.bridgemoni.com/bill/schedule" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "billReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
  "name": "Monthly electricity",
  "sourceAccountNumber": 1000000199,
  "amountMode": "FIXED",
  "fixedAmount": 5000.0,
  "maximumAmount": 25000.0,
  "frequency": "DAILY",
  "dayOfMonth": 5,
  "dayOfWeek": 3,
  "startsOn": "2026-10-01",
  "endsOn": "2027-10-01",
  "maximumOccurrences": 12
}'

Responses

StatusWhen
200Schedule created successfully
400The cadence is incomplete - a monthly schedule needs a day of the month from 1 to 28, a weekly one a day of the week - or the amount is one the product does not allow
403No validated transaction PIN
404No such saved bill
409The mode needs a product that quotes a balance and this one does not

GET Read one bill schedule

GET /bill/schedule/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillScheduleResponse

curl -X GET "https://api.bridgemoni.com/bill/schedule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Schedule retrieved successfully
404No such schedule, or it belongs to somebody else - both read the same way deliberately

POST Cancel a bill schedule

POST /bill/schedule/{reference}/cancel

Terminal. The payments it already made are kept.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillScheduleResponse

curl -X POST "https://api.bridgemoni.com/bill/schedule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/cancel" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Schedule cancelled successfully
409It has already ended

POST Pause a bill schedule

POST /bill/schedule/{reference}/pause

Stops it firing. The dates it misses while paused are not paid later.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillScheduleResponse

curl -X POST "https://api.bridgemoni.com/bill/schedule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pause" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Schedule paused successfully
409It is not active, or has already ended

POST Resume a bill schedule

POST /bill/schedule/{reference}/resume

Starts it firing again from the next date, not from the ones it missed. Catching up on a pause would debit a wallet several times over for periods the payer chose not to pay.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillScheduleResponse

curl -X POST "https://api.bridgemoni.com/bill/schedule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/resume" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Schedule resumed successfully
409It is not paused, or has already ended

POST Run a bill schedule now

POST /bill/schedule/{reference}/run

Pays this schedule's next occurrence immediately, through the same code an automatic run uses. A manual run and an automatic one produce the same run row, the same double-payment guard and the same failure accounting, and the occurrence is consumed either way - so the period is paid once, not once by hand and again by the clock. Requires a validated transaction PIN. A run that could not pay still answers 200: the run row is the answer, and it carries the status and the reason. Read failureCode to tell a short wallet from a withdrawn product.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillScheduleRunResponse

curl -X POST "https://api.bridgemoni.com/bill/schedule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/run" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200The run was recorded. SUCCESSFUL, PENDING while the payment is in flight, SKIPPED when the biller reported nothing owed, or FAILED with a reason
403No validated transaction PIN
404No such schedule
409It is paused, a pass is already working it, or it has already ended

GET List a schedule's runs

GET /bill/schedule/{reference}/runs

Most recent occurrence first. Every firing is here, including the ones that were skipped or failed, because a payer asking why a bill went unpaid needs the refusal as much as the payments.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
page0
size20

Example

Response: GenericResponsePagerBillScheduleRunResponse

curl -X GET "https://api.bridgemoni.com/bill/schedule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/runs?page=value&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Runs retrieved successfully

GET List your bill schedules

GET /bill/schedules

Active schedules unless a status is named.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
statusOptional
page0
size20

Example

Response: GenericResponsePagerBillScheduleResponse

curl -X GET "https://api.bridgemoni.com/bill/schedules?page=value&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Schedules retrieved successfully

POST Validate a customer identifier at the biller

POST /bill/validate

Resolves a customer identifier - a meter number, an account, a smartcard - at the biller before any money moves, and returns the name the biller holds against it. Quote the returned reference on the payment. For a product that declares validationRequired, payment is refused without one: paying the wrong meter cannot be undone.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Example

Request body: BillValidationRequest · Response: BillValidationResponse

curl -X POST "https://api.bridgemoni.com/bill/validate" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "productCode": "Ada Obi",
    "customerIdentifier": "March payroll"
  }'

Responses

StatusWhen
200Bill validation completed successfully
404Bill category not found; Bill product not found; Bill provider not found
409Bill product is not available; Bill provider is not available
500Could not validate this customer identifier

GET Read one saved bill

GET /bill/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Example

Response: GenericResponseBillResponse

curl -X GET "https://api.bridgemoni.com/bill/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bill retrieved successfully
404No saved bill for that reference. A saved payee of another kind reads the same way, because a bill is the only kind this endpoint speaks for

GET List your saved bills

GET /bills

Active bills only. Archived ones are kept but not listed.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
page0
size20

Example

Response: GenericResponsePagerBillResponse

curl -X GET "https://api.bridgemoni.com/bills?page=value&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Bills retrieved successfully

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors