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.

FieldDescription
collateralShows whether there’s collateral involved on a loan product.
currencyThe currency the loan product uses.
disbursement_methodThe disbursement method the loan product uses ( with a type ofNONE, SINGLE, or COLLATERAL_MULTIPLE).
product_nameDescribes the product in 256 characters or less.
product_typeDefaults to Buy Now, Pay Later or BNPL when using the V2 endpoint.
program_idThe program ID for the loan product.
processing_codesProcessing 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.

FieldDescription
product_idThe ID of a BNPL loan product. This is a required field.
loan_amountThe total amount of the BNPL loan.
start_dateThe starting date of the BNPL loan.
stages.interest_rateInterest rate for the stage of the loan.
stages.periodNumber of time periods in the stage.
disbursement.due_dateThe 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.

FieldDescription
loan_product_idThe ID of the simulated loan with the payment schedule.
account_idThe ID for the account registered on the Pismo platform.
amountAmount 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.

FieldDescription
disbursement_account.account_typeThe account type for the disbursement, currently set to INTERNAL.
disbursement_account.account_idThe 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.