API Reference

Business Payment Initiation

With the Business Payment Initiation APIs, you can initiate Single credit transfers or Bulk payment files on behalf of your users with a Rabobank business payment account and retrieve the status of an initiated transaction or file.

Business Payment Initiation is a part of Rabo BoekhoudKoppeling and Rabo Banking Link. This API supports all third parties and direct customers.

Business Payment Initiation consists of two separate APIs:

  • Business Single Payment Initiation
  • Business Bulk Payment Initiation

This API allows you or your clients (with a Rabobank business account) to process single or bulk payments through your application.

To know more read the manual that connects to your use case:

These APIs can be used through your app or web service to optimize your customer journey. It is suited for Euro Payments (SEPA), World Payments (non-SEPA), and transfers between your own (savings) accounts. After initiating a payment, you can also request its status.

🚧

To authorize single payment orders initiated using Business Payment Initiation, it depends on the redirectionFlag in the POST request whether the account holder must use Rabo Business Banking or Rabo Business Banking Pro or they can sign directly from your platform, using the redirect URL that you received from us.

To authorize batch payment orders initiated using Business Payment Initiation, the account holder must use Rabo Business Banking or Rabo Business Banking Pro.

IBAN Name Check

With the IBAN name check you enable your software users to check their customer and/or supplier data. This way the user can verify the account name associated with the payment.

You can easily add the IBAN Name Check to your customer journey using Rabobank Identity Services

Next steps

To enable you to further optimise your customer journey, we are working on the following:

  • The ability to let account holders sign payment batches directly from your own platform using a redirect to the Rabobank signing screens.
  • Push status information for a better API user experience.

We will keep you updated on the progress.

Relevant scope(s) for oauth2 access code flow

Scope nameDescription
bspi.single.read-writePayments from your payment account
bbpi.bulk.read-writeSend batch payment files
📘

Make sure that you use the Authorization and Token URL as provided by the Authorization Services.

Rate Limiting

A default rate limit plan is set for all APIs. The rate limit can be shared or individual (defined per operation). The table below describes the rate limiting for this product.

OperationTypeLimit (API calls / s)Counts towards shared limit
POST /v1/single/sepa-credit-transfersShared6Yes
POST /v1/periodic/sepa-credit-transfersShared6Yes
POST /v1/single/cross-border-credit-transfersShared6Yes
POST /v1/periodic/cross-border-credit-transfersShared6Yes
GET /v1/single/sepa-credit-transfers/{paymentId}Shared6Yes
GET /v1/periodic/sepa-credit-transfers/{paymentId}Shared6Yes
GET /v1/single/cross-border-credit-transfers/{paymentId}Shared6Yes
GET /v1/periodic/cross-border-credit-transfers/{paymentId}Shared6Yes
GET /v1/single/sepa-credit-transfers/{paymentId}/statusShared6Yes
GET /v1/periodic/sepa-credit-transfers/{paymentId}/statusShared6Yes
GET /v1/single/cross-border-credit-transfers/{paymentId}Shared6Yes
GET /v1/periodic/cross-border-credit-transfers/{paymentId}/statusShared6Yes
POST /credit-transfersIndividual5No
GET /credit-transfers/{paymentId}/statusIndividual10No
All (premium) Oauth callsShared6Yes

Business Single Payment Initiation

Before initiating single payments, the account holder must provide consent to the third party for sending single payment orders to Rabobank on behalf of their organisation for the specified payment account(s). This consent is continuous.

  1. The account holder initiates the payment order to be executed by Rabobank using your platform.
  2. Rabobank provides the API user (third party) with the status on the submitted upload.
  3. The customer authorizes the payment:
    • in Rabo Business Banking or Rabo Business Banking Pro using Sign/Sign orders from the menu, or
    • directly from your platform, using the redirect URL that you received from us (optional, on request) after submitting the payment order.
  4. After successful authorisation, Rabobank starts processing the payment order following its payment process same as if the payment is submitted using a Rabobank channel. This means (among others):
    • If a payment order is refused due to insufficient funds, we may check one or more times, up to and including three working days after the date of refusal, whether the reason for refusal still exists. If we believe that there is no longer a reason for refusal, we may restart processing the payment order on behalf of our customer.
    • When processing a Euro Payment, we check whether the beneficiary's bank is reachable for Instant Payments. If true, we will process the payment order as an Instant Payment. If false, we will process the payment order as a normal SEPA Credit Transfer.
  5. The third party can retrieve the status of the payment through the status endpoint to keep track.

