Build Redirect Payment Page
Finalize Payment Method early
If you choose autoConfirm
= true, The payment will be automatically confirmed after you complete the redirect flow — no additional confirmation step is needed

Create Payment Session
A windowed time for the end customer to complete the payment, starting when the client initiates the payment request through your app. The payment session duration is customizable, with a default duration of 15 minutes.
API Reference: Create Payment Session
POST [BASE_URL]/v2/payments
{
"clientReferenceId": "1751610085",
"amount": {
"value": 10000,
"currency": "IDR"
},
"paymentMethod": {
"type": "VIRTUAL_ACCOUNT"
},
"paymentMethodOptions": {
"virtualAccount": {
"channel": "PERMATA",
"virtualAccountName": "Reforza Pivot",
"virtualAccountNumber": "99996662",
"expiryAt": "2025-12-30T23:59:00Z"
}
},
"mode": "REDIRECT",
"redirectUrl": {
"successReturnUrl": "https://merchant.com/success",
"failureReturnUrl": "https://merchant.com/failure",
"expirationReturnUrl": "https://merchant.com/expiration"
},
"customer": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"refundPreference": {
"method": "AUTO",
"transferDestination": {
"channelCode": "014",
"channelInformation": {
"accountNumber": "17677665415",
"accountName": "Reforza Jordan Geotama"
}
}
}
},
"orderInformation": {
"productDetails": [
{
"type": "PHYSICAL",
"category": "FASHION",
"subCategory": "FASHION WANITA",
"name": "Dress Kasual Warna Putih",
"description": "Ukuran M",
"quantity": 1,
"price": {
"value": 100000,
"currency": "IDR"
}
}
],
"billingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331"
},
"shippingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331",
"method": "REGULAR",
"shippingFee": {
"value": 100000,
"currency": "IDR"
}
}
},
"autoConfirm": true,
"statementDescriptor": "Reforza Pivot",
"expiryAt": "2025-12-30T23:59:00Z",
"metadata": {
"invoiceNo": "INV001"
}
}
Define Payment Method
Set autoConfirm
to true and fill paymentMethod
and paymentMethodOptions
Object to finalize the payment method from the previous step
Object Reference:
{
"paymentMethod": {
"type": "VIRTUAL_ACCOUNT"
},
"paymentMethodOptions": {
"virtualAccount": {
"channel": "PERMATA",
"virtualAccountName": "Reforza Pivot",
"virtualAccountNumber": "99996662",
"expiryAt": "2025-12-30T23:59:00Z"
}
},
"autoConfirm": true
}
Send us your Success, Failure, and Expired Payment Session URL
Handle Success, Failure, and Expired cases on your Payment Session
Object reference: Redirect Object
{
"redirectUrl": {
"successReturnUrl": "https://merchant.com/success",
"failureReturnUrl": "https://merchant.com/failure",
"expirationReturnUrl": "https://merchant.com/expiration"
}
}
Fill Customer and Order information
Include customer and order details by filling the customer
and orderInformation
objects. Personalize the payment experience, enhance fraud detection and reconciliation, and ensure smoother processing of refund requests.
Object Reference:
{
"customer": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"refundPreference": {
"method": "AUTO",
"transferDestination": {
"channelCode": "014",
"channelInformation": {
"accountNumber": "17677665415",
"accountName": "Reforza Jordan Geotama"
}
}
}
},
"orderInformation": {
"productDetails": [
{
"type": "PHYSICAL",
"category": "FASHION",
"subCategory": "FASHION WANITA",
"name": "Dress Kasual Warna Putih",
"description": "Ukuran M",
"quantity": 1,
"price": {
"value": 100000,
"currency": "IDR"
}
}
],
"billingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331"
},
"shippingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331",
"method": "REGULAR",
"shippingFee": {
"value": 100000,
"currency": "IDR"
}
}
}
}
Redirect to Payment Page
After creating the Payment Session, redirect your customer to the URL for the Payment page returned in the response.
{
"paymentUrl": "https://payment.pivot-payment.com/detail?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiN2Y2NWM3NTctMzU1Zi00NjQ1LWFjMTQtMDI4YjM0YWI1MWIxIiwiaXNzIjoiYmFja2VuZC1wb3J0YWwiLCJleHAiOjE3NDM0NjU1NDV9.55-QdvI0xVtivNLJzREPDGzUbqFNEj7ouFUCvrzAIbw"
}
Simulate Payment
Visit the Payment Page and Simulate the Payment
Finalize Payment Method later
If you choose autoConfirm
= false, Payment Method can be submitted later during the confirmation step using the confirm API

