Skip to content

Embedded Finance API (v1.2.0) (1.0.0)

API documentation for the Embedded Finance Microservice.

Download OpenAPI description
Overview
Languages
Servers
Mock server
https://embed-docs.eunifin.com/_mock/openapi
Local development server
http://localhost:8080

Transactions

Transaction initiation and query endpoints.

Operations

Loan Transactions

Loan lifecycle transaction endpoints.

Operations

Rail Notifications

Rail notification simulation and status endpoints.

Operations

Simulate a rail notification

Request

Simulates receipt of a rail notification message.

Bodyapplication/jsonrequired
eventstringrequired

Event name.

Example: "transfer.completed"
dataobject(DataPayload)required

Rail notification data payload.

data.​amountobject(Amount)required

Monetary amount payload.

data.​amount.​amountinteger(int64)required

Amount in minor units.

Example: 12500
data.​amount.​currencystringrequired

ISO currency code.

Example: "ZAR"
data.​timestampstring(date-time)required

Event timestamp.

Example: "2026-03-06T08:00:00Z"
data.​notification_typestringrequired

Notification type received from the rail.

Example: "PAYMENT"
data.​transaction_idstringrequired

Rail transaction identifier.

Example: "rail-tx-123"
data.​transaction_typestringrequired

Rail transaction type.

Example: "TRANSFER"
data.​account_idstringrequired

Related account identifier.

Example: "6c9083ce-b9d6-4415-8ad1-e32050fc8f93"
curl -i -X POST \
  https://embed-docs.eunifin.com/_mock/openapi/rail/notifications/simulate \
  -H 'Content-Type: application/json' \
  -d '{
    "event": "transfer.completed",
    "data": {
      "amount": {
        "amount": 12500,
        "currency": "ZAR"
      },
      "timestamp": "2026-03-06T08:00:00Z",
      "notification_type": "PAYMENT",
      "transaction_id": "rail-tx-123",
      "transaction_type": "TRANSFER",
      "account_id": "6c9083ce-b9d6-4415-8ad1-e32050fc8f93"
    }
  }'

Responses

Notification simulated successfully.

Bodyapplication/json
successbooleanrequired

Indicates whether the simulation succeeded.

Example: true
messagestringrequired

Simulation result message.

Example: "Notification processed successfully."
transactionIdstringrequired

Transaction identifier linked to the simulation.

Example: "rail-tx-123"
Response
application/json
{ "success": true, "message": "Notification processed successfully.", "transactionId": "rail-tx-123" }

List rail notifications

Request

Returns all stored rail notification log entries.

curl -i -X GET \
  https://embed-docs.eunifin.com/_mock/openapi/rail/notifications

Responses

Rail notifications returned successfully.

Bodyapplication/jsonArray [
idinteger(int64)

Notification log identifier.

Example: 1
railTransactionIdstring

Rail transaction identifier.

Example: "rail-tx-123"
partnerIdstring

Partner identifier.

Example: "partner-id"
eventstring

Event name.

Example: "transfer.completed"
mappedStatusstring

Internal mapped status.

Example: "COMPLETED"
accountIdstring

Related account identifier.

Example: "6c9083ce-b9d6-4415-8ad1-e32050fc8f93"
transactionTypestring

Transaction type.

Example: "TRANSFER"
amountMinorinteger(int64)

Amount in minor units.

Example: 60000
currencystring

Currency code.

Example: "ZAR"
eventTimestampstring(date-time)

Event timestamp.

Example: "2026-03-06T08:00:00Z"
statusstring

Notification processing status.

Example: "PROCESSED"
attemptCountinteger(int32)

Number of processing attempts.

Example: 1
lastAttemptAtstring(date-time)

Last processing attempt timestamp.

Example: "2026-03-06T08:00:01Z"
nextAttemptAtstring or null(date-time)

Next retry timestamp when applicable.

Example: "2026-03-06T08:05:00Z"
lastErrorstring or null

Last processing error when applicable.

Example: "Timeout while acknowledging the rail message"
]
Response
application/json
[ { "id": 1, "railTransactionId": "rail-tx-123", "partnerId": "partner-id", "event": "transfer.completed", "mappedStatus": "COMPLETED", "accountId": "6c9083ce-b9d6-4415-8ad1-e32050fc8f93", "transactionType": "TRANSFER", "amountMinor": 60000, "currency": "ZAR", "eventTimestamp": "2026-03-06T08:00:00Z", "status": "PROCESSED", "attemptCount": 1, "lastAttemptAt": "2026-03-06T08:00:01Z", "nextAttemptAt": "2026-03-06T08:05:00Z", "lastError": "Timeout while acknowledging the rail message" } ]

