Sandbox environment
  • 06 May 2024
  • 3 Minutes to read
  • Dark
    Light

Sandbox environment

  • Dark
    Light

Article summary

This document provides information about the Payments Hub ISO20022 API sandbox environment and the values you can use there to test various operations.

The sandbox is dynamic and stores all made requests. You must first make a POST-type request to generate a payment and receive a Payments Hub ID for it. You can then use the GET-type requests to retrieve information with the same Payments Hub ID.

Note

The pain.001 requests are not currently supported in the sandbox.

Authentication credentials

The following credentials can be used in the sandbox environment to retrieve an access token:

  • Client ID:

    qMkZ90qoHAN5InA6WlMaVAhN5t8AAeOx

Note

The sandbox Client ID can also be used in the sandbox as the value of the X-Santander-Client-Id header parameter for your API requests.

  • Client Secret:

    4EPA1MolP1ajyVeU

  • Predefined JSON Web Token (JWT) Bearer token:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6InByb1BheW1lbnRzSHViU2IifQ.eyJzdWIiOiJxTWtaOTBxb0hBTjVJbkE2V2xNYVZBaE41dDhBQWVPeCIsImlzcyI6IlNhbnRhbmRlciIsImlhdCI6MTcxMDg0MjgwNCwibmJmIjoxNzEwODQyODA0LCJleHAiOjE3NDIzNzg4MDQsImp0aSI6ImM3YWY0Yzg0LTRkYzQtNDM2Mi05OTA2LWM5ZTg5N2YyNzUzOCJ9.LOaGmVUnQ6I0HYUQWA1y2vUhREaJrAasAxDlqAnxKbEYGmjP6AKeIViLdkBVVPTUWRETxmnlU6fBQRYU0BN8NEJ9dd_uJ20uiPGWp1ieTFvee27LbqqqS-4AbwD_oJluBUzb77cx4P_1o35gFskcFjbzdl5ert4xJvpbXNOQYa0C7f4YQ6wMLjCGkbdhimwRxeOEGVdYiRoVEizkPpNgUZi_H3o58gATIJ4rSSWqLmKvy9aBlK_YAT947klkJI-ej22KU8qgLCInBbBGdoW9gjg8Zpmizs7Xc7eAvNm7QRiAzd1NT6dgX3hAYDJz2m2dnZYS6zE_UPWOi5cbAyQggw

You can also generate your own JWT Bearer tokens in the sandbox, but there are some prerequisites before doing so. For more information, see Authentication guide.

You can access to Sandbox environment from this URL:

https://sandbox.apis.santander.com/payments/ and find the endpoints in API Explorer

Payments Hub ISO20022 API POST requests

When making POST-type requests in the sandbox, note that:

  • The sandbox supports idempotency for POST-type requests, meaning that payment requests with the same message ID do not create duplicate payments. When sending a payment request with a new message ID, you receive an HTTP 201 Created response, and the response body contains the Payments Hub ID for the payment request. If you send another payment request with the same message ID, you receive an HTTP 200 OK response, and the response body contains the Payments Hub ID of the original payment request.

  • POST-type requests require an SCA JWT Bearer token whose hd claim must match the request body content. The tutorials and Postman collection contain predefined requests and matching SCA JWT Bearer tokens for testing purposes.

  • To test the functionality of payment requests rejected for different reasons, the sandbox has specific request body values that can be used in POST-type requests to generate rejections. The Postman collection uses these values in separate API requests. If you are not using the Postman collection, the tables in the following sections contain request body values that you can use in your POST-type requests to generate rejections.

Sandbox-specific request body values (FP)

The following table provides sandbox-specific request body values that can be used in Faster Payments (FP) POST-type requests to generate payment rejections.

Table: POST-type request body values for generating Faster Payments (FP) rejections.

ISO20022 message type

Payment scheme

Rejection reason

Request body value causing the rejection

pacs.008.08

FP (domestic)

Creditor account number not 8 digits

cdtTrfTxInf.cdtrAcct.id.iban = GB91BARC090231

pacs.008.08

FP (domestic)

Creditor sort code all zeroes

cdtTrfTxInf.cdtrAcct.id.iban = GB91BARC00000034945865

pacs.008.08

FP (domestic)

Creditor sort code ineligible for FPS

cdtTrfTxInf.cdtrAcct.id.iban = GB91BARC10101034945865

pacs.008.08

FP (domestic)

Invalid creditor account number

cdtTrfTxInf.cdtrAcct.id.iban = GB91BARC09023134945865

pacs.008.08

FP (domestic)

Invalid creditor name

cdtTrfTxInf.cdtr.nm = 12345678901234567890123456789012345678901

pacs.008.08

FP (domestic)

Invalid debtor name

cdtTrfTxInf.dbtr.nm = 12345678901234567890123456789012345678901

pacs.008.08

FP (domestic)

Invalid FPS processing code

cdtTrfTxInf.pmtTpInf.prtr = XXX

pacs.008.08

FP (overseas)

Creditor sort code all zeroes

cdtTrfTxInf.cdtrAgt.finInstnId.clrSysMmbId.mmbId = 000000

pacs.008.08

FP (overseas)

Invalid characters in creditor sort code

cdtTrfTxInf.cdtrAgt.finInstnId.clrSysMmbId.mmbId = A00000

pacs.008.08

FP (overseas)

Invalid creditor account

cdtTrfTxInf.cdtrAcct.id.iban = GB91BARC090231

pacs.008.08

FP (overseas)

Invalid debtor account

cdtTrfTxInf.dbtrAcct.id.othr.id = “ “

pacs.008.08

FP (overseas)

Invalid exchange rate