Requests

The POST Payment and GET Status requests must contain a digital signature. You can generate this digital signature using the private key of your certificate. For the Sandbox environment, you can use an example certificate available in the Signing documentation.

You can initiate a payment with POST /v1/single/sepa-credit-transfers

POST https://api-sandbox.rabobank.nl/openapi/sandbox/payments/v1/single/sepa-credit-transfers

To view full list of POST parameters, go to:

  • POST/v1/single/cross-border-credit-transfers
  • POST/v1/single/sepa-credit-transfers
  • POST/v1/periodic/cross-border-credit-transfers
  • POST/v1/periodic/sepa-credit-transfers

You can retrieve the details of a payment with GET /v1/single/sepa-credit-transfers/{paymentId}

GET https://api-sandbox.rabobank.nl/openapi/sandbox/payments/v1/single/sepa-credit-transfers/123e4567-e89b-42d3-a456-556642440005

You can retrieve the status of a payment with GET /v1/single/cross-border-credit-transfers/{paymentId}/status

GET https://api-sandbox.rabobank.nl/openapi/sandbox/payments/v1/single/cross-border-credit-transfers/123e4567-e89b-42d3-a456-556642440005/status

Transfer between Payment accounts and Piggy banks

For single and periodic SEPA credit transfers, you are able to transfer money between payment accounts and piggy banks using the following:

  • From IBAN payment account to IBAN savings account: add Amount and enter naar: piggy bank name in the unstructured remittance information.
  • From IBAN savings account to IBAN payment account: add Amount and enter van: piggy bank name in the unstructured remittance information.
🚧

Money transfer from a piggy bank to an IBAN payment account is allowed only when both accounts are within the same agreement.

In case the piggy bank name is not spelled correctly, then the amount is transferred to the GENERAL piggy bank of the savings account.

To retrieve the balance information on piggy banks, use the BAI Balances API.

Response

POST Payment for Business Payment Initiation Single Payments

You can initiate a Single Business payment using a POST payments request.

After receiving the payment, a response of PDNG or RJCT is returned. You can use the {paymentId} endpoint to get the details of the payment and the status endpoint to get the latest status of the payment.

To view the POST parameters, read the following endpoint descriptions:

  • POST/v1/single/cross-border-credit-transfers
  • POST/v1/single/sepa-credit-transfers
  • POST/v1/periodic/cross-border-credit-transfers
  • POST/v1/periodic/sepa-credit-transfers

Example (POST /v1/payments/sepa-credit-transfers):

{
  "paymentId": "123e4567-e89b-42d3-a456-456789345678",
  "transactionStatus": "PDNG"
}

Below you can find all supported test scenarios. In order to test these scenarios, call the API by using the examples for the fields provided in the endpoint description for POST/sepa-credit-transfers.

Supported Scenarios