Get a rail notification by rail transaction identifier

Request

Returns a single rail notification log by rail transaction identifier.

Path
railTransactionIdstringrequired

Rail transaction identifier.

Example: rail-tx-123
curl -i -X GET \
  https://embed-docs.eunifin.com/_mock/openapi/rail/notifications/rail-tx-123

Responses

Rail notification returned successfully.

Bodyapplication/json
idinteger(int64)

Notification log identifier.

Example: 1
railTransactionIdstring

Rail transaction identifier.

Example: "rail-tx-123"
partnerIdstring

Partner identifier.

Example: "partner-id"
eventstring

Event name.

Example: "transfer.completed"
mappedStatusstring

Internal mapped status.

Example: "COMPLETED"
accountIdstring

Related account identifier.

Example: "6c9083ce-b9d6-4415-8ad1-e32050fc8f93"
transactionTypestring

Transaction type.

Example: "TRANSFER"
amountMinorinteger(int64)

Amount in minor units.

Example: 60000
currencystring

Currency code.

Example: "ZAR"
eventTimestampstring(date-time)

Event timestamp.

Example: "2026-03-06T08:00:00Z"
statusstring

Notification processing status.

Example: "PROCESSED"
attemptCountinteger(int32)

Number of processing attempts.

Example: 1
lastAttemptAtstring(date-time)

Last processing attempt timestamp.

Example: "2026-03-06T08:00:01Z"
nextAttemptAtstring or null(date-time)

Next retry timestamp when applicable.

Example: "2026-03-06T08:05:00Z"
lastErrorstring or null

Last processing error when applicable.

Example: "Timeout while acknowledging the rail message"
Response
application/json
{ "id": 1, "railTransactionId": "rail-tx-123", "partnerId": "partner-id", "event": "transfer.completed", "mappedStatus": "COMPLETED", "accountId": "6c9083ce-b9d6-4415-8ad1-e32050fc8f93", "transactionType": "TRANSFER", "amountMinor": 60000, "currency": "ZAR", "eventTimestamp": "2026-03-06T08:00:00Z", "status": "PROCESSED", "attemptCount": 1, "lastAttemptAt": "2026-03-06T08:00:01Z", "nextAttemptAt": "2026-03-06T08:05:00Z", "lastError": "Timeout while acknowledging the rail message" }

Get rail notification connection status

Request

Returns the current rail notification connection status.

curl -i -X GET \
  https://embed-docs.eunifin.com/_mock/openapi/rail/notifications/status

Responses

Connection status returned successfully.

Bodyapplication/json
connectedbooleanrequired

Indicates whether the notification service is connected.

Example: true
statusstringrequired

Human-readable connection status.

Example: "CONNECTED"
serverInfostringrequired

Connected server information.

Example: "nats://localhost:4222"
subscribedSubjectstringrequired

Subject currently subscribed to.

Example: "rail.notifications"
totalNotificationsReceivedinteger(int64)required

Total number of notifications received.

Example: 42
Response
application/json
{ "connected": true, "status": "CONNECTED", "serverInfo": "nats://localhost:4222", "subscribedSubject": "rail.notifications", "totalNotificationsReceived": 42 }