> For the complete documentation index, see [llms.txt](https://developers.frontstream.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.frontstream.com/welcome-to-our-payment-api/api-references/set-up-and-receive-notifications.md).

# Set up and receive Notifications

**Payment API - Notifications - API specifications -**&#x20;

**Step 1.** Configure your Notifications URL by configuring your Notification Configuration using our Payment API PUT `/api/notificationConfig`  .

**Key Details:**

* **API Version:** v1
* **Endpoint:** [`/api/notificationConfig`](/welcome-to-our-payment-api/api-references/test-payment-api-features/each-api-reference-specifics/notifications.md#put-api-notificationconfig)
* **Method:** PUT
* **Purpose:** To configure an Integration Sources Notification URL to accept our FrontStream transaction notification status payloads as transactions are updated or newly processed for example recurring contracts .

**Responses:**

* **200 (Success)**: Returns saved notification config.
* **400 (Bad Request):** Throws exception if the notification config was not saved.

#### Example PUT request

```
PUT /api/notificationConfig
{
  "NotificationConfigs": [
    {
      "NotificationConfigurationTypeId": "1", // This should always be equal to "1"
      "NotificationProtocolTypeId": "1", // Use only "1" (WEB) for now. "2" (Email) not yet supported
      "NotificationUrl": "string", // Url to post our notification to. Example: https://{yourenvironment.yourdomain}.com/api/yourNotification endpoint
      "Retries": 0, // number of retries to try again failed notifications - currently retries 10 times by default or set to 0
      "AccessToken": "string", // optional - if access token needed to hit your notification url
      "IsDeleted": false // set to true if you wish to soft-delete configuration, otherwise set to false
    }
  ]
}
```

**Step 2.** Test your Notifications URL can retrieve a transactions notification payload by using our Payment API POST `/api/notificationTest`  .

**Key Details:**

* **API Version:** v1
* **Endpoint:** [`/api/notificationTest`](/welcome-to-our-payment-api/api-references/test-payment-api-features/each-api-reference-specifics/notifications.md#post-api-notificationtest)
* **Method:** POST
* **Purpose:** To test a configured Integration Sources Notification URL can accept our FrontStream transaction notification status payloads as transactions are updated or newly processed for example recurring contracts .
* **Parameters:**
  * **Url:** Integration Source endpoint to post notification payload to. Example: https\://{yourenvironment.yourdomain}.com/api/yourNotification endpoint..
  * **Payload:** test payload posting over to Url
  * **AccessToken:** optional if access token is required to hit notification url.

**Responses:**

* **200 (Success)**:&#x20;
* **400 (Bad Request):** Throws exception if unable to send notification.

#### Example POST notificationTest request

```
POST /api/notificationTest
{
  ?Url = "", // your URL to post notification to.
  &AccessToken=testToken // optional if required to hit notification URL.
  &Payload = {
  "PaymentId": 55514,
  "PaymentGuid": "4f2835cb-1afe-482b-aea6-bf6ea7061828",
  "PaymentDate": "2026-01-20T15:20:07.948",
  "PaymentExternalId": "19498411",
  "OriginalExternalID": "19498411",
  "RecurringProfileId": null,
  "RecurringProfileGuid": null,
  "NextBillDate": null,
  "ProcessStatus": 2,
  "ProcessStatusValue": "Awaiting Authorization",
  "PaymentResult": 3,
  "PaymentResultValue": "Successful",
  "Amount": 105.53,
  "DistributionType": null,
  "DistributionTypeValue": null,
  "DistributionStatus": "Processing",
  "DistributionId": null,
  "SourceGuid": "12345678-9012-1234-5678-123456789012",
  "SourceName": "DonationForm",
  "CharityId": null,
  "OrganizationGuid": "12345678-9012-1234-5678-123456789012",
  "OrganizationName": "TEST SOCIETY",
  "Ein": "00-0000000",
  "SalesforceAccountId": null,
  "FgExternalId": null,
  "BfgExternalId": null,
  "ArtezExternalId": null,
  "ArtezInstanceGuid": null,
  "ExternalConstituentId": null,
  "FirstName": "TEST",
  "LastName": "NAME",
  "Email": "test@testemail.com",
  "CardHolderName": "Test name",
  "CCLastDigits": "2222",
  "CCType": "Visa",
  "IpAddress": "127.0.0.1",
  "ExternalEventId": "9922",
  "ExternalEventGuid": null,
  "ExternalEventName": null,
  "ShippingFee": 0,
  "TaxableBenefit": 0,
  "TranId": "885ecade-735c-4b8c-9cfd-2870ebca049f",
  "Tip": 0,
  "VoidRequestDate": null,
  "VoidReason": null,
  "RefundRequestDate": null,
  "RefundReason": null,
  "ProcessorId": 1,
  "ProcessorGuid": "12345678-9012-1234-5678-123456789012",
  "PaymentMethodTypeId": 3,
  "Surcharge": null,
  "IsSurchargeEligible": false,
  "CheckLastDigits": null,
  "CheckNumber": null,
  "CheckTypeId": null,
  "CheckAccountTypeId": null,
  "FsApplicationFee": null,
  "EpfSessionId": "c2bdd62b-0f22-45fe-83f6-119a24e54f82",
  "PaymentLines": [
    {
      "PaymentLineId": 50256,
      "PaymentId": 55514,
      "CreatedDate": "2026-01-20T15:20:09.5520567Z",
      "ModifiedDate": "2026-01-20T15:20:09.45",
      "IsDeleted": false,
      "Amount": 100,
      "CardFeeAmount": 3.49,
      "CardTypeFeeAmount": 0,
      "CommissionAmount": 1.5,
      "PayFee": true,
      "TransactionSourceGroupId": 1,
      "CardFeeRate": 3.49,
      "TotalCommissionRate": 1.5,
      "TotalCommissionAmount": 1.5,
      "PartnerCommissionRate": 0,
      "PartnerCommissionAmount": 0,
      "FsCommissionRate": 1.5,
      "FsCommissionAmount": 1.5,
      "TotalFees": 5.53,
      "PerTransFee": 0.35,
      "ExternalLineId": null,
      "Tip": 0,
      "CommissionRateOverride": null,
      "CardFeeOnFeeAmount": 0.19,
      "Tax": 0
    }
  ]
}
}
```

**Step 3. Optional:** If you would like to retrieve previous notifications by Payment identifier please use our Payment API GET `/api/notifications`.

**Key Details:**

* **API Version:** v1
* **Endpoint:** [`/api/notification`](/welcome-to-our-payment-api/api-references/test-payment-api-features/each-api-reference-specifics/notifications.md#get-api-notifications)
* **Method:** GET
* **Purpose:** Check your notifications by Payment idenfiers.
* **Parameters:**
  * **PaymentId:** Payment API Payment Id.
  * **PaymentExternalId:** Payment Gateway TransactionId.

**Responses:**

* **200 (Success)**: Returns all Notifications by PaymentId or PaymentExternalId.
* **400 (Bad Request):** Throws exception If the Notifications are not found.

#### Example GET Notifications request

```
GET api/notifications?paymentId=12345
```

### Create, configure, and test your Notifications

See how to create, configure, and test Notifications here:

{% content-ref url="/pages/4db80e18f611a59f5d4f47cec31dde81f4be38f6" %}
[Notifications](/welcome-to-our-payment-api/api-references/test-payment-api-features/each-api-reference-specifics/notifications.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developers.frontstream.com/welcome-to-our-payment-api/api-references/set-up-and-receive-notifications.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
