Guides

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-name
http

Query Parameters

NameTypeDescription
giroNumberstringA Swedish Bankgiro or Plusgiro number.
giroTypestring(enum)The Swedish Giro type.
ocrRefstringA Giro OCR reference.
invoiceRefstringA custom invoice reference.

Headers

NameTypeDescription
X-Request-IDstring(uuid)The ID of the request, unique to the call, as determined by the initiating party.
PSU-IDstringThe ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID.
PSU-Corporate-IDstringThe 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/payouts
http

Headers

NameTypeDescription
X-Request-IDstring(uuid)The ID of the request, unique to the call, as determined by the initiating party.
PSU-IDstringThe ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID.
PSU-Corporate-IDstringThe Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL.

Request Body

NameTypeDescription
instructedAmountobjectThe amount and currency of the money to be transferred.
debtorAccountobjectThe account from which the payment will be debited.
creditorNamestringThe full name of the payment recipient.
creditorGiroobjectThe Bankgirot or Plusgirot account to which the payment will be credited.
creditorAgentstringThe BIC of the payment recipient's bank.
requestedExecutionDatestring(date)The date when the payment is scheduled to be executed in ISO 8601 format, e.g. 2025-10-31.
invoiceRefstringA custom invoice reference.
ocrRefstringA Giro OCR reference.
debtorAccountMessagestringA personal message from the payer to themselves.
creditorAccountMessagestringA 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/confirm
http

Headers

NameTypeDescription
X-Request-IDstring(uuid)The ID of the request, unique to the call, as determined by the initiating party.
PSU-IDstringThe ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID.
PSU-Corporate-IDstringThe Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL.

Request Body

NameTypeDescription
payoutIdsarrayThe 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

NameTypeDescription
payoutIdstringThe ID of the payout that was created.

Headers

NameTypeDescription
X-Request-IDstring(uuid)The ID of the request, unique to the call, as determined by the initiating party.
PSU-IDstringThe ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID.
PSU-Corporate-IDstringThe 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.