Fill in the form to arrange a demo

Order Information

Paddle provides an API and methods within Paddle.js in order to pull transaction data upon checkout completion.

Post-Checkout Order Information

In many cases you may wish to display to the customer’s order/license/transaction information, on your ‘Success’ or ‘Thank You’ page after a checkout completes.

Paddle provides an API, and methods within Paddle.js in order to pull the transaction data upon completed checkout.

An example of the order/license/transaction information returned from the Order API can be seen below:

{
    "state": "processed",
    "checkout": {
        "checkout_id": "3219233-chre53d41f940e0-58aqh94971",
        "image_url": "https://paddle.s3.amazonaws.com/user/91/XWsPdfmISG6W5fgX5t5C_icon.png",
        "title": "My Product"
    },
    "order": {
        "order_id": 826289,
        "total": "9.99",
        "currency": "GBP",
        "formatted_total": "£9.99",
        "completed": {
            "date": "2016-08-01 21:24:35.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "receipt_url": "https://my.paddle.com/receipt/826289/3219233-chre53d41f940e0-58aqh94971",
        "has_locker": true,
        "customer": {
            "email": "christian@paddle.com",
            "marketing_consent": true
        },
        "is_subscription": false,
        "access_management: {
            software_key: [ ]
            }
    },
    "lockers": [
        {
            "locker_id": 1127139,
            "product_id":514032,
            "product_name":"My Product Name",
            "download": "https://mysite.com/download/my-app",
            "license_code": "ABC-123",
            "instructions": "Simply enter your license code and click 'Activate'."
        }
    ]
}

Polling for Data

As Paddle’s order processing is decentralised, order processing may take a few seconds after the transaction to complete. This means that when the customer lands on your Success/Thank You page, the order may not yet be fully processed.

Data can be requested from the Order API in two ways, via the Order API itself, or using Paddle.js. If Paddle.js is used, the polling logic for orders that are not fully processed will be done automatically.

If you plan on calling the Order API itself manually (without using Paddle.js), you’ll need to periodically poll this. When the order processing is complete, the state parameter from the Order API will change to processed.

Retrieving the Checkout ID

The only required parameter for using the Order API (whether through Paddle.js or not) is the checkout_id (which accepts the full checkout hash, e.g. 3413183-chre03c47d940e0-58acf92974).

For testing purposes, this can be found by opening the checkout and copying it from the URL.

In production, there are three ways to automatically retrieve the checkout hash:

  1. Listening to checkout success callback, the object property eventData.checkout.id will contain the full checkout hash which can be used for this API. (Please see Checkout Callbacks documentation for more information.)
  2. For non-subscription products, go to the Paddle Dashboard, click ‘Edit’ on a product, under the “Set where users should go after checkout” section, you can include the {checkout_hash} variable within your redirect URL, which you can then pass into the API, e.g. http://mysite.com/thanks?checkout={checkout_hash}
  3. For direct checkout links, use the custom checkout API, and include the {checkout_hash} variable within the return_url field, which you can then pass into the API. Please see Custom Checkout documentation for more information.

Calling the API

Via Paddle.js

Paddle.js will automatically handle the polling via the Order API for you. You can manually query the order details for a specific checkout at any time via Paddle.js (once the checkout is completed) using the code below:

Paddle.Order.details('3419983-chre50c47d940e0-58acf92974', function(data) {
	// Order data, downloads, receipts etc... available within 'data' variable.
  console.log(data);
});

Via Paddle.js with Checkout Success Callback

The easiest way to use the Order API is to automatically call this within the checkout success callback (See Checkout Callbacks documentation for more information). This allows you to create a process whereby the customer’s order/license/transaction information is immediately available to the customer once the checkout has completed.

For example, you can listen for a successful checkout using the checkout success callback, retrieve the checkout ID from this and pass it into the Order API:

Paddle.Checkout.open({
  product: 1234567,
  successCallback: function(data) {
    var checkoutId = data.checkout.id;
    
    Paddle.Order.details(checkoutId, function(data) {
      // Order data, downloads, receipts etc... available within 'data' variable.
      console.log(data);
    });
  }
});

Via Order API Directly

You can also manually call the Order API directly:

  • Endpoint: https://checkout.paddle.com/api/1.0/order
  • Parameters:
    • checkout_id (The full checkout hash value, eg: 3419123-dfet50c47q910d0-58acf92974) - Required.
    • callback (Callback function for JSONP support) – Optional.

Example

curl -X GET https://checkout.paddle.com/api/1.0/order?checkout_id=123456-abc7def-gh89jk

Next Steps

If you haven't already, check out our 'Callbacks' and how you can combine them with the Order Information API to build an incredible post-checkout UX.
Checkout Callbacks
By hooking into Paddle checkout callbacks, you can take actions based on a buyer's interaction with your checkout, whether it's a successful completion, an abandonment or another custom event, such as adding a coupon. Using callbacks can help you to integrate conversion tracking into an external platform, or better customize your buyer's experience.

Questions about Paddle?

If you need any help regarding your Paddle integration, please get in touch with our Customer Success team using the form below.

Questions about Paddle?