ScenarioendToEndId/Error messageamt.currencyamt.contentcreditorNamecredAc.ibancredAc.currencydbtrAc.ibandbtrAc.currencyremStrTyperemStrIssuerremStrReferenceRemarks
201 CREATEDPI-123456789EUR10.25CompanyNL10RABO0123456789EURNL10RABO0912345678EURSCORCUR1515140706132013
400 Bad RequestPI-123456789EUR10.25CompanyEUREURSCORCUR1515140706132013Send a transfer with leaving one of the fields empty, for example IBAN
400 Bad Request
ERROR MESSAGEPI-123456789Paymentfailed response
401 Unauthorised
CERTIFICATE_INVALIDPI-123456789Use the value invalid for the header: TPP-Signature-Certificate.
401 Unauthorised
CERTIFICATE_EXPIREDPI-123456789Use the value expired for the header: TPP-Signature-Certificate.
401 Unauthorised
CERTIFICATE_BLOCKEDPI-123456789Use the value blocked for the header: TPP-Signature-Certificate.
401 Unauthorised
CERTIFICATE_REVOKEDPI-123456789Use the value revoked for the header: TPP-Signature-Certificate.
404 Not FoundPI-123456789Change the URL to payments/sepa-credit-transfers
405 Method Not AllowedPI-123456789Use POST instead of GET
503 Service UnavailablePI-123456789Add shown info to EndtoEnd ID in body

Note: These codes are for Sandbox only.

To create a recurring payment, you need to use the API contains periodic with the following extra content.

AttributeDescriptionValue
startDateISO date2023-01-25
endDateISO date2025-01-25
frequencyEnum valueMonthly

The difference between single SEPA credit transfer and recurring payment is the startDate and frequency are mandatory. The rest of the scenarios are the same as single SEPA credit transfers.

GET Payment details for Business Payment Initiation Single Payments

You can retrieve the detail information for a payment initiation using a GET {paymentId} request.

Some scenarios, as mentioned below, require specific paymentId(s) in the URL, example: (GET /v1/single/sepa-credit-transfers/{paymentId}) to get the mentioned responses.

To view the GET parameters, read the following endpoint description:

  • GET /v1/single/sepa-credit-transfers/{paymentId}
  • GET /v1/periodic/sepa-credit-transfers/{paymentId}
  • GET /v1/single/cross-border-credit-transfers/{paymentId}
  • GET /v1/periodic/cross-border-credit-transfers/{paymentId}

Example (/v1/payments/sepa-credit-transfers/{paymentId}):

{
    "creditorAccount": {
        "iban": "NL10RABO0123456789"
    },
    "creditorName": "Company",
    "debtorAccount": {
        "currency": "EUR",
        "iban": "NL10RABO0912345678"
    },
    "debtorName": "Mason Stevens",
    "instructedAmount": {
        "content": "10.25"
    }
}

Below you can find all supported test scenarios:

ScenarioRemarkspayment-idamt.currencyamt.contentcredAc.ibancredAc.bbancredAc.currencydbtrAc.ibandbtrAc.currencycreditorNamedebtorNamestartDatefrequency
200 OKSingle Sepa123e4567-e89b-42d3-a456-556642440005EUR10.25NL10RABO0123456789EURNL10RABO0912345678EURCompanyMason Stevens
200 OKSingle CB IBAN6509c408-eb8e-40a5-83d9-05b78cc51009GBP11.25GB60BARC48291709876543GBPNL10RABO0912345678EURCompany1Ina Copeland
200 OKSingle CB BBAN1709c408-eb8e-40a5-83d9-05b78cc51b4111.2502100002112345678901234567NL10RABO0912345678EURCompany1Ina Copeland
200 OKPeriodic Sepa4982e122-57e1-4f3f-b39a-43b50dc734b5EUR12.25NL10RABO0123456789EURNL10RABO0912345678EURCompany2Allen Dawson2023-01-25Daily
200 OKPeriodic CB IBAN1f22d0e0-a4d5-459f-992e-1ccb4bcbc70eGBP13.25GB60BARC48291709876543GBPNL10RABO0123456789EURCompany3Logan Bowen2023-01-25Quarterly
200 OKPeriodic CB BBAN4522d0e0-a4d5-459f-992e-1ccb4bcbc65413.2548291709876543NL10RABO0123456789EURCompany3Logan Bowen2023-01-25Quarterly
400 Bad Request123e4567-e89b-42d3-a456-556642440006
404 Not Found123e4567-e89b-42d3-a456-556642440007
503 Service Unavailable123e4567-e89b-42d3-a456-556642440003

Note: These codes are for Sandbox only, for testing with the Sandbox example values for Signature add header Date = Tue, 24 Jan 2023 06:53:05 GMT

