PHP ActiveX HMRC VAT MTD: Submit VAT return for period

Back to Index

Submit VAT return for period

Documentation: https://developer.service.hmrc.gov.uk/api-documentation/docs/api/service/vat-api/1.0#_submit-vat-return-for-period_post_accordion

CURL Command

curl -X POST  https://test-api.service.hmrc.gov.uk/organisations/vat/MY_HMRC_VRN/returns \
-H 'Authorization: Bearer HMRC_ACCESS_TOKEN' \
-H 'Accept: application/vnd.hmrc.1.0+json' \
-H 'Content-Type: application/json' \
-d '{
  "periodKey": "A001",
  "vatDueSales": 105.50,
  "vatDueAcquisitions": -100.45,
  "totalVatDue": 5.05,
  "vatReclaimedCurrPeriod": 105.15,
  "netVatDue": 100.10,
  "totalValueSalesExVAT": 300,
  "totalValuePurchasesExVAT": 300,
  "totalValueGoodsSuppliedExVAT": 3000,
  "totalAcquisitionsExVAT": 3000,
  "finalised": true
}'

PHP ActiveX Example

<?php

$rest = new COM("Chilkat_9_5_0.Rest");

//  URL: https://test-api.service.hmrc.gov.uk/organisations/vat/MY_HMRC_VRN/returns
$bTls = 1;
$port = 443;
$bAutoReconnect = 1;
$success = $rest->Connect('test-api.service.hmrc.gov.uk',$port,$bTls,$bAutoReconnect);
if ($success != 1) {
    print 'ConnectFailReason: ' . $rest->ConnectFailReason . "\n";
    print $rest->LastErrorText . "\n";
    exit;
}

//  See the Online Tool for Generating JSON Creation Code
$json = new COM("Chilkat_9_5_0.JsonObject");
$json->UpdateString('periodKey','A001');
$json->UpdateNumber('vatDueSales','105.50');
$json->UpdateNumber('vatDueAcquisitions','-100.45');
$json->UpdateNumber('totalVatDue','5.05');
$json->UpdateNumber('vatReclaimedCurrPeriod','105.15');
$json->UpdateNumber('netVatDue','100.10');
$json->UpdateNumber('totalValueSalesExVAT','300');
$json->UpdateNumber('totalValuePurchasesExVAT','300');
$json->UpdateNumber('totalValueGoodsSuppliedExVAT','3000');
$json->UpdateNumber('totalAcquisitionsExVAT','3000');
$json->UpdateBool('finalised',1);

$rest->AddHeader('Content-Type','application/json');
$rest->AddHeader('Authorization','Bearer HMRC_ACCESS_TOKEN');
$rest->AddHeader('Accept','application/vnd.hmrc.1.0+json');

$sbRequestBody = new COM("Chilkat_9_5_0.StringBuilder");
$json->EmitSb($sbRequestBody);
$sbResponseBody = new COM("Chilkat_9_5_0.StringBuilder");
$success = $rest->FullRequestSb('POST','/organisations/vat/MY_HMRC_VRN/returns',$sbRequestBody,$sbResponseBody);
if ($success != 1) {
    print $rest->LastErrorText . "\n";
    exit;
}

$respStatusCode = $rest->ResponseStatusCode;
if ($respStatusCode >= 400) {
    print 'Response Status Code = ' . $respStatusCode . "\n";
    print 'Response Header:' . "\n";
    print $rest->ResponseHeader . "\n";
    print 'Response Body:' . "\n";
    print $sbResponseBody->getAsString() . "\n";
    exit;
}

$jsonResponse = new COM("Chilkat_9_5_0.JsonObject");
$jsonResponse->LoadSb($sbResponseBody);

//  See the Online Tool for Generating JSON Parse Code

$processingDate = $jsonResponse->stringOf('processingDate');
$paymentIndicator = $jsonResponse->stringOf('paymentIndicator');
$formBundleNumber = $jsonResponse->stringOf('formBundleNumber');

?>

Sample JSON Response Body

{
  "processingDate": "2019-02-18T14:37:56.561Z",
  "paymentIndicator": "BANK",
  "formBundleNumber": "948551092841"
}