# Preference Endpoints (api/Preference) ### **General Definitions**
**Parameter****Description**
baseurlSandbox - [https://test.xprizo.com/api](https://test.xprizo.com/api) Live- [https://wallet.xprizo.com/api](https://wallet.xprizo.com/api)
apiversion1.0
apikeyAPI key For authentication
### **Update Approval Webhook**

**Approval Webhook is triggered when a new pending transaction is created or when this pending transaction is approved, canceled, or rejected.**

**Request**

```bash curl --location --request PUT '{baseurl}/Preference/SetApprovalWebhook?url={url}' \ --header 'Accept: text/plain; x-api-version=1.0' \ --header 'x-api-version: {apiversion}' \ --header 'x-api-key: {apikey}' ```
**Parameter****Description**
urlUrl to receive callbacks

**Response (200)**

**Your callback URL must respond with JSON object {'status': 'success' } and HTTP code 200 to Xprizo.**

### **Test Approval Webhook**

**You can test your callback URL's response by using this endpoint**

**Request**

```bash curl --location --request GET '{baseurl}/Preference/TestApprovalWebhook' \ --header 'Accept: text/plain; x-api-version=1.0' \ --header 'x-api-version: {apiversion}' \ --header 'x-api-key: {apikey}' ```

**Response (200)**

**Your callback URL must respond with JSON object {'status': 'success' } and HTTP code 200 to Xprizo.**

### ### **Approval Webhook Responses**

**Created Transaction & Approved Transaction Response on Webhook (Sample)**

```bash # Created Transaction { "statusType": 1, "status": "New", "description": null, "actionedById": 724, "affectedContactIds": [ 723, 2 ], "transaction": { "id": 0, "createdById": 724, "type": "UCD", "date": "2024-02-07T03:41:59.823195+00:00", "reference": "652-1706532591283", "currencyCode": "USD", "amount": 5 } } # Approved Transaction { "statusType": 2, "status": "Accepted", "description": null, "affectedContactIds": [ 723, 2 ], "transaction": { "id": 3169, "createdById": 724, "type": "UCD", "date": "2024-02-07T03:43:50.9186754+00:00", "reference": "652-1706532591283", "currencyCode": "USD", "amount": 5 } } ```
**Parameter****Description**
statusTypeThis is the status 2 = Accepted
statusText version of the status "Accepted"
affectedContactIdsA list of the contact IDs that were involved in this transaction
Transaction Transaction that was created
idThe unique Id of the transaction provided by Xprizo
createdByIdId of the person who creates the transaction
typeThe type of transaction (UCD = Card Deposit)
dateThe date of the transaction
referenceRecipient's unique transaction identifier for this transaction
currencyCodeThe currency of this transaction
amountThe amount of this transaction

Rejected Transaction Response on Webhook (Sample)

```bash { "statusType":3, "status":"Rejected", "description":"Reason for rejection", "actionedById":1, "affectedContactIds":[] "transaction": { "id":0, "createdById":2, "type":"UCD", "date":"2021-04-20T20:34:00.7606173+02:00", "reference":234234234, "currencyCode":"USD", "amount":100.00 } } ```

The following is a list of approval status codes that could be returned

- 0 = None - Used for testing - 1 = New - A new pending transaction has been created - 2 = Approved- The transaction was approved and processed - 3 = Rejected - The transaction was rejected by the acquirer - 4 = Cancelled - The transaction was canceled by the creator ### **Update Payment Webhook**

**Payment Webhook is triggered when a payment transaction with an action set to 2 (callback) is created. Callbacks are only sent to the profile that created the transaction. Callbacks will keep sending requests to the platform for 24 hours or until it gets a response. If a 200 (success) response is received then the transaction will be processed. If any other response (except a timeout) is received then the transaction will be voided.**

**Request**

```bash curl --location --request PUT '{baseurl}/Preference/SetPaymentWebhook?url={url}' \ --header 'Accept: text/plain; x-api-version=1.0' \ --header 'x-api-version: {apiversion}' \ --header 'x-api-key: {apikey}' ```
**Parameter****Description**
urlUrl to receive callbacks

**Response (200)**

### ### **Payment Webhook Responses**

**This will triggered when the send payment is initiated in Callback mode, Based on the response of this webhook by the Recipient, Xprizo will approve or void the transaction.**

```bash { "id": 3291, "currencyCode": "INR", "amount": 10, "reference": "652-1706532591321", "status": "Success" } ```
**Parameter****Description**
statusStatus of transaction
idThe unique ID of the transaction provided by Xprizo
referenceRecipient's unique transaction identifier for this transaction
currencyCodeThe currency of this transaction
amountThe amount of this transaction

**Recipient will use this response and check for transactions having the same reference in their system and if everything is fine then they will respond with HTTP status code 200 else they will provide another HTTP status code (excluding timeout).**

**If the Status code is 200 then this transaction will be marked as Completed in the Xprizo system else it will be VOID (excluding timeout).**