Payouts (Premium)
The Payout Service enables secure, automated disbursements such as supplier invoices, payroll and refunds, while eliminating transaction limits and the need for manual banking procedures. Funds are first placed in our dedicated client funds account before final disbursement via the national clearing system Bankgirot or Plusgirot. This guide shows you how to initiate a payout, as well as how to look up the creditor name to validate the Bankgiro or Plusgiro number of the recipient.
For requests to the Payout Service API, you need an access token with scope
set to paymentinitiation
corporate
.
Initiating payouts in the production environment requires completed KYC verification on the PSU's organization. Refer to the KYC guide for information on how to implement this.
1. Get Creditor Name
This endpoint allows you to fetch the associated creditor name for a Bankgiro or Plusgiro number, and to verify that a given OCR reference is valid for said creditor.
Endpoint
GET /premium/v1/payouts/get-creditor-namehttp
Query Parameters
Name | Type | Description |
---|---|---|
giroNumber | string | A Swedish Bankgiro or Plusgiro number. |
giroType | string(enum) | The Swedish Giro type. |
ocrRef | string | A Giro OCR reference. |
invoiceRef | string | A custom invoice reference. |
Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
curl -X GET "https://api.openbankingplatform.com/premium/v1/payouts/get-creditor-name?giroNumber=123-4567&giroType=BANKGIRO&ocrRef=3020000071266464&invoiceRef=Invoice%20Nr%202441" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 3dff1f05-4c97-42c0-8bf0-8bacbb2f42f2" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890"bash
Response
{ "creditorName": "Merchant 123" }json
If the creditor account has OCR reference validation enabled and the provided OCR reference is invalid, the response will additionally include an error message indicating the issue:
"tppMessages": [ { "category": "ERROR", "code": "OCR_REF_INVALID", "text": "The payment request failed due to invalid OCR ref" } ]json
2. Create Payout
The first step of the payout process is to create a payout resource. This specifies the payout instructions to Open Payments for the final disbursement of funds.
Endpoint
POST /premium/v1/payoutshttp
Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
Request Body
Name | Type | Description |
---|---|---|
instructedAmount | object | The amount and currency of the money to be transferred. |
debtorAccount | object | The account from which the payment will be debited. |
creditorName | string | The full name of the payment recipient. |
creditorGiro | object | The Bankgirot or Plusgirot account to which the payment will be credited. |
creditorAgent | string | The BIC of the payment recipient's bank. |
requestedExecutionDate | string(date) | The date when the payment is scheduled to be executed in ISO 8601 format, e.g. 2025-10-31. |
invoiceRef | string | A custom invoice reference. |
ocrRef | string | A Giro OCR reference. |
debtorAccountMessage | string | A personal message from the payer to themselves. |
creditorAccountMessage | string | A personal message from the payer to the recipient. |
curl -X POST "https://api.openbankingplatform.com/premium/v1/payouts" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: dda491aa-7434-4502-8861-7256f986cdbf" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -d '{ "instructedAmount": { "currency": "SEK", "amount": "1300.00" }, "debtorAccount": { "iban": "SE123456789000532811" }, "creditorName": "Merchant 123", "creditorGiro": { "giroNumber": "123-4567", "giroType": "BANKGIRO" }, "creditorAgent": "HANDSESS", "requestedExecutionDate": "2026-01-01", "invoiceRef": "Invoice Nr 4421", "ocrRef": "1234567894", "debtorAccountMessage": "Personal note", "creditorAccountMessage": "Invoice payment" }'bash
Response
{ "payoutId": "a74fbba9-88d7-4dac-93a4-15d454cdafff", "transactionStatus": "RCVD", "_links": { "confirmPayout": { "href": "/premium/v1/payouts/confirm" }, "self": { "href": "/premium/v1/payouts/a74fbba9-88d7-4dac-93a4-15d454cdafff" } } }json
3. Confirm Payout
Then, you make the following request to confirm that there is an upcoming payout.
Endpoint
PUT /premium/v1/payouts/confirmhttp
Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
Request Body
Name | Type | Description |
---|---|---|
payoutIds | array | The IDs of the payouts to include in the confirmation. |
curl -X PUT "https://api.openbankingplatform.com/premium/v1/payouts/confirm" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 1397b1c9-62af-41d5-b201-cb6ef2f70a72" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -d '{ "payoutIds": [ "a74fbba9-88d7-4dac-93a4-15d454cdafff" ] }'bash
Response
{ "reference": "OPENXU3WCG", "totalAmount": { "currency": "SEK", "amount": "1300.00" } }json
The response contains a generated payout reference
, which will be used in the next step.
4. Send Funds
After successfully confirming the payout, the funds should be sent to Open Payments' client funds account with the reference
provided in the Confirm Payout response. This payment may be made via the PIS or any other payment method as long as it is referred to via said reference. Once we detect that the funds have been made available in our client funds account, they will automatically be disbursed to the ultimate beneficiary according to Bankgirot and Plusgirot's cut-off times.
The general cut-off time for same-day settlement is 09:15 CET. For bank-specific cut-off times, please contact us.
5. Get Payout
Finally, you can make the following request to check the status of the payout.
Endpoint
GET /premium/v1/payouts/{payoutId}http
Path Parameters
Name | Type | Description |
---|---|---|
payoutId | string | The ID of the payout that was created. |
Headers
Name | Type | Description |
---|---|---|
X-Request-ID | string(uuid) | The ID of the request, unique to the call, as determined by the initiating party. |
PSU-ID | string | The ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID. |
PSU-Corporate-ID | string | The Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL. |
curl -X GET "https://api.openbankingplatform.com/premium/v1/payouts/a74fbba9-88d7-4dac-93a4-15d454cdafff" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 9c62543c-c8d8-43d8-a7a2-aef97c71fe17" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890"bash
Response
{ "creditorAgent": "HANDSESS", "remittanceInformationUnstructured": "1234567894", "debtorAccountMessage": "Personal note", "creditorAccountMessage": "Invoice payment", "transactionStatus": "ACTC", "creditorAccount": { "bankgiroNumber": "123-4567" }, "creditorName": "Merchant 123", "debtorAccount": { "iban": "SE123456789000532811", "currency": "SEK" }, "instructedAmount": { "currency": "SEK", "amount": "1300.00" } }json
Once the funds have been settled in the beneficiary's account, the payout will have transactionStatus
ACTC
.