Create Payment Session
A windowed time for the end customer to complete the payment, starting when the client initiates the payment request through your app. The payment session duration is customizable, with a default duration of 15 minutes.
API Reference: Create Payment Session
POST [BASE_URL]/v2/payments
{
"clientReferenceId": "1751612565",
"amount": {
"value": 10000,
"currency": "IDR"
},
"mode": "REDIRECT",
"redirectUrl": {
"successReturnUrl": "https://merchant.com/success",
"failureReturnUrl": "https://merchant.com/failure",
"expirationReturnUrl": "https://merchant.com/expiration"
},
"customer": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"refundPreference": {
"method": "AUTO",
"transferDestination": {
"channelCode": "014",
"channelInformation": {
"accountNumber": "17677665415",
"accountName": "Reforza Jordan Geotama"
}
}
}
},
"orderInformation": {
"productDetails": [
{
"type": "PHYSICAL",
"category": "FASHION",
"subCategory": "FASHION WANITA",
"name": "Dress Kasual Warna Putih",
"description": "Ukuran M",
"quantity": 1,
"price": {
"value": 100000,
"currency": "IDR"
}
}
],
"billingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331"
},
"shippingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331",
"method": "REGULAR",
"shippingFee": {
"value": 100000,
"currency": "IDR"
}
}
},
"autoConfirm": false,
"statementDescriptor": "Reforza Pivot",
"expiryAt": "2025-12-30T23:59:00Z",
"metadata": {
"invoiceNo": "INV001"
}
}
Send us your Success, Failure, and Expired Payment Session URL
Handle Success, Failure, and Expired cases on your Payment Session
Object reference: Redirect Object
{
"redirectUrl": {
"successReturnUrl": "https://merchant.com/success",
"failureReturnUrl": "https://merchant.com/failure",
"expirationReturnUrl": "https://merchant.com/expiration"
}
}
Fill Customer and Order information
Include customer and order details by filling the customer
and orderInformation
objects. Personalize the payment experience, enhance fraud detection and reconciliation, and ensure smoother processing of refund requests.
Object Reference:
{
"customer": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"refundPreference": {
"method": "AUTO",
"transferDestination": {
"channelCode": "014",
"channelInformation": {
"accountNumber": "17677665415",
"accountName": "Reforza Jordan Geotama"
}
}
}
},
"orderInformation": {
"productDetails": [
{
"type": "PHYSICAL",
"category": "FASHION",
"subCategory": "FASHION WANITA",
"name": "Dress Kasual Warna Putih",
"description": "Ukuran M",
"quantity": 1,
"price": {
"value": 100000,
"currency": "IDR"
}
}
],
"billingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331"
},
"shippingInfo": {
"givenName": "Reforza Jordan",
"sureName": "Geotama",
"email": "reforza@pivot-payment.com",
"phoneNumber": {
"countryCode": "+62",
"number": "89699990001"
},
"addressLine1": "Biomedical Building Lantai 3",
"addressLine2": "Digital hub, BSD City",
"city": "Tangerang Regency",
"provinceState": "Banten",
"country": "ID",
"postalCode": "15331",
"method": "REGULAR",
"shippingFee": {
"value": 100000,
"currency": "IDR"
}
}
}
}
Confirm Payment Session
If you set autoConfirm
to false on the Create Payment Session API, you can finalize the Payment Method by filling paymentMethod
and paymentMethodOptions
objects
API Reference: Confirm Payment Session
POST [BASE_URL]/v2/payments/{id}/confirm
{
"paymentMethod": {
"type": "VIRTUAL_ACCOUNT"
},
"paymentMethodOptions": {
"virtualAccount": {
"channel": "PERMATA",
"virtualAccountName": "Reforza Pivot",
"virtualAccountNumber": "99996662",
"expiryAt": "2025-12-30T23:59:00Z"
}
}
}
Redirect to Payment Page
After confirming the Payment Session, redirect your customer to the URL for the Payment page returned in the response.
{
"paymentUrl": "https://payment.pivot-payment.com/detail?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiN2Y2NWM3NTctMzU1Zi00NjQ1LWFjMTQtMDI4YjM0YWI1MWIxIiwiaXNzIjoiYmFja2VuZC1wb3J0YWwiLCJleHAiOjE3NDM0NjU1NDV9.55-QdvI0xVtivNLJzREPDGzUbqFNEj7ouFUCvrzAIbw"
}
Simulate Payment
Visit the Payment Page and Simulate the Payment
Last updated