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 name | Description |
---|---|
bspi.single.read-write | Payments from your payment account |
bbpi.bulk.read-write | Send 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.
Operation | Type | Limit (API calls / s) | Counts towards shared limit |
---|---|---|---|
POST /v1/single/sepa-credit-transfers | Shared | 6 | Yes |
POST /v1/periodic/sepa-credit-transfers | Shared | 6 | Yes |
POST /v1/single/cross-border-credit-transfers | Shared | 6 | Yes |
POST /v1/periodic/cross-border-credit-transfers | Shared | 6 | Yes |
GET /v1/single/sepa-credit-transfers/{paymentId} | Shared | 6 | Yes |
GET /v1/periodic/sepa-credit-transfers/{paymentId} | Shared | 6 | Yes |
GET /v1/single/cross-border-credit-transfers/{paymentId} | Shared | 6 | Yes |
GET /v1/periodic/cross-border-credit-transfers/{paymentId} | Shared | 6 | Yes |
GET /v1/single/sepa-credit-transfers/{paymentId}/status | Shared | 6 | Yes |
GET /v1/periodic/sepa-credit-transfers/{paymentId}/status | Shared | 6 | Yes |
GET /v1/single/cross-border-credit-transfers/{paymentId} | Shared | 6 | Yes |
GET /v1/periodic/cross-border-credit-transfers/{paymentId}/status | Shared | 6 | Yes |
POST /credit-transfers | Individual | 5 | No |
GET /credit-transfers/{paymentId}/status | Individual | 10 | No |
All (premium) Oauth calls | Shared | 6 | Yes |
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.
- The account holder initiates the payment order to be executed by Rabobank using your platform.
- Rabobank provides the API user (third party) with the status on the submitted upload.
- 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.
- 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.
- 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
Scenario | endToEndId/Error message | amt.currency | amt.content | creditorName | credAc.iban | credAc.currency | dbtrAc.iban | dbtrAc.currency | remStrType | remStrIssuer | remStrReference | Remarks |
---|---|---|---|---|---|---|---|---|---|---|---|---|
201 CREATED | PI-123456789 | EUR | 10.25 | Company | NL10RABO0123456789 | EUR | NL10RABO0912345678 | EUR | SCOR | CUR | 1515140706132013 | |
400 Bad Request | PI-123456789 | EUR | 10.25 | Company | EUR | EUR | SCOR | CUR | 1515140706132013 | Send a transfer with leaving one of the fields empty, for example IBAN | ||
400 Bad Request | ||||||||||||
ERROR MESSAGE | PI-123456789 | Paymentfailed response | ||||||||||
401 Unauthorised | ||||||||||||
CERTIFICATE_INVALID | PI-123456789 | Use the value invalid for the header: TPP-Signature-Certificate. | ||||||||||
401 Unauthorised | ||||||||||||
CERTIFICATE_EXPIRED | PI-123456789 | Use the value expired for the header: TPP-Signature-Certificate. | ||||||||||
401 Unauthorised | ||||||||||||
CERTIFICATE_BLOCKED | PI-123456789 | Use the value blocked for the header: TPP-Signature-Certificate. | ||||||||||
401 Unauthorised | ||||||||||||
CERTIFICATE_REVOKED | PI-123456789 | Use the value revoked for the header: TPP-Signature-Certificate. | ||||||||||
404 Not Found | PI-123456789 | Change the URL to payments/sepa-credit-transfers | ||||||||||
405 Method Not Allowed | PI-123456789 | Use POST instead of GET | ||||||||||
503 Service Unavailable | PI-123456789 | Add 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.
Attribute | Description | Value |
---|---|---|
startDate | ISO date | 2023-01-25 |
endDate | ISO date | 2025-01-25 |
frequency | Enum value | Monthly |
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:
Scenario | Remarks | payment-id | amt.currency | amt.content | credAc.iban | credAc.bban | credAc.currency | dbtrAc.iban | dbtrAc.currency | creditorName | debtorName | startDate | frequency |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
200 OK | Single Sepa | 123e4567-e89b-42d3-a456-556642440005 | EUR | 10.25 | NL10RABO0123456789 | EUR | NL10RABO0912345678 | EUR | Company | Mason Stevens | |||
200 OK | Single CB IBAN | 6509c408-eb8e-40a5-83d9-05b78cc51009 | GBP | 11.25 | GB60BARC48291709876543 | GBP | NL10RABO0912345678 | EUR | Company1 | Ina Copeland | |||
200 OK | Single CB BBAN | 1709c408-eb8e-40a5-83d9-05b78cc51b41 | 11.25 | 02100002112345678901234567 | NL10RABO0912345678 | EUR | Company1 | Ina Copeland | |||||
200 OK | Periodic Sepa | 4982e122-57e1-4f3f-b39a-43b50dc734b5 | EUR | 12.25 | NL10RABO0123456789 | EUR | NL10RABO0912345678 | EUR | Company2 | Allen Dawson | 2023-01-25 | Daily | |
200 OK | Periodic CB IBAN | 1f22d0e0-a4d5-459f-992e-1ccb4bcbc70e | GBP | 13.25 | GB60BARC48291709876543 | GBP | NL10RABO0123456789 | EUR | Company3 | Logan Bowen | 2023-01-25 | Quarterly | |
200 OK | Periodic CB BBAN | 4522d0e0-a4d5-459f-992e-1ccb4bcbc654 | 13.25 | 48291709876543 | NL10RABO0123456789 | EUR | Company3 | Logan Bowen | 2023-01-25 | Quarterly | |||
400 Bad Request | 123e4567-e89b-42d3-a456-556642440006 | ||||||||||||
404 Not Found | 123e4567-e89b-42d3-a456-556642440007 | ||||||||||||
503 Service Unavailable | 123e4567-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:
Scenario | responseStatus | payment-id | remark |
---|---|---|---|
200 OK | PDNG | 123e4567-e89b-42d3-a456-556642440002 | |
200 OK | ACSP | 123e4567-e89b-42d3-a456-556642440003 | |
200 OK | RJCT | 123e4567-e89b-42d3-a456-556642440004 | |
200 OK | ACSC | 123e4567-e89b-42d3-a456-556642440005 | |
200 OK | ACCC | 123e4567-e89b-42d3-a456-556642440006 | |
200 OK (Not implemented) | CANC | 123e4567-e89b-42d3-a456-556642440014 | |
200 OK | ACSP | 123e4567-e89b-42d3-a456-556642440018 | |
200 OK | ACSP | 123e4567-e89b-42d3-a456-556642440020 | |
400 BAD REQUEST | 123e4567-e89b-42d3 | PaymentId is not a valid UUID | |
400 BAD REQUEST* | 123e4567-e89b-42d3-a456-556642440008 | Header: X-Request-ID (123e4567) is not UUID | |
401 Unauthorised | CERTIFICATE_INVALID | 123e4567-e89b-42d3-a456-556642440000 | Use the value invalid for the header: TPP-Signature-Certificate |
401 Unauthorised | CERTIFICATE_EXPIRED | 123e4567-e89b-42d3-a456-556642440000 | Use the value expired for the header: TPP-Signature-Certificate |
401 Unauthorised | CERTIFICATE_BLOCKED | 123e4567-e89b-42d3-a456-556642440000 | Use the value blocked for the header: TPP-Signature-Certificate |
401 Unauthorised | CERTIFICATE_REVOKED | 123e4567-e89b-42d3-a456-556642440000 | Use the value revoked for the header: TPP-Signature-Certificate |
404 NOT_FOUND | 123e4567-e89b-42d3-a456-556642440009 | Forced status not found. | |
405 Method Not Allowed | 123e4567-e89b-42d3-a456-556642440001 | Use POST instead of GET | |
503 SERVICE_UNAVAILABLE | 123e4567-e89b-42d3-a456-556642440010 | Forced 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:
|
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.
-
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
-
Rabobank provides the third party with the status on the submitted bulk upload.
-
The customer authorises the payment batches in Rabo Business Banking or Rabo Business Banking Pro using Sign/Sign Orders from the menu.
-
After successful authorisation, Rabobank processes the payment batches following their payment process, same as if the payment is submitted using a Rabobank channel.
-
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 accounts | 401 Unauthorised - No permissions found | Make 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 |
| |
400 Bad Request, PAIN001 empty |
|
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 |
|
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.