Plum Pro API FAQs

How do we Validate the auth token and automate its life-cycle?

To maintain a valid auth token, automate its life-cycle. This information will help you to do that.

  1. Token received after STEP 3 is valid for 15 days, during this period you can do Additional STEP 1: Access Token generation from Refresh Token. It will give you a new valid token for the next 15 days.

  2. To check how much time your token has before it dies, Use Additional STEP 2: Access Token Validation.

  3. If you miss refreshing your token within 15 days and it expires, you can still do Additional STEP 1: Access Token generation from Refresh Token in the next 15 days.

The only time you need to do STEP 2 - Authorization Request + STEP 3 - Token Exchange again is when you failed to regenerate the access token and lose your refresh token.

We would suggest for this super rare situation, you can automate the process by creating a single-page app. Which takes care of STEP 2 - Authorization Request + STEP 3 - Token Exchange and stores the access token and refresh token somewhere, where it can be used for APIs. This is not required but recommended.

What is Redirect_uri and why it is needed?

The redirect_uri is an address used by OAuth providers as a location to deliver the temporary token which then can be used in Step 3(Token Exchange) to get the access token in response

We need the redirect_uri to make sure that we are redirecting back to a legit URL. {Reference}

Do you store a prepaid digital stock of NON - API Vendors?

Yes, we do store a prepaid digital stock of NON - API Vendors, based on basic customer projections and our past experience. In case some of these are exhausted it takes 3/4 working days to refill. If it's a popular brand we store it from 50-100 prepaid stocks and if it's an average brand we store around 5-10 prepaid stocks.

Do you have an API that enables us to check your real-time prepaid stock?

No, We don’t have such an API.

What happens if you run out of prepaid stock and how is this handled? and How long does it take to resupply?

Please go through the below use cases defined:

Case 1 - When a request is sent and Xoxoday fulfills the request immediately, In this case, the response we give is "Success=1, Link + Code/pin for the request"

Case 2 - When a request is sent and if Xoxoday could not fulfill the request immediately, we put the order into Pending, In this case, the response we give is "Success=1, Link in the request" (there will be no Code/pin)

Case 3 - When a request is sent and if Xoxoday did not fulfill/not able to fulfill the order, In this case, the response we give is "Success = 0" (there will no Link or Code/pin in response)

We run a code for every half an hour to check the supply, at a max level it can take up to 7 days.

Does your new API have a unique error message for out of stock orders?

Yes - PLE10024: "Vouchers are out of stock".

Can we use the same PO Number again?

For the canceled order, you can send the same PO Number again. But once an order is successful, the same poNumber will generate an error.

What are the different values expected in orderStatus and type?

If you receive a response, orderStatus will always be "completed" while the deliveryStatus could be either "Canceled", "Pending" or "Delivered".

How do we handle the use case of a missed response?

You can always send the poNumber through the getOrderDetails API which should get you the same order's response in the exact same format as the placeOrder API.

What are the distinct voucher types?

The distinct voucher types will be code, codePin, and URL.

Sample code and pin values for different voucher types:

type: "code" => code: "CODE-123", pin: ""

type: "codePin" => code: "CODE-123", pin: "PIN-123"

type: "url" => code: "url", pin: "" (Here, the pin could either exist or be blank. Usually the URL is sufficient for redemption purposes. But, we would suggest you store the pin as well.)

How is the redirect_uri handled in staging and production?

In staging, the redirect_uri is relaxed which means you can use any uri in the URL as well as the API as long as they are the same (url encoded in the url). In production, there can be multiple ur specific uri that will work for the redirection part since the redirect_url there will not be relaxed.

How do I recharge my account on staging?

You will have to do the recharge yourself as we have the facility for clients to recharge their accounts themselves.

Please follow the following steps:

1. Go to

2. Login with the admin email and password that you use to log in for the OAuth part.

3. You will be redirected to

4. On the left side, there will be a Recharge option. Click on it.

5. You should see a card with the title "Plum Pro Funds" and a button that says "Add funds". Click on "Add Funds".

6. Enter the amount and click on "Proceed to Payment"

7. Enter your phone number.

8. Choose to pay by card and use the following details:

Card Number: 5123456789012346

Name: test

CVV: 123

expiry: 05/2021.

9. You will be redirected to a page with the title AXIS SIMULATOR asking for an OTP. Please enter the OTP as 123456 and hit the submit button.

This should add the entered amount to your balance and you will be ready to place orders.

Will there be any notification if any gift cards are removed or are unavailable?

You can use voucherList API to check the latest status of a voucher. We don't send any notifications.

Will the API support multi admin?

API support multi admin feature is currently unavailable and in the works. We expect to go live with it soon.

How are you applying exchange rates to the gift cards? I noticed there's an exchange rate rule in the API. Is this applied at the point of sending the gift card, or when it is claimed? Or is that something we can control on our side?

Yes, there is an exchange rate applicable for every purchase, Xoxoday has its own exchange rate, which we used to update once in a quarter, this exchange rate is used at the time of order placing. In the order response, we send back the applied exchange rate for that order.

What happens if the gift card is temporarily not available or becomes canceled? Is there some type of notification to us?

Currently, we don't have a notification system, but we are in process of building a notification engine that will proactively notify about such outages. This feature will go live by June end. In the meantime, we recommend syncing with our catalog every 24-48 hrs (through GET VOUCHER API), which will give you the right available products.