GET Payment Status for Business Payment Initiation Single Payments

You can retrieve the status information for a payment initiation using a GET status request.

Some scenarios, as mentioned below, require specific paymentId(s) in the URL, example: GET v1/single/sepa-credit-transfers/{paymentId}/status to get the mentioned responses.

To view the GET parameters, read the following endpoint description:

  • GET /v1/single/sepa-credit-transfers/{paymentId}/status
  • GET /v1/periodic/sepa-credit-transfers/{paymentId}/status
  • GET /v1/single/cross-border-credit-transfers/{paymentId}/status
  • GET /v1/periodic/cross-border-credit-transfers/{paymentId}/status

Example

{
    "transactionStatus": "PDNG"
}

Below you can find all supported test scenarios:

ScenarioresponseStatuspayment-idremark
200 OKPDNG123e4567-e89b-42d3-a456-556642440002
200 OKACSP123e4567-e89b-42d3-a456-556642440003
200 OKRJCT123e4567-e89b-42d3-a456-556642440004
200 OKACSC123e4567-e89b-42d3-a456-556642440005
200 OKACCC123e4567-e89b-42d3-a456-556642440006
200 OK (Not implemented)CANC123e4567-e89b-42d3-a456-556642440014
200 OKACSP123e4567-e89b-42d3-a456-556642440018
200 OKACSP123e4567-e89b-42d3-a456-556642440020
400 BAD REQUEST123e4567-e89b-42d3PaymentId is not a valid UUID
400 BAD REQUEST*123e4567-e89b-42d3-a456-556642440008Header: X-Request-ID (123e4567) is not UUID
401 UnauthorisedCERTIFICATE_INVALID123e4567-e89b-42d3-a456-556642440000Use the value invalid for the header: TPP-Signature-Certificate
401 UnauthorisedCERTIFICATE_EXPIRED123e4567-e89b-42d3-a456-556642440000Use the value expired for the header: TPP-Signature-Certificate
401 UnauthorisedCERTIFICATE_BLOCKED123e4567-e89b-42d3-a456-556642440000Use the value blocked for the header: TPP-Signature-Certificate
401 UnauthorisedCERTIFICATE_REVOKED123e4567-e89b-42d3-a456-556642440000Use the value revoked for the header: TPP-Signature-Certificate
404 NOT_FOUND123e4567-e89b-42d3-a456-556642440009Forced status not found.
405 Method Not Allowed123e4567-e89b-42d3-a456-556642440001Use POST instead of GET
503 SERVICE_UNAVAILABLE123e4567-e89b-42d3-a456-556642440010Forced service unavailable.

Note: These codes are for Sandbox only.

Here is a description of the expected response statuses:

Status Full name Description

ACCC

AcceptedSettlementCompleted

This status is only applicable for instant payments. Settlement on the creditor's account has been completed.

ACSC

AcceptedSettlementCompleted

Settlement on the debtor's account has been completed. Also applicable when:

  • A recurring payment has passed the end date.
  • A recurring payment has been withdrawn.

ACSP

AcceptedSettlementInProcess

All preceding checks such as technical validation and customer profile were successful. The payment initiation was successfully signed. The payment initiation has been accepted for execution, but before settlement on the debtor’s account.

Note: Execution is not guaranteed after this status. There are a number of reasons that may lead to its rejection.

ACTC

AcceptedTechnicalValidation

Authentication and syntactical and semantical validation (Technical validation) are successful. Payment is not signed yet.

RCVD

Received

Payment initiation has been received by the receiving agent. Technical validation has started.

PDNG

Pending

Payment initiation or individual transaction included in the payment initiation is pending and in progress for signing. Further checks (and status update) will be performed.

RJCT

Rejected

Payment initiation or individual transaction included in the payment initiation has been rejected.

CANC

Cancelled

Payment initiation has been cancelled before execution. This status is only applicable for future dated payments that have been successfully cancelled.

Business Bulk Payment Initiation

