# Domestic Payment Credit Transfer
source: https://developer.mastercard.com/open-banking-connect/documentation/pisfeatures/payment-credit-transfer-initiation-request/index.md

## Request overview {#request-overview}

The goal of this request is to initiate a domestic payment on the Account Servicing Payment Service Provider (ASPSP) side using a consent that is authorized by the Payment Service User (PSU). This flow assumes the PSU has already consented to this access and the ASPSP system stores this record of consent or `consentId`. For more information, see [Payment Initiation Consent Request](https://developer.mastercard.com/open-banking-connect/documentation/pisfeatures/payment-initiation-consent-request/index.md).

### Endpoint details {#endpoint-details}

|       **Endpoints/Resources**       | **Method** |                                                       **API Profiles**                                                        |               **Description**                |
|-------------------------------------|------------|-------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------|
| /payments/domestic-credit-transfers | `POST`     | CMA9, PolishAPI, NextGenPSD2, Budapest Bank, Czech Open Banking Standard API Profile, Slovak Banking API Standard API Profile | Initiates domestic payment on the ASPSP side |

The following Sequence Diagram shows the flow for initiating a payment credit transfer request.
Diagram domestic_payment_initiate_credit_transfer

## Request scenario {#request-scenario}


API Reference: `POST /payments/domestic-credit-transfers`

#### Request header {#request-header}

N/A

#### Request body {#request-body}

|     **Name**      |                                                                                  **Purpose**                                                                                   | **Required by** |                                                                                                **How it can be used**                                                                                                | **Condition** | **Multiplicity** |  **Type**   |                                       **Description**                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        **Limitations/Parameters**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|------------------|-------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `requestInfo`     | Includes information about request being processed                                                                                                                             | MC              | This element encapsulates all request information sent to the API Service                                                                                                                                            | M             | 1..1             | Object      | Set of elements used to define the request details                                           | N/A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `xRequestId`      | ID of the request, unique to the call, as determined by the TPP                                                                                                                | TPP             | A memorable ID could be used to support in a dispute                                                                                                                                                                 | M             | 1..1             | UUID        | Free field that allows for the addition of information that can be referenced for future use | 36                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `aspspId`         | ID of a financial institution servicing the Accounts of the PSU                                                                                                                | ASPSP           | Identification of ASPSP                                                                                                                                                                                              | M             | 1..1             | String UUID | Specifies the identification code of a financial institution which holds PSU accounts        | 36                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `isLivePsuReques` | Indicates if PSU actively initiated request                                                                                                                                    | ASPSP           | Type of PSU request                                                                                                                                                                                                  | O             | 0..1             | Boolean     | PSU request type                                                                             | Boolean: true or false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `psuIPAddress`    | The forwarded IP address field consists of the corresponding HTTP request IP address field between PSU and TPP.                                                                | ASPSP           | It shall be contained only if the PSU actively initiated this request                                                                                                                                                | C             | 0..1             | String      | IP address of PSU's terminal device                                                          | 1-256 Required when isLivePsuRequest=true pattern: `(^(([0-9]` \| `[1-9][0-9]` \| `1[0-9]{2}` \| `2[0-4][0-9]` \| `25[0-5])\.){3}([0-9]` \| `[1-9][0-9]` \| `1[0-9]{2}` \| `2[0-4][0-9]` \| `25[0-5])$)` \| `(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}` \| `([0-9a-fA-F]{1,4}:){1,7}:` \| `([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}` \| `([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}` \| `([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}` \| `([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}` \| `([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}` \| `[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})` \| `:((:[0-9a-fA-F]{1,4}){1,7}` \| `:)` \| `fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}` \| `::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]` \| `(2[0-4]` \| `1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]` \| `(2[0-4]` \| `1{0,1}[0-9]){0,1}[0-9])` \| `([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]` \| `(2[0-4]` \| `1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]` \| `(2[0-4]` \| `1{0,1}[0-9]){0,1}[0-9]))$)` |
| `psuAgent`        | Indicates the user-agent for the PSU. If the PSU is using the TPP's mobile app, make sure the mobile app user-agent string is different than browser-based user-agent strings. | ASPSP           | If user-agent is supplied to ASPSP, then this information can be used by ASPSP's security mechanisms. To avoid rejections, it is recommended to include this field when providing isLivePsuRequest and psuIPAddress. | O             | 0..1             | String      | PSU's browser agent details                                                                  | 1-256                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `merchant`        | Collect merchant data for reporting purposes                                                                                                                                   | MC              | Merchant data used for reporting or reconciliation purposes                                                                                                                                                          | O             | 0..1             | Object      | Set of elements used to define the merchant details                                          | N/A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `id`              | Merchant identification code to identify the merchant                                                                                                                          | MC              | Unique Merchant identifier per TPP, which could be used for reporting/reconciliation purposes                                                                                                                        | M             | 1..1             | String      | Field is available for TPPs to enable capturing of a merchant ID                             | 1-256                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `name`            | Merchant name to identify the merchant                                                                                                                                         | MC              | Name of merchant                                                                                                                                                                                                     | M             | 1..1             | String      | Field is available for TPPs to enable capturing of a merchant name                           | 1-256                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `authorization`   | Authorization data received from associated ASPSP                                                                                                                              | MC              | Authorization data is used to exchange it for access consent                                                                                                                                                         | M             | 1..1             | String      | The authorization data received after PSU has authorized the consent                         | 1-5000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

Tip: For an explanation of notations used, refer to **Open Banking General FAQ** in our [Frequently Asked Questions](https://developer.mastercard.com/open-banking-connect/documentation/frequently-asked-questions/index.md) section.

### Response -- Success {#response--success}

HTTP Response Code = 200, OK
Tip: For a list of general response codes and error code structure see [Response and Error Codes](https://developer.mastercard.com/open-banking-connect/documentation/response-and-error-codes/index.md). For specific error codes for this feature see **Feature specific error codes** below.

#### Response header {#response-header}

N/A

#### Response body {#response-body}

|            **Name**            |                                                                                                                                  **Purpose**                                                                                                                                  | **Required by** |                                     **How it can be used**                                      | **Condition** | **Multiplicity** |  **Type**   |                                                                                         **Description**                                                                                          |                                                                                            **Limitations/Parameters**                                                                                             |
|--------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|-------------------------------------------------------------------------------------------------|---------------|------------------|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `originalRequestInfo`          | Returns original request information to the TPP                                                                                                                                                                                                                               | MC              | This object contains original request information                                               | M             | 1..1             | object      | Original request information received from the TPP                                                                                                                                               | N/A                                                                                                                                                                                                               |
| `xRequestId`                   | A memorable ID which could be used to support in a dispute                                                                                                                                                                                                                    | TPP             | This element could be used for request-response tracking                                        | M             | 1..1             | String UUID | Original `xRequestId` given by the client on request                                                                                                                                             | 36                                                                                                                                                                                                                |
| `transfer`                     | Specifies transfer information in returned data                                                                                                                                                                                                                               | TPP             | This element encapsulates all transfer information                                              | M             | 1..1             | Object      | Set of elements used to reference a payment instruction                                                                                                                                          | N/A                                                                                                                                                                                                               |
| `paymentId`                    | Unique identification as assigned by the Connectivity Partner to uniquely identify the payment resource.                                                                                                                                                                      | TPP             | This value should be used to make subsequent payment specific requests                          | M             | 1..1             | String      | Payment identification                                                                                                                                                                           | 1-256                                                                                                                                                                                                             |
| `transactionStatus`            | Specifies the status of the payment information group.                                                                                                                                                                                                                        | TPP             | Transaction Status of the payment resource                                                      | M             | 1..1             | String      | Status of the payment.                                                                                                                                                                           | Example values: · `ACCP` `ACSC` · `ACSP` · `ACTC` · `ACWC` · `ACWP` · `PDNG` · `RCVD` · `RJCT` · `CANC`                                                                                                           |
| `statusReasonCode`             | Provides detailed information on the status reason.                                                                                                                                                                                                                           | TPP             | Can only be used in case the status is equal to `RJCT`                                          | O             | 0..1             | String      | Status Reason Code is used to add more information when a generic status code is returned by transaction Status field                                                                            | The codes for `statusReasonCode` are defined in ISO20022 - "ExternalStatusReason1Code". The following codes could be returned when `RJCT` status is raised: · `AM04` · `CURR` · `AM12` · `DS24` · `DS02` · `AG08` |
| `originalPaymentId`            | Unique identification as assigned by the ASPSP to uniquely identify the payment resource.                                                                                                                                                                                     | TPP             | Could be used to support in a dispute                                                           | O             | 0..1             | String      | Payment identification returned by ASPSP                                                                                                                                                         | 1-256                                                                                                                                                                                                             |
| `originalPaymentStatus`        | Specifies the status of the payment information group. Value returned by ASPSP.                                                                                                                                                                                               | TPP             | Could be used to support in a dispute                                                           | O             | 0..1             | String      | Status of the payment returned by ASPSP                                                                                                                                                          | 1-256                                                                                                                                                                                                             |
| `refundAccount`                | refundAccount object is available in the response only when PSU has provided consent to share account details with the TPP. It includes PSU's account details.                                                                                                                | TPP             | This element encapsulates refund account details                                                | O             | 0..1             | Object      | Object encapsulating refund account details                                                                                                                                                      |                                                                                                                                                                                                                   |
| `schemeName`                   | Name of the scheme, used to specify the account identification type.                                                                                                                                                                                                          | TPP             | This field is used to specify the account identification type                                   | O             | 0..1             | String      | Account scheme name                                                                                                                                                                              | Example values: `UK.AccountNumber`, `IBAN`                                                                                                                                                                        |
| `name`                         | This field is used to send the name of debtor account owner.                                                                                                                                                                                                                  | TPP             | The data from this field should be used in the `creditorName` field for refund payments.        | O             | 0..1             | String      | The account name is the name or names of the account owner(s) represented at an account level as it was assigned by the ASPSP.                                                                   |                                                                                                                                                                                                                   |
| `identification`               | Account identification number. It can be used on payload-level to mention specific account.                                                                                                                                                                                   | TPP             | Details received in this field can be used for creditor account details in the reversed payment | O             | 0..1             | String      | Account identification which can be used on payload-level to address specific accounts                                                                                                           |                                                                                                                                                                                                                   |
| `refundAgent`                  | refundAgent object is available in the response only when PSU has provided consent to share account details with the TPP. It includes details of the financial institution servicing the refund account.                                                                      | TPP             | This element encapsulates refund agent details                                                  | O             | 0..1             | String      | Object encapsulating refund agent details                                                                                                                                                        | Example: `UK.SortCode`                                                                                                                                                                                            |
| `clearingSystemIdentification` | Denomination of the system, used to specify agent identification type.                                                                                                                                                                                                        | TPP             | Used to specify agent identification type                                                       | O             | 0..1             | String      | Clearing system identification                                                                                                                                                                   | Example: `UK.SortCode`                                                                                                                                                                                            |
| `memberIdentification`         | Identification code of the financial institution as assigned by the ISO 9362 Registration Authority.                                                                                                                                                                          | TPP             | This element is used to specify the financial institution identification code                   | O             | 0..1             | String      | Identification code to identify the financial institution.                                                                                                                                       |                                                                                                                                                                                                                   |
| `consent`                      | Specifies consent information in returned data                                                                                                                                                                                                                                | TPP             | This element encapsulates all consent information                                               | M             | 1..1             | Object      | Set of elements used to define the consent details                                                                                                                                               | N/A                                                                                                                                                                                                               |
| `consentId`                    | A unique reference to the payment initiation consent stored by the ASPSP. This is required to enable subsequent calls related to the payment (for example, to request payment status details)                                                                                 | ASPSP           | Pass this value as part of the account information requests related to the consent.             | M             | 1..1             | String      | A unique reference to the account information consent stored by the ASPSP. Please note that this is not the original value generated by the ASPSP but a generated 'proxy' value related to that. | 1-256                                                                                                                                                                                                             |
| `consentRequestId`             | Unique identification as assigned by the TPP to uniquely identify the consent request.                                                                                                                                                                                        | TPP             | This element could be used for consent request- response tracking                               | O             | 0..1             | String      | Request consent identification                                                                                                                                                                   | 1-256                                                                                                                                                                                                             |
| `signatureStatus`              | MCOB validates the signature in the authorization code for CMA9 API standard ASPSP. If the signature is valid, then the request is processed and the response includes the successful status, otherwise the TPP will receive back notification of failed signature validation | TPP             | This element could be used to check TPP signature validation status                             | O             | 0..1             | Enum        | Status of validation of ASPSP's signature present in authorization code that TPP included in the request for credit transfer (future use)                                                        | Enum: `VALID`, `UNKNOWN`, `UNSIGNED`, `NONCOMPLIANT`                                                                                                                                                              |

## Feature specific error codes {#feature-specific-error-codes}

Tip: For a list of general response codes and error code structure see [Response and Error Codes](https://developer.mastercard.com/open-banking-connect/documentation/response-and-error-codes/index.md).

|                         **Message**                         |   **Reason Code**   |                                             **Description**                                              |                                                            **Developer Details**                                                            |                                                                                                    **Typical Occurrences**                                                                                                    |                                                                                                                                                                                                                                                                                                                                                                         **Next Steps**                                                                                                                                                                                                                                                                                                                                                                          |
|-------------------------------------------------------------|---------------------|----------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| "ASPSP's signature didn't pass validation. Result code: %s" | `INVALID_SIGNATURE` | The signature of ASPSP that was provided in the authorization code of the request couldn't be validated. | "path\[i\]=\<\\path to the element that failed the validation\>;" where i = 0, 1, 2, and so on, for each element that failed the validation | Typically occurs because the signature of the ASPSP in the authorization string didn't pass one or multiple validations. This can be as a result of a modified redirect URL by a PSU, an expired signature, or other reasons. | Your request didn't get sent to ASPSP since the signature of the ASPSP in authorization code failed validation. Next steps depend on the result code in error message: · `revoked` -- The ASPSP revoked the signature certificate used. · `expired` - signature certificate has expired. Reinitiate payment. · `unknown` - signature certificate couldn't be identified. Reinitiate payment or contact support for more details. · `unsigned` - signature certificate is missing. Reinitiate payment or contact support for more details. · `noncompliant` - signature certificate is of an unexpected format. Contact support for more details. If you think you should be able to use the specified value, contact the Open Banking Connect API support team. |

**Error example code**

```json
{
    "Errors": {
        "Error": [
            {
            "Source": "OBC",
            "ReasonCode": "INVALID_SIGNATURE",
            "Description": "ASPSP's signature didn't pass validation. Result code: expired",
            "Details": "path[0]=/requestInfo/authorization"
            }
        ]
    }
}
```

|                                 **Message**                                 | **Reason Code** |                            **Description**                            |                                                         **Developer Details**                                                         |                                                  **Typical Occurrences**                                                  |                                  **Next Steps**                                  |
|-----------------------------------------------------------------------------|-----------------|-----------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| Conditional field `psuIPAddress` is expected when `isLivePsuRequest`='true' | `FORMAT_ERROR`  | `IP address` field is mandatory if parameter `isLivePsuRequest`=true. | "path\[i\]=\<\\path to the element that failed the validation\>;" where i = 0, 1, 2, etc. for each element that failed the validation | Typically occurs because the TPP has provided in request `isLivePsuRequest`=true and didn't provide the IP address value. | Provide IP address of PSU in the request when providing `isLivePsuRequest`=true. |

**Error example code**

```json
{
  "Errors": {
    "Error": [
      {
        "Source": "OBC",
        "ReasonCode": "FORMAT_ERROR",
        "Description": "Conditional field psuIPAddress is expected when isLivePsuRequest='true'",
        "Details": "path[0]=/requestInfo/psuIPAddress"
 }
    ]
  }
}
```

|          **Message**          |     **Reason Code**     |                                 **Description**                                 |                             **Developer Details**                             |                                  **Typical Occurrences**                                  | **Next Steps** |
|-------------------------------|-------------------------|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|----------------|
| Authorization code is invalid | `INVALID_AUTHORIZATION` | TPP receives error response indicating that authorization code sent is invalid. | Error returned by ASPSP to indicate that the authorization string is invalid. | Initiate the PIS consent request again and make sure the authorization string is correct. |                |

**Error example code**

```json
{
  "Errors": {
    "Error": [
      {
        "ReasonCode": "INVALID_AUTHORIZATION",
        "Description": "Authorization code  is invalid",
        "Recoverable": false
      }
    ]
  }
}
```

|          **Message**          | **Reason Code**  |             **Description**              | **Developer Details** |                    **Typical Occurrences**                    |                                      **Next Steps**                                       |
|-------------------------------|------------------|------------------------------------------|-----------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| Authorization code is expired | `PROVIDER_ERROR` | The authorization code sent has expired. |                       | Typically occurs because the authorization code has expired.. | Initiate the AIS consent request again and make sure the authorization string is correct. |

**Error example code**

```json
{
    "Errors": {
         "Error": [
            {
                  "ReasonCode": "PROVIDER_ERROR",
                  "Description": "Authorization code is expired"
             }
       ]
     }
}
```

|   **Message**   | **Reason Code** |    **Description**    | **Developer Details** |                **Typical Occurrences**                 |           **Next Steps**            |
|-----------------|-----------------|-----------------------|-----------------------|--------------------------------------------------------|-------------------------------------|
| "Invalid Input" | `FORMAT_ERROR`  | The input is invalid. | N/A                   | Occurs when invalid input was included in the request. | Adjust the request and resubmit it. |

**Error example code**

```json
{
  "Errors": {
    "Error": [
      {
        "Source": "OBC",
        "ReasonCode": "PROVIDER_ERROR",
        "Description": "Invalid Input"
      }
    ]
  }
}
```

