Create partner's webhook

Create Partner Webhook

This endpoint allows a partner to create and register a new webhook with the Netevia Banking API. By registering a webhook, the partner defines a destination URL and the category of events they want to be notified about. Once registered, the system will automatically POST event payloads to the specified URL whenever the subscribed event type occurs.

Endpoint

POST /api/Partners/webhooks

Authentication

Bearer token required. Obtain via:

POST https://api.banking.netevia.dev/api/auth/v2

Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.

When to use

Use this endpoint when your integration needs real-time, event-driven updates from the Netevia platform — for example, alerting your system when a payment card is authorized, an ACH transfer completes, or a profile is locked. Webhooks eliminate the need for polling and allow your backend to react immediately to banking events. This is typically called once during onboarding or whenever a new event subscription is needed.

Request Body

FieldTypeRequiredDescription
namestringYesA descriptive label for the webhook. Must be between 1 and 50 characters.
urlstring (uri)YesThe fully qualified HTTPS URL where webhook event payloads will be delivered.
notificationTypestring (enum)YesThe event category to subscribe to. See allowed values below.

Allowed values for notificationType:

ValueDescription
ApplicationStatusNotifications when an application status changes.
PaymentCardStatusNotifications when a payment card status changes (e.g., activated, suspended).
PaymentCardAuthorizationNotifications for payment card authorization events.
AchNotifications for inbound ACH transactions.
AChOutNotifications for outbound ACH transactions.
InternalTransfersNotifications for internal transfer events between accounts.
FeeNotifications when a fee is assessed on an account.
LockUnlockProfileNotifications when a customer profile is locked or unlocked.
{
  "name": "Card Authorization Alerts",
  "url": "https://partner.example.com/webhooks/card-auth",
  "notificationType": "PaymentCardAuthorization"
}

Response

200 OK

The webhook was successfully created. The response body confirms creation (specific fields may vary based on server implementation).

{
  "success": true
}

Error Codes

CodeWhen it happens
400Missing required fields, name exceeds 50 characters, or URL format is invalid
401Token missing, expired, or invalid
403Insufficient permissions to register webhooks for this partner
409A webhook with the same URL and notification type already exists
500Internal server error while creating the webhook

Common Mistakes

  • Providing an invalid or non-HTTPS URL for the url field — the platform recommends HTTPS endpoints and will reject malformed URIs.
  • Using a free-form string for notificationType instead of one of the exact enum values (e.g., sending "transaction.created" instead of "PaymentCardAuthorization").
  • Exceeding the 50-character limit for the name field, which will result in a 400 validation error.
  • Attempting to register a duplicate webhook with the same url and notificationType combination, which returns a 409 Conflict.

Related Endpoints

  • GET /api/Partners/webhooks — Retrieve a list of all registered webhooks for the partner
  • DELETE /api/Partners/webhooks/{webhookId} — Remove a registered webhook by ID
  • PUT /api/Partners/webhooks/{webhookId} — Update an existing webhook's URL, name, or notification type

Example

curl -X POST https://api.banking.netevia.dev/api/Partners/webhooks \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Card Authorization Alerts",
    "url": "https://partner.example.com/webhooks/card-auth",
    "notificationType": "PaymentCardAuthorization"
  }'
Body Params
string
required
length between 1 and 50
uri
required
length ≥ 1
string
enum
required
Headers
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response
200

Success

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here!