The POST payment and GET status requests must contain a digital signature. You can generate this digital signature using the private key of your certificate. For the Sandbox environment, you can use an example certificate available in the Signing documentation.

The POST call requires a PAIN001 file, read more about it here.

Before sending payment order files, the account holder must provide consent to the third party for sending payment files to Rabobank on behalf of their organisation for the specified payment account(s). This consent is continuous.

  1. The API user (third party) sends the payment order file(s) containing batches with payment orders using the Business Bulk Payment Initiation API.

    🚧

    For some countries, special rules apply for World Payments. Read more information about countries here: Betalingsinformatie per land

  2. Rabobank provides the third party with the status on the submitted bulk upload.

  3. The customer authorises the payment batches in Rabo Business Banking or Rabo Business Banking Pro using Sign/Sign Orders from the menu.

  4. After successful authorisation, Rabobank processes the payment batches following their payment process, same as if the payment is submitted using a Rabobank channel.

  5. The API user (third party) can retrieve the status of the individual payments in the batches through PAIN-002.

🚧

Payment files with multiple batches can be sent to the bank using BBPI with a maximum of 3,000 batches contained in one payment file at a time. It is also advisable to put a maximum of 25,000 payment orders in one payment file to ensure smooth processing. Larger files with more than 25,000 payment orders can best be split into multiple files.

Requests

The POST Payment and GET Status requests must contain a digital signature. You can generate this digital signature using the private key of your certificate. For the Sandbox environment, you can use an example certificate available in the Signing documentation.

The POST call requires a PAIN001 file, read more about it here.

To view full list of GET and POST parameters, go to:

  • GET/credit-transfers/{paymentId}/status
  • POST/credit-transfers
📘

You can only use business current accounts as Ordering account/Debtor Account.

Response

POST Payment initiation for Business Bulk Payment Initiation.

You can initiate a bulk credit transfer payment using a POST payment request.

After receiving the payment, a response of RCVD or RJCT is returned. You can use the status endpoint to get the latest status of the payment.

  `    {
      <?xml version="1.0" encoding="UTF-8"?>
      <InitiatedTransactionResponse>
          <_links>
             <status>
                 <href>/payments/bulk/credit-transfers/123e4567-e89b-42d3-a456-556642440001/status</href>
             </status>
          </_links>
          <paymentId>123e4567-e89b-42d3-a456-556642440001</paymentId>
          <transactionStatus>RCVD</transactionStatus>
      </InitiatedTransactionResponse>
    }
   `

If a required header is not provided or blank, then the status of the response will be 400 BAD REQUEST and the response will contain the missing header name. For example if the header Signature is missing, then the response will be:

`       <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
       <ErrorResponse>
         <errorMessages>
           <category>WARNING</category>
           <code>FORMAT_ERROR</code>
           <text>Required header 'signature' is not present</text>
         </errorMessages>
       </ErrorResponse>
      `  

Below you can find all supported test scenarios. In order to test these scenarios, call the API by using the examples for the fields provided in the endpoint description for POST/credit-transfers.

Request Scenario                            Response                               Remark                                                                      
Valid Request with valid PAIN001 xml file   201 CREATED                            multipart/form-data with payload variable name as xml_sct                   
Send Request with required header missing   400 BAD REQUEST                        Make a request without a header such as PSU-IP-Address                      
Large PAIN001 xml file                      400 BAD REQUEST                        Make a request with PAIN001 xml file larger than 64MB and valid digest      
PAIN001 xml file is missing *               400 BAD REQUEST                        Make a request without the PAIN001 xml file                                 
PAIN001 xml file is empty *                 400 BAD REQUEST                        Make a request with and empty PAIN001 xml file                              
Send Request with invalid signature         401 Unauthorised - Invalid Signature   Make a request with an invalid signature                                    
Send Request with invalid certificate       401 Unauthorised - Invalid Certificate Make a request with an invalid certificate                                  
Send Request with invalid digest            401 Unauthorised - Invalid digest      Make a request with an invalid digest                                       
If there is no consent for the used accounts401 Unauthorised - No permissions foundMake a request with an account that has no permissions for this product type
Server issue with the account consent       500 Internal server error              Internal Server Error, Permissions for this product type cannot be accessed 
Use PUT instead of POST method              405 Method Not Allowed                 Use an incorrect HTTP method when making the request                        

