Create a Buy Now, Pay Later (BNPL) loan (V2 endpoints)
The following shows you how to create a loan on the Pismo platform. For information about the loan lifecycle, see Pismo lending lifecycle.
A BNPL is a type of unsecured loan product that’s typically used by borrowers to pay for items at the point of sale. It often involves a smaller number of installments, such as less than six months, smaller loan amounts (less than USD $2000), low or no interest charges, and funds directed to the seller of the item.
Create BNPL loan product
To create a BNPL loan product, use the Create loan product beta endpoint. The API request example includes these required fields.
| Field | Description |
|---|---|
collateral | Shows whether there’s collateral involved on a loan product. |
currency | The currency the loan product uses. |
disbursement_method | The disbursement method the loan product uses ( with a type ofNONE, SINGLE, or COLLATERAL_MULTIPLE). |
product_name | Describes the product in 256 characters or less. |
product_type | Defaults to Buy Now, Pay Later or BNPL when using the V2 endpoint. |
program_id | The program ID for the loan product. |
processing_codes | Processing codes for each operation during loan lifecycle. Defines loan details, such as penalties and how often repayments occur. |
{
"product_name": "Complete BNPL with Prepayment info",
"product_type": "BNPL",
"program_id": 48109,
"processing_codes": {
"booking": [
"bookJ3V1H"
],
"repayment": [
"repayM7QR"
],
"restructuring": [
"restructure6YCZ"
],
"present_value_discount": [
"discount155V"
],
"early_final_settlement": {
"fee": [
"efsMRT0"
]
},
"insurance": {
"booking": [
"insLP28"
],
"repayment": [
"insrepayGH39"
]
},
"disbursement": {
"internal": [
"internalFVVX"
],
"external": [
"externalPVTQ"
]
},
"prepayment": {
"fee": [
"prepaymentDRV0"
]
}
},
"loan_activation_method": "ON_BOOKING",
"currency": "986",
"collateral": "NONE",
"disbursement_method": {
"type": "SINGLE"
},
"interest_plan_ids": [
"712edbb8-5005-4f41-af95-dc2014f4045d"
],
"repayment_hierarchy_code": "HIERARCHY_FEE_FIRST",
"prepayment": {
"penalty": {
"type": "FIXED_AMOUNT", // PERCENTAGE or "FIXED_AMOUNT"
"value": 20.0
},
"lock_in_period": 0, // optional, >= 0
"reduce_option": [
"INSTALLMENT",
"TERM"
] // required, at least one
},
"early_final_settlement": {
"penalty": {
"type": "PERCENTAGE",
"value": 0.1
},
"lock_in_period": 2
}
}After you create the loan product, the API response returns the product_id. Use this ID to simulate a loan.
{
"product_id": "2717a296-124a-47cc-b2a1-91e80dc723eb"
}Simulate the BNPL loan
After you create the loan product, you can start offering BNPL loans to your borrowers.
For example, when a borrower needs to pay off a purchase, you can offer them a BNPL loan from an existing loan product (beta endpoint). To offer a BNPL loan, use the Simulate loan booking endpoint.
This API request example includes these fields.
| Field | Description |
|---|---|
product_id | The ID of a BNPL loan product. This is a required field. |
loan_amount | The total amount of the BNPL loan. |
start_date | The starting date of the BNPL loan. |
stages.interest_rate | Interest rate for the stage of the loan. |
stages.period | Number of time periods in the stage. |
disbursement.due_date | The date when to disburse the BNPL loan. |
{
"product_id": "8753ee7e-d227-4bcf-bd10-af03afca738e",
"loan_amount": 1000.00,
"start_date": "2026-05-28",
"stages": [
{
"interest_rate":{
"value": 0.02,
"unit": "YEAR"
},
"period": {
"value": 4,
"unit": "MONTH"
}
}
],
"disbursement": [
{
"due_date": "2026-05-28"
}
]
}After you simulate the BNPL loan, the API response includes the loan_simulation_id, which you use to identify the simulation when you book the loan. The response also includes the repayment_schedule, which shows the details of the loan schedule, and the disbursement_schedule, which shows the details of the loan disbursement.
{
"loan_simulation_id": "2717a296-124a-47cc-b2a1-91e80dc723eb",
"product_id": "2717a296-124a-47cc-b2a1-91e80dc723eb",
"external_id": "string",
"loan_amount": 2000,
"outstanding_balance": {
"amount_due": {
"principal": 2000,
"interest": 20,
"fee": 10,
"tax": 10,
"charge": 5,
"penalty": 27,
"total": 2072
},
"arrears": {
"principal": 2000,
"interest": 20,
"fee": 10,
"tax": 10,
"charge": 5,
"penalty": 27,
"total": 2072
},
"principal": 2000,
"interest": 20,
"fee": 10,
"tax": 10,
"charge": 5,
"penalty": 27,
"total": 2072
},
"total_payment_amount": 1100,
"start_date": "2026-05-28",
"days_in_year_method": "US_30_360",
"repayment_calculation_method": "EI_REDUCING_BALANCE",
"repayment_frequency": {
"method": "MONTHLY"
},
"restructured_loan_id": "2717a296-124a-47cc-b2a1-91e80dc723eb",
"restructured_loan_total_outstanding_balance": "2717a296-124a-47cc-b2a1-91e80dc723eb",
"repayment_schedule": [
{
"transactions_ids": [
"4621794465"
],
"status": "ACTIVE",
"period": 1,
"due_date": "2026-05-28",
"real_due_date": "2026-05-28"
}
],
"disbursement_schedule": [
{
"due_date": "2026-05-28",
"amount": 1000,
"principal": 2000,
"tax": 10,
"fee": 10,
"charge": 5
}
],
"stages": [
{
"interest_rate": {
"value": 0.05,
"unit": "YEAR"
},
"period": {
"value": 12,
"unit": "MONTH"
}
}
]
}To find an existing loan simulation, use the Get loan simulation endpoint. This is useful if there’s a delay in booking a loan with the borrower.
Book the BNPL loan
After the borrower accepts the terms of the BNPL loan from the simulation, use the Book loan V2 endpoint to book the loan.
While there are no required fields to book a loan, the API request example includes these fields.
| Field | Description |
|---|---|
loan_product_id | The ID of the simulated loan with the payment schedule. |
account_id | The ID for the account registered on the Pismo platform. |
amount | Amount for loan booking. |
{
"loan_product_id": "2717a296-124a-47cc-b2a1-91e80dc723eb",
"account_id": 103614168,
"amount": 640
}After you book the BNPL loan, the API response shows the loan_id. The loan_id is the identifier for the entire life of the loan. If you need to check or edit any details of the loan, use its loan ID.
{
"loan_id": "73e45fd5-759f-4e04-a88a-7172fa948afa"
}Disburse the loan
After the borrower agrees to book the loan, use the Disburse loan V2 endpoint. The interval between booking and disbursing a loan depends on your lending rules.
This API request example includes these required fields.
| Field | Description |
|---|---|
disbursement_account.account_type | The account type for the disbursement, currently set to INTERNAL. |
disbursement_account.account_id | The account ID to disburse the BNPL loan funds. |
{
"disbursement_date": "2026-05-28",
"disbursed_amount": 1000.00,
"disbursement_account": {
"type": "INTERNAL",
"account_id": 103614168
}
}After you disburse the loan, the API response includes the disbursement_id. This ID is the identifier that confirms the loan disbursement.
{
"loan_id": "5d9d9339-3b5e-4c33-b129-8155e4d4946b",
"disbursement_id": "c1eb9f28-e1c9-4705-b2b5-f986b3bc7455",
"created_at": "2026-05-28T14:19:30.194249",
"updated_at": "2026-05-28T14:21:00.318043",
"product_id": "fb525f7e-4317-45da-84d5-ccb1b0da3f14",
"disbursement_status": "PROCESSING",
"loan_amount": 1000.00,
"disbursed_amount": 1000.00,
"disbursement_account": {
"type": "INTERNAL",
"account_id": 103296044
}
}Now that the loan is disbursed, the loan lifecycle goes to the repayment and settlement phases. Refer to Repayment and settlement for more information.
Updated about 5 hours ago