# Payments
# Create payment(s)
With our bulk payments endpoint, you can automate your payment flows and seamlessly create hundreds of payments.
Limitations
- Currently only SEPA EUR transfers are permitted through this endpoint
- Payments can only be created from one source account per bulk request
- A maximum of
1000
payments can be created per request
You can create a payment to one or beneficiaries. The resulting transaction has the type bank-transfer
.
TIP
You can also use the payments endpoint to control your own funds, including moving money between your EUR SEPA accounts and topping up cards accounts. Just set the beneficiary to be your own account's details.
# Create transfers with payment approval
Payments can be initiated using either beneficiary bank account details or beneficiary ID.
All payments involving new or untrusted beneficiaries are subject to a payment approval process done in the Customer Portal, which guarantees the application of Strong Customer Authentication.
TIP
If you would like to send fully automated payments, you need to trust the beneficiaries during the approval step in the Customer Portal. All subsequent payments can be processed separately as described in Create payments for Trusted beneficiaries section in this page.
Example send payment(s) request:
POST /v1/bulk_payments
Content-Type: application/json
Authorization: Bearer <access_token>
{
"account_id": "gHcYiRdtr",
"items": [
{
"counterparty": {
"name": "John Doe",
"account": {
"account_iban": "SE9297700000010008060245",
"account_bic": "FTCSSESS"
}
},
"amount": 1,
"reference": "Payment #123",
"correlation_id": "ff7d005b-9e95-4ffc-8db4-bef9759cab99"
}
]
}
Response:
HTTP 200 OK
{
"account_id": "gHcYiRdtr",
"id": "c8d28ebe-7215-4e6e-b9f4-eb9fd9d26f83",
"totals_by_currency": {
"eur": {
"fee": 0,
"net": 1,
"total": 1
}
}
}
# Create payments for Trusted beneficiaries
You can fetch beneficiary data using GET /v1/beneficiaries/:id
to get your beneficiaries trust
values. When a beneficiary has value true
, you can create a separate request with fully automated payments without the need for payment authentication.
Learn more about trusted beneficiaries in the Beneficiaries section.
Example send payment(s) request:
POST /v1/bulk_payments
Content-Type: application/json
Authorization: Bearer <access_token>
{
"account_id": "gHcYiRdtr",
"items": [
{
"beneficiary_id": "2191f48a-3d2a-474b-82e7-fa309bd76d43",
"amount": 1,
"reference": "Payment #123",
"correlation_id": "ff7d005b-9e95-4ffc-8db4-bef9759cab99"
}
]
}
Response:
HTTP 200 OK
{
"account_id": "gHcYiRdtr",
"id": "c8d28ebe-7215-4e6e-b9f4-eb9fd9d26f83",
"totals_by_currency": {
"eur": {
"fee": 0,
"net": 1,
"total": 1
}
}
}
TIP
Please note: if the API bulk payment request includes at least one new or untrusted beneficiary, payment approval will be still necessary and all payments will have pending_approval
status.
# Details
Counterparty counterparty
refers to the beneficiary data. It includes full beneficiary name name
and SEPA bank details such as IBAN account_iban
and BIC account_bic
.
Only SEPA accounts details are allowed.
Account ID
account_id
refers to the source account the payment will be sent from. Payments can only be created from one source account per bulk request.
Amount
amount
refers to the value in EUR that the beneficiary will receive.
Please ensure that amount
values do not include commas or dots and ensure that it represents a whole number, inclusive of cents. For example, if the amount is 542,17
, it should be expressed as 54217
.
Reference
reference
contains the payment reference information. Within this section you can include additional information to help identify the purpose or context of the payment. The reference can help the identification and tracking of payment transactions for reconciliation purposes.
Maximum reference length is 140 characters.
Correlation ID
You can use correlation_id
to track each item in a bulk payment request. It is optional, but when used, a unique string with UUID v4 format should be provided. It can be passed during the payment creation flow and later be used to find specific transactions using GET /transactions
endpoint with the ?correlation_ids=[]
query parameter.
The uniqueness of the correlation_id
prevents "double spending" by accidentally replaying the same API call containing at least one item with similar correlation_id
.
# Strong Customer Authentication
To authorise or decline payments for new and untrusted beneficiaries and to maintain compliance with PSD2 SCA regulations, users will be prompted to undergo SCA (Secure Customer Authentication) before the payments are sent. This step is done in the Customer Portal during the API payment approval.
To initiate payments via the API, the initial action is to send a POST
request to /v1/bulk_payments
, providing one or more payment details along with the source account ID.
Following a successful creation of a payment through the API, a user possessing a “approve transfers” permissions must access the “Payments” section in Intergiro Customer Portal to review and approve pending API-initiated payments.
Learn how to set user permissions here (opens new window).
# Follow the payment lifecycle
Get payment data
Now that you've created your payments, you can retrieve the transactions data and check its details using GET /v1/transactions
You will be able to get some transaction status
types:
pending_approval
: The transaction is waiting for user approval in the Customer Portal
pending
: The transaction has been created and it is being processed
successful
: The transaction has been completed on our side and has reached out to the recipient bank.
failed
: The transaction has failed and the funds are returned to the source account.
Learn more how to get transaction data in Transactions.
Get real time payment status changes and notifications
Additionally, you can track real time event changes through Events, by using TransactionStatusChanged
which allows you to track all payment statuses.