Note: These codes are for Sandbox only.

    *) For these test scenario's use the following values for the Digest and Signature header:

   Scenario                         Digest + Signature                  
   400 Bad Request, PAIN001 missing
  • digest: sha-512=5M97vlronVu+1jz6CIVqWr1ESjsnqffi94KAIv+gMj/ORJezFZAhU8T3wNhB5iP58TFttF/JD3x0sra/bEw09w==
  • signature: keyId="1523433508",algorithm="rsa-sha512",headers="date digest x-request-id",signature="yelP/MaWk5hrOPc6rB91XQ1E4Kt/IdYFyqF++66sxsUtaRynnD6fi7XCoXWOYj9GyxQGIBpsCKbEq5hw6YHz0XJq0pcm9XppnaqnAoHHdyfLIR0Y4QhkxRK7wnfMb5nd2g7UwuIel6G3AfSnZZsZ6MyRoTl7LHVew3sOp/9GmwFpRjG73e+Yd+8U0xlpYFft8h5fF82/jcNrzk6Qy+tqiZq6l7ETm8Ci6clXP9vUDurzl0X9QlUioAHEaU5L2L4Pa2tY7XfX9VgWL2aRFr2Yt9tG9DM6PDz7D88IpDW6IFxQOLlxyDULnYdLv0XDi7fiIrLXpwMsbyuBCjV9K/oCLA=="
 
   400 Bad Request, PAIN001 empty  
  • digest: sha-512=5lKRU9FPGFN0tUYBL2YekGApQEwIbaLVesrtP8vm5MapnraP/NWv9LxjyLJpFb2LzqrCimDnmX58Y8//QjLI0Q==
  • signature: keyId="1523433508",algorithm="rsa-sha512",headers="date digest x-request-id",signature="2GBXnuPe6P2vrAr1i0UQk1vUITBPiM9iyItQpsjTVnrcQKTxCeT3GSJRYHAd7OZ+6rKAdiIjLrQz587Pg8rG7rSVR2YMMedEMHYZOtmGO/DZ4tcBW90BMjDNXOu0/r8duxRsxUhPkrM7ae7yTKAORuv7xhFK58dC7J5l+1EqHJBJqOu8A1Ofv1Ho4FFZpnWMeKsArIRjPV4JcXNa4VxBxLcWKYi595N2uLwQQoCl4SWpC36vP5jjOIox+0u8CvMQDl3f6laHlxJIP/c92cEI8zbnZLG4dCzlXxycCevtLqxiUM6L6FwhDO0LGPQ57DS94zwNMgyncsSY6MUGAvRQaw=="
 

GET Payment Status for Business Bulk Payment Initiation.

You can retrieve the status information for a payment initiation using a GET status request.

`    {
      <?xml version="1.0" encoding="UTF-8"?>
      <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
         <CstmrPmtStsRpt>
              <GrpHdr>
                  <MsgId>RABO-PAIN002-PO-0000000001865281814</MsgId>
                  <CreDtTm>2021-08-09T15:39:03.808</CreDtTm>
                  <InitgPty>
                      <Id>
                          <OrgId>
                              <BICOrBEI>RABONL2U</BICOrBEI>
                          </OrgId>
                      </Id>
                  </InitgPty>
              </GrpHdr>
              <OrgnlGrpInfAndSts>
                  <OrgnlMsgId>MMMM20211231v1</OrgnlMsgId>
                  <OrgnlMsgNmId>PAIN.001.001.03</OrgnlMsgNmId>
                  <OrgnlCreDtTm>2013-07-18T10:00:00.000</OrgnlCreDtTm>
                  <OrgnlNbOfTxs>2</OrgnlNbOfTxs>
                  <OrgnlCtrlSum>0.03</OrgnlCtrlSum>
                  <GrpSts>ACTC</GrpSts>
              </OrgnlGrpInfAndSts>
              <OrgnlPmtInfAndSts>
                  <OrgnlPmtInfId>PmtInfId-MM20211231-1</OrgnlPmtInfId>
                  <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
                  <PmtInfSts>ACSC</PmtInfSts>
              </OrgnlPmtInfAndSts>
              <OrgnlPmtInfAndSts>
                  <OrgnlPmtInfId>PmtInfId-MM20211231-2</OrgnlPmtInfId>
                  <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
                  <PmtInfSts>ACSC</PmtInfSts>
              </OrgnlPmtInfAndSts>
         </CstmrPmtStsRpt>
      </Document>
    }
   `

