B2B Transfers

Last changes: 02-22-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.

1. Check Merchant Details

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."
}

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."
}

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."
}

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."
}

The value of "avlBal" shows the "MERCHANT-DE-2222" Account currently has an Empty Account Balance.

2. Create a "B2B Transaction"

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."
}

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.

3. Refund a "B2B Transaction"

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.