For "B2B Transfers" we must use 1.121 KC-Debit Account without the "depositReference" parameter
B2B Transfers
Last changes: 10-28-2022
"B2B Transfer" is Transferring an Amount from one Merchant Account's Balance (sender) to another (receiver).
As this is an entirely Internal process the Amount will immediately become Booked in the Receiver's Balance.
We can check the Merchant's Allowed (Min and Max) Balances by using the 1.5 Get Account Information method.
Get Account Info Request
-
Path:
-
GET {baseURL}/account/MERCH-DE-1111?partnerReference=DEV-SVR001-DE_MERCHID-INT-01&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
Get Account Info Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-1111",
"externalAccountReference": "MERCHANT-DE-1111",
"title": 1,
"lastName": "Merchant 01",
"firstName": "Example",
"merchantName": "MERCHANT-DE-1111",
"addr1": "Leopoldstrasse 244",
"city": "Munich",
"countryCode": "DE",
"countryCode3": "DEU",
"countryName": "Germany",
"postCode": "80807",
"dob": "1990-12-31",
"emailAddress": "merch.de.1111@example.com",
"currCode": "EUR",
"accTypeName": "Merchant Account",
"accTypeCode": "MA",
"maximumAllowedBalance": 100000.00,
"minimumAllowedBalance": 00.00,
"statusCode": "ACTIVE",
"accFlowStatusCode": "APPROVEDFV",
"nationality": "DE",
"nationality3": "DEU",
"businessCompanyName": "ACME Corp GmbH",
"businessCompanyRegistrationCountryCode": "DE",
"businessCompanyRegistrationCountryCode3": "DEU",
"businessAddr1": "Leopoldstrasse 244",
"businessCity": "Munich",
"businessPostCode": "80807",
"businessCountryCode": "DE",
"businessCountryCode3": "DEU",
"accountCreationDate": "2020-09-18",
"accountValidUntil": "2999-12-31",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-01",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
From the values of "minimumAllowedBalance", "maximumAllowedBalance" and "currCode" we see the "MERCHANT-DE-1111" Account's Balance Limits are set form 0.00 EUR to 100000.00 EUR.
Get Account Info Request
-
Path:
-
GET {baseURL}/account/MERCH-DE-2222?partnerReference=DEV-SVR001-DE_MERCHID-INT-02&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
Get Account Info Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-2222",
"externalAccountReference": "MERCHANT-DE-2222",
"title": 1,
"lastName": "Merchant 02",
"firstName": "Example",
"merchantName": "MERCHANT-DE-2222",
"addr1": "Leopoldstrasse 244",
"city": "Munich",
"countryCode": "DE",
"countryCode3": "DEU",
"countryName": "Germany",
"postCode": "80807",
"dob": "1990-12-31",
"emailAddress": "merch.de.2222@example.com",
"currCode": "EUR",
"accTypeName": "Merchant Account",
"accTypeCode": "MA",
"maximumAllowedBalance": 50000.00,
"minimumAllowedBalance": 00.00,
"statusCode": "ACTIVE",
"accFlowStatusCode": "APPROVEDFV",
"nationality": "DE",
"nationality3": "DEU",
"businessCompanyName": "ACME Corp GmbH",
"businessCompanyRegistrationCountryCode": "DE",
"businessCompanyRegistrationCountryCode3": "DEU",
"businessAddr1": "Leopoldstrasse 244",
"businessCity": "Munich",
"businessPostCode": "80807",
"businessCountryCode": "DE",
"businessCountryCode3": "DEU",
"accountCreationDate": "2020-09-18",
"accountValidUntil": "2999-12-31",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-02",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
From the values of "minimumAllowedBalance", "maximumAllowedBalance" and "currCode" we see the "MERCHANT-DE-2222" Account's Balance Limits are set form 0.00 EUR to 50000.00 EUR.
We can check the Current Balances of both the "Sender" and "Receiver" Merchants by using 1.8 Balance Enquiry.
Balance Enquiry Request
-
Path:
-
GET {baseURL}/account/MERCH-DE-1111/balance?partnerReference=DEV-SVR001-DE_MERCHID-INT-01&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
Balance Enquiry Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-1111",
"psBal": 0.00,
"avlBal": 50.00,
"bkBal": 50.00,
"blkAmt": 0.00,
"currCode": "EUR",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-01",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
The value of "avlBal" shows the "MERCHANT-DE-1111" Account currently has 50.00 EUR as Available Balance.
Balance Enquiry Request
-
Path:
-
GET {baseURL}/account/MERCH-DE-2222/balance?partnerReference=DEV-SVR001-DE_MERCHID-INT-02&programCode=ACMEPROG&accnoType=00&localDate=2019-12-31&localTime=235959
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
Balance Enquiry Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"accno": "MERCHANT-DE-2222",
"psBal": 0.00,
"avlBal": 0.00,
"bkBal": 0.00,
"blkAmt": 0.00,
"currCode": "EUR",
"programCode": "ACMEPROG",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-02",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
The value of "avlBal" shows the "MERCHANT-DE-2222" Account currently has an Empty Account Balance.
Using 1.121 KC-Debit Account we transfer 10.00 EUR from the "MERCH-DE-1111" Merchant to "MERCH-DE-2222".
KC-Debit Account Request
-
Path:
-
PUT {baseURL}/payment/kc-debitAccount
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
{
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-KCB2B001",
"merchantProgramCode": "ACMEPROG",
"merchantAccno": "MERCHANT-DE-2222",
"programAccno": "1234567890",
"accno": "MERCHANT-DE-1111",
"accnoType": "00",
"paymentAmount": 10.00,
"paymentCurrCode": "EUR",
"paymentUsage": "Merch-2-Merch Transfer",
"useDifferentBillingAddress": false,
"localDate": "2019-12-31",
"localTime": "235959"
}
KC-Debit Account Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"uniqueReference": "a1B2c3D4e5F6g7H8i9J0",
"accno": "MERCHANT-DE-1111",
"programAccno": "1234567890",
"merchantAccno": "MERCHANT-DE-2222",
"merchantProgramCode": "ACMEPROG"
"paymentAmount": 10.00,
"paymentCurrCode": "EUR",
"paymentUsage": "Merch-2-Merch Transfer",
"fxRate": 1.0,
"statusCode": "SETTLED",
"partnerReference": "DEV-SVR001-DE_MERCHID-INT-KCB2B001",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "225959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
The response contains the transaction reference of the "B2B Transfer" in "uniqueReference" and the "statusCode" with value "SETTLED" indicates the amount was successfully Booked in the Receiver Account's Current Balance.
If we call 1.8 Balance Enquiry again it's response will confirm the "MERCH-DE-1111" Account has 40.00 EUR left in it's Currnet Balance and the "MERCH-DE-2222" Account now has an Available Balance of 10.00 EUR.
Refunds of "B2B Transfers", like the "B2B Transfers" themselves, are entirely Internal and immediately become Booked.
Refunds of "B2B Transfers", similar to Refunds of Guest Payments or Technical Account Payments, can either Refund the Full Amount of the "B2B Transfer" or only a Partial Amount. This can be done via the 1.16 KC-Refund API method.
As this refund will be entirely Internal the "refundType" must be used with the value "0".
Please refer to the "Refund Type" Lookup section for a full list of codes and descriptions.