Buy now pay later origination
- POST
/bnpl/applicationApply for a plan - POST
/bnpl/offer/{reference}/acceptAccept an offer - POST
/bnpl/offer/{reference}/declineDecline an offer
POST Apply for a plan
POST /bnpl/application
Runs the gates cheapest first, so a refusal at the merchant gate never consumes a credit enquiry. Every terminal, approve or refuse, writes its own decision record on a separate transaction: a declined credit application is a regulated record, and one written on the caller's transaction would be rolled back by the very refusal it exists to explain.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Example
Request body: CreateApplicationRequest · Response: GenericResponseApplicationResponse
curl -X POST "https://api.bridgemoni.com/bnpl/application" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"merchantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"accountHolderReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"basketAmount": 0,
"currencyCode": "string",
"items": [
{
"sku": "string",
"description": "string",
"quantity": 0,
"unitAmount": 0,
"categoryCode": "string"
}
],
"channel": "SELF_SERVICE",
"agentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"idempotencyKey": "string"
}' {
"merchantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"accountHolderReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"basketAmount": 0,
"currencyCode": "string",
"items": [
{
"sku": "string",
"description": "string",
"quantity": 0,
"unitAmount": 0,
"categoryCode": "string"
}
],
"channel": "SELF_SERVICE",
"agentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"listingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"applicantPartyReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "SUBMITTED",
"message": "string",
"proposedCommencement": "2026-09-25",
"offeredCommencement": "2026-09-25",
"offeredExpiry": "2026-09-25",
"tenancyReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sharedRecord": {
"facts": {
"partyReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"partyType": "OCCUPANT",
"erased": true,
"asOf": "2026-09-25T10:00:00Z",
"facts": [
{
"key": "rental.on_time_rate_24m",
"value": 0,
"unit": "RATIO",
"observations": 0,
"windowStart": "2026-09-25",
"windowEnd": "2026-09-25"
}
]
},
"reviews": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"target": "PROPERTY",
"targetReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"rating": 0,
"body": "string",
"status": "PUBLISHED",
"reply": "string",
"repliedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
}
]
},
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Application assessed successfully"
} Responses
| Status | When |
|---|---|
200 | Application assessed successfully |
POST Accept an offer
POST /bnpl/offer/{reference}/accept
The client echoes a digest of every disclosure it actually displayed, and acceptance is refused if the set does not match what was issued. Without that, saying the customer was shown the cost of credit is an assumption about a front end nobody controls rather than a fact the record can carry.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Path parameters
| Name |
|---|
reference |
Example
Request body: AcceptOfferRequest · Response: GenericResponsePlanResponse
curl -X POST "https://api.bridgemoni.com/bnpl/offer/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/accept" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"acceptedDisclosureDigests": [
"string"
],
"signatureKind": "string",
"signatureEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"idempotencyKey": "string"
}' {
"acceptedDisclosureDigests": [
"string"
],
"signatureKind": "string",
"signatureEvidenceReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"idempotencyKey": "string"
} {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"customerReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"merchantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"productReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"fundingModel": "MERCHANT_FUNDED",
"currencyCode": "string",
"status": "OFFERED",
"basketAmount": 0,
"downPaymentAmount": 0,
"totalPayable": 0,
"totalCostOfCredit": 0,
"aprBasisPoints": 0,
"outstandingBalance": 0,
"allocationOrder": "OLDEST_FIRST",
"termsHash": "string",
"paymentCode": "string",
"activatedAt": "2026-09-25T10:00:00Z",
"coolingOffExpiresAt": "2026-09-25T10:00:00Z",
"daysPastDue": 0,
"settledAt": "2026-09-25T10:00:00Z",
"schedule": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sequence": 0,
"dueDate": "2026-09-25",
"amountDue": 0,
"amountPaid": 0,
"outstanding": 0,
"status": "SCHEDULED",
"daysPastDue": 0
}
]
},
"description": "Plan activated successfully"
} Responses
| Status | When |
|---|---|
200 | Plan activated successfully |
POST Decline an offer
POST /bnpl/offer/{reference}/decline
An expired or declined offer is applied for again rather than revived.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseApplicationResponse
curl -X POST "https://api.bridgemoni.com/bnpl/offer/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/decline" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"listingReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"applicantPartyReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"status": "SUBMITTED",
"message": "string",
"proposedCommencement": "2026-09-25",
"offeredCommencement": "2026-09-25",
"offeredExpiry": "2026-09-25",
"tenancyReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"sharedRecord": {
"facts": {
"partyReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"partyType": "OCCUPANT",
"erased": true,
"asOf": "2026-09-25T10:00:00Z",
"facts": [
{
"key": "rental.on_time_rate_24m",
"value": 0,
"unit": "RATIO",
"observations": 0,
"windowStart": "2026-09-25",
"windowEnd": "2026-09-25"
}
]
},
"reviews": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"target": "PROPERTY",
"targetReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"rating": 0,
"body": "string",
"status": "PUBLISHED",
"reply": "string",
"repliedAt": "2026-09-25T10:00:00Z",
"creationDateTime": "2026-09-25T10:00:00Z"
}
]
},
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Offer declined successfully"
} Responses
| Status | When |
|---|---|
200 | Offer declined successfully |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors