Handling API Callback in Your System
To ensure your workflow automation is complete, you need to handle several callbacks. You will need to accept the callback http request and returns response with HTTP Status 200 to give acknowledge that you have received the callback.
Payment Callback
Payment In and Payment Out Callbacks use the same payload. They only differ in their URL registration handlers, which helps you differentiate them if needed.
{
"additional_info": {},
"message": "transaction succeed",
"payment_date": "2025-06-18",
"payment_info": {
"bank_transfer": {
"amount": 12557,
"created": "2025-06-18T04:38:54.415786634+07:00",
"paid_amount": 12557,
"paid_at": "2025-06-18T04:39:43.594065797+07:00",
"status": "PAID",
"updated": "2025-06-18T04:39:43.594065797+07:00"
},
"channel": "bca_manual",
"method": "bank_transfer",
"source": "open-api",
"status": "PAID"
},
"ref_id": "PAY-REF/2025/06/IN/123"
}
{
"additional_info": {},
"message": "transaction succeed",
"payment_date": "2025-06-18",
"payment_info": {
"channel": "qris",
"event": "qr.payment",
"method": "qris",
"qris": {
"amount": 10000,
"created": "2025-06-18T05:16:51.708008011+07:00",
"paid_amount": 10000,
"paid_at": "2025-06-18T05:16:59.511610249+07:00",
"status": "PAID",
"updated": "2025-06-18T05:16:59.511610249+07:00"
},
"source": "open-api",
"status": "PAID"
},
"ref_id": "PAY-REF/2025/06/IN/124"
}
{
"additional_info": {},
"message": "transaction succeed",
"payment_date": "2025-06-18",
"payment_info": {
"channel": "Visa",
"credit_card": {
"amount": 10000,
"created": "2025-06-18T05:18:49.797030079+07:00",
"paid_amount": 10000,
"paid_at": "2025-06-18T05:19:01.192687186+07:00",
"status": "PAID",
"updated": "2025-06-18T05:19:01.192687186+07:00"
},
"method": "credit_card",
"source": "open-api",
"status": "PAID"
},
"ref_id": "PAY-REF/2025/06/IN/125"
}
{
"additional_info": {},
"message": "transaction succeed",
"payment_date": "2025-06-18",
"payment_info": {
"channel": "blibli",
"method": "mitra_pembayaran_digital",
"mitra_pembayaran_digital": {
"amount": 10000,
"created": "2025-06-18T05:21:14.36293672+07:00",
"paid_amount": 10000,
"paid_at": "2025-06-18T05:21:21.741879097+07:00",
"status": "PAID",
"updated": "2025-06-18T05:21:21.741879097+07:00"
},
"source": "open-api",
"status": "PAID"
},
"ref_id": "PAY-REF/2025/06/IN/126"
}
{
"additional_info": {},
"message": "transaction succeed",
"payment_date": "2025-06-18",
"payment_info": {
"channel": "ewallet",
"ewallet": {
"amount": 10000,
"created": "2025-06-18T05:21:14.36293672+07:00",
"paid_amount": 10000,
"paid_at": "2025-06-18T05:21:21.741879097+07:00",
"status": "PAID",
"updated": "2025-06-18T05:21:21.741879097+07:00"
},
"method": "OVO",
"source": "open-api",
"status": "PAID",
},
"ref_id": "PAY-REF/2025/06/IN/127"
}
Payment Callback Schema
Path | Data Type Validation | Description |
---|---|---|
additional_info | Object | Additional information related to the payment data, in key value pairs format |
message | String | Human readable callback message from Paper.id |
payment_date | string | Date when payment is being made. in YYYY-MM-DD format |
payment_info | object | Details of payment information |
payment_info.channel | string | The payment channel used |
payment_info.method | string | The payment method used |
payment_info.message | string | Message response related to the payment data |
payment_info.[payment_method] | object | Details of selected payment method for the specified payment id |
payment_info.[payment_method].amount | number | Billed amount |
payment_info.[payment_method].created | string | Payment created time |
payment_info.[payment_method].paid_amount | number | Paid amount |
payment_info.[payment_method].paid_at | string | Payment transaction time |
payment_info.[payment_method].status | string | Payment status |
payment_info.[payment_method].updated | string | Payment last updated time |
ref_id | string | Payment Reference Id from client |
Invoice Callback
The Invoice callback is ONLY triggered when the invoice status changes to PAID
.
{
"message": "Invoice has been paid",
"data": {
"invoice": {
"id": "afef0ea1-caa6-4123-9735-749df749642c",
"number": "INV/2025/06/126",
"partner_id": "2d0e80ca-9a46-4e35-a951-a61987fb7c98",
"status": "paid",
"amount_due": 10000,
"total_amount": 10000,
"updated_at": "2025-06-18 05:21:16.529804427 +0700 WIB"
}
}
}
Path | Data Type Validation | Description |
---|---|---|
message | string | Human readable callback message from Paper.id |
data | object | Data object contains invoice data |
data.invoice | object | Invoice object |
data.invoice.id | string | Invoice unique ID |
data.invoice.number | string | Invoice number |
data.invoice.partner_id | string | Partner Id which related with the invoice |
data.invoice.status | string | Invoice payment status |
data.invoice.amount_due | number | Invoice due amount |
data.invoice.total_amount | number | Invoice total amount |
data.invoice.updated_at | string | Invoice last updated time |