P2P Transfers
The functionality of P2P transfers allows you to transfer funds from one card to another.
Technically, on the side of payment systems, the transfer scheme is implemented in two stages.
- Stage 1: charging funds from the source card.
- Stage 2: crediting the receiver card.
The transfer interface offered by eComCharge allows you to implement this functionality in one step by executing the P2P operation.
When making a transfer from the payer (the cardholder of a source card) will be charged a commission, which is stated in your contract for P2P transfer. Thus, for the P2P operation the amount
field stands for the amount to be credited to the receiver card. The commission for the P2P transfer is deducted from the source card.
Info
Refund operation is not possible for P2P transfers.
Requirements
When making a transfer from card to card, the following requirements established by the international payment system must be met:
- Mandatory verification of the source card using 3-D Secure authentication mechanism.
- Mandatory input of CVV2/CVC2 code for the source card.
- PCI DSS certification is required to process non-encrypted card data.
Info
For quick launch of the P2P transfer service, you can use the eComCharge hosted page for P2P operations.
Place https://checkout.ecomcharge.com/p2p/?public_key=:SHOP_PUBLIC_KEY
, where public_key
is your shop public key, on your resources and start your own P2P transfers service.
Checking the capability of the P2P transfer
To test the capability of the P2P transfer between the source card and the receiver card and to obtain information about the commission and additionally requested data about the source card or the receiving card, you should send one of the POST
requests:
Authorization by the secret key
All requests use HTTP Basic authentication with Shop ID and Secret Key.
https://processing.ecomcharge.com/p2p-restrictions
Authorization by the public key
Authorization by the public key in synchronous mode
All requests are performed with Bearer
authorization by the public key and mandatory transfer of the header X-Api-Version:2
.
https://checkout.ecomcharge.com/ctp/api/verify-p2p
Authorization by the public key in asynchronous mode
In authorization in synchronous mode, the request is sent and response with all parameters is received.
In authorization in asynchronous mode, need to send a request (parameters as same as for synchronous request) to an asynchronous URL and receive a response with task status new
and job_id
.
All requests are performed with Bearer
authorization by the public key and mandatory transfer of the header X-Api-Version:2
.
URL for processing requests in asynchronous mode
https://checkout.ecomcharge.com/ctp/api/async/verify-p2p
Example of the response with task status new
and job_id
{
"status": "new",
"job_id": "62c5b51a1d69bde6e5afaa70"
}
Get asynchronous task status
To get a task status, send a GET
request with job_id
to https://checkout.ecomcharge.com/ctp/api/async/jobs/job_id
, where job_id
has 62c5b51a1d69bde6e5afaa70
format.
Example of the response for the task with new
status
{
"status": "new",
"job_id": "62c5b51a1d69bde6e5afaa70"
}
Example of the response for the task with failed
status
{
"job_id": "62c5b51a1d69bde6e5afaa70",
"status": "failed",
"response": {
"status": "error",
"errors": [
"error"
],
"message": "Request processing error. Please try again later",
"finished": false
}
}
Example of the response for the task with done
status
{
"status": "done",
"job_id": "62c5b51a1d69bde6e5afaa70",
"response": {
//Standard response parameters
}
}
Request
Parameter | Type | Description |
---|---|---|
request | object | |
amount * required |
integer | The amount of the transfer, which should be credited to the receiver card, in the minimal currency units. For example, 32.45 USD should be sent as 3245 . |
currency * required |
string | The currency of the transfer in ISO-4217 format, for example USD . |
credit_card | object | If required, you can use the client side encryption. |
number * required |
string | The source card number. |
exp_month * conditionally required |
string (2) | The expiration month of the sender's card. Must be one or two digits (for example, 01). |
exp_year * conditionally required |
string (4) | The expiration year of the sender's card. Must be 4 digits (for example, 2026). |
holder * conditionally required |
string (35) | The cardholder name as it appears on the card. The parameter is optional in the eComCharge system but can be required by the acquirer. |
verification_value * conditionally required |
string | 3- or 4-digit security code (called CVC2, CVV2 or CID depending on the credit card brand). |
token * conditionally required |
string | The source card token instead of the source card number. |
recipient_card | object | If required, you can use the client side encryption. |
number * required |
string | The receiver card number. |
exp_month * conditionally required |
string (2) | The expiration month of the recipient's card. Must be one or two digits (for example, 01). |
exp_year * conditionally required |
string (4) | The expiration year of the recipient's card. Must be 4 digits (for example, 2026). |
holder * conditionally required |
string (35) | The cardholder name as it appears on the recipient's card. The parameter is optional in the eComCharge system but can be required by the acquirer. |
token * conditionally required |
string | the receiver card token instead of the receiver card number. |
test | boolean | true - testing the capability of the P2P transfer between test cards. |
additional_data | object | A section with additional data. |
p2p | object | The section with additional transfer data. |
type * conditionally required |
string(3) | The transfer operation type in the alphanumeric format, issued by the processing center. Contact the Tech Support Team to check if you should submit this parameter. |
Example of the JSON-request
{
"request": {
"amount": 100,
"currency": "USD",
"credit_card": {
"number": "4012001037141112"
},
"recipient_card": {
"number": "4200000000000000"
},
"test": true
}
}
Response
Transfer is possible
Parameter | Type | Description |
---|---|---|
status * required |
string | successful |
message * required |
string | The message from the bank system. |
commission | object | |
minimum * required |
float | The minimal commission amount, that will be charged from the source card. |
percent * required |
float | The percentage of commission, that will be charged from the source card. |
bank_fee * required |
float | The absolute commission value, calculated by bank processing. |
currency * required |
string | the currency of the commission in ISO-4217 format, for example USD . |
test | boolean | true - testing the capability of the P2P transfer between test cards. |
Example of the JSON-response
{
"status": "successful",
"message": "p2p is allowed",
"commission": {
"minimum": 0.7,
"percent": 1.5,
"bank_fee": 7.35,
"currency": "USD"
}
}
Transfer is not possible
Parameter | Type | Description |
---|---|---|
status * required |
string | failed |
message * required |
string | The message from the bank system. |
required_fields | object | If this section is returned, commission is not calculated. |
credit_card | array | The parameters array, that should be requested about the source card. Possible array elements: holder , verification_value , exp_month , exp_year . |
recipient_card | array | The parameters array, that should be requested about the receiver card. Possible array elements: holder , exp_month , exp_year . |
Example of the JSON-response
{
"status": "failed",
"message": "Missed credit card fields: holder.Missed recipient card fields: holder.",
"required_fields": {
"credit_card": [
"holder"
],
"recipient_card": [
"holder"
]
}
}
Error
Parameter | Type | Description |
---|---|---|
error_code * required |
string | Error code. |
message * required |
string | The error text description. |
errors * required |
object | The parameters with errors. |
Example of the JSON-response
{
"error_code": "invalid_params",
"message": "Unprocessable entity",
"errors": {
"amount": [
"must be an integer"
],
"currency": [
"is unknown ISO 4217 Alpha-3 code"
],
"credit_card": {
"number": [
"is not a card number"
]
},
"recipient_card": {
"number": [
"is not a card number"
]
}
}
}
Executing the P2P transfer
To make a P2P transfer via the eComCharge API, you need to send one of the POST
requests:
Authorization by the secret key
All requests use HTTP Basic authentication with Shop ID and Secret Key.
https://processing.ecomcharge.com/transactions/p2ps
Authorization by the public key
Authorization by the public key in synchronous mode
All requests are performed with Bearer
authorization by the public key and mandatory transfer of the header X-Api-Version:2
.
https://checkout.ecomcharge.com/ctp/api/p2p
Authorization by the public key in asynchronous mode
In authorization in synchronous mode, the request is sent and response with all parameters is received.
In authorization in asynchronous mode, need to send a request (parameters as same as for synchronous request) to an asynchronous URL and receive a response with task status new
and job_id
.
All requests are performed with Bearer
authorization by the public key and mandatory transfer of the header X-Api-Version:2
.
URL for processing requests in asynchronous mode
https://checkout.ecomcharge.com/ctp/api/async/p2p
Example of the response with task status new
and job_id
{
"status": "new",
"job_id": "62c5b51a1d69bde6e5afaa70"
}
Getting asynchronous task status
To get a task status, send a GET
request with job_id
to https://checkout.ecomcharge.com/ctp/api/async/jobs/job_id
, where job_id
has 62c5b51a1d69bde6e5afaa70
format.
Responses for task statuses (new
, failed
, done
) as same as described in the chapter Getting asynchronous task status.
Request
Parameter | Type | Description |
---|---|---|
request | object | |
amount * required |
integer | The amount of the transfer, which should be credited to the receiver card, in the minimal currency units. For example, 32.45 USD should be sent as 3245 . |
currency * required |
string | The currency of the transfer in ISO-4217 format, for example USD . |
description * required |
string | Transfer description. |
expired_at | string | The time in ISO 8601 format YYYY-MM-DDThh:mm:ssTZD until which the transfer should be confirmed. |
tracking_id * required |
string | The transfer id in your system. Use a unique value to get the relevant transaction information, when you send a status query. Otherwise, you will receive the first transaction found by the tracking_id . Can be multiple values separated with semicolons. For example, "cbe59142-90af-4aea-b5a5-5bf3f66cf3da;f7883cb9-0e26-43a7-beb7-4027cb55d1a6;4a6a89d5-6950-400f" . If multiple values are sent in the request, the transaction search in the back office system can be performed by any of them. |
duplicate_check | boolean | true or false . The parameter controls the process of checking the incoming request for uniqueness. If during the 30 seconds a payment requests with the same amount and number or token are received, the request will be rejected. By default, this parameter has true value. |
language | string | Language of your checkout page. If the parameter is set and transaction notification emails to customers are enabled, eComCharge will dispatch those emails in language locale. English (en ) is set by default. Possible values of language parameter. |
notification_url | string | The URL where notifications about a transaction will be posted to. The notification request format equals to the transaction response format. |
return_url | string | URL on the Merchant's side where eComCharge will send Customer's browser when Customer returns from 3-D Secure verification. |
test | boolean | true - testing the capability of the P2P transfer between test cards. |
credit_card | object | If required, you can use the client side encryption. |
number * required |
string | The source card number. |
verification_value * required |
string | 3- or 4-digit security code (called CVC2, CVV2 or CID depending on the credit card brand). It can be sent along with token parameter and in this case, eComCharge will submit to acquiring bank card details with the given CVC2/CVV2/CID. |
exp_month * conditionally required |
string (2) | The expiration month of the sender's card. Must be one or two digits (for example, 01). |
exp_year * conditionally required |
string (4) | The expiration year of the sender's card. Must be 4 digits (for example, 2026). |
holder * conditionally required |
string (35) | The cardholder name as it appears on the card. The parameter is optional in the eComCharge system but can be required by the acquirer. |
token * conditionally required |
string | Instead of the above 5 parameters, you can send the source card token that you are received in response to the first transfer. |
recipient_card | object | If required, you can use the client side encryption. |
number * required |
string | Receiving card number. |
exp_month * conditionally required |
string (2) | The expiration month of the recipient's card. Must be one or two digits (for example, 01). |
exp_year * conditionally required |
string (4) | The expiration year of the recipient's card. Must be 4 digits (for example, 2026). |
holder * conditionally required |
string (35) | The cardholder name as it appears on the recipient's card. The parameter is optional in the eComCharge system but can be required by the acquirer. |
token * conditionally required |
string | instead of the above 5 parameters, you can send the recipient card token that you are received in response to the first transfer. |
additional_data | object | The section with additional data. |
receipt_text | array | Text, that will be added to the client's mail. Submit it as an array of strings, for example ["First line", "Second line"] . |
contract | array | An array, consisting of elements:oneclick - eComCharge returns a card token to use it in the oneclick payment scheme. It means eComCharge will open a payment page with pre-filled card data and customer will be forced to enter CVC/CVV code and pass 3-D Secure verification to complete payment. |
p2p | object | A section with additional transfer data. |
type | string | The transfer operation type in the alphanumeric format the length is 3 characters, issued by the processing center. |
customer * conditionally required |
object | A section of the customer information. Contact Tech Support Team to inquire if your acquirer requires any of the section parameters. |
ip | string | The IP address of the sender of the transfer. |
string | The email of the sender of the transfer. | |
device_id | string | The device ID of the sender of the transfer. |
sender_billing_address | object | |
first_name | string | The first name of the sender of the transfer. |
last_name | string | The last name of the sender of the transfer. |
country | string | The billing country of the sender of the transfer in ISO 3166-1 alpha-2 format. |
city | string | The billing city of the sender of the transfer. |
state | string | Two-letter billing state of the sender of the transfer only if the billing address country is US or CA |
zip | string | The billing ZIP or postal code of the sender of the transfer. If country=US , zip format must be NNNNN or NNNNN-NNNN. |
address | string | The billing address of the sender of the transfer. |
phone | string | The phone number of the sender of the transfer |
recipient_billing_address | object | |
first_name | string | The first name of the recipient of the transfer. |
last_name | string | The last name of the recipient of the transfer. |
country | string | The billing country of the recipient of the transfer in ISO 3166-1 alpha-2 format. |
city | string | The billing city of the recipient of the transfer. |
state | string | Two-letter billing state of the recipient of the transfer only if the billing address country is US or CA . |
zip | string | The billing ZIP or postal code of the recipient of the transfer. If country=US , zip format must be NNNNN or NNNNN-NNNN. |
address | string | The billing address of the recipient of the transfer. |
phone | string | The phone number of the recipient of the transfer. |
billing_address | object | The section billing_address has been left to maintain compatibility with the previous API version. If a new integration is developed, use the sections sender_billing_address and recipient_billing_address . |
first_name | string | The first name of the sender of the transfer. |
last_name | string | The last name of the sender of the transfer. |
country | string | The billing country of the sender of the transfer in ISO 3166-1 alpha-2 format. |
city | string | The billing city of the sender of the transfer. |
state | string | Two-letter billing state of the sender of the transfer only if the billing address country is US or CA |
zip | string | The billing ZIP or postal code of the sender of the transfer. If country=US , zip format must be NNNNN or NNNNN-NNNN. |
address | string | The billing address of the sender of the transfer. |
phone | string | The phone number of the sender of the transfer |
Example of the JSON-request
{
"request": {
"test": false,
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"tracking_id": "tracking_id_000",
"billing_address": {
"phone": "123"
},
"credit_card": {
"number": "2012001037140165",
"verification_value": "123",
"exp_month": "01",
"exp_year": "2026",
"holder": "John Doe"
},
"recipient_card": {
"number": "2019001037140165",
"holder": "Mary Doe"
},
"customer": {
"ip": "127.0.0.1",
"device_id": "12312312321fff67",
"email": "jahn_test@mial.com"
},
"sender_billing_address": {
"first_name": "Mary",
"last_name": "Smith",
"country": "BY",
"city": "Minsk",
"address": "Gilbert 104"
},
"recipient_billing_address": {
"first_name": "Jane",
"last_name": "Smith",
"country": "BY",
"city": "Minsk",
"address": "Gilbert 104"
}
}
}
Response
Response parameters replicate request parameters, except for the additional ones:
Parameter | Type | Description |
---|---|---|
transaction | object | |
uid * required |
string | A UID of the processed transaction. |
status * required |
string | status of the processed transfer. |
amount * required |
integer | The amount of the transfer, which should be credited to the receiver card, in the minimal currency units. For example, 32.45 USD should be sent as 3245 . |
currency * required |
string | The currency of the transfer in ISO-4217 format, for example USD . |
description * required |
string | Transfer description. |
type * required |
string | p2p |
payment_method_type * required |
string | credit_card |
tracking_id * required |
string | tracking_id parameter value from the request. |
message * required |
string | The request result message. |
test * required |
boolean | true is a test operation. |
created_at * required |
string | The transfer creation time in ISO 8601 format YYYY-MM-DDThh:mm:ssTZD . |
updated_at * required |
string | The time of the last update of the transfer data in the database in ISO 8601 format YYYY-MM-DDThh:mm:ssTZD . |
paid_at * required |
string | In case of a successfully completed transfer, this is the completion time of the transfer in the database in ISO 8601 format YYYY-MM-DDThh:mm:ssTZD . |
redirect_url * required |
string | A URL of the page to finalize the transaction. If the status parameter is set to incomplete , redirect the customer to this URL. It runs the 3-D Secure verification of the cardholder. |
language * required |
string | The value of the language parameter from the request or en , if the parameter is not transferred in the request. |
credit_card | object | |
holder * required |
string | The source card holder name. |
stamp * required |
string | The source card stamp. |
brand * required |
string | The source card brand. |
last_4 * required |
string | The last 4 digits of the source card. |
first_1 * required |
string | The first digit of the source card |
bin * required |
string | The source card BIN. |
issuer_country * required |
string | The source card country. |
issuer_name * required |
string | The issuing bank of the source card. |
product * required |
string | The card product type of the source card. |
exp_month * required |
string | The source card expiration month expressed with two digits (for example, 01). |
exp_year * required |
string | The source card expiration year expressed with four digits (for example, 2026). |
token | string | The source card token, which is returned if the contract parameter is transferred in the request. |
recipient_card | object | |
holder * required |
string | The recipient card holder name. |
stamp * required |
string | The recipient card stamp. |
brand * required |
string | The recipient card brand. |
last_4 * required |
string | The last 4 digits of the recipient card. |
first_1 * required |
string | The first digit of the recipient card. |
bin * required |
string | The recipient card BIN. |
issuer_country * required |
string | The recipient card country. |
issuer_name * required |
string | The issuing bank of the recipient card. |
product * required |
string | The card product type of the recipient card. |
exp_month * required |
integer | The recipient card expiration month expressed with two digits (for example, 01). |
exp_year * required |
integer | The recipient card expiration year expressed with four digits (for example, 2026). |
token | string | The recipient card token, which is returned if the contract parameter is transferred in the request. |
verify_p2p | object | The result of checking of the request parameters, that are required to complete the P2P transfer. |
status * required |
string | status of the checking. |
message * required |
string | The request result message. |
amount * required |
integer | The amount of the transfer, which is credited to the receiver card, in the minimal currency units. |
currency * required |
string | The currency of the transfer in ISO-4217 format, for example USD . |
bank_fee * required |
float | The bank fee amount for P2P transfer. |
required_fields * required |
object | |
credit_card | array | The parameters array, that should be requested about source card. Possible array elements: holder , verification_value , exp_month , exp_year . |
recipient_card | array | The parameters array, that should be additionally requested about source card. Possible array elements: holder , exp_month , exp_year . |
p2p | object | P2P transfer data received from the bank. |
receipt_url * required |
string | The link to the receipt of the processed transaction. |
ref_id * required |
string | The number of the operation in the bank that made the P2P transfer. |
bank_code * required |
string | The bank response code. |
message * required |
string | A message with request result. |
amount * required |
integer | The amount of the transfer, which is credited to the receiver card, in the minimal currency units. |
currency * required |
string | The currency of the transfer in ISO-4217 format, for example USD . |
billing_descriptor * required |
string | The text to be displayed on the bank statement of the source card. |
gateway_id * required |
integer | The internal bank identification number in eComCharge system. |
status * required |
string | The status of the bank transaction. |
customer | object | A section of the customer information. |
ip * required |
string | The IP address of the sender of the transfer. |
email * required |
string | The email of the sender of the transfer. |
device_id * required |
string | The device ID of the sender of the transfer. |
sender_billing_address | object | |
first_name * required |
string | The first name of the sender of the transfer. |
last_name * required |
string | The last name of the sender of the transfer. |
country * required |
string | The billing country of the sender of the transfer in ISO 3166-1 alpha-2 format. |
city * required |
string | The billing city of the sender of the transfer. |
state * required |
string | Two-letter billing state of the sender of the transfer only if the billing address country is US or CA . |
zip * required |
string | The billing ZIP or postal code of the sender of the transfer. If country=US , zip format must be NNNNN or NNNNN-NNNN. |
address * required |
string | The billing address of the sender of the transfer. |
phone * required |
string | The phone number of the sender of the transfer. |
recipient_billing_address | object | |
first_name * required |
string | The first name of the recipient of the transfer. |
last_name * required |
string | The last name of the recipient of the transfer. |
country * required |
string | The billing country of the recipient of the transfer in ISO 3166-1 alpha-2 format. |
city * required |
string | The billing city of the recipient of the transfer. |
state * required |
string | Two-letter billing state of the recipient of the transfer only if the billing address country is US or CA . |
zip * required |
string | The billing ZIP or postal code of the recipient of the transfer. If country=US , zip format must be NNNNN or NNNNN-NNNN. |
address * required |
string | The billing address of the recipient of the transfer. |
phone * required |
string | The phone number of the recipient of the transfer. |
additional_data | object | The section with additional transfer data. |
receipt_text | array | The text, that will be added to the client's mail. Submit it as an array of strings, for example ["First line", "Second line"] . |
Example of the JSON-response when a P2P transfer requires 3-D Secure verification
{
"transaction": {
"uid": "1-82cc07d15d",
"status": "incomplete",
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"type": "p2p",
"payment_method_type": "credit_card",
"tracking_id": "tracking_id_000",
"message": null,
"test": false,
"created_at": "2021-06-08T09:28:18.073Z",
"updated_at": "2021-06-08T09:28:20.280Z",
"paid_at": null,
"language": "en",
"redirect_url": "http://127.0.0.1:9887/process/1-82cc07d15d",
"credit_card": {
"holder": "John Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "mir",
"last_4": "0165",
"first_1": "2",
"bin": "220031",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 1,
"exp_year": 2026,
"token_provider": null,
"token": null
},
"recipient_card": {
"holder": "Mary Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "mir",
"last_4": "0165",
"first_1": "2",
"bin": "220031",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": null,
"exp_year": null,
"token_provider": null,
"token": null
},
"receipt_url": "https://gateway.ecomcharge.com/customer/transactions/1-82cc07d15d/89caa14443680985ce8ac2452fb9f82b4947926ff5bce0f15a7b4c4d0834ea5d",
"recipient_billing_address": {
"first_name": "Jane",
"last_name": "Smith",
"address": "Gilbert 104",
"country": "BY",
"city": "Minsk",
"zip": null,
"state": null,
"phone": null
},
"sender_billing_address": {
"first_name": "Mary",
"last_name": "Smith",
"address": "Gilbert 104",
"country": "BY",
"city": "Minsk",
"zip": null,
"state": null,
"phone": null
},
"status_code": null,
"id": "1-82cc07d15d",
"verify_p2p": {
"status": "successful",
"message": "3DS",
"amount": 100,
"currency": "EUR",
"bank_fee": null,
"required_fields": null
},
"p2p": {
"ref_id": null,
"message": null,
"amount": 100,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 1,
"status": "incomplete",
"auth_code": null,
"rrn": null,
"bank_code": null
},
"customer": {
"ip": "127.0.0.1",
"email": "jahn_test@mial.com",
"device_id": "12312312321fff67",
"birth_date": null
}
}
}
Example of the JSON-response when a P2P transfer is successfully completed
{
"transaction": {
"uid": "1-4f4db7559d",
"status": "successful",
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"type": "p2p",
"payment_method_type": "credit_card",
"tracking_id": "tracking_id_000",
"message": "Successfully processed",
"test": false,
"created_at": "2021-06-08T11:54:11.725Z",
"updated_at": "2021-06-08T11:54:39.219Z",
"paid_at": "2021-06-08T11:54:39.203Z",
"language": "en",
"redirect_url": "http://127.0.0.1:9887/process/1-4f4db7559d",
"credit_card": {
"holder": "John Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "mir",
"last_4": "0165",
"first_1": "2",
"bin": "220031",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 1,
"exp_year": 2026,
"token_provider": null,
"token": null
},
"recipient_card": {
"holder": "Mary Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "mir",
"last_4": "0165",
"first_1": "2",
"bin": "220031",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": null,
"exp_year": null,
"token_provider": null,
"token": null
},
"receipt_url": "https://gateway.ecomcharge.com/customer/transactions/1-4f4db7559d/1b653d8b2c18f48a17b88435ca51e7b22bb69e5080a400faa40e3918ae6552d7",
"recipient_billing_address": {
"first_name": "Jane",
"last_name": "Smith",
"address": "Gilbert 104",
"country": "BY",
"city": "Minsk",
"zip": null,
"state": null,
"phone": null
},
"sender_billing_address": {
"first_name": "Mary",
"last_name": "Smith",
"address": "Gilbert 104",
"country": "BY",
"city": "Minsk",
"zip": null,
"state": null,
"phone": null
},
"status_code": null,
"id": "1-4f4db7559d",
"verify_p2p": {
"status": "successful",
"message": "3DS",
"amount": 100,
"currency": "EUR",
"bank_fee": null,
"required_fields": null
},
"p2p": {
"ref_id": "000005800042000145210608125426&000005800042000146210608125433",
"message": "Approved",
"amount": 100,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 1,
"status": "successful",
"auth_code": null,
"rrn": null,
"bank_code": null
},
"customer": {
"ip": "127.0.0.1",
"email": "jahn_test@mial.com",
"device_id": "12312312321fff67",
"birth_date": null
}
}
}
Example of the JSON-response when a P2P transfer is not successfully completed
{
"transaction": {
"uid": "1-d8d4cd2503",
"status": "failed",
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"type": "p2p",
"payment_method_type": "credit_card",
"tracking_id": "tracking_id_000",
"message": "Failed",
"test": false,
"created_at": "2021-06-08T11:48:15.002Z",
"updated_at": "2021-06-08T11:48:15.165Z",
"paid_at": null,
"language": "en",
"redirect_url": "http://127.0.0.1:9887/process/1-d8d4cd2503",
"credit_card": {
"holder": "John Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "mir",
"last_4": "0165",
"first_1": "2",
"bin": "220031",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 1,
"exp_year": 2026,
"token_provider": null,
"token": null
},
"recipient_card": {
"holder": "Mary Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "mir",
"last_4": "0165",
"first_1": "2",
"bin": "220031",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": null,
"exp_year": null,
"token_provider": null,
"token": null
},
"receipt_url": "https://gateway.ecomcharge.com/customer/transactions/1-d8d4cd2503/047da8244b961a41b5ad52e138dd8b866e6e6e773c3510ec1eb1476192b62397",
"recipient_billing_address": {
"first_name": "Jane",
"last_name": "Smith",
"address": "Gilbert 104",
"country": "BY",
"city": "Minsk",
"zip": null,
"state": null,
"phone": null
},
"sender_billing_address": {
"first_name": "Mary",
"last_name": "Smith",
"address": "Gilbert 104",
"country": "BY",
"city": "Minsk",
"zip": null,
"state": null,
"phone": null
},
"status_code": null,
"id": "1-d8d4cd2503",
"verify_p2p": {
"status": "failed",
"message": "3DS",
"amount": 100,
"currency": "EUR",
"bank_fee": null,
"required_fields": null
},
"p2p": {
"ref_id": null,
"message": null,
"amount": 100,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 1,
"status": "incomplete",
"auth_code": null,
"rrn": null,
"bank_code": null
},
"customer": {
"ip": "127.0.0.1",
"email": "jahn_test@mail.com",
"device_id": "12312312321fff67",
"birth_date": null
}
}
}
3-D Secure verification
The source card 3-D Secure verification process is identical with the card verification process for the authorization or payment operations.