{"method":"POST","path":"https://api.revcent.com/v2/product_sales/{product_sale_id}/refund","summary":"Refund A Product Sale","description":"Refund a product sale using the product sale ID. If partially refunding, provide the amount property in the request body. If the amount property is not provided, the product sale will be refunded entirely. View markdown documentation at https://revcent.com/documentation/markdown/mcp/operation/RefundProductSale.md for an in-depth overview of this operation.","operationId":"RefundProductSale","parameters":[{"in":"path","name":"product_sale_id","description":"The product sale ID","required":true,"schema":{"type":"string","description":"A 20 character product sale ID.","minLength":20,"maxLength":20}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"amount":{"description":"The amount to refund. If not provided the entire product_sale amount will be refunded.","type":"number","format":"float"},"refunded_offsite":{"description":"You have the option to refund a credit card product_sale within RevCent, without refunding the product_sale at the gateway level. If set to true, RevCent will mark all entities as having a refund, but will not contact the gateway to return the money to the customer. This is useful for reporting within RevCent when a product_sale was refunded outside of RevCent, i.e. Rapid Dispute Resolution, mailed a check, etc. Default is false.","type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"description":"","properties":{"api_call_id":{"type":"string","description":"A 20 character API call ID.","minLength":20,"maxLength":20},"api_call_unix":{"description":"Unix timestamp of when the API call was initiated.","type":"integer","format":"unix-time"},"code":{"description":"API call response code.","type":"integer","format":"int32","enum":[1]},"amount":{"description":"The amount refunded.","type":"number","format":"float"},"campaign_id":{"type":"string","title":"Campaign ID","description":"A 20 character campaign ID.","minLength":20,"maxLength":20},"campaign_name":{"type":"string","description":"The campaign name."},"customer_id":{"type":"string","description":"A 20 character customer ID of the product sales' associated customer.","minLength":20,"maxLength":20},"sale_id":{"type":"string","description":"A 20 character sale ID of the product sales' associated sale, if applicable.","minLength":20,"maxLength":20},"product_sale_id":{"type":"string","description":"A 20 character product sale ID of the product sale being refunded.","minLength":20,"maxLength":20},"pending_refund":{"items":{"type":"string","description":"A 20 character pending refund ID.","minLength":20,"maxLength":20},"type":"array","description":"An array containing the ID's of any pending refunds created as a result of the refund."},"result":{"type":"string"}},"type":"object"}}},"description":"Successful response."},"default":{"content":{"application/json":{"schema":{"description":"","properties":{"api_call_id":{"type":"string","description":"A 20 character API call ID.","minLength":20,"maxLength":20},"api_call_unix":{"description":"Unix timestamp of when the API call was initiated.","type":"integer","format":"unix-time"},"code":{"description":"This value indicates that there is an error. Will always be 0.","type":"integer","enum":[0]},"error_code":{"description":"The specific error code.","type":"string"},"message":{"description":"A human readable description of the error.","type":"string"},"result":{"description":"A description of the API call result.","type":"string"}},"title":"APIStandardErrors","type":"object","additionalProperties":false}}},"description":"Error response."}}}