Instant Payment Notification
A notification is sent to merchant’s server when the payment status is updated. The target URL the notification is sent to is configured in the merchant portal, and it can be overwritten when calling Submit Payment Information API. IPN must be responded with an “OK” message from the target URL; A fallback mechanism will send the notification every 5 minutes until the target URL responds with “OK”.
Method: POST
Request
Format: POST-JSON
Remark |
Sample |
Status of the request. Can be either 200 or 3001. Refer to appendix for status code meaning. |
200 |
Remark |
Sample |
Error message, if any |
- |
Remark |
Sample |
Pipwave-assigned merchant’s API key |
123456 |
- notification_id : string (32)
Remark |
Sample |
The unique notification ID |
123456 |
- notification_date : timestamp
Remark |
Sample |
When the notification was sent |
1451606395 |
Remark |
Sample |
The type of this transaction - payment, refund or chargeback |
payment |
Remark |
Sample |
Pipwave reference transaction ID |
123456 |
Remark |
Sample |
Merchant’s transaction ID |
- |
Remark |
Sample |
Payment gateway's reference transaction ID |
- |
Remark |
Sample |
The payment checkout amount |
123 |
- tax_exempted_amount : decimal (11, 2)
Remark |
Sample |
The tax-exempted amount from the payment checkout amount |
0 |
- processing_fee_amount : decimal (11, 2)
Remark |
Sample |
The processing fee amount |
1.2 |
- shipping_amount : decimal (11, 2)
Remark |
Sample |
The shipping fee amount |
- |
- handling_amount : decimal (11, 2)
Remark |
Sample |
The handling fee amount |
- |
- tax_amount : decimal (11, 2)
Remark |
Sample |
The tax amount |
2.4 |
- total_amount : decimal (11, 2)
Remark |
Sample |
The total amount for the payment |
126.6 |
- final_amount : decimal (11, 2)
Remark |
Sample |
Final amount for this transaction (after potential chargeback / refund / adjustments) |
126.6 |
- currency_code : string (3)
Remark |
Sample |
The payment currency. Follow ISO 4217 standard. |
MYR |
- transaction_status : string (5)
Remark |
Sample |
Status of the payment as stored by pipwave. Refer to appendix for list of possible values. |
- |
Remark |
Sample |
The type of this transaction - payment, refund or chargeback |
- |
- reverse_pw_id : string (32)
Remark |
Sample |
The pipwave reverse ID, if the type is refund or chargeback |
- |
- reverse_txn_id : string (255)
Remark |
Sample |
The reverse ID given by PG, if type is refund or chargeback |
- |
- reverse_status : string (5)
Remark |
Sample |
Status of the reverse transaction |
- |
- subscription_token : string (32)
Remark |
Sample |
If payment is subscription type, this data is pipwave’s subscription payment token |
123456 |
Remark |
Sample |
Charging index, only subscription payments will include this data, 1 indicates initial payment, subsequent number indicates subsequent charges, in sequence |
1 |
- payment_method_code : string (32)
Remark |
Sample |
The payment method code that buyer selected. Refer to appendix for list of possible values. |
123456 |
- payment_method_title : string (255)
Remark |
Sample |
The title of the payment method. |
Paypal |
- reversible_payment : boolean
Remark |
Sample |
Is the payment method reversible? |
- |
- settlement_account : string (255)
Remark |
Sample |
The identifier of the settlement account that processed the payment. |
Default |
- require_capture : boolean
Remark |
Sample |
Does this transaction require capture? |
- |
Remark |
Sample |
Billing info as acquired by pipwave |
- |
- shipping_info : key-value
Remark |
Sample |
Shipping info as acquired by pipwave |
- |
- tax_info.tax_name : string (255)
Remark |
Sample |
The name of the tax |
GST |
- tax_info.tax_country : string (2)
Remark |
Sample |
The country detected by pipwave to apply tax |
MY |
- tax_info.tax_base_rate : float
Remark |
Sample |
The base rate of the tax configured by Merchant |
6 |
- tax_info.tax_local_rate : float
Remark |
Sample |
Tax rate override by region or city, if applicable |
null |
- tax_info.tax_rate : float
Remark |
Sample |
Final tax rate to apply |
6 |
Remark |
Sample |
Array of items sent in initiate-payment, with tax information |
- |
- tax_info.items.x.item_tax : decimal (11, 2)
Remark |
Sample |
Tax imposed onto this line of item |
0.06 |
- tax_info.items.x.item_tax_rate : float
Remark |
Sample |
The tax rate applied to this line of item, after overrides where applicable |
6 |
- tax_info.items.x.taxable_amount : decimal (11, 2)
Remark |
Sample |
Taxable amount based on the total against item total |
1 |
- tax_info.processing_fee_tax_rate : float
Remark |
Sample |
The tax rate applied to the processing fee |
6 |
- tax_info.processing_fee_tax : decimal (11, 2)
Remark |
Sample |
Tax imposed onto the processing fee |
- |
- tax_info.shipping_amount_tax_rate : float
Remark |
Sample |
The tax rate applied to the shipping amount |
- |
- tax_info.shipping_amount_tax : decimal (11, 2)
Remark |
Sample |
Tax imposed onto the shipping amount |
- |
- tax_info.handling_amount_tax_rate : float
Remark |
Sample |
The tax rate applied to the handling amount |
- |
- tax_info.handling_amount_tax : decimal (11, 2)
Remark |
Sample |
Tax imposed onto the handling amount |
- |
- tax_info.amount_tax : decimal (11, 2)
Remark |
Sample |
Tax imposed onto the order amount |
- |
- tax_info.total_tax : decimal (11, 2)
Remark |
Sample |
Total tax imposed onto the checkout total |
- |
- reversible_payment : boolean
Remark |
Sample |
Is the payment method reversible? |
- |
- require_capture : boolean
Remark |
Sample |
Does this transaction require capture? |
- |
- mobile_number : string (32)
Remark |
Sample |
Buyer’s mobile number as verified |
123456789 |
- mobile_number_country_iso2 : string (2)
Remark |
Sample |
Buyer's mobile number country iso2 |
MY |
- mobile_number_country_code : string (8)
Remark |
Sample |
Buyer's mobile number country dialing code |
60 |
- mobile_number_verification : string (32)
Remark |
Sample |
Did the verification succeed? One of "verified", "verified previously", "unverified", or "skipped" |
- |
Remark |
Sample |
Status of the payment as reported by PG. Refer to appendix for list of possible values. |
0 |
Remark |
Sample |
The reason why the PG status is not successful |
- |
Remark |
Sample |
When the payment was effected |
1451606400 |
Remark |
Sample |
JSON of original PG response |
[] |
- pipwave_score : integer (3)
Remark |
Sample |
The fraud risk rating for this transaction as processed by pipwave |
- |
- rules_action : string (16)
Remark |
Sample |
The suggested action to undertake for this transaction, can be one of “approve”, “decline” or “review” |
approve |
- rules_action_reason : string (255)
Remark |
Sample |
The reason of above rules_action, especially for RulesDisabled case. |
- |
- risk_management_data : key-value
Remark |
Sample |
The extra risk data |
- |
Remark |
Sample |
The array of all rules was that matched |
- |
- extra_param1 : string (255)
Remark |
Sample |
Extra IPN parameter that was configured when Submit Payment Information API is being called |
123456 |
- extra_param2 : string (255)
Remark |
Sample |
Extra IPN parameter that was configured when Submit Payment Information API is being called |
abcdef |
- extra_param3 : string (255)
Remark |
Sample |
Extra IPN parameter that was configured when Submit Payment Information API is being called |
- |
Remark |
Sample |
A list of urls to the files uploaded for offline payments. All images are signed for 1 hour only, for integrated system to download and store the image. |
- |
- upload_remark : string (255)
Remark |
Sample |
The payer's remark on the uploaded files. |
- |
- payment_data.wallet : key-value
Remark |
Sample |
Buyer's payment wallet details will be available if buyer uses wallet to pay |
- |
- payment_data.wallet.wallet_id : string(255)
Remark |
Sample |
Payment wallet ID |
- |
- payment_data.wallet.wallet_email : string(255)
Remark |
Sample |
Payment wallet email |
- |
- payment_data.credit_card : key-value
Remark |
Sample |
Buyer's payment credit card details will be available if buyer uses credit card to pay |
- |
- payment_data.credit_card.formatted_pan : string(255)
Remark |
Sample |
Credit card first 6 and last 4 |
- |
- payment_data.credit_card.cvv : string(255)
Remark |
Sample |
Credit card CVV matching result code, refer to appendix for possible values |
- |
- payment_data.credit_card.avc : string(255)
Remark |
Sample |
Credit card AVS matching result code, refer to appendix for possible values |
- |
- payment_data.credit_card.threeds : string(255)
Remark |
Sample |
Credit card Three-D Secure result code, refer to appendix for possible values |
- |
- payment_data.credit_card.issuer_country : string(2)
Remark |
Sample |
Credit card issuer country in ISO Code 2 |
- |
- payment_data.credit_card.issuer_bank : string(255)
Remark |
Sample |
Credit card issuer bank |
- |
- payment_data.credit_card.card_type : string(255)
Remark |
Sample |
Credit card type |
- |
- payment_data.credit_card.card_brand : string(255)
Remark |
Sample |
Credit card brand |
- |
- payment_data.credit_card.card_level : string(255)
Remark |
Sample |
Credit card level |
- |
- payment_data.credit_card.card_holder_name : string(255)
Remark |
Sample |
Credit card holder's name |
- |
- payment_data.credit_card.card_expiry_month : string(2)
Remark |
Sample |
Credit card expiry month |
- |
- payment_data.credit_card.card_expiry_year : string(4)
Remark |
Sample |
Credit card expiry year |
- |
Signature
The data involved in generating the signature for this API are:
- timestamp
- api_key
- pw_id
- txn_id
- amount
- currency_code
- transaction_status
- api_secret