API integration guide

This section explains how to securely interact with the Rabo Smart Pay Merchant Service API, including request signing and working with transactions, refunds, and payouts.

Request and response signing

All requests must be digitally signed. The digital signature ensures message integrity and authenticity and is created using the private key of your TLS certificate.

  • For production, use the private key associated with your registered certificate.
  • For the sandbox environment, you may use the example certificate provided in the Signing documentation.

Make sure the generated signature is included in the request headers as described in the signing guide.

Transactions

Query transactions 🔗

This endpoint allows you to retrieve historical transaction data associated with your merchant account. You can apply various filters, such as transaction amount, date range, or account holder IBAN, to narrow down results and efficiently locate specific transactions for reconciliation, reporting, or customer support purposes.

Request example

<https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant/transactions>

Response example

{  
    "transactions": [  
        {  
            "omnikassa_transaction_id": "f37fcd46-600a-45f2-b6e9-d9522074d953",  
            "date_time": "2020-06-08T14:41:04+02:00",  
            "created_or_updated_at": "2020-09-21T17:23:01+02:00",  
            "reference": "000016",  
            "consumer_name": "John Doe",  
            "shop_id": 4894,  
            "shop_name": "Foodstuff Online",  
            "commercial_unit_id": 37020,  
            "commercial_unit_name": "Amsterdam",  
            "poi_id": 39544,  
            "poi_name": "Foodstuff Restaurant Amsterdam",  
            "payment_channel": "PIN",  
            "payment_brand": "VISA",  
            "transaction_status": "SETTLED",  
            "transaction_type": "PAYMENT",  
            "transaction_amount": {  
                "amount": 0.3,  
                "currency": "EUR"  
            },  
            "equens_transaction_id": "TDS81360567549317230",  
            "terminal_id": "77XVR0",  
            "payout_level": "POI",  
            "payout_reference": "Betaalpunt_77XVR0 20200609_1",  
            "omnikassa_contract_id": 1,  
            "merchant_name": "Foodstuff",  
            "refundable": false  
        }  
  ]  
}

Refunds

The Refunds endpoints enable you to check refund eligibility, create refunds for eligible transactions, and retrieve the status and details of existing refunds.

⚠️

These endpoints support refunds for online transactions only.

Refundable details of a transaction 🔗

This endpoint is used to determine whether a specific payment transaction is eligible for a refund. It returns the remaining refundable amount and the expiry date, helping you validate refund eligibility before initiating a refund request.

Request example

GET <https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant/transactions/22b36073-57a3-4c3d-9585-87f2e55275a5/refundable-details>

Response example

{  
    "transaction_id": "22b36073-57a3-4c3d-9585-87f2e55275a5",  
    "refundable_money": {  
        "amount": 230,  
        "currency": "EUR"  
    },  
    "expiry_datetime": "2020-06-01T13:00:00+02:00"  
}

Create a refund 🔗

Use this endpoint to initiate a refund for an eligible online payment transaction. You can specify the refund amount, VAT category, and a description. Once created, the refund enters a lifecycle where its status can be tracked until it is completed or rejected.

Request example

<https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant/transactions/22b36073-57a3-4c3d-9585-87f2e55275a5/refunds>

{
  "money": {
    "currency": "EUR",
    "amount": 230.15
  }
}

Response example

{  
    "refund_id": "cc094aeb-89f7-4123-b60b-ccf83a16320d",  
    "transaction_id": "22b36073-57a3-4c3d-9585-87f2e55275a5",  
    "created_at": "2020-01-01T13:00:00+01:00",  
    "refund_money": {  
        "amount": 230,  
        "currency": "EUR"  
    },  
    "vat_category": "HIGH",  
    "payment_brand": "IDEAL",  
    "status": "PENDING",  
    "description": "Customer request for refund"    
}  

Refund transactions information 🔗

This endpoint retrieves detailed information about a specific refund, including its current status, creation and update timestamps, and refunded amount. It is typically used to track refund progress and confirm final settlement.

Request example

GET <https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant/transactions/22b36073-57a3-4c3d-9585-87f2e55275a5/refunds/926a0c88-aa9e-4897-8bc6-0c4f770cc8a5>

Response example

{  
    "refund_id": "926a0c88-aa9e-4897-8bc6-0c4f770cc8a5",  
    "refund_transaction_id": "4db87f7a-d287-443e-abf8-92500551aaa3",  
    "transaction_id": "22b36073-57a3-4c3d-9585-87f2e55275a5",  
    "created_at": "2020-01-01T13:00:00+01:00",  
    "updated_at": "2020-01-02T13:00:00+01:00",  
    "refund_money": {  
        "amount": 230,  
        "currency": "EUR"  
    },  
    "vat_category": "HIGH",  
    "payment_brand": "IDEAL",  
    "status": "SUCCEEDED",  
    "description": "Customer request for refund"  
}

For more use cases, see the Sandbox scenarios refunds page.

Payouts

The Payouts endpoints allow you to query settlement data and retrieve detailed information about payouts made to your bank account.

Query payouts 🔗

The payouts query endpoint enables you to retrieve an overview of payouts made to your bank account. By using filters, you can search payouts by date, status, or entity level (such as POI or SHOP), supporting financial reconciliation and settlement reporting.

Request example

POST <https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant/payouts>

Response example

{  
    "payouts": [  
        {  
            "payout_id": "a558927a-9fe0-4925-b371-ec59971d2811",  
            "payout_datetime": "2020-06-09T08:00:00+02:00",  
            "payout_reference": "Betaalpunt_77XVR0 20200609_1",  
            "payout_level": "POI",  
            "payout_amount": {  
                "amount": 0.5,  
                "currency": "EUR"  
            },  
            "payout_status": "SETTLED",  
            "payout_iban": "NL76RABO000000000",  
            "number_of_transactions": 2,  
            "entity_name": "77XVR0",  
            "contract_id": 1,  
            "shop_id": 4894,  
            "commercial_unit_id": 37020,  
            "poi_id": 39544,  
            "terminal_id": "77XVR0"  
	} 
  ]
}

Payout information 🔗

This endpoint provides detailed information about an individual payout, including the total settled amount, number of underlying transactions, associated refunds, and destination IBAN.

Request example

GET <https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant/payouts/a558927a-9fe0-4925-b371-ec59971d2811>

Response example

{  
    "payout_id": "a558927a-9fe0-4925-b371-ec59971d2811",  
    "payout_datetime": "2020-06-09T08:00:00+02:00",  
    "payout_reference": "Betaalpunt_77XVR0 20200609_1",  
    "payout_level": "POI",  
    "payout_amount": {  
        "amount": 0.5,  
        "currency": "EUR"  
    },  
    "payout_status": "SETTLED",  
    "payout_iban": "NL76RABO000000000",  
    "number_of_transactions": 2,  
    "entity_name": "77XVR0",  
    "contract_id": 1,  
    "shop_id": 4894,  
    "commercial_unit_id": 37020,  
    "poi_id": 39544,  
    "terminal_id": "77XVR0",  
    "payments_amount": {  
        "amount": 0.5,  
        "currency": "EUR"  
    },  
    "refunds_amount": {  
        "amount": 0,  
        "currency": "EUR"  
	} 
}