# 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](https://developers.pismo.io/pismo-docs/docs/digital-lending-overview#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](https://developers.pismo.io/pismo-docs/reference/createloanproductv2) 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 of`NONE`, `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. | ```json { "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. ```json { "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)](https://developers.pismo.io/pismo-docs/reference/getloanproductv2). To [offer](https://developers.pismo.io/pismo-docs/docs/digital-lending-overview#simulate-the-loan) a BNPL loan, use the [Simulate loan booking](https://developers.pismo.io/pismo-docs/reference/createsimulation) 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. | ```json { "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. ```json { "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](https://developers.pismo.io/pismo-docs/reference/getloansimulation) 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](https://developers.pismo.io/pismo-docs/reference/bookloanv2) 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. | ```json { "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. ```json { "loan_id": "73e45fd5-759f-4e04-a88a-7172fa948afa" } ``` ### Disburse the loan After the borrower agrees to book the loan, use the [Disburse loan V2](https://developers.pismo.io/pismo-docs/reference/disburseloanv2) 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. | ```json { "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. ```json { "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](https://developers.pismo.io/pismo-docs/docs/repayment-and-settlement) for more information.