Some scenarios, as mentioned below, require specific paymentId(s) in the URL, example: (/payments/bulk/credit-transfers/\{paymentId}/status) to get the mentioned responses.

Response       Scenario                  Payment-id                            Remark                                                                                                                          
PAIN002 file   200 OK                    123e4567-e89b-42d3-a456-556642440001  All statuses are returned as a part of a PAIN002 file after the payment is processed.                                          
RCVD           200 OK                    123e4567-e89b-42d3-a456-556642440007  This is an initial status indicating that a payment initiation is received but not yet processed by Rabobank's order manager.  
RJCT           200 OK                    123e4567-e89b-42d3-a456-556642440008  The payment initiation is rejected                                                                                             
                503 Service Unavailable   123e4567-e89b-42d3-a456-556642444324  Resource Unknown. Internal Server Error. An error occurred during the processing of the request.                               
                404 NOT_FOUND             123e4567-e89b-42d3-a456-556642440005  Payment Id not found                                                                                                           
                400 BAD REQUEST*          <any paymentId>                       The request contains invalid or missing data. For example the X-RequestId is missing in the header.                            
                401 Unauthorised          <any paymentId>                       Make a request with an invalid digest or signature or certificate                                                              

Note: These codes are for Sandbox only.

*) For this test scenario use the following values for the Digest and Signature header:

Scenario                         Digest + Signature                  
400 Bad Request, X-Request-ID   
  • digest: sha-512=z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==
  • signature: keyId="1523433508",algorithm="rsa-sha512",headers="date digest x-request-id",signature="WhLYvqF/jBvSogfIfhxbmQipzpHrrkhL653VQhCva+UtUsaybjE+jt469iOMu+K2KaQuo0OjxCM4alzLT1fiBGBO1ObhG7RPfa9yepUgeVgLo/Acx2igT/V8RmsU9qwBxQ3aZNWg5gPOHXWA+m34td48kYxkC1a6Z972hcAJnaKPHzGxKgG1cEqbT9HBr1A4CT66nD+ZdvyDezIl9WgswnxjOG6GZqLNZCGAp0ERY4zlwB3cDAEzudZTnwjB9Tw7j9eSDfq1LpgsOlyeKE4ey70xy1cCz+ZldDeWKnRSZtMU7TxcqaQJHyDPvS08XLWX5q1bhDLZjhaEg97OY5uGKQ=="
 

Response Status

Here is a description of the expected response statuses:

Statuses present in the POST response

  • RCVD: Payment file received
  • RJCT: Payment file rejected

Statuses present in the GET response

Interchange status/group status:

  • ACTC: Payment succesfully created
  • RJCT: Payment rejected.

Batch status:

  • RCVD: Payment batch received.
  • ACTC: Awaiting authorization.
  • ACCP: Payment authorized.
  • ACSC: Payment processed.
  • RJCT: Payment rejected, expired, or cancelled.
  • PDNG: Payment pending.

Transaction status on individual payment in the batch:

  • RJCT: Payment rejected.
  • ACCP: Payment authorized.
  • CANC: Payment withdrawn.
  • PDNG: Payment pending.
  • ACSC: Payment processed.