# Integrating with your e-services

{% hint style="info" %}
**Expected inputs and sample responses for each endpoint can be found** [**here**](https://api-staging.pay.gov.sg/external/api)**.**&#x20;
{% endhint %}

{% hint style="info" %}
Integration FAQs can be found [here](https://guide.pay.gov.sg/faq/api-integration).
{% endhint %}

## Integrated payment flow&#x20;

<figure><img src="https://3185298559-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuqMHPbRxvRp3K0CMQMjE%2Fuploads%2FWwEiO30rvIPEq7SgjoBH%2Ffinal%20integrated%20payment%20flow%20(apr%202024).png?alt=media&#x26;token=2a08df5d-127d-4669-a2fe-5893dd69aef3" alt=""><figcaption><p>Sample integrated payment flow</p></figcaption></figure>

The following describes the overall flow of how a successful payment integration would work when a payer enters your e-service to make a payment.

#### Creating a payment

1. The payer accesses your e-service.
2. Your e-service initiates a payment on PaySG through a POST API call to the relevant endpoint to create a new payment. If necessary, your team can include a `return_url` which will be used to redirect users after successful payment. Please note that the `return_url` must be a valid HTTPS URL, otherwise, the payment creation will be blocked by PaySG.
3. The PaySG server returns a payment object to your e-service.
4. Your e-service then needs to redirect the payer to the `payment_url`, found in the payment object, which leads to PaySG's payment page.
5. The payer completes the payment on the PaySG payment page. Payment links **will remain valid** until cancelled on the dashboard/via API or when payment succeeds.

#### (Optional) Redirecting payers back after successful payment

1. Upon successful payment, the PaySG payment page redirects the payer back to the `return_url` provided by your team. Please note that the `return_url` must be a valid HTTPS URL, otherwise, the payment creation will be blocked by PaySG.
2. Your e-service receives the `paysg_payment_id` and `paysg_payment_service_id` and makes a GET API call to PaySG to verify the payment status. [Webhooks](https://guide.pay.gov.sg/webhooks) are also available.
3. The PaySG server responds by returning the payment status.
4. If the payment status is confirmed as paid, your e-service marks the payment as paid and allows the payer to continue with their e-service flow.

#### Checking Payment Status

* Send a GET request using the `id` and `payment_service_id.` &#x20;
* Alternatively, set up a [webhook](https://guide.pay.gov.sg/webhooks) to receive updates of successful payments.
