# Declined payment If a transaction is declined by a payment system, Xsolla sends the transaction details in a webhook of the ps_declined type to your configured webhook URL. The webhook is sent during the authorization or payment processing stage. In this case, the payment\ order_paid webhook is not sent. Typical reasons for payment system declines: * Card authorization failed (for example, the payment system could not complete the authorization process due to a technical error or no response from the bank) or was declined (for example, the bank responded but refused the transaction due to insufficient funds or invalid card details). * 3-D Secure verification failed, was not completed, or the user confirmation timed out. * The processor or acquiring bank is temporarily unavailable or returns a hard decline due to an irreversible error, such as a closed account or an invalid card number. Retrying without addressing the underlying issue will not result in a successful transaction. Should not be confused with: * Anti-fraud rejections, which are reported via the afs_reject webhook. * Refunds and partial refunds after a successful payment, which are reported via the refund and partial_refund webhooks. Note To receive the ps_declined webhook, contact your Customer Success Manager or email csm@xsolla.com. Endpoint: POST payment-declined Version: 1.0 ## Request fields (application/json): - `notification_type` (string, required) Notification type. - `settings` (object) Custom project settings (object). - `settings.project_id` (integer) Project ID. You can find this parameter in your [Publisher Account](https://publisher.xsolla.com/) next to the name of the project. - `settings.merchant_id` (integer) Merchant ID. - `user` (object) User details (object). - `user.ip` (string) User IP. - `user.email` (string) User email. - `user.id` (string, required) User ID. - `user.name` (string) Username. - `user.country` (string) User’s country. Two-letter uppercase [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. - `transaction` (object, required) Transaction details (object). - `transaction.id` (integer) Transaction ID. - `transaction.external_id` (string) Transaction external ID. - `transaction.dry_run` (integer) Test transaction. The parameter has the 1 value if it is a test transaction, or is not sent if the transaction is real. - `transaction.payment_method` (integer) Payment method ID. - `refund_details` (object) Refund details (object). - `refund_details.code` (integer) Code ID. - `refund_details.reason` (string) Refund reason. - `refund_details.author` (string) Refund initiator. The field value is passed according to the table: Refund initiator Field value Game (via API). API Publisher Account user (automatic refund). User email Publisher Account user (with assistance from Xsolla customer support). support@xsolla.com Xsolla (with assistance from Xsolla customer support). support@xsolla.com ## Response 400 fields (application/json): - `error` (object) - `error.code` (string) - `error.message` (string) ## Response 204 fields ## Response 500 fields