cdtTrfTxInf.xchgRate = 0

pacs.008.08

FP (overseas)

Invalid original amount

cdtTrfTxInf.instdAmt.value = 0

pacs.008.08

FP (overseas)

Invalid payment code

TBD

pacs.008.08

FP (overseas)

Missing creditor name

cdtTrfTxInf.cdtr.nm missing

pacs.008.08

FP (overseas)

Missing debtor name

cdtTrfTxInf.dbtr.nm missing

pacs.008.08

FP (overseas)

Missing end to end ID

cdtTrfTxInf.pmtId.endToEndId = “ “

pacs.008.08

FP

Invalid chars in transaction ID

cdtTrfTxInf.pmtId.txId = payment-id ¿¿¿¿¿

pacs.008.08

FP

Invalid creditor address

cdtTrfTxInf.cdtr.pstlAdr = "addressline1 addressline1 addressline1 addressline1 addressline1 addr", "addressline2 addressline2 addressline2 addressline2 addressline2 addr", "addressline3 addressline3 addressline3 addressline3 addressline3 addr", "addressline4 addressline4 addressline4 addressline4 addressline4 addr"

pacs.008.08

FP

Invalid debtor address

cdtTrfTxInf.dbtr.pstlAdr = "addressline1 addressline1 addressline1 addressline1 addressline1 addr", "addressline2 addressline2 addressline2 addressline2 addressline2 addr", "addressline3 addressline3 addressline3 addressline3 addressline3 addr", "addressline4 addressline4 addressline4 addressline4 addressline addr"

pacs.008.08

FP

Invalid structured creditor reference

cdtTrfTxInf.rmtInf.strd.cdtrRefInf.ref = validref123 !!!

pacs.008.08

FP

Invalid amount

cdtTrfTxInf.intrBkSttlmAmt.value = 250000.01

pacs.008.08

FP

Invalid currency

cdtTrfTxInf.intrBkSttlmAmt.ccy = EUR

pacs.004.09

FP

Debtor sort code all zeroes

txInf.orgnlTxRef.dbtrAgt.finInstnId.clrSysMmbId.mmbId = 000000

pacs.004.09

FP

Debtor sort code not 6 digits

txInf.orgnlTxRef.dbtrAgt.finInstnId.clrSysMmbId.mmbId = 1234

pacs.004.09

FP

Debtor sort code not eligible for FPS

txInf.orgnlTxRef.dbtrAgt.finInstnId.clrSysMmbId.mmbId = 123456

pacs.004.09

FP

Invalid debtor account number

txInf.orgnlTxRef.dbtrAcct.id.othe.id = 12

pacs.004.09

FP

Invalid payment code

txInf.orgnlTxRef.pmtTpInf.lclInstrm.prtry = SIP

pacs.004.09

FP

Invalid structured creditor reference

txInf.orgnlTxRef.rmtInf.strd.cdtrRefInf.ref = reference!

Sandbox-specific request body values (SCT and SCT Inst)

The following table provides sandbox-specific request body values that can be used in SEPA Credit Transfer (SCT) and SEPA Instant Credit Transfer (SCT Inst) POST-type requests to generate payment rejections.

Table: POST-type request body values for generating SEPA Credit Transfer (SCT) and SEPA Instant Credit Transfer (SCT Inst) rejections.

ISO20022 message type

Payment scheme

Rejection reason

Request body value causing the rejection

pacs.008.08

SCT

Amount has too many decimals

cdtTrfTxInf.intrBkSttlmAmt.value = 1.001

pacs.008.08

SCT

Amount is zero

cdtTrfTxInf.intrBkSttlmAmt.value = 0

pacs.008.08

SCT

Amount more than limit

cdtTrfTxInf.intrBkSttlmAmt.value = 1000000000

pacs.008.08

SCT

Blocked account

cdtTrfTxInf.dbtrAcct.id.iban = BY86AKBB10100000002966000000

pacs.008.08

SCT

Creditor address empty

cdtTrfTxInf.cdtrAgt.finInstnId.bicfi = AUBKPHMM

pacs.008.08

SCT

Debtor address empty

cdtTrfTxInf.dbtr.pstlAdr missing

pacs.008.08

SCT

Insufficient funds (in the debtor account)

cdtTrfTxInf.dbtrAcct.id.iban = GR9608100010000001234567890

pacs.008.08

SCT

Invalid category purpose code

cdtTrfTxInf.pmtTpInf.ctgyPurp.cd = XXXX

pacs.008.08

SCT

Invalid charge bearer

cdtTrfTxInf.chrgBr = DEBT

pacs.008.08

SCT

Invalid currency

cdtTrfTxInf.intrBkSttlmAmt.ccy = GBP

pacs.008.08

SCT

Invalid debtor IBAN

cdtTrfTxInf.dbtrAcct = KK9300492060833000002503

pacs.008.08

SCT

Invalid message ID

grpHdr.msgId = MsgId-469587752!!

pacs.008.08

SCT

Transaction ID duplicity

cdtTrfTxInf.pmtId.txId = txId-duplicity-error-test

pacs.008.08

SCT Inst

Amount more than limit

cdtTrfTxInf.intrBkSttlmAmt.value = 1000001

pacs.004.09

SCT

Duplicated

txInf.rtrId = transactionId-xxxx

pacs.004.09

SCT Inst

Invalid reason code

txInf.retrRsnInf.rsn.cd = DS0B

camt.056.08

SCT

Invalid reason code

undrlyg.txInf.cxlRsnInf.rsn.cd = AC01

camt.056.08

SCT Inst

Originator name missing

undrlyg.txInf.cxlRsnInf.orgtr.nm missing


Was this article helpful?

What's Next