Send Your First Payment
Now that your customers have accounts, they can send payments across Europe. Inventi routes your SEPA payments through CENTROlink (Bank of Lithuania) and EKS (Bank of Latvia) — giving you direct access to European clearing networks.What happens when you send a payment:
- You submit the payment via API
- Inventi validates and forwards to CENTROlink or EKS
- The clearing system routes to the beneficiary bank
- You receive status updates via webhooks
Supported Payment Types
SEPA Credit Transfer
Standard transfers with next business day settlement
SEPA Instant
Real-time payments settled in under 10 seconds
API Reference
Create SEPA Payment
Initiate SCT or Instant payment
Sign Transactions
Approve payments requiring signature
Approve Transaction
Single transaction approval
Decline Transaction
Reject a pending transaction
Transaction Status Webhook
Track payment lifecycle
Get Transaction
Retrieve payment details
Business Requirements
Use idempotency for payment creation
Use idempotency for payment creation
Always send an
Idempotency-Key header when creating payments. If your request times out, retry with the same key to prevent duplicate payments.Treat trx_id as the primary key
Treat trx_id as the primary key
The create response returns
result.id (transaction ID). Persist it immediately and use it for all subsequent operations.Store both
trx_id and end_to_end_id for complete tracking and reconciliation.Webhooks are the source of truth
Webhooks are the source of truth
Use the Payment Status Change webhook to update transaction state in real-time. Implement API polling only as a fallback for reconciliation.
TO_SIGN requires approval
TO_SIGN requires approval
Depending on your tenant configuration, transactions may require approval before processing. When status is
To sign, use one of these methods:- Single approval:
PATCH /v1/transactions/{id}:approve - Bulk signing:
POST /v1/transactions/signatures
Transaction Lifecycle
Transaction Statuses
- SEPA Credit Transfer
- SEPA Instant
- Error States
| Status | Description | Timing |
|---|---|---|
Created | Payment initiated | Immediate |
To sign | Awaiting approval (if configured) | Until signed |
Signed | Approved, queued for clearing | Until cut-off |
Accepted | Submitted to CENTROlink/EKS | Next business day |
Completed | Settled at beneficiary bank | D+1 |
Create a Payment
Request Fields
Debtor IBAN (sender account)
Debtor name
Amount in cents
Currency code (EUR)
Creditor IBAN (recipient account)
Creditor name
Amount in cents
Currency code (EUR)
true for SEPA Instant, false for SCTPayment reference / remittance info
Payment Flows
- Without Signing
- With Signing
- Decline Flow
Standard flow when approval is not required.
Sign Transactions
Webhook Integration
Payment Status Change
Each status transition triggers a webhook notification with these fields:Transaction identifier
End-to-end reference
OUTBOUND for sent paymentsCurrent transaction status
Amount in cents
Currency code
Status change timestamp
Signature Verification
Verify webhook authenticity using these headers:| Header | Purpose |
|---|---|
finventi-signature-1 | RSASSA-PKCS1-v1_5 signature |
finventi-signature-timestamp | Request timestamp |
finventi-receiver-tenant-id | Your tenant ID |
Reconciliation
Use API polling as a fallback when webhooks may have gaps.Data Model
Store these fields for complete tracking:Platform transaction ID (primary key)
Customer reference for reconciliation
Your generated key for retry safety
Latest transaction status
Append-only list of status transitions
Integration Checklist
1
Implement idempotency
Generate and persist an
Idempotency-Key for each payment intent before calling the API2
Store transaction ID
Persist
trx_id from the response immediately after creation3
Implement webhook receiver
Create an idempotent endpoint that responds
2xx quickly and processes asynchronously4
Verify webhook signatures
Validate authenticity using the provided signature headers
5
Handle signing flow
If approval is required, implement signing/approval actions for
To sign transactions6
Build reconciliation
Implement status polling as a fallback